[Home] [Help]
PACKAGE BODY: APPS.PA_PROGRESS_PVT
Source
1 package body PA_PROGRESS_PVT as
2 /* $Header: PAPCPVTB.pls 120.42.12020000.7 2013/06/06 09:47:14 djambhek ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'PA_PROGRESS_PVT';
5
6 g1_debug_mode varchar2(1) := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7
8 -- Start of comments
9 -- API name : ROLLUP_PROGRESS_PVT
10 -- Type : Public
11 -- Pre-reqs : For Program Rollup, the sub project buckets should be populated.
12 -- Purpose : Rolls up the structure
13 -- Parameters Desc :
14 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
15 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
16 -- proj_element_id of the deliverable and task
17 -- p_object_version_id For Assignments, pass task_version_id, otherwise
18 -- element_version_id of the deliverable and task
19 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
20 -- , for struture pass null
21 -- p_lowest_level_task Does not seem to be required
22 -- p_process_whole_tree To indicate if whole tree rollup is not required. It will
23 -- do just 2 level rollup if N
24 -- p_structure_version_id Structure version id of the publsihed or working structure version
25 -- p_structure_type Possible values WORKPLAN, FINANCIAL
26 -- p_fin_rollup_method Possible values are COST, EFFORT
27 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
28 -- p_rollup_entire_wbs To indicate if it requires the whole structure rollup, in this
29 -- case it will ignore the passed object and starts with the lowest
30 -- task
31 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
32 -- End of comments
33
34 -- Bug 4218507 : Rewritten rollup code to use bulk approach and also merged update_rollup code in this
35 -- Bug 4317491 : Added check of WORKPLAN
36 -- 23-Jun-2009 rthumma Bug 6854114 : Changes done for 8 digit precision for physical percent complete.
37
38 PROCEDURE ROLLUP_PROGRESS_PVT(
39 p_api_version IN NUMBER :=1.0
40 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
41 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
42 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
43 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
44 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
45 ,p_calling_mode IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
46 ,p_debug_mode IN VARCHAR2 :='N'
47 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
48 ,p_progress_mode IN VARCHAR2 := 'FUTURE'
49 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
50 ,p_object_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
51 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
52 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
53 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
54 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
55 ,p_lowest_level_task IN VARCHAR2 := 'N'
56 ,p_process_whole_tree IN VARCHAR2 := 'Y'
57 ,p_structure_version_id IN NUMBER
58 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
59 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
60 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
61 ,p_rollup_entire_wbs IN VARCHAR2 := 'N'
62 ,p_task_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
63 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --maansari7/18 to be passed form apply lp progress to select regular planned amounts to send to schduling api for percent comnplete and earned value calculations.
64 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, 3951024
65 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
66 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
67 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
68 )
69 IS
70
71 l_api_name CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
72 l_api_version CONSTANT NUMBER := 1.0 ;
73 l_return_status VARCHAR2(1) ;
74 l_msg_count NUMBER ;
75 l_msg_data VARCHAR2(250) ;
76 l_data VARCHAR2(250) ;
77 l_msg_index_out NUMBER ;
78 l_error_msg_code VARCHAR2(250) ;
79 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
80 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
81 l_lowest_task VARCHAR2(1) ;
82 l_published_structure VARCHAR2(1) ;
83 l_task_version_id NUMBER ;
84 l_rollup_table1 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
85 l_rollup_table2 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
86 l_index NUMBER := 0;
87 l_parent_count NUMBER := 0;
88 l_process_number NUMBER;
89 l_wbs_level NUMBER ;
90 l_action_allowed VARCHAR2(1) ;
91 l_sharing_Enabled VARCHAR2(1) ;
92 l_split_workplan VARCHAR2(1) ;
93 l_structure_version_id NUMBER ;
94 g1_debug_mode VARCHAR2(1) ;
95 l_Rollup_Method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
96
97
98 -- Rollup Cases
99 -- 1. Workplan Publsihed Version Rollup.
100 -- 2. Workplan Working Version Rollup.
101 -- 3. Financial Structure Rollup.
102 -- 4. Entire WBS using structure version id.
103 -- 5. Program Rollup
104
105 --This cursor selects the parents of a given task.
106
107
108 CURSOR cur_reverse_tree_update IS
109 SELECT proj_element_id, object_id_to1, object_type
110 FROM
111 ( select object_id_from1, object_id_to1
112 from pa_object_relationships
113 where relationship_type ='S'
114 and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
115 and object_type_to = 'PA_TASKS'
116 and p_rollup_entire_wbs='N'
117 start with object_id_to1 = p_task_version_id
118 and relationship_type = 'S'
119 connect by prior object_id_from1 = object_id_to1
120 and relationship_type = 'S'
121 ) pobj
122 , pa_proj_element_versions ppev
123 WHERE element_version_id = object_id_to1
124 and p_rollup_entire_wbs='N'
125 --select structure
126 UNION
127 SELECT proj_element_id, element_version_id, object_type
128 FROM pa_proj_element_versions
129 WHERE element_version_id = p_structure_version_id
130 and project_id = p_project_id
131 and object_type = 'PA_STRUCTURES'
132 and p_rollup_entire_wbs='N'
133 UNION
134 SELECT proj_element_id, element_version_id, object_type
135 FROM pa_proj_element_versions
136 WHERE project_id = p_project_id
137 and parent_structure_version_id = p_structure_version_id
138 and object_type IN ('PA_TASKS','PA_STRUCTURES')
139 and p_rollup_entire_wbs='Y'
140 ;
141
142
143 l_mass_rollup_prog_exists_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
144 l_mass_rollup_prog_rec_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
145
146 l_tsk_object_id_from1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
147 l_tsk_parent_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
148 l_tsk_object_id_to1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
149 l_tsk_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
150 l_tsk_wbs_level_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
151 l_tsk_weighting_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
152 l_tsk_roll_comp_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
153 l_tsk_over_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
154 l_tsk_as_of_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
155 l_tsk_actual_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
156 l_tsk_actual_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
157 l_tsk_est_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
158 l_tsk_est_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
159 l_tsk_rollup_weight1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
160 l_tsk_override_weight2_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
161 l_tsk_base_weight3_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
162 l_tsk_task_weight4_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
163 l_tsk_status_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
164 l_tsk_object_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
165 l_tsk_proj_element_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
166 l_tsk_ppl_act_eff_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
167 l_tsk_ppl_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
168 l_tsk_ppl_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
169 l_tsk_ppl_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
170 l_tsk_ppl_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
171 l_tsk_ppl_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
172 l_tsk_ppl_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
173 l_tsk_est_rem_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
174 l_tsk_ppl_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
175 l_tsk_ppl_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
176 l_tsk_ppl_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
177 l_tsk_ppl_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
178 l_tsk_ppl_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
179 l_tsk_ppl_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
180 l_tsk_eqpmt_act_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
181 l_tsk_eqpmt_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
182 l_tsk_eqpmt_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
183 l_tsk_eqpmt_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
184 l_tsk_eqpmt_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
185 l_tsk_eqpmt_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
186 l_tsk_eqpmt_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
187 l_tsk_eqpmt_etc_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
188 l_tsk_eqpmt_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
189 l_tsk_eqpmt_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
190 l_tsk_eqpmt_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
191 l_tsk_eqpmt_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
192 l_tsk_eqpmt_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
193 l_tsk_eqpmt_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
194 l_tsk_oth_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
195 l_tsk_oth_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
196 l_tsk_oth_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
197 l_tsk_oth_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
198 l_tsk_oth_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
199 l_tsk_oth_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
200 l_tsk_oth_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
201 l_tsk_oth_etc_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
202 l_tsk_oth_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
203 l_tsk_oth_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
204 l_tsk_oth_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
205 l_tsk_oth_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
206 l_tsk_oth_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
207 l_tsk_oth_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
208 l_tsk_current_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
209 l_tsk_pf_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
210 l_tsk_pf_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
211 l_tsk_pf_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
212 l_tsk_p_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
213 l_tsk_p_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
214 l_tsk_p_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
215 l_tsk_txn_currency_code_tab SYSTEM.PA_VARCHAR2_15_TBL_TYPE := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
216 l_tsk_prog_pa_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
217 l_tsk_prog_gl_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
218 l_tsk_bac_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
219 l_tsk_bac_self_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
220 l_tsk_earned_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
221 l_tsk_deriv_method_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
222 l_tsk_progress_rollup_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
223 l_tsk_rollup_rec_ver_num_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
224 l_tsk_object_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
225 l_tsk_progress_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
226 l_tsk_incremental_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
227 l_tsk_cumulative_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
228 l_tsk_base_prog_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
229 l_tsk_eff_roll_prg_st_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
230 l_tsk_percent_complete_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
231 l_tsk_task_wt_basis_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
232 l_tsk_base_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
233 l_tsk_structure_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
234
235 l_tsk_create_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
236 l_tsk_update_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
237
238
239 l_prj_currency_code VARCHAR2(15);
240 l_total_tasks NUMBER;
241 l_prog_pa_period_name VARCHAR2(30);
242 l_prog_gl_period_name VARCHAR2(30);
243 task_index NUMBER;
244 l_task_id NUMBER;
245 l_child_rollup_rec_exists VARCHAR2(1);
246 l_sch_rec_ver_number NUMBER;
247
248 l_equipment_hours NUMBER;
249 l_pou_labor_brdn_cost NUMBER;
250 l_prj_labor_brdn_cost NUMBER;
251 l_pou_equip_brdn_cost NUMBER;
252 l_prj_equip_brdn_cost NUMBER;
253 l_pou_labor_raw_cost NUMBER;
254 l_prj_labor_raw_cost NUMBER;
255 l_pou_equip_raw_cost NUMBER;
256 l_prj_equip_raw_cost NUMBER;
257 l_labor_hours NUMBER;
258 l_pou_oth_brdn_cost NUMBER;
259 l_prj_oth_brdn_cost NUMBER;
260 l_pou_oth_raw_cost NUMBER;
261 l_prj_oth_raw_cost NUMBER;
262 l_remaining_effort1 NUMBER;
263 l_percent_complete1 NUMBER;
264 l_percent_complete2 NUMBER;
265 l_etc_cost_pc NUMBER;
266 l_ppl_etc_cost_pc NUMBER;
267 l_eqpmt_etc_cost_pc NUMBER;
268 l_etc_cost_fc NUMBER;
269 l_ppl_etc_cost_fc NUMBER;
270 l_eqpmt_etc_cost_fc NUMBER;
271 l_bac_value1 NUMBER;
272 l_ppl_act_cost_to_date_pc NUMBER;
273 l_eqpmt_act_cost_to_date_pc NUMBER;
274 l_oth_act_cost_to_date_fc NUMBER;
275 l_ppl_act_cost_to_date_fc NUMBER;
276 l_eqpmt_act_cost_to_date_fc NUMBER;
277 l_ppl_act_effort_to_date NUMBER;
278 l_oth_act_rawcost_to_date_pc NUMBER;
279 l_ppl_act_rawcost_to_date_pc NUMBER;
280 l_eqpmt_act_rawcost_to_date_pc NUMBER;
281 l_etc_rawcost_pc NUMBER;
282 l_ppl_etc_rawcost_pc NUMBER;
283 l_eqpmt_act_rawcost_to_date_fc NUMBER;
284 l_ppl_act_rawcost_to_date_fc NUMBER;
285 l_oth_act_rawcost_to_date_fc NUMBER;
286 l_eqpmt_act_effort_to_date NUMBER;
287 l_eqpmt_etc_effort NUMBER;
288 l_earned_value1 NUMBER;
289 l_oth_act_cost_to_date_pc NUMBER;
290 l_percent_complete_id NUMBER;
291 l_progress_rollup_id NUMBER;
292 l_rollup_rec_ver_number NUMBER;
293 l_eqpmt_etc_rawcost_fc NUMBER;
294 l_ppl_etc_rawcost_fc NUMBER;
295 l_etc_rawcost_fc NUMBER;
296 l_eqpmt_etc_rawcost_pc NUMBER;
297 l_period_name VARCHAR2(30);
298 l_existing_object_status VARCHAR2(150);
299 l_status_code VARCHAR2(150);
300 l_system_status_code VARCHAR2(150);
301 l_status_code_temp VARCHAR2(150); --Bug#5374114
302 l_system_status_code_temp VARCHAR2(150); --Bug#5374114
303 l_max_rollup_as_of_date2 DATE;
304 l_current_flag VARCHAR2(1);
305 l_pev_schedule_id NUMBER;
306 l_actual_exists VARCHAR2(1):='N';
307 l_tsk_scheduled_start_date Date;
308 l_tsk_scheduled_finish_date Date;
309 l_actual_start_date Date;
310 l_actual_finish_date Date;
311 l_estimated_start_date Date;
312 l_estimated_finish_date Date;
313 l_eff_rollup_status_code VARCHAR2(150);
314 l_progress_status_code VARCHAR2(150);
315 l_rolled_up_base_per_comp NUMBER;
316 l_rolled_up_base_prog_stat VARCHAR2(150);
317 l_rolled_up_per_comp NUMBER;
318 l_rolled_up_prog_stat VARCHAR2(150);
319
320
321 CURSOR cur_sch_id( c_object_version_id NUMBER )
322 IS
323 SELECT pev_schedule_id, record_version_number
324 FROM pa_proj_elem_ver_schedule
325 WHERE project_id = p_project_id
326 AND element_version_id = c_object_version_id;
327
328
329 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
330 IS
331 SELECT scheduled_start_date, scheduled_finish_date
332 FROM pa_proj_elem_ver_schedule
333 WHERE PROJECT_ID = c_project_id
334 AND element_version_id = c_element_version_id;
335
336 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
337 SELECT 'Y' FROM DUAL
338 WHERE EXISTS
339 (SELECT 'xyz'
340 FROM pa_percent_completes
341 WHERE project_id = p_project_id
342 AND task_id = c_task_id
343 AND object_type = 'PA_DELIVERABLES'
344 AND trunc(date_computed)<= trunc(p_as_of_date)
345 AND structure_type = 'WORKPLAN'
346 AND published_flag = 'Y'
347 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
348 );
349
350
351 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
352 IS
353 SELECT STATUS_CODE
354 FROM PA_PROJ_ELEMENTS
355 WHERE PROJ_ELEMENT_ID = l_proj_element_id
356 AND PROJECT_ID = l_project_id;
357
358 CURSOR cur_status( c_status_weight VARCHAR2 )
359 IS
360 select lookup_code
361 from fnd_lookup_values
362 where attribute4 = c_status_weight
363 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
364 and language = 'US'
365 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
366
367 CURSOR cur_task_status( c_status_weight VARCHAR2 )
368 IS
369 select project_status_code
370 from pa_project_statuses
371 where project_status_weight = c_status_weight
372 and status_type = 'TASK'
373 and predefined_flag = 'Y';
374
375 l_process_number_temp NUMBER;
376
377 --This cursor selects the immediate child taks of a given task.
378 CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
379 IS
380 --select structure
381 SELECT to_number(null) object_id_from1
382 , ppev.object_type parent_object_type
383 , element_version_id object_id_to1
384 , ppev.object_type object_type
385 , ppev.wbs_level wbs_level
386 , to_number( null ) weighting_percentage
387 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
388 , ppr.completed_percentage override_percent_complete
389 , ppr.as_of_date
390 , ppr.actual_start_date
391 , ppr.actual_finish_date
392 , ppr.estimated_start_date
393 , ppr.estimated_finish_date
394 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
395 , pps2.project_status_weight override_weight2 ---override progress status code
396 , pps3.project_status_weight base_weight3 --base prog status
397 , to_number( null ) task_weight4 --task status
398 , to_char(null) status_code
399 , ppev.proj_element_id object_id
400 , ppev.proj_element_id
401 , ppr.PPL_ACT_EFFORT_TO_DATE
402 , ppr.PPL_ACT_COST_TO_DATE_TC
403 , ppr.PPL_ACT_COST_TO_DATE_PC
404 , ppr.PPL_ACT_COST_TO_DATE_FC
405 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
406 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
407 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
408 , ppr.ESTIMATED_REMAINING_EFFORT
409 , ppr.PPL_ETC_COST_TC
410 , ppr.PPL_ETC_COST_PC
411 , ppr.PPL_ETC_COST_FC
412 , ppr.PPL_ETC_RAWCOST_TC
413 , ppr.PPL_ETC_RAWCOST_PC
414 , ppr.PPL_ETC_RAWCOST_FC
415 , ppr.EQPMT_ACT_EFFORT_TO_DATE
416 , ppr.EQPMT_ACT_COST_TO_DATE_TC
417 , ppr.EQPMT_ACT_COST_TO_DATE_PC
418 , ppr.EQPMT_ACT_COST_TO_DATE_FC
419 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
420 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
421 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
422 , ppr.EQPMT_ETC_EFFORT
423 , ppr.EQPMT_ETC_COST_TC
424 , ppr.EQPMT_ETC_COST_PC
425 , ppr.EQPMT_ETC_COST_FC
426 , ppr.EQPMT_ETC_RAWCOST_TC
427 , ppr.EQPMT_ETC_RAWCOST_PC
428 , ppr.EQPMT_ETC_RAWCOST_FC
429 , ppr.OTH_QUANTITY_TO_DATE
430 , ppr.OTH_ACT_COST_TO_DATE_TC
431 , ppr.OTH_ACT_COST_TO_DATE_PC
432 , ppr.OTH_ACT_COST_TO_DATE_FC
433 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
434 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
435 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
436 , ppr.OTH_ETC_QUANTITY
437 , ppr.OTH_ETC_COST_TC
438 , ppr.OTH_ETC_COST_PC
439 , ppr.OTH_ETC_COST_FC
440 , ppr.OTH_ETC_RAWCOST_TC
441 , ppr.OTH_ETC_RAWCOST_PC
442 , ppr.OTH_ETC_RAWCOST_FC
443 , ppr.CURRENT_FLAG
444 , ppr.PROJFUNC_COST_RATE_TYPE
445 , ppr.PROJFUNC_COST_EXCHANGE_RATE
446 , ppr.PROJFUNC_COST_RATE_DATE
447 , ppr.PROJ_COST_RATE_TYPE
448 , ppr.PROJ_COST_EXCHANGE_RATE
449 , ppr.PROJ_COST_RATE_DATE
450 , ppr.TXN_CURRENCY_CODE
451 , ppr.PROG_PA_PERIOD_NAME
452 , ppr.PROG_GL_PERIOD_NAME
453 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
454 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
455 BAC_value_self -- bug 4493105
456 , null earned_value
457 , to_char(null) task_derivation_method
458 , ppr.progress_rollup_id
459 , ppr.record_version_number
460 -- , element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
461 , ppr.object_version_id -- Bug 4651304
462 , ppr.progress_status_code
463 , ppr.incremental_work_quantity
464 , ppr.cumulative_work_quantity
465 -- 4533112 : Added decode to select N and Y only
466 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
467 , ppr.EFF_ROLLUP_PROG_STAT_CODE
468 , ppr.percent_complete_id
469 , ppr.TASK_WT_BASIS_CODE
470 , ppr.structure_version_id
471 ,'N' create_required
472 ,'N' update_required
473 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
474 FROM pa_proj_element_versions ppev,
475 pa_progress_rollup ppr,
476 pa_project_statuses pps1,
477 pa_project_statuses pps2,
478 pa_project_statuses pps3 ,
479 pa_proj_rollup_temp temp
480 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
481 --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
482 temp.object_id = ppev.element_version_id
483 AND temp.process_number = l_process_number_temp
484 AND ppev.object_type = 'PA_STRUCTURES'
485 AND ppr.project_id = ppev.project_id
486 AND ppr.object_id = ppev.proj_element_id
487 AND ppr.object_type = 'PA_STRUCTURES'
488 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
489 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
490 AND ppr.current_flag <> 'W'
491 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
492 AND ppr.progress_status_code = pps2.project_status_code(+)
493 AND ppr.base_progress_status_code = pps3.project_status_code(+)
494 AND ppr.structure_type = p_structure_type
495 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
496 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
497 UNION ALL -- Changed for 14040849 changed from union to union all
498 -- select tasks
499 SELECT pobj.object_id_from1
500 , ppev1.object_type parent_object_type
501 , pobj.object_id_to1
502 , ppev2.object_type object_type
503 , ppev2.wbs_level wbs_level
504 , pobj.weighting_percentage
505 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
506 , ppr.completed_percentage override_percent_complete
507 , ppr.as_of_date
508 , ppr.actual_start_date
509 , ppr.actual_finish_date
510 , ppr.estimated_start_date
511 , ppr.estimated_finish_date
512 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
513 , pps2.project_status_weight override_weight2 ---override progress status code
514 , pps3.project_status_weight base_weight3 ---base prog status
515 , pps4.project_status_weight task_weight4
516 , ppe.status_code
517 , ppev2.proj_element_id object_id
518 , ppev2.proj_element_id
519 , ppr.PPL_ACT_EFFORT_TO_DATE
520 , ppr.PPL_ACT_COST_TO_DATE_TC
521 , ppr.PPL_ACT_COST_TO_DATE_PC
522 , ppr.PPL_ACT_COST_TO_DATE_FC
523 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
524 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
525 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
526 , ppr.ESTIMATED_REMAINING_EFFORT
527 , ppr.PPL_ETC_COST_TC
528 , ppr.PPL_ETC_COST_PC
529 , ppr.PPL_ETC_COST_FC
530 , ppr.PPL_ETC_RAWCOST_TC
531 , ppr.PPL_ETC_RAWCOST_PC
532 , ppr.PPL_ETC_RAWCOST_FC
533 , ppr.EQPMT_ACT_EFFORT_TO_DATE
534 , ppr.EQPMT_ACT_COST_TO_DATE_TC
535 , ppr.EQPMT_ACT_COST_TO_DATE_PC
536 , ppr.EQPMT_ACT_COST_TO_DATE_FC
537 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
538 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
539 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
540 , ppr.EQPMT_ETC_EFFORT
541 , ppr.EQPMT_ETC_COST_TC
542 , ppr.EQPMT_ETC_COST_PC
543 , ppr.EQPMT_ETC_COST_FC
544 , ppr.EQPMT_ETC_RAWCOST_TC
545 , ppr.EQPMT_ETC_RAWCOST_PC
546 , ppr.EQPMT_ETC_RAWCOST_FC
547 , ppr.OTH_QUANTITY_TO_DATE
548 , ppr.OTH_ACT_COST_TO_DATE_TC
549 , ppr.OTH_ACT_COST_TO_DATE_PC
550 , ppr.OTH_ACT_COST_TO_DATE_FC
551 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
552 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
553 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
554 , ppr.OTH_ETC_QUANTITY
555 , ppr.OTH_ETC_COST_TC
556 , ppr.OTH_ETC_COST_PC
557 , ppr.OTH_ETC_COST_FC
558 , ppr.OTH_ETC_RAWCOST_TC
559 , ppr.OTH_ETC_RAWCOST_PC
560 , ppr.OTH_ETC_RAWCOST_FC
561 , ppr.CURRENT_FLAG
562 , ppr.PROJFUNC_COST_RATE_TYPE
563 , ppr.PROJFUNC_COST_EXCHANGE_RATE
564 , ppr.PROJFUNC_COST_RATE_DATE
565 , ppr.PROJ_COST_RATE_TYPE
566 , ppr.PROJ_COST_EXCHANGE_RATE
567 , ppr.PROJ_COST_RATE_DATE
568 , ppr.TXN_CURRENCY_CODE
569 , ppr.PROG_PA_PERIOD_NAME
570 , ppr.PROG_GL_PERIOD_NAME
571 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
572 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
573 p_structure_type,p_working_wp_prog_flag) BAC_value
574 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
575 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
576 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
577 , null earned_value
578 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
579 , ppr.progress_rollup_id
580 , ppr.record_version_number
581 -- , pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
582 , ppr.object_version_id -- Bug 4651304
583 , ppr.progress_status_code
584 , ppr.incremental_work_quantity
585 , ppr.cumulative_work_quantity
586 -- 4533112 : Added decode to select N and Y only
587 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
588 , ppr.EFF_ROLLUP_PROG_STAT_CODE
589 , ppr.percent_complete_id
590 , ppr.TASK_WT_BASIS_CODE
591 , ppr.structure_version_id
592 ,'N' create_required
593 ,'N' update_required
594 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
595 FROM
596 pa_object_relationships pobj,
597 pa_proj_element_versions ppev1,
598 pa_proj_element_versions ppev2,
599 pa_progress_rollup ppr,
600 pa_proj_elements ppe,
601 pa_project_statuses pps1,
602 pa_project_statuses pps2,
603 pa_project_statuses pps3,
604 pa_project_statuses pps4,
605 pa_task_types ttype ,
606 pa_proj_rollup_temp temp
607 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
608 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
609 temp.object_id = pobj.object_id_from1
610 AND temp.process_number = l_process_number_temp
611 AND pobj.object_id_from1 = ppev1.element_version_id
612 AND pobj.object_id_to1 = ppev2.element_version_id
613 AND pobj.relationship_type = 'S'
614 AND ppr.project_id = ppev2.project_id
615 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
616 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
617 AND ppr.current_flag <> 'W'
618 AND ppr.object_id = ppev2.proj_element_id
619 AND ppr.project_id = ppev2.project_id
620 AND ppr.object_type = 'PA_TASKS'
621 AND ppe.proj_element_id = ppev2.proj_element_id
622 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
623 AND ppr.progress_status_code = pps2.project_status_code(+)
624 AND ppr.base_progress_status_code = pps3.project_status_code(+)
625 AND ppe.status_code = pps4.project_status_code(+)
626 AND ppe.project_id = ppev2.project_id
627 AND ppe.object_type = ppev2.object_type
628 AND ppev2.object_type = 'PA_TASKS'
629 AND ppe.object_type = 'PA_TASKS'
630 AND ppe.link_task_flag <> 'Y' -- 4392189
631 AND pobj.object_type_to = 'PA_TASKS'
632 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
633 AND ppe.type_id = ttype.task_type_id
634 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
635 AND ppr.structure_type = p_structure_type
636 AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
637 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
638 UNION ALL
639 SELECT to_number(null) object_id_from1
640 , ppev.object_type parent_object_type
641 , element_version_id object_id_to1
642 , ppev.object_type object_type
643 , ppev.wbs_level wbs_level
644 , to_number( null ) weighting_percentage
645 , to_number(null) rollup_completed_percentage
646 , to_number(null) override_percent_complete
647 , to_date(null) as_of_date
648 , to_date(null) actual_start_date
649 , to_date(null) actual_finish_date
650 , to_date(null) estimated_start_date
651 , to_date(null) estimated_finish_date
652 , to_number(null) rollup_weight1 ---rollup progress status code
653 , to_number(null) override_weight2 ---override progress status code
654 , to_number(null) base_weight3 --base prog status
655 , to_number( null ) task_weight4 --task status
656 , to_char(null) status_code
657 , ppev.proj_element_id object_id
658 , ppev.proj_element_id
659 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
660 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
661 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
662 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
663 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
664 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
665 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
666 , to_number( null ) ESTIMATED_REMAINING_EFFORT
667 , to_number( null ) PPL_ETC_COST_TC
668 , to_number( null ) PPL_ETC_COST_PC
669 , to_number( null ) PPL_ETC_COST_FC
670 , to_number( null ) PPL_ETC_RAWCOST_TC
671 , to_number( null ) PPL_ETC_RAWCOST_PC
672 , to_number( null ) PPL_ETC_RAWCOST_FC
673 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
674 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
675 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
676 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
677 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
678 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
679 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
680 , to_number( null ) EQPMT_ETC_EFFORT
681 , to_number( null ) EQPMT_ETC_COST_TC
682 , to_number( null ) EQPMT_ETC_COST_PC
683 , to_number( null ) EQPMT_ETC_COST_FC
684 , to_number( null ) EQPMT_ETC_RAWCOST_TC
685 , to_number( null ) EQPMT_ETC_RAWCOST_PC
686 , to_number( null ) EQPMT_ETC_RAWCOST_FC
687 , to_number( null ) OTH_QUANTITY_TO_DATE
688 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
689 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
690 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
691 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
692 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
693 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
694 , to_number( null ) OTH_ETC_QUANTITY
695 , to_number( null ) OTH_ETC_COST_TC
696 , to_number( null ) OTH_ETC_COST_PC
697 , to_number( null ) OTH_ETC_COST_FC
698 , to_number( null ) OTH_ETC_RAWCOST_TC
699 , to_number( null ) OTH_ETC_RAWCOST_PC
700 , to_number( null ) OTH_ETC_RAWCOST_FC
701 , to_char(null) CURRENT_FLAG
702 , to_char(null) PROJFUNC_COST_RATE_TYPE
703 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
704 , to_date(null) PROJFUNC_COST_RATE_DATE
705 , to_char(null) PROJ_COST_RATE_TYPE
706 , to_number( null ) PROJ_COST_EXCHANGE_RATE
707 , to_date(null) PROJ_COST_RATE_DATE
708 , to_char(null) TXN_CURRENCY_CODE
709 , to_char(null) PROG_PA_PERIOD_NAME
710 , to_char(null) PROG_GL_PERIOD_NAME
711 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
712 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
713 BAC_value_self -- bug 4493105
714 , null earned_value
715 , to_char(null) task_derivation_method
716 , to_number(null) progress_rollup_id
717 , to_number(null) record_version_number
718 , element_version_id object_version_id
719 , to_char(null) progress_status_code
720 , to_number(null) incremental_work_quantity
721 , to_number(null) cumulative_work_quantity
722 -- 4533112 : Added N only
723 , 'N' base_progress_status_code
724 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
725 , to_number(null) percent_complete_id
726 , to_char(null) TASK_WT_BASIS_CODE
727 , to_number(null) structure_version_id
728 ,'N' create_required
729 ,'N' update_required
730 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
731 FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
732 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
733 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
734 element_version_id = temp.object_id
735 AND temp.process_number = l_process_number_temp
736 AND ppev.object_type = 'PA_STRUCTURES'
737 AND pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
738 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
739 IS NULL
740 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
741 UNION ALL -- Change from Union to Union ALL for 14040849
742 -- select tasks
743 SELECT pobj.object_id_from1
744 , ppev1.object_type parent_object_type
745 , pobj.object_id_to1
746 , ppev2.object_type object_type
747 , ppev2.wbs_level wbs_level
748 , pobj.weighting_percentage
749 , to_number(null) rollup_completed_percentage
750 , to_number(null) override_percent_complete
751 , to_date(null) as_of_date
752 , to_date(null) actual_start_date
753 , to_date(null) actual_finish_date
754 , to_date(null) estimated_start_date
755 , to_date(null) estimated_finish_date
756 , to_number(null) rollup_weight1 ---rollup progress status code
757 , to_number(null) override_weight2 ---override progress status code
758 , to_number(null) base_weight3 --base prog status
759 , to_number( null ) task_weight4 --task status
760 , to_char(null) status_code
761 , ppev2.proj_element_id object_id
762 , ppev2.proj_element_id
763 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
764 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
765 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
766 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
767 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
768 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
769 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
770 , to_number( null ) ESTIMATED_REMAINING_EFFORT
771 , to_number( null ) PPL_ETC_COST_TC
772 , to_number( null ) PPL_ETC_COST_PC
773 , to_number( null ) PPL_ETC_COST_FC
774 , to_number( null ) PPL_ETC_RAWCOST_TC
775 , to_number( null ) PPL_ETC_RAWCOST_PC
776 , to_number( null ) PPL_ETC_RAWCOST_FC
777 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
778 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
779 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
780 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
781 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
782 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
783 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
784 , to_number( null ) EQPMT_ETC_EFFORT
785 , to_number( null ) EQPMT_ETC_COST_TC
786 , to_number( null ) EQPMT_ETC_COST_PC
787 , to_number( null ) EQPMT_ETC_COST_FC
788 , to_number( null ) EQPMT_ETC_RAWCOST_TC
789 , to_number( null ) EQPMT_ETC_RAWCOST_PC
790 , to_number( null ) EQPMT_ETC_RAWCOST_FC
791 , to_number( null ) OTH_QUANTITY_TO_DATE
792 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
793 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
794 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
795 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
796 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
797 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
798 , to_number( null ) OTH_ETC_QUANTITY
799 , to_number( null ) OTH_ETC_COST_TC
800 , to_number( null ) OTH_ETC_COST_PC
801 , to_number( null ) OTH_ETC_COST_FC
802 , to_number( null ) OTH_ETC_RAWCOST_TC
803 , to_number( null ) OTH_ETC_RAWCOST_PC
804 , to_number( null ) OTH_ETC_RAWCOST_FC
805 , to_char(null) CURRENT_FLAG
806 , to_char(null) PROJFUNC_COST_RATE_TYPE
807 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
808 , to_date(null) PROJFUNC_COST_RATE_DATE
809 , to_char(null) PROJ_COST_RATE_TYPE
810 , to_number( null ) PROJ_COST_EXCHANGE_RATE
811 , to_date(null) PROJ_COST_RATE_DATE
812 , to_char(null) TXN_CURRENCY_CODE
813 , to_char(null) PROG_PA_PERIOD_NAME
814 , to_char(null) PROG_GL_PERIOD_NAME
815 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
816 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
817 p_structure_type,p_working_wp_prog_flag) BAC_value
818 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
819 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
820 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
821 , null earned_value
822 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
823 , to_number(null) progress_rollup_id
824 , to_number(null) record_version_number
825 , pobj.object_id_to1 object_version_id
826 , to_char(null) progress_status_code
827 , to_number(null) incremental_work_quantity
828 , to_number(null) cumulative_work_quantity
829 -- 4533112 : Added N only
830 , 'N' base_progress_status_code
831 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
832 , to_number(null) percent_complete_id
833 , to_char(null) TASK_WT_BASIS_CODE
834 , to_number(null) structure_version_id
835 ,'N' create_required
836 ,'N' update_required
837 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
838 FROM
839 pa_object_relationships pobj,
840 pa_proj_element_versions ppev1,
841 pa_proj_element_versions ppev2,
842 pa_proj_elements ppe,
843 pa_project_statuses pps4,
844 pa_task_types ttype ,
845 pa_proj_rollup_temp temp
846 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
847 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
848 pobj.object_id_from1 = temp.object_id
849 AND temp.process_number = l_process_number_temp
850 AND pobj.object_id_from1 = ppev1.element_version_id
851 AND pobj.object_id_to1 = ppev2.element_version_id
852 AND pobj.relationship_type = 'S'
853 AND ppe.proj_element_id = ppev2.proj_element_id
854 AND ppe.status_code = pps4.project_status_code(+)
855 AND ppe.project_id = ppev2.project_id
856 AND ppe.object_type = ppev2.object_type
857 AND ppev2.object_type = 'PA_TASKS'
858 AND ppe.object_type = 'PA_TASKS'
859 AND ppe.link_task_flag <> 'Y' -- 4392189
860 AND pobj.object_type_to = 'PA_TASKS'
861 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
862 AND ppe.type_id = ttype.task_type_id
863 AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
864 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */)
865 IS NULL
866 AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
867 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
868 ;
869
870 -- FPM Dev CR 6 : Added Union ALL
871
872 l_asgn_task_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
873 l_asgn_rate_based_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
874 l_asgn_resource_class_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
875 l_asgn_res_assignment_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
876 l_asgn_planned_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
877 l_asgn_plan_bur_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
878 l_asgn_res_list_member_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
879
880 CURSOR cur_assgn_rec_bulk( c_task_ver_id NUMBER, c_task_id NUMBER ) IS
881 SELECT a.wbs_element_version_id
882 , a.rate_based_flag
883 , a.resource_class_code
884 , a.resource_assignment_id
885 , a.total_plan_quantity planned_quantity
886 , a.total_project_burdened_cost planned_bur_cost_proj_cur
887 , a.resource_list_member_id
888 from pa_resource_assignments a
889 WHERE a.wbs_element_version_id = c_task_ver_id
890 AND a.project_id = p_project_id
891 AND a.task_id = c_task_id
892 -- AND a.ta_display_flag = 'Y' --Bug 4323537
893 ;
894
895 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER) IS
896 SELECT ppr.*
897 FROM pa_progress_rollup ppr
898 WHERE ppr.project_id = p_project_id
899 AND ppr.object_id = c_object_id
900 AND ppr.proj_element_id = c_proj_element_id
901 AND ppr.object_type = 'PA_ASSIGNMENTS'
902 AND ppr.current_flag <> 'W'
903 AND ppr.structure_type = p_structure_type
904 AND ppr.as_of_date <= p_as_of_date
905 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
906 AND rownum =1
907 ORDER BY as_of_date desc
908 ;
909
910 l_asgn_progress_rec cur_get_asgn_progress%ROWTYPE;
911 l_asgn_act_start_date DATE;
912 l_asgn_act_finish_date DATE;
913 l_asgn_est_start_date DATE;
914 l_asgn_est_finish_date DATE;
915 l_asgn_as_of_date DATE;
916 l_asgn_ppl_act_eff NUMBER;
917 l_asgn_eqp_act_eff NUMBER;
918 l_asgn_ppl_act_cost NUMBER;
919 l_asgn_eqp_act_cost NUMBER;
920 l_asgn_oth_act_cost NUMBER;
921 l_asgn_ppl_etc_eff NUMBER;
922 l_asgn_eqp_etc_eff NUMBER;
923 l_asgn_ppl_etc_cost NUMBER;
924 l_asgn_eqp_etc_cost NUMBER;
925 l_asgn_oth_etc_cost NUMBER;
926 l_asgn_earned_value NUMBER;
927 l_asgn_bac_value NUMBER;
928
929 /*
930 --This cursor selects the task assignments of a given task.
931 -- sql id: 14904837 bug: 4871809 NOT USED IN CODE
932 CURSOR cur_assgn( c_task_ver_id NUMBER, c_task_per_comp_deriv_method VARCHAR2 )
933 IS
934 SELECT asgn.task_version_id
935 , 'PA_TASKS' parent_object_type
936 , asgn.resource_assignment_id object_id_to1 --maansari4/8 -- Bug 3764224, ideally this shdould be changes to RLM id. But keeping this as is due to Scheduling API behaviour
937 , asgn.task_version_id object_id_from1
938 , 'PA_ASSIGNMENTS' object_type
939 , asgn.resource_class_code
940 , asgn.rate_based_flag
941 , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST') assignment_type
942 , ppr.actual_start_date
943 , ppr.actual_finish_date
944 , ppr.estimated_start_date
945 , ppr.estimated_finish_date
946 , ppr.ESTIMATED_REMAINING_EFFORT
947 , ppr.STRUCTURE_VERSION_ID
948 , ppr.STRUCTURE_TYPE
949 , ppr.PROJ_ELEMENT_ID
950 , ppr.PPL_ACT_EFFORT_TO_DATE
951 , ppr.EQPMT_ACT_EFFORT_TO_DATE
952 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
953 , ppr.EQPMT_ETC_EFFORT
954 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
955 , ppr.OTH_ACT_COST_TO_DATE_TC
956 , ppr.OTH_ACT_COST_TO_DATE_PC
957 , ppr.OTH_ACT_COST_TO_DATE_FC
958 , ppr.OTH_ETC_COST_TC
959 , ppr.OTH_ETC_COST_PC
960 , ppr.OTH_ETC_COST_FC
961 , ppr.PPL_ACT_COST_TO_DATE_TC
962 , ppr.PPL_ACT_COST_TO_DATE_PC
963 , ppr.PPL_ACT_COST_TO_DATE_FC
964 , ppr.PPL_ETC_COST_TC
965 , ppr.PPL_ETC_COST_PC
966 , ppr.PPL_ETC_COST_FC
967 , ppr.EQPMT_ACT_COST_TO_DATE_TC
968 , ppr.EQPMT_ACT_COST_TO_DATE_PC
969 , ppr.EQPMT_ACT_COST_TO_DATE_FC
970 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
971 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
972 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
973 , ppr.EQPMT_ETC_COST_TC
974 , ppr.EQPMT_ETC_COST_PC
975 , ppr.EQPMT_ETC_COST_FC
976 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
977 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
978 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
979 -- , ppr.EARNED_VALUE
980 , ppr.SUBPRJ_PPL_ACT_EFFORT
981 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
982 , ppr.SUBPRJ_PPL_ETC_EFFORT
983 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
984 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
985 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
986 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
987 , ppr.SUBPRJ_PPL_ACT_COST_TC
988 , ppr.SUBPRJ_PPL_ACT_COST_FC
989 , ppr.SUBPRJ_PPL_ACT_COST_PC
990 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
991 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
992 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
993 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
994 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
995 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
996 , ppr.SUBPRJ_OTH_ETC_COST_TC
997 , ppr.SUBPRJ_OTH_ETC_COST_FC
998 , ppr.SUBPRJ_OTH_ETC_COST_PC
999 , ppr.SUBPRJ_PPL_ETC_COST_TC
1000 , ppr.SUBPRJ_PPL_ETC_COST_FC
1001 , ppr.SUBPRJ_PPL_ETC_COST_PC
1002 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
1003 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
1004 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
1005 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
1006 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
1007 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
1008 , ppr.SUBPRJ_EARNED_VALUE
1009 , ppr.CURRENT_FLAG
1010 , ppr.PROJFUNC_COST_RATE_TYPE
1011 , ppr.PROJFUNC_COST_EXCHANGE_RATE
1012 , ppr.PROJFUNC_COST_RATE_DATE
1013 , ppr.PROJ_COST_RATE_TYPE
1014 , ppr.PROJ_COST_EXCHANGE_RATE
1015 , ppr.PROJ_COST_RATE_DATE
1016 , ppr.TXN_CURRENCY_CODE
1017 , ppr.PROG_PA_PERIOD_NAME
1018 , ppr.PROG_GL_PERIOD_NAME
1019 ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
1020 ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)) ) earned_value
1021 , decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
1022 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0)
1023 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT', decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
1024 + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0) + nvl(ppr.estimated_remaining_effort,0)), 0) bac_value_in_rollup_method
1025 ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
1026 decode( asgn.resource_class_code,
1027 'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
1028 decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1, 0,
1029 nvl( asgn.planned_quantity-ppr.PPL_ACT_EFFORT_TO_DATE,0))),
1030 'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,
1031 decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1, 0,
1032 nvl( asgn.planned_quantity-ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0)
1033 ),
1034 ( NVL( decode( asgn.resource_class_code,
1035 'FINANCIAL_ELEMENTS',
1036 nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1037 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1038 nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1039 'MATERIAL_ITEMS',
1040 nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1041 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1042 nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1043 'PEOPLE',
1044 nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,
1045 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
1046 nvl(asgn.planned_bur_cost_proj_cur-ppr.PPL_ACT_COST_TO_DATE_PC,0))),
1047 'EQUIPMENT',
1048 nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
1049 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1, 0,
1050 nvl(asgn.planned_bur_cost_proj_cur-ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
1051 nvl(asgn.planned_bur_cost_proj_cur,0)
1052 ))
1053 ) bac_value_in_task_deriv
1054 FROM
1055 pa_task_asgmts_v asgn,
1056 pa_progress_rollup ppr
1057 WHERE asgn.task_version_id = c_task_ver_id
1058 AND asgn.project_id = ppr.project_id
1059 AND asgn.RESOURCE_LIST_MEMBER_ID = ppr.object_id -- Bug 3764224
1060 AND asgn.task_id = ppr.proj_element_id -- Bug 3764224
1061 AND ppr.object_type = 'PA_ASSIGNMENTS'
1062 -- AND asgn.ta_display_flag = 'Y' --Bug 4323537.
1063 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1064 asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS',p_as_of_date,asgn.task_version_id, p_structure_type, l_structure_version_id, asgn.task_id) ---Bug 3764224 -- FPM Dev CR 3
1065 AND ppr.current_flag <> 'W'
1066 AND ppr.structure_type = p_structure_type
1067 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
1068 UNION ALL
1069 SELECT asgn.task_version_id
1070 , 'PA_TASKS' parent_object_type
1071 , asgn.resource_assignment_id object_id_to1 -- Bug 3764224, ideally this shdould be changes to RLM id. But keeping this as is due to Scheduling API behaviour
1072 , asgn.task_version_id object_id_from1
1073 , 'PA_ASSIGNMENTS' object_type
1074 , asgn.resource_class_code
1075 , asgn.rate_based_flag
1076 , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST') assignment_type
1077 , to_date(null) actual_start_date
1078 , to_date(null) actual_finish_date
1079 , to_date(null) estimated_start_date
1080 , to_date(null) estimated_finish_date
1081 , to_number(null) ESTIMATED_REMAINING_EFFORT
1082 , to_number(null) STRUCTURE_VERSION_ID
1083 , to_char(null) STRUCTURE_TYPE
1084 , to_number(null) PROJ_ELEMENT_ID
1085 , to_number(null) PPL_ACT_EFFORT_TO_DATE
1086 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
1087 , to_number(null) total_act_effort_to_date
1088 , to_number(null) EQPMT_ETC_EFFORT
1089 , to_number(null) total_etc_effort
1090 , to_number(null) OTH_ACT_COST_TO_DATE_TC
1091 , to_number(null) OTH_ACT_COST_TO_DATE_PC
1092 , to_number(null) OTH_ACT_COST_TO_DATE_FC
1093 , to_number(null) OTH_ETC_COST_TC
1094 , to_number(null) OTH_ETC_COST_PC
1095 , to_number(null) OTH_ETC_COST_FC
1096 , to_number(null) PPL_ACT_COST_TO_DATE_TC
1097 , to_number(null) PPL_ACT_COST_TO_DATE_PC
1098 , to_number(null) PPL_ACT_COST_TO_DATE_FC
1099 , to_number(null) PPL_ETC_COST_TC
1100 , to_number(null) PPL_ETC_COST_PC
1101 , to_number(null) PPL_ETC_COST_FC
1102 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
1103 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
1104 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
1105 , to_number(null) total_act_cost_to_date_tc
1106 , to_number(null) total_act_cost_to_date_pc
1107 , to_number(null) total_act_cost_to_date_fc
1108 , to_number(null) EQPMT_ETC_COST_TC
1109 , to_number(null) EQPMT_ETC_COST_PC
1110 , to_number(null) EQPMT_ETC_COST_FC
1111 , to_number(null) total_etc_cost_tc
1112 , to_number(null) total_etc_cost_pc
1113 , to_number(null) total_etc_cost_fc
1114 -- , ppr.EARNED_VALUE
1115 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
1116 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
1117 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
1118 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
1119 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
1120 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
1121 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
1122 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
1123 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
1124 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
1125 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
1126 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
1127 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
1128 , to_number(null) total_subproj_act_cost_tc
1129 , to_number(null) total_subproj_act_cost_pc
1130 , to_number(null) total_subproj_act_cost_fc
1131 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
1132 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
1133 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
1134 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
1135 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
1136 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
1137 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
1138 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
1139 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
1140 , to_number(null) total_subproj_etc_cost_tc
1141 , to_number(null) total_subproj_etc_cost_pc
1142 , to_number(null) total_subproj_etc_cost_fc
1143 , to_number(null) SUBPRJ_EARNED_VALUE
1144 , to_char(null) CURRENT_FLAG
1145 , to_char(null) PROJFUNC_COST_RATE_TYPE
1146 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
1147 , to_date(null) PROJFUNC_COST_RATE_DATE
1148 , to_char(null) PROJ_COST_RATE_TYPE
1149 , to_number(null) PROJ_COST_EXCHANGE_RATE
1150 , to_date(null) PROJ_COST_RATE_DATE
1151 , to_char(null) TXN_CURRENCY_CODE
1152 , to_char(null) PROG_PA_PERIOD_NAME
1153 , to_char(null) PROG_GL_PERIOD_NAME
1154 , to_number(null) earned_value
1155 , to_number(null) bac_value_in_rollup_method
1156 -- , decode(c_task_per_comp_deriv_method,'EFFORT',decode(asgn.rate_based_flag,'Y',asgn.planned_quantity,0),asgn.planned_quantity) bac_value_in_task_deriv --3801780
1157 --bug 3815252
1158 , decode(c_task_per_comp_deriv_method,'EFFORT',decode(asgn.rate_based_flag,'Y',
1159 decode(asgn.resource_class_code,'PEOPLE', asgn.planned_quantity, 'EQUIPMENT', asgn.planned_quantity, 0),0)
1160 ,asgn.planned_bur_cost_proj_cur) bac_value_in_task_deriv --3801780
1161 FROM
1162 pa_task_asgmts_v asgn
1163 WHERE asgn.task_version_id = c_task_ver_id
1164 AND pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1165 asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS',p_as_of_date,asgn.task_version_id, p_structure_type, l_structure_version_id, asgn.task_id ) --- Bug 3764224
1166 IS NULL
1167 --bug 3958686, now hidden assignments should not to be selected
1168 -- AND asgn.ta_display_flag = 'Y' -- Bug 4323537
1169 ; */
1170
1171 -- FPM Dev CR 5 : Reverted back the outer join
1172 -- FPM Dev CR 4 : Removed Outer Join from rollup table. No need to select deliverables which do not have rollup records
1173 --This cursor selects the deliverables of a given task.
1174 CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
1175 IS
1176 SELECT obj.object_type_from
1177 , 'PA_TASKS' parent_object_type
1178 , obj.object_id_to2 object_id
1179 , obj.object_id_to1
1180 , obj.object_id_from1
1181 , 'PA_DELIVERABLES' object_type
1182 , ppr.actual_finish_date
1183 , ppr.as_of_date
1184 , ppr.completed_percentage
1185 , ppr.STRUCTURE_TYPE
1186 , ppr.PROJ_ELEMENT_ID
1187 , ppr.STRUCTURE_VERSION_ID
1188 , ppr.TASK_WT_BASIS_CODE
1189 , elem.progress_weight weighting_percentage
1190 , ppr.base_percent_complete
1191 , pps2.project_status_weight override_weight ---override progress status code
1192 , pps3.project_status_weight base_weight --base prog status
1193 FROM pa_proj_elements elem
1194 , pa_object_relationships obj
1195 , pa_progress_rollup ppr
1196 , pa_project_statuses pps2
1197 , pa_project_statuses pps3
1198 WHERE obj.object_id_from2= c_task_proj_elem_id
1199 AND obj.object_type_from = 'PA_TASKS'
1200 AND obj.object_type_to = 'PA_DELIVERABLES'
1201 AND obj.relationship_type = 'A'
1202 AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
1203 AND elem.proj_element_id = obj.object_id_to2
1204 AND elem.object_type = 'PA_DELIVERABLES'
1205 and elem.project_id = p_project_id
1206 -- AND obj.object_id_to1 = ppr.object_version_id(+)
1207 AND ppr.object_type(+) = 'PA_DELIVERABLES'
1208 AND ppr.project_id(+) = c_project_id
1209 AND ppr.object_id(+) = obj.object_id_to2
1210 AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
1211 obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug 3764224 */) -- FPM Dev CR 3
1212 AND ppr.structure_type(+) = p_structure_type
1213 AND ppr.structure_version_id is null -- deliverable progress for working version is not allowed
1214 AND ppr.base_progress_status_code = pps3.project_status_code(+)
1215 AND ppr.progress_status_code = pps2.project_status_code(+)
1216 AND ppr.current_flag(+) <> 'W'
1217 ;
1218
1219 CURSOR c_mass_rollup_tasks IS
1220 select distinct object_id_from1
1221 from pa_object_relationships
1222 start with object_id_to1 IN (select object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
1223 and relationship_type = 'S'
1224 connect by prior object_id_from1 = object_id_to1
1225 and relationship_type = 'S'
1226 MINUS
1227 select object_id object_id_from1 from pa_proj_rollup_temp where process_number = l_process_number_temp
1228 ;
1229
1230 CURSOR c_mass_rollup_tasks_temp IS
1231 select object_id
1232 from pa_proj_rollup_temp where process_number = l_process_number_temp
1233 ;
1234
1235 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
1236 IS
1237 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
1238 FROM pa_proj_elem_ver_structure str
1239 , pa_project_statuses status
1240 where str.element_version_id = c_structure_version_id
1241 AND str.project_id = c_project_id
1242 AND str.status_code = status.project_status_code;
1243
1244 CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
1245 IS
1246 SELECT element_version_id
1247 FROM pa_proj_element_versions
1248 where project_id = c_project_id
1249 and object_type = 'PA_TASKS'
1250 AND parent_structure_version_id = c_structure_version_id
1251 AND wbs_level = (Select max(wbs_level)
1252 From pa_proj_element_versions
1253 where project_id = c_project_id
1254 and object_type = 'PA_TASKS'
1255 AND parent_structure_version_id = c_structure_version_id);
1256
1257 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; --bug 3830434
1258 l_assignment_exists VARCHAR2(1) ; -- Bug 3830673
1259 l_digit_number number; --BUG 3950574, rtarway
1260
1261 --bug 4045979, start
1262 l_base_struct_ver_id NUMBER;
1263
1264 CURSOR check_task_baselined(c_structure_ver_id NUMBER, c_task_version_id NUMBER)
1265 IS
1266 select 'Y' from pa_proj_element_versions ppev1
1267 where ppev1.parent_structure_version_id = c_structure_ver_id
1268 and ppev1.proj_element_id = (select proj_element_id from pa_proj_element_versions ppev2
1269 where ppev2.element_version_id = c_task_version_id
1270 and ppev2.project_id = p_project_id);
1271
1272 l_task_baselined VARCHAR2(1) := 'N';
1273 l_parent_task_baselined VARCHAR2(1) := 'N';
1274
1275 --bug 4045979, end
1276
1277 l_tsk_progress_exists VARCHAR2(1);
1278 l_mapping_tasks_to_rollup_tab PA_PLSQL_DATATYPES.NumTabTyp;
1279
1280 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
1281 CURSOR cur_tree_rollup_dates
1282 IS
1283 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
1284 from pa_object_relationships obj
1285 , pa_proj_element_versions ver
1286 , pa_progress_rollup ppr
1287 , pa_proj_rollup_temp rollup
1288 , pa_proj_element_versions ver2
1289 where rollup.object_id = obj.object_id_to1
1290 AND rollup.process_number = l_process_number_temp
1291 AND obj.relationship_type = 'S'
1292 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
1293 AND obj.object_type_to = 'PA_TASKS'
1294 AND obj.object_id_from1= ver.element_version_id
1295 AND ver.project_id = p_project_id
1296 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
1297 AND ver.project_id = ppr.project_id
1298 AND ppr.as_of_date > p_as_of_date
1299 AND ppr.object_id = ver.proj_element_id
1300 AND ppr.current_flag = 'Y'
1301 AND ppr.proj_element_id = ver.proj_element_id
1302 AND ppr.structure_type = p_structure_type
1303 AND ppr.structure_version_id is null
1304 AND obj.object_id_to1 = ver2.element_version_id
1305 AND ver2.project_id = p_project_id
1306 AND ver2.object_type = 'PA_TASKS'
1307 AND rollup.object_type = 'PA_TASKS' -- cklee bug: 6610612
1308 order by ppr.as_of_date;
1309
1310
1311 -- Bug 4392189 Begin
1312 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
1313 SELECT
1314 ppv2.project_id sub_project_id
1315 ,ppv2.element_version_id sub_structure_ver_id
1316 ,ppv2.proj_element_id sub_proj_element_id
1317 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method, ppv2.proj_element_id, ppv2.parent_structure_version_id,
1318 'WORKPLAN','N') sub_project_bac_value
1319 FROM
1320 pa_proj_element_versions ppv2
1321 ,pa_proj_elem_ver_structure ppevs2
1322 ,pa_object_relationships por1
1323 ,pa_object_relationships por2
1324 WHERE
1325 por1.object_id_from1 = c_task_version_id
1326 AND por1.object_id_to1 = por2.object_id_from1
1327 AND por2.object_id_to1 = ppv2.element_version_id
1328 AND ppv2.object_type = 'PA_STRUCTURES'
1329 -- AND por2.relationship_type in ( 'LW', 'LF' )
1330 AND por2.relationship_type = 'LW'
1331 AND ppevs2.element_version_id = ppv2.element_version_id
1332 AND ppevs2.project_id = ppv2.project_id
1333 AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
1334 AND ppevs2.latest_eff_published_flag = 'Y';
1335
1336 l_sub_project_id NUMBER;
1337 l_sub_structure_ver_id NUMBER;
1338 l_sub_proj_element_id NUMBER;
1339 l_sub_project_bac_value NUMBER;
1340
1341 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
1342 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
1343 SELECT
1344 ppr.progress_rollup_id
1345 ,ppr.actual_start_date
1346 ,ppr.actual_finish_date
1347 ,ppr.estimated_start_date
1348 ,ppr.estimated_finish_date
1349 ,pps1.project_status_weight rollup_weight1
1350 ,pps2.project_status_weight override_weight2
1351 ,pps3.project_status_weight base_weight3
1352 ,pps4.project_status_weight task_weight4
1353 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
1354 -- ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
1355 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0)
1356 , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
1357 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
1358 FROM
1359 pa_progress_rollup ppr
1360 ,pa_project_statuses pps1
1361 ,pa_project_statuses pps2
1362 ,pa_project_statuses pps3
1363 ,pa_project_statuses pps4
1364 ,pa_proj_elements ppe
1365 WHERE
1366 ppr.project_id = c_sub_project_id
1367 AND ppe.project_id = c_sub_project_id
1368 AND ppe.object_type = 'PA_STRUCTURES'
1369 AND ppe.proj_element_id = c_sub_proj_element_id
1370 AND ppr.object_id = c_sub_proj_element_id
1371 AND ppr.object_type = 'PA_STRUCTURES'
1372 AND ppr.structure_version_id is null
1373 AND ppr.structure_type = 'WORKPLAN'
1374 AND ppr.current_flag IN ('Y', 'N')
1375 AND ppr.as_of_date <= c_as_of_date
1376 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
1377 AND ppr.progress_status_code = pps2.project_status_code(+)
1378 AND ppr.base_progress_status_code = pps3.project_status_code(+)
1379 AND ppe.status_code = pps4.project_status_code(+)
1380 order by as_of_date desc
1381 ;
1382
1383
1384 l_subproj_prog_rollup_id NUMBER;
1385 l_subproj_act_start_date DATE;
1386 l_subproj_act_finish_date DATE;
1387 l_subproj_est_start_date DATE;
1388 l_subproj_est_finish_date DATE;
1389 l_subproj_rollup_weight1 NUMBER;
1390 l_subproj_override_weight2 NUMBER;
1391 l_subproj_base_weight3 NUMBER;
1392 l_subproj_task_weight4 NUMBER;
1393 l_subproj_earned_value NUMBER;
1394 l_subproj_bac_value NUMBER;
1395 l_subproj_comp_percentage NUMBER; --Bug 4506009
1396 l_actual_lowest_task VARCHAR2(1) := 'N';
1397 -- Bug 4392189 End
1398
1399 l_summary_object_flag VARCHAR2(1); -- 4370746
1400 l_wp_version_enabled_flag VARCHAR2(1); -- Bug#12393400
1401
1402 -- Bug 4506461 Begin
1403 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
1404 SELECT 'Y'
1405 FROM pa_object_relationships
1406 WHERE --relationship_type in ( 'LW', 'LF' )
1407 relationship_type = 'LW'
1408 AND object_id_from1 IN
1409 (SELECT object_id_to1
1410 FROM pa_object_relationships
1411 START WITH object_id_from1 = c_task_version_id
1412 AND relationship_type = 'S'
1413 CONNECT BY PRIOR object_id_to1 = object_id_from1
1414 AND relationship_type = 'S')
1415 ;
1416 l_subproject_found VARCHAR2(1):='N';
1417 l_rederive_base_pc VARCHAR2(1):='N';
1418 -- Bug 4506461 End
1419
1420 l_last_as_of_date DATE;--4573257
1421 l_subproj_task_version_id NUMBER;--4582956
1422 l_org_id NUMBER; -- 4746476
1423 BEGIN
1424
1425 -- Rollup Cases
1426 -- 1. Workplan Publsihed Version Rollup.
1427 -- 2. Workplan Working Version Rollup.
1428 -- 3. Financial Structure Rollup.
1429 -- 4. Entire WBS using structure version id.
1430 -- 5. Program Rollup
1431
1432
1433 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
1434
1435 IF g1_debug_mode = 'Y' THEN
1436 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT');
1437 END IF;
1438
1439
1440 IF g1_debug_mode = 'Y' THEN
1441 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
1442 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
1443 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
1444 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
1445 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
1446 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
1447 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
1448 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
1449 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
1450 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
1451 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
1452 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
1453 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
1454 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
1455 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
1456 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
1457 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
1458 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
1459 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
1460 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
1461 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
1462 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
1463 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
1464 END IF;
1465
1466 l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
1467
1468 -- 20 May : Amit : If Structure_version_id is null, then no rocessing shd be done
1469 -- Bug 3856161 : Added p_as_of_date check also
1470 IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
1471 return;
1472 END IF;
1473
1474 --bug 4045979
1475 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
1476
1477 --BUG 4355204, rtarway
1478 --IF (p_commit = FND_API.G_TRUE) THEN
1479 savepoint ROLLUP_PROGRESS_PVT2;
1480 --END IF;
1481
1482 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
1483 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1484 END IF;
1485
1486 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
1487 FND_MSG_PUB.initialize;
1488 END IF;
1489
1490 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
1491 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --bug 3830434
1492 -- 4746476 : added org_id in below select
1493 SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
1494
1495 IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
1496 l_split_workplan := 'Y';
1497 ELSE
1498 l_split_workplan := 'N';
1499 END IF;
1500
1501 -- Bug 4938333
1502 -- In case of financial struture, no need to check for published version
1503 -- populate structure_version_id always null.
1504 IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
1505
1506 -- This is to find out whether passed struture version id is published or not.
1507 -- bcoz progress for workplna workplan version also exists
1508
1509 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
1510 FETCH cur_check_published_version INTO l_published_structure;
1511 CLOSE cur_check_published_version;
1512
1513 IF l_published_structure = 'Y' THEN
1514 l_structure_version_id := null;
1515 ELSE
1516 l_structure_version_id := p_structure_version_id;
1517 END IF;
1518 ELSE -- Bug 4938333
1519 l_published_structure := 'Y'; -- Bug 4938333
1520 l_structure_version_id := null; -- Bug 4938333
1521 END IF;
1522
1523 l_task_version_id := p_task_version_id;
1524
1525 IF p_structure_type = 'WORKPLAN' THEN
1526 l_rollup_method := p_wp_rollup_method;
1527 ELSE
1528 l_rollup_method := p_fin_rollup_method;
1529 END IF;
1530
1531 IF g1_debug_mode = 'Y' THEN
1532 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled, x_Log_Level=> 3);
1533 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
1534 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1535 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_task_version_id='||l_task_version_id, x_Log_Level=> 3);
1536 END IF;
1537
1538 --l_lowest_task := p_lowest_task;
1539 -- Loop thru all the parents of the passed task
1540
1541 SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
1542 INTO l_process_number_temp FROM dual;
1543
1544 IF p_rollup_entire_wbs = 'N' THEN
1545 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1546 SELECT distinct l_process_number_temp, object_id_from1, 'PA_TASKS', 1
1547 FROM pa_object_relationships
1548 WHERE relationship_type = 'S'
1549 START WITH object_id_to1 = l_task_version_id
1550 AND relationship_type = 'S'
1551 CONNECT BY PRIOR object_id_from1 = object_id_to1
1552 AND relationship_type = 'S'
1553 UNION ALL -- 4563049 : Rollup Structure also if passed, so that it can populate ETC from PJI
1554 SELECT distinct l_process_number_temp, l_task_version_id object_id_from1, 'PA_TASKS', 1
1555 FROM dual
1556 WHERE l_task_version_id = p_structure_version_id
1557 ;
1558 ELSE
1559 IF g1_debug_mode = 'Y' THEN
1560 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
1561 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
1562 FOR i in 1..p_task_version_id_tbl.count LOOP
1563 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
1564 END LOOP;
1565 END IF;
1566
1567 IF p_task_version_id_tbl.count > 0 THEN
1568 FORALL i in 1..p_task_version_id_tbl.count
1569 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1570 VALUES(l_process_number_temp,p_task_version_id_tbl(i), 'PA_TASKS',1 );
1571
1572 l_mass_rollup_prog_rec_tab.delete;
1573 OPEN c_mass_rollup_tasks;
1574 FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1575 CLOSE c_mass_rollup_tasks;
1576
1577 FORALL i IN 1..l_mass_rollup_prog_rec_tab.COUNT
1578 INSERT INTO PA_PROJ_ROLLUP_TEMP(
1579 PROCESS_NUMBER,
1580 OBJECT_TYPE,
1581 OBJECT_ID,
1582 wbs_level)
1583 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_rec_tab(i), 1);
1584
1585 l_mass_rollup_prog_rec_tab.delete;
1586 ELSE
1587 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1588 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
1589 FROM pa_proj_element_versions
1590 WHERE project_id = p_project_id
1591 AND parent_structure_version_id = p_structure_version_id
1592 --AND PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(element_version_id) = 'N'
1593 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
1594 AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
1595 AND object_type = 'PA_TASKS'
1596 UNION
1597 SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
1598 FROM dual
1599 ;
1600 END IF;
1601 END IF;
1602
1603 IF g1_debug_mode = 'Y' THEN
1604 l_mass_rollup_prog_rec_tab.delete;
1605 OPEN c_mass_rollup_tasks_temp;
1606 FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1607 CLOSE c_mass_rollup_tasks_temp;
1608 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
1609 FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
1610 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
1611 END LOOP;
1612 l_mass_rollup_prog_rec_tab.delete;
1613
1614 END IF;
1615
1616
1617 OPEN cur_tasks(1);
1618 FETCH cur_tasks BULK COLLECT INTO
1619 l_tsk_object_id_from1_tab
1620 ,l_tsk_parent_object_type_tab
1621 ,l_tsk_object_id_to1_tab
1622 ,l_tsk_object_type_tab
1623 ,l_tsk_wbs_level_tab
1624 ,l_tsk_weighting_percent_tab
1625 ,l_tsk_roll_comp_percent_tab
1626 ,l_tsk_over_percent_comp_tab
1627 ,l_tsk_as_of_date_tab
1628 ,l_tsk_actual_start_date_tab
1629 ,l_tsk_actual_finish_date_tab
1630 ,l_tsk_est_start_date_tab
1631 ,l_tsk_est_finish_date_tab
1632 ,l_tsk_rollup_weight1_tab
1633 ,l_tsk_override_weight2_tab
1634 ,l_tsk_base_weight3_tab
1635 ,l_tsk_task_weight4_tab
1636 ,l_tsk_status_code_tab
1637 ,l_tsk_object_id_tab
1638 ,l_tsk_proj_element_id_tab
1639 ,l_tsk_PPL_ACT_EFF_tab
1640 ,l_tsk_PPL_ACT_COST_TC_tab
1641 ,l_tsk_PPL_ACT_COST_PC_tab
1642 ,l_tsk_PPL_ACT_COST_FC_tab
1643 ,l_tsk_PPL_ACT_RAWCOST_TC_tab
1644 ,l_tsk_PPL_ACT_RAWCOST_PC_tab
1645 ,l_tsk_PPL_ACT_RAWCOST_FC_tab
1646 ,l_tsk_EST_REM_EFFORT_tab
1647 ,l_tsk_PPL_ETC_COST_TC_tab
1648 ,l_tsk_PPL_ETC_COST_PC_tab
1649 ,l_tsk_PPL_ETC_COST_FC_tab
1650 ,l_tsk_PPL_ETC_RAWCOST_TC_tab
1651 ,l_tsk_PPL_ETC_RAWCOST_PC_tab
1652 ,l_tsk_PPL_ETC_RAWCOST_FC_tab
1653 ,l_tsk_EQPMT_ACT_EFFORT_tab
1654 ,l_tsk_EQPMT_ACT_COST_TC_tab
1655 ,l_tsk_EQPMT_ACT_COST_PC_tab
1656 ,l_tsk_EQPMT_ACT_COST_FC_tab
1657 ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
1658 ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
1659 ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
1660 ,l_tsk_EQPMT_ETC_EFFORT_tab
1661 ,l_tsk_EQPMT_ETC_COST_TC_tab
1662 ,l_tsk_EQPMT_ETC_COST_PC_tab
1663 ,l_tsk_EQPMT_ETC_COST_FC_tab
1664 ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
1665 ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
1666 ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
1667 ,l_tsk_OTH_QUANTITY_tab
1668 ,l_tsk_OTH_ACT_COST_TC_tab
1669 ,l_tsk_OTH_ACT_COST_PC_tab
1670 ,l_tsk_OTH_ACT_COST_FC_tab
1671 ,l_tsk_OTH_ACT_RAWCOST_TC_tab
1672 ,l_tsk_OTH_ACT_RAWCOST_PC_tab
1673 ,l_tsk_OTH_ACT_RAWCOST_FC_tab
1674 ,l_tsk_OTH_ETC_QUANTITY_tab
1675 ,l_tsk_OTH_ETC_COST_TC_tab
1676 ,l_tsk_OTH_ETC_COST_PC_tab
1677 ,l_tsk_OTH_ETC_COST_FC_tab
1678 ,l_tsk_OTH_ETC_RAWCOST_TC_tab
1679 ,l_tsk_OTH_ETC_RAWCOST_PC_tab
1680 ,l_tsk_OTH_ETC_RAWCOST_FC_tab
1681 ,l_tsk_CURRENT_FLAG_tab
1682 ,l_tsk_PF_COST_RATE_TYPE_tab
1683 ,l_tsk_PF_COST_EXC_RATE_tab
1684 ,l_tsk_PF_COST_RATE_DATE_tab
1685 ,l_tsk_P_COST_RATE_TYPE_tab
1686 ,l_tsk_P_COST_EXC_RATE_tab
1687 ,l_tsk_P_COST_RATE_DATE_tab
1688 ,l_tsk_TXN_CURRENCY_CODE_tab
1689 ,l_tsk_PROG_PA_PERIOD_NAME_tab
1690 ,l_tsk_PROG_GL_PERIOD_NAME_tab
1691 ,l_tsk_bac_value_tab
1692 ,l_tsk_bac_self_value_tab -- Bug 4493105
1693 ,l_tsk_earned_value_tab
1694 ,l_tsk_deriv_method_tab
1695 ,l_tsk_progress_rollup_id_tab
1696 ,l_tsk_rollup_rec_ver_num_tab
1697 ,l_tsk_object_version_id_tab
1698 ,l_tsk_progress_stat_code_tab
1699 ,l_tsk_incremental_wq_tab
1700 ,l_tsk_cumulative_wq_tab
1701 ,l_tsk_base_prog_stat_code_tab
1702 ,l_tsk_eff_roll_prg_st_code_tab
1703 ,l_tsk_percent_complete_id_tab
1704 ,l_tsk_task_wt_basis_code_tab
1705 ,l_tsk_structure_version_id_tab
1706 ,l_tsk_create_required
1707 ,l_tsk_update_required
1708 ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
1709 ;
1710 CLOSE cur_tasks;
1711
1712 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
1713
1714 IF g1_debug_mode = 'Y' THEN
1715 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
1716 END IF;
1717
1718
1719 FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
1720 -- Bug 4636100 Issue 2 : Added following if
1721 -- The intention of this IF is to just pass the structure level record
1722 -- to scheduling API. Note that in structure case, we just pass one level
1723 -- records below say task A, and if that below task A has an assignment, it will calculate
1724 -- wrong % complete because we are not sending A's childs
1725 IF ( (nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
1726 OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
1727 OR (p_rollup_entire_wbs = 'Y')
1728 )
1729 THEN
1730
1731 IF g1_debug_mode = 'Y' THEN
1732 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
1733 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
1734 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
1735 END IF;
1736 l_tsk_progress_exists := 'N';
1737 l_parent_count := l_parent_count + 1;
1738 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
1739 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
1740
1741
1742 IF g1_debug_mode = 'Y' THEN
1743 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
1744 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
1745 END IF;
1746
1747 -- Bug 4392189 : Program Changes Begin
1748 IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1749 l_sub_project_id := null;
1750 l_subproj_prog_rollup_id := null;
1751 l_subproj_act_start_date := null;
1752 l_subproj_act_finish_date := null;
1753 l_subproj_est_start_date := null;
1754 l_subproj_est_finish_date := null;
1755 l_subproj_rollup_weight1 := null;
1756 l_subproj_override_weight2 := null;
1757 l_subproj_base_weight3 := null;
1758 l_subproj_task_weight4 := null;
1759 l_subproj_earned_value := null;
1760 l_subproj_bac_value := null;
1761
1762 -- 4587527 : It was not supporting multiple sub projects at link task
1763 -- So converted it into FOR LOOP
1764 FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
1765
1766
1767 --OPEN c_get_sub_project (l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k));
1768 --FETCH c_get_sub_project INTO l_sub_project_id, l_sub_structure_ver_id, l_sub_proj_element_id, l_sub_project_bac_value;
1769 --CLOSE c_get_sub_project;
1770
1771 --IF l_sub_project_id IS NOT NULL THEN
1772 IF g1_debug_mode = 'Y' THEN
1773 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
1774 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
1775 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
1776 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
1777 END IF;
1778 l_subproject_found := 'Y'; -- Bug 4506461
1779 l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
1780 IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
1781 l_actual_lowest_task := 'Y';
1782 END IF;
1783
1784 l_subproj_prog_rollup_id := null;
1785 l_subproj_act_start_date := null;
1786 l_subproj_act_finish_date := null;
1787 l_subproj_est_start_date := null;
1788 l_subproj_est_finish_date := null;
1789 l_subproj_rollup_weight1 := null;
1790 l_subproj_override_weight2 := null;
1791 l_subproj_base_weight3 := null;
1792 l_subproj_task_weight4 := null;
1793 l_subproj_bac_value := null;
1794 l_subproj_comp_percentage := null;
1795
1796 OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
1797 FETCH c_get_sub_project_progress INTO
1798 l_subproj_prog_rollup_id
1799 , l_subproj_act_start_date
1800 , l_subproj_act_finish_date
1801 , l_subproj_est_start_date
1802 , l_subproj_est_finish_date
1803 , l_subproj_rollup_weight1
1804 , l_subproj_override_weight2
1805 , l_subproj_base_weight3
1806 , l_subproj_task_weight4
1807 --, l_subproj_earned_value Bug 4506009
1808 , l_subproj_bac_value
1809 , l_subproj_comp_percentage -- Bug 4506009
1810 ;
1811 CLOSE c_get_sub_project_progress;
1812
1813 IF g1_debug_mode = 'Y' THEN
1814 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
1815 END IF;
1816
1817 l_index := l_index + 1;
1818
1819 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_SUBPROJECTS';
1820 l_rollup_table1(l_index).OBJECT_ID := (-1 * l_index);
1821 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
1822 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);
1823 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
1824 l_rollup_table1(l_index).CALENDAR_ID := l_index;
1825
1826 -- 4533112 : Added following check
1827 IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
1828 l_rollup_table1(l_index).START_DATE1 := l_subproj_act_start_date;
1829 l_rollup_table1(l_index).FINISH_DATE1 := l_subproj_act_finish_date;
1830 l_rollup_table1(l_index).START_DATE2 := l_subproj_est_start_date;
1831 l_rollup_table1(l_index).FINISH_DATE2 := l_subproj_est_finish_date;
1832 END IF;
1833
1834 -- 4582956 Begin : LInk task should be treated as summaru task which means
1835 -- we should be passing % complete of sub project and bac value of sub project
1836 /*
1837
1838 -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
1839 -- This is additional sefety fix
1840
1841 -- Bug 4506009 : Deriving l_subproj_earned_value
1842 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1843 --l_subproj_earned_value := nvl(round((NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_subproj_comp_percentage,0)/100), 5),0);
1844 -- 4579654 : For more accuracy, Do not round the earned value here.
1845 --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100), 5),0);
1846 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1847 ELSE
1848 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_subproj_comp_percentage,0)/100), l_prj_currency_code),0);
1849 -- 4579654 : For more accuracy, Do not round the earned value here.
1850 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100), l_prj_currency_code),0);
1851 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1852 END IF;
1853
1854 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
1855 l_rollup_table1(l_index).EARNED_VALUE1 := 0;
1856 l_rollup_table1(l_index).BAC_VALUE1 := 1;
1857 ELSE
1858 l_rollup_table1(l_index).EARNED_VALUE1 := NVL( l_subproj_earned_value, 0 );
1859 --l_rollup_table1(l_index).BAC_VALUE1 := NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0));
1860 l_rollup_table1(l_index).BAC_VALUE1 := NVL(l_sub_project_bac_value, 0);
1861 END IF;
1862
1863 */
1864 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl(l_subproj_comp_percentage, 0);
1865 l_rollup_table1(l_index).BAC_VALUE1 := NVL(rec_subproj.sub_project_bac_value, 0);
1866 -- 4582956 End
1867
1868 -- Rollup Progress Status Rollup
1869 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_subproj_rollup_weight1,0); --rollup prog status
1870 l_rollup_table1(l_index).PROGRESS_override1 := l_subproj_override_weight2; --override prg status
1871
1872 -- Base Progress Status Rollup
1873 -- 4533112 : Base progress status is not used
1874 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_subproj_base_weight3, 0 ); --base prog status
1875 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
1876
1877 -- Task Status Rollup
1878 l_rollup_table1(l_index).task_status1 := nvl( l_subproj_task_weight4, 0 ); -- task status
1879
1880
1881 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
1882 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
1883 l_action_allowed := 'Y';
1884 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
1885 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
1886
1887 IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
1888 -- This means Progress exists for the corresponding task
1889 l_tsk_progress_exists := 'Y';
1890 END IF;
1891 --END IF; -- l_sub_project_id IS NOT NULL THEN
1892 END LOOP;
1893 END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1894 -- Bug 4392189 : Program Changes End
1895
1896 -- Loop thru all task assignments of a passed parent
1897 IF p_structure_type = 'WORKPLAN'
1898 THEN
1899 l_asgn_task_version_id_tab.delete;
1900 l_asgn_rate_based_flag_tab.delete;
1901 l_asgn_resource_class_code_tab.delete;
1902 l_asgn_res_assignment_id_tab.delete;
1903 l_asgn_planned_quantity_tab.delete;
1904 l_asgn_plan_bur_cost_pc_tab.delete;
1905 l_asgn_res_list_member_id_tab.delete;
1906
1907 OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
1908 FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
1909 , l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
1910 , l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
1911 CLOSE cur_assgn_rec_bulk;
1912
1913 IF g1_debug_mode = 'Y' THEN
1914 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
1915 END IF;
1916
1917 FOR i in 1..l_asgn_task_version_id_tab.count LOOP
1918
1919 IF g1_debug_mode = 'Y' THEN
1920 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
1921 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
1922 END IF;
1923
1924 l_asgn_progress_rec := null;
1925 l_asgn_act_start_date := null;
1926 l_asgn_act_finish_date := null;
1927 l_asgn_est_start_date := null;
1928 l_asgn_est_finish_date := null;
1929 l_asgn_as_of_date := null;
1930 l_asgn_ppl_act_eff := null;
1931 l_asgn_eqp_act_eff := null;
1932 l_asgn_ppl_act_cost := null;
1933 l_asgn_eqp_act_cost := null;
1934 l_asgn_oth_act_cost := null;
1935 l_asgn_ppl_etc_eff := null;
1936 l_asgn_eqp_etc_eff := null;
1937 l_asgn_ppl_etc_cost := null;
1938 l_asgn_eqp_etc_cost := null;
1939 l_asgn_oth_etc_cost := null;
1940
1941 OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
1942 FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
1943 CLOSE cur_get_asgn_progress;
1944
1945 IF g1_debug_mode = 'Y' THEN
1946 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
1947 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
1948 END IF;
1949
1950 IF l_asgn_progress_rec.object_id is not null THEN
1951 l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
1952 l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
1953 l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
1954 l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
1955 l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
1956
1957 l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
1958 l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
1959 l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
1960 l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
1961 l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
1962
1963 l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
1964 l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
1965 l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
1966 l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
1967 l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
1968
1969 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1970 l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_eqp_act_eff,0);
1971 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1972 IF l_asgn_ppl_etc_eff IS NULL THEN
1973 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1974 ELSE
1975 l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
1976 END IF;
1977 ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1978 IF l_asgn_eqp_etc_eff IS NULL THEN
1979 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1980 ELSE
1981 l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
1982 END IF;
1983 ELSE
1984 l_asgn_bac_value := 0;
1985 END IF;
1986 ELSE
1987 l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
1988 IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1989 IF l_asgn_ppl_etc_cost IS NULL THEN
1990 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1991 ELSE
1992 l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
1993 END IF;
1994 ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1995 IF l_asgn_eqp_etc_cost IS NULL THEN
1996 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1997 ELSE
1998 l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
1999 END IF;
2000 ELSE
2001 IF l_asgn_oth_etc_cost IS NULL THEN
2002 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
2003 ELSE
2004 l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
2005 END IF;
2006 END IF;
2007 END IF;
2008 ELSE
2009 l_asgn_earned_value := 0;
2010 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2011 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
2012 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
2013 ELSE
2014 l_asgn_bac_value := 0;
2015 END IF;
2016 ELSE
2017 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
2018 END IF;
2019 END IF;
2020
2021 l_index := l_index + 1;
2022
2023 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_ASSIGNMENTS';
2024 l_rollup_table1(l_index).OBJECT_ID := l_asgn_res_assignment_id_tab(i);
2025 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
2026 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_asgn_task_version_id_tab(i);
2027 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
2028 l_rollup_table1(l_index).CALENDAR_ID := l_index;
2029
2030 -- Percent Complete needs to be derived using Earned Value and BAC Value
2031
2032 -- Percent Complete at Assignment level does not get calculated
2033 -- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
2034 --Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
2035 -- and child task actual dates, regardless of the PPC Method.
2036 -- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
2037 IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
2038 -- Actual Date Rollup : Only Start Date gets rolls up.
2039 l_rollup_table1(l_index).START_DATE1 := l_asgn_act_start_date;
2040 l_rollup_table1(l_index).FINISH_DATE1 := l_asgn_act_finish_date;
2041
2042 -- Estimated Date Rollup : Only Start Date gets rolls up.
2043 l_rollup_table1(l_index).START_DATE2 := l_asgn_est_start_date;
2044 l_rollup_table1(l_index).FINISH_DATE2 := l_asgn_est_finish_date;
2045 END IF;
2046
2047 -- Progress Status entry is not there at assignment level
2048
2049 -- Assignment Status entry is not there at assignment level
2050
2051
2052 -- Earned Value and BAC Rollup
2053 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
2054 l_rollup_table1(l_index).EARNED_VALUE1 := 0;
2055 l_rollup_table1(l_index).BAC_VALUE1 := 1;
2056 -- 4392189 : Program Reporting Changes - Phase 2
2057 -- Having Set2 columns to get Project level % complete
2058 l_rollup_table1(l_index).EARNED_VALUE2 := 0;
2059 l_rollup_table1(l_index).BAC_VALUE2 := 1;
2060 ELSE
2061 l_rollup_table1(l_index).EARNED_VALUE1 := NVL( l_asgn_earned_value, 0 );
2062 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_asgn_bac_value, 0 );
2063 -- 4392189 : Program Reporting Changes - Phase 2
2064 -- Having Set2 columns to get Project level % complete
2065 l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_asgn_earned_value, 0 );
2066 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_asgn_bac_value, 0 );
2067 END IF;
2068
2069 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
2070 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
2071 l_action_allowed := 'Y';
2072 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
2073 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
2074
2075 IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS NOT NULL THEN
2076 -- This means Progress exists for the corresponding task
2077 l_tsk_progress_exists := 'Y';
2078 END IF;
2079
2080 --Bug#12393400 - Added - Begin
2081 -- For resource assignments in working version,
2082 -- the actual_finish_date should be NULL in case actual effort is not same as planned
2083 IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
2084 AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
2085 AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
2086 -- Update to happen only version is disabled or on a working version when version enabled
2087 IF (l_wp_version_enabled_flag = 'N'
2088 OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
2089 UPDATE PA_PROGRESS_ROLLUP
2090 SET ACTUAL_FINISH_DATE = NULL
2091 WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
2092 END IF;
2093 END IF; -- end check for
2094 --Bug#12393400 - Added - End
2095
2096 END LOOP; -- Assignments Loop
2097 END IF;
2098
2099 -- Bug 3957792 : Added check for Cancelled tasks
2100 IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k) = 'DELIVERABLE'
2101 AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
2102 THEN
2103
2104 FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id) LOOP -- FPM Change
2105 IF g1_debug_mode = 'Y' THEN
2106 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
2107 END IF;
2108
2109 l_index := l_index + 1;
2110
2111 l_rollup_table1(l_index).OBJECT_TYPE := cur_del_rec.object_type;
2112 l_rollup_table1(l_index).OBJECT_ID := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
2113 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_del_rec.parent_object_type;
2114 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);--Object Version Id of Task
2115 l_rollup_table1(l_index).WBS_LEVEL := 9999999;
2116 l_rollup_table1(l_index).CALENDAR_ID := l_index;
2117
2118 -- Rollup Percent Complete Rollup
2119 l_rollup_table1(l_index).task_weight1 := nvl( cur_del_rec.weighting_percentage, 0 );
2120 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_del_rec.completed_percentage, 0 );
2121 -- 4392189 : Program Reporting Changes - Phase 2
2122 -- Having Set2 columns to get Project level % complete
2123 l_rollup_table1(l_index).task_weight2 := nvl( cur_del_rec.weighting_percentage, 0 );
2124 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.completed_percentage, 0 );
2125
2126 --l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0; -- FPM Dev CR 2
2127
2128 -- Base Percent Complete Rollup
2129
2130 -- Dates will not get rolled up for deliverable
2131
2132 -- Rollup Progress Status Rollup
2133
2134 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0; --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
2135 l_rollup_table1(l_index).PROGRESS_override1 := cur_del_rec.override_weight; --override prg status
2136
2137 -- Base Progress Status Rollup
2138 -- 4533112 : Now base progress status is not used
2139 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
2140 -- l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
2141
2142 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
2143 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
2144
2145 -- Deliverable Status will not get rolled up for deliverable
2146
2147 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2148
2149 IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
2150 l_action_allowed := 'N';
2151 END IF;
2152
2153 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
2154 l_action_allowed := 'N';
2155 END IF;
2156
2157 IF g1_debug_mode = 'Y' THEN
2158 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
2159 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
2160 END IF;
2161
2162 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
2163 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
2164
2165 --maansari4/10 temporarily passing 'Y' to rollup node.
2166 -- need to investigate why l_action_allowed is coming always as 'N'
2167
2168 l_rollup_table1(l_index).rollup_node1 := 'Y';
2169 l_rollup_table1(l_index).rollup_node2 := 'Y';
2170
2171 IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL THEN
2172 -- This means Progress exists for the corresponding task
2173 l_tsk_progress_exists := 'Y';
2174 END IF;
2175 END LOOP; -- Delivertables Loop
2176 END IF; -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES' THEN
2177
2178 l_index := l_index + 1;
2179
2180 l_rollup_table1(l_index).OBJECT_TYPE := l_tsk_object_type_tab(k);
2181 l_rollup_table1(l_index).OBJECT_ID := l_tsk_object_id_to1_tab(k);--Task Version Id
2182 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := l_tsk_parent_object_type_tab(k);
2183 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_from1_tab(k); --Parent Task Version Id
2184 l_rollup_table1(l_index).WBS_LEVEL := NVL( l_tsk_wbs_level_tab(k), 0 );
2185 l_rollup_table1(l_index).CALENDAR_ID := l_index;
2186 -- 4582956 Begin
2187 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag; -- 4370746
2188 IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2189 -- 4586449 : Passing L for link tasks
2190 --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; --Link task shd be treated as summary task
2191 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'L'; --Link task shd be treated as summary task
2192 ELSE
2193 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag;
2194 END IF;
2195 -- 4582956 end
2196
2197 -- Rollup Percent Complete Rollup
2198 l_rollup_table1(l_index).task_weight1 := nvl( l_tsk_weighting_percent_tab(k), 0 );
2199 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( l_tsk_roll_comp_percent_tab(k), 0 );
2200 -- 4392189 : Program Reporting Changes - Phase 2
2201 -- Having Set2 columns to get Project level % complete
2202 l_rollup_table1(l_index).task_weight2 := nvl( l_tsk_weighting_percent_tab(k), 0 );
2203 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( l_tsk_base_percent_comp_tab(k), 0 );
2204
2205 --bug 4045979, start
2206 l_task_baselined := 'N';
2207 l_parent_task_baselined := 'N';
2208 -- added if condition for bug 13923366 Huawei by skkoppul
2209 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
2210 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
2211 l_task_baselined := 'Y';
2212 l_parent_task_baselined := 'Y';
2213 ELSE
2214 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
2215 FETCH check_task_baselined INTO l_task_baselined;
2216 CLOSE check_task_baselined;
2217
2218 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
2219 FETCH check_task_baselined INTO l_parent_task_baselined;
2220 CLOSE check_task_baselined;
2221 END IF;
2222
2223 -- 4392189 : Program Reporting Changes - Phase 2
2224 -- Having Set2 columns to get Project level % complete
2225
2226 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2227 THEN
2228 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
2229 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
2230 ELSE
2231 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := l_tsk_over_percent_comp_tab(k);
2232 --4557541 : For self % complete Override at tasks level would not be considered
2233 --l_rollup_table1(l_index).PERCENT_OVERRIDE2 := l_tsk_over_percent_comp_tab(k);
2234 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
2235
2236 END IF;
2237
2238 -- Bug 4284353 : Added below code
2239 IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
2240 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
2241 l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
2242 END IF;
2243
2244 -- Actual Date Rollup
2245 l_rollup_table1(l_index).START_DATE1 := l_tsk_actual_start_date_tab(k);
2246 l_rollup_table1(l_index).FINISH_DATE1 := l_tsk_actual_finish_date_tab(k);
2247
2248 -- Estimated Date Rollup
2249 l_rollup_table1(l_index).START_DATE2 := l_tsk_est_start_date_tab(k);
2250 l_rollup_table1(l_index).FINISH_DATE2 := l_tsk_est_finish_date_tab(k);
2251
2252 -- Rollup Progress Status Rollup
2253 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_tsk_rollup_weight1_tab(k),0); --rollup prog status
2254 l_rollup_table1(l_index).PROGRESS_override1 := l_tsk_override_weight2_tab(k); --override prg status
2255
2256 -- Base Progress Status Rollup
2257 -- 4533112 : base progress status is not used
2258 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 ); --base prog status
2259 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
2260
2261 -- Task Status Rollup
2262 l_rollup_table1(l_index).task_status1 := nvl( l_tsk_task_weight4_tab(k), 0 ); -- task status
2263
2264 -- ETC Effort Rollup
2265 -- l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
2266 -- l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
2267
2268 -- ETC Cost in Project Currency Rollup
2269 -- l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2270 -- l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2271 -- l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
2272
2273 -- ETC Cost in Project Functional Currency Rollup
2274 -- l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2275 -- l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2276 -- l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
2277
2278 -- Sub Project ETC Effort Rollup
2279 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2280 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
2281
2282 -- Sub Project ETC Cost in Project Currency Rollup
2283 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2284 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
2285 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
2286
2287 -- Sub Project ETC Cost in Project Functional Currency Rollup
2288 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2289 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
2290 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
2291
2292 -- Earned Value and BAC Rollup
2293 -- Bug 3830673, 3879461 : We should pass the earned value for lowest task which do not have assignments
2294 --IF NVL(l_lowest_task, 'N') = 'Y' AND NVL(l_assignment_exists, 'N') = 'N' THEN
2295 -- IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2296 -- l_rollup_table1(l_index).EARNED_VALUE1 := nvl(cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE,0) + nvl(cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
2297 -- ELSE
2298 -- l_rollup_table1(l_index).EARNED_VALUE1 := nvl(cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC,0) + nvl(cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC,0) + nvl(cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
2299 -- END IF;
2300 --ELSE
2301
2302 -- 4392189 : Program Reporting Changes - Phase 2
2303 -- Having Set2 columns to get Project level % complete
2304 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2305 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2306
2307 --END IF;
2308
2309 -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
2310 -- in earned_value1 set
2311 IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2312
2313 l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
2314 , l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k), p_structure_version_id,
2315 'WORKPLAN','N','Y');
2316 -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
2317 --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
2318 l_rollup_table1(l_index).EARNED_VALUE2 := 1;
2319 END IF;
2320
2321 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_tsk_bac_value_tab(k), 0 );
2322
2323 IF g1_debug_mode = 'Y' THEN
2324 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1, x_Log_Level=> 3);
2325 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
2326 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
2327 END IF;
2328
2329 -- 4586449 End
2330
2331 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k), 0 );
2332
2333 -- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
2334 -- Otheriwse it will look for deliverables and will result in 0 % complete
2335 IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
2336 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
2337 ELSE
2338 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
2339 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
2340 END IF;
2341
2342 -- Bug 4207995 : Passing Dirty_flags always Y
2343 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
2344 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
2345 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
2346 -- ELSE
2347 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
2348 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
2349 -- END IF;
2350
2351 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2352
2353 IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
2354 l_action_allowed := 'N';
2355 END IF;
2356
2357 IF g1_debug_mode = 'Y' THEN
2358 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
2359 END IF;
2360
2361 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
2362 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
2363
2364 --maansari4/10 temporarily passing 'Y' to rollup node.
2365 -- need to investigate why l_action_allowed is coming always as 'N'
2366
2367 l_rollup_table1(l_index).rollup_node1 := 'Y';
2368 l_rollup_table1(l_index).rollup_node2 := 'Y';
2369
2370
2371 IF p_rollup_entire_wbs = 'Y' THEN
2372 -- This means Progress exists for the corresponding task
2373 IF l_tsk_progress_exists = 'Y' THEN
2374 l_mass_rollup_prog_exists_tab.extend(1);
2375 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2376 ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
2377 l_mass_rollup_prog_exists_tab.extend(1);
2378 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2379 END IF;
2380 END IF;
2381
2382 l_mapping_tasks_to_rollup_tab(l_index):= k;
2383
2384 --IF (p_process_whole_tree = 'N' and l_parent_count = 2) THEN
2385 -- exit;
2386 --END IF;
2387 END IF; -- Bug 4636100 Issue 2 : Added Endif
2388 END LOOP; -- End Tasks Loop
2389
2390 --begin bug 3951982
2391 IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2392 AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
2393 AND l_actual_lowest_task = 'N' -- Bug 4392189
2394 THEN
2395 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
2396 SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS', 1
2397 FROM dual;
2398
2399 FOR cur_tasks_rec in cur_tasks(1) LOOP
2400 IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
2401 IF g1_debug_mode = 'Y' THEN
2402 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Second task cursor for summary task with assignments', x_Log_Level=> 3);
2403 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1, x_Log_Level=> 3);
2404 END IF;
2405 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
2406
2407 l_index := l_index + 1;
2408
2409 l_rollup_table1(l_index).OBJECT_TYPE := cur_tasks_rec.object_type;
2410 l_rollup_table1(l_index).OBJECT_ID := cur_tasks_rec.object_id_to1;--Task Version Id
2411 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_tasks_rec.parent_object_type;
2412 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_tasks_rec.object_id_from1; --Parent Task Version Id
2413 l_rollup_table1(l_index).WBS_LEVEL := NVL( cur_tasks_rec.wbs_level, 0 );
2414 l_rollup_table1(l_index).CALENDAR_ID := l_index;
2415 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; -- 4370746
2416
2417 -- Rollup Percent Complete Rollup
2418 l_rollup_table1(l_index).task_weight1 := nvl( cur_tasks_rec.weighting_percentage, 0 );
2419 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
2420 -- 4392189 : Program Reporting Changes - Phase 2
2421 -- Having Set2 columns to get Project level % complete
2422 l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
2423 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
2424
2425 --bug 4045979, start
2426 l_task_baselined := 'N';
2427 l_parent_task_baselined := 'N';
2428 -- added if condition for bug 13923366 by skkoppul
2429 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
2430 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
2431 l_task_baselined := 'Y';
2432 l_parent_task_baselined := 'Y';
2433 ELSE
2434 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
2435 FETCH check_task_baselined INTO l_task_baselined;
2436 CLOSE check_task_baselined;
2437
2438 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
2439 FETCH check_task_baselined INTO l_parent_task_baselined;
2440 CLOSE check_task_baselined;
2441 END IF;
2442
2443 -- 4392189 : Program Reporting Changes - Phase 2
2444 -- Having Set2 columns to get Project level % complete
2445
2446 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2447 THEN
2448 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
2449 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
2450 ELSE
2451 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := cur_tasks_rec.override_percent_complete;
2452 --4557541 : For self % complete Override at tasks level would not be considered
2453 --l_rollup_table1(l_index).PERCENT_OVERRIDE2 := cur_tasks_rec.override_percent_complete;
2454 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
2455 END IF;
2456 --bug 4045979, end
2457
2458 -- Actual Date Rollup
2459 l_rollup_table1(l_index).START_DATE1 := cur_tasks_rec.actual_start_date;
2460 l_rollup_table1(l_index).FINISH_DATE1 := cur_tasks_rec.actual_finish_date;
2461
2462 -- Estimated Date Rollup
2463 l_rollup_table1(l_index).START_DATE2 := cur_tasks_rec.estimated_start_date;
2464 l_rollup_table1(l_index).FINISH_DATE2 := cur_tasks_rec.estimated_finish_date;
2465
2466 -- Rollup Progress Status Rollup
2467 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(cur_tasks_rec.rollup_weight1,0); --rollup prog status
2468 l_rollup_table1(l_index).PROGRESS_override1 := cur_tasks_rec.override_weight2; --override prg status
2469
2470 -- Base Progress Status Rollup
2471 -- 4533112 : Base Progress Status is not used
2472 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 ); --base prog status
2473 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
2474
2475 -- Task Status Rollup
2476 l_rollup_table1(l_index).task_status1 := nvl( cur_tasks_rec.task_weight4, 0 ); -- task status
2477
2478 -- ETC Effort Rollup
2479 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
2480 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
2481
2482 -- ETC Cost in Project Currency Rollup
2483 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2484 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2485 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
2486
2487 -- ETC Cost in Project Functional Currency Rollup
2488 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2489 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2490 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
2491
2492 -- Sub Project ETC Effort Rollup
2493 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2494 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
2495
2496 -- Sub Project ETC Cost in Project Currency Rollup
2497 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2498 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
2499 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
2500
2501 -- Sub Project ETC Cost in Project Functional Currency Rollup
2502 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2503 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
2504 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
2505
2506 -- 4392189 : Program Reporting Changes - Phase 2
2507 -- Having Set2 columns to get Project level % complete
2508
2509 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2510 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_tasks_rec.BAC_VALUE, 0 );
2511
2512 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2513 l_rollup_table1(l_index).BAC_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
2514
2515 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
2516 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
2517 -- Bug 4207995 : Passing Dirty_flags always Y
2518 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
2519 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
2520 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
2521 -- ELSE
2522 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
2523 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
2524 -- END IF;
2525
2526 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
2527
2528 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
2529 l_action_allowed := 'N';
2530 END IF;
2531
2532 IF g1_debug_mode = 'Y' THEN
2533 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
2534 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
2535 END IF;
2536
2537 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
2538 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
2539
2540 --maansari4/10 temporarily passing 'Y' to rollup node.
2541 -- need to investigate why l_action_allowed is coming always as 'N'
2542 l_rollup_table1(l_index).rollup_node1 := 'Y';
2543 l_rollup_table1(l_index).rollup_node2 := 'Y';
2544 END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
2545 END LOOP;
2546 END IF; -- p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2547 --end bug 3951982
2548
2549 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
2550
2551 IF g1_debug_mode = 'Y' THEN
2552 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2553 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
2554 END LOOP;
2555 END IF;
2556
2557 IF p_rollup_entire_wbs = 'Y' THEN
2558 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2559 INSERT INTO PA_PROJ_ROLLUP_TEMP(
2560 PROCESS_NUMBER,
2561 OBJECT_TYPE,
2562 OBJECT_ID,
2563 wbs_level)
2564 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2565
2566 l_mass_rollup_prog_exists_tab.delete;
2567
2568 OPEN c_mass_rollup_tasks;
2569 FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
2570 CLOSE c_mass_rollup_tasks;
2571
2572 IF g1_debug_mode = 'Y' THEN
2573 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2574 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
2575 END LOOP;
2576 END IF;
2577
2578 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2579 INSERT INTO PA_PROJ_ROLLUP_TEMP(
2580 PROCESS_NUMBER,
2581 OBJECT_TYPE,
2582 OBJECT_ID,
2583 wbs_level)
2584 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2585 END IF;
2586
2587
2588 -- FPM Dev CR 2 : Printing the Rollup Table before calling Generate Schedule
2589 IF g1_debug_mode = 'Y' THEN
2590 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
2591 FOR i IN 1..l_rollup_table1.count LOOP
2592 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
2593 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
2594 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
2595 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
2596 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
2597 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2598 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
2599 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2600 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2601 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2602 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2603 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2604 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2605 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2606 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2607 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2608 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2609 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2610 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2611 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
2612 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
2613 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
2614 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2615 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2616 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2617 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2618 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2619 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2620 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
2621 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
2622 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
2623 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
2624 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2625 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
2626 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2627 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2628 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
2629 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
2630 END LOOP;
2631 END IF;
2632
2633 IF l_rollup_table1.count <= 0 THEN
2634 return;
2635 END IF;
2636
2637 --Added by rtarway for bug 3950574
2638 IF p_structure_type = 'WORKPLAN' THEN
2639 l_digit_number := 8; --Bug 6854114
2640 ELSE
2641 l_digit_number := 8; --Bug 6854114
2642 END IF;
2643
2644 -- Bug 4207995 : Commented partial_flags in the below call
2645
2646 PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
2647 p_commit => p_commit
2648 ,p_debug_mode => 'Y'
2649 ,x_return_status => l_return_status
2650 ,x_msg_count => l_msg_count
2651 ,x_msg_data => l_msg_data
2652 ,x_process_number => l_process_number
2653 ,p_data_structure => l_rollup_table1
2654 ,p_number_digit => l_digit_number
2655 ,p_process_flag1 => 'Y'
2656 ,p_process_rollup_flag1 => 'Y'
2657 ,p_process_progress_flag1 => 'Y'
2658 ,p_process_percent_flag1 => 'Y'
2659 ,p_process_effort_flag1 => 'Y'
2660 ,p_process_task_status_flag1 => 'Y'
2661 ,p_process_flag2 => 'Y'
2662 ,p_process_rollup_flag2 => 'Y'
2663 ,p_process_progress_flag2 => 'Y'
2664 ,p_process_percent_flag2 => 'Y'
2665 ,p_process_ETC_Flag1 => 'Y'
2666 ,p_process_ETC_Flag2 => 'Y'
2667 ,p_Rollup_Method => l_Rollup_Method
2668 ,p_calling_module =>'ROLLUP_API'
2669 );
2670
2671 IF g1_debug_mode = 'Y' THEN
2672 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After GENERATE_SCHEDULE', x_Log_Level=> 3);
2673 END IF;
2674
2675 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2676 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2677 p_msg_name => l_msg_data
2678 );
2679 x_msg_data := l_msg_data;
2680 x_return_status := 'E';
2681 RAISE FND_API.G_EXC_ERROR;
2682 END IF;
2683
2684
2685 IF g1_debug_mode = 'Y' THEN
2686 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Doing UPDATE_ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
2687 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
2688 END IF;
2689
2690 ---- ************** Updation Starts ****************** ----------
2691
2692 IF g1_debug_mode = 'Y' THEN
2693 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
2694 FOR i IN 1..l_rollup_table1.count LOOP
2695 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
2696 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
2697 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
2698 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
2699 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
2700 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2701 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
2702 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2703 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2704 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2705 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2706 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2707 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2708 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2709 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2710 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2711 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2712 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2713 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2714 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
2715 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
2716 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
2717 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2718 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2719 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2720 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2721 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2722 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2723 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
2724 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
2725 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
2726 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
2727 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2728 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
2729 ||l_rollup_table1(i).EARNED_VALUE2||
2730 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2731 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2732 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
2733 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
2734 END LOOP;
2735 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
2736 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
2737 END IF;
2738
2739
2740 BEGIN
2741 -- 4746476 : Added org_id in functions call below
2742 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
2743 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
2744 EXCEPTION
2745 WHEN OTHERS THEN
2746 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2747 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
2748 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
2749 x_return_status := 'E';
2750 x_msg_count := fnd_msg_pub.count_msg;
2751 RAISE FND_API.G_EXC_ERROR;
2752 END ;
2753
2754 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
2755
2756
2757
2758 FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
2759 IF g1_debug_mode = 'Y' THEN
2760 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1, x_Log_Level=> 3);
2761 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
2762 END IF;
2763
2764 FOR i in 1..l_rollup_table1.count LOOP
2765 IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
2766 (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
2767 --((p_calling_mode = 'FUTURE_ROLLUP' AND cur_reverse_tree_rec.object_id_to1 <> p_object_version_id)OR p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL)
2768 THEN
2769 -- Find the corresponding task rollup record data position
2770 task_index := l_mapping_tasks_to_rollup_tab(i);
2771
2772
2773 IF g1_debug_mode = 'Y' THEN
2774 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
2775 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=> 3);
2776 END IF;
2777 -- Bug 3919211 Begin
2778 IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
2779 l_task_id := 0;
2780 ELSE
2781 l_task_id := cur_reverse_tree_rec.proj_element_id;
2782 END IF;
2783 -- Bug 3919211 End
2784
2785
2786 l_child_rollup_rec_exists := 'N';
2787 IF p_rollup_entire_wbs='Y' THEN
2788 BEGIN
2789 SELECT 'Y' into l_child_rollup_rec_exists
2790 FROM dual
2791 WHERE exists
2792 (
2793 SELECT 'xyz'
2794 from pa_proj_rollup_temp
2795 WHERE object_id = cur_reverse_tree_rec.object_id_to1
2796 and process_number = l_process_number_temp
2797 );
2798 EXCEPTION
2799 WHEN OTHERS THEN
2800 l_child_rollup_rec_exists := 'N';
2801 END;
2802 END IF;
2803
2804
2805 IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
2806
2807
2808 l_eff_rollup_status_code := null;
2809 l_progress_status_code := null;
2810
2811 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
2812 FETCH cur_status INTO l_eff_rollup_status_code;
2813 CLOSE cur_status;
2814
2815 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) ); --get the base prog status
2816 FETCH cur_status INTO l_progress_status_code;
2817 CLOSE cur_status;
2818
2819 IF g1_debug_mode = 'Y' THEN
2820 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
2821 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
2822 END IF;
2823
2824
2825 -- FPM dev CR 4 : Initialized the values to null
2826 l_rolled_up_per_comp := null;
2827 l_rolled_up_prog_stat := null;
2828 l_rolled_up_base_prog_stat := null;
2829 l_rolled_up_prog_stat := null;
2830 l_remaining_effort1 := null;
2831 l_percent_complete1 := null;
2832 l_ETC_Cost_PC := null;
2833 l_PPL_ETC_COST_PC := null;
2834 l_EQPMT_ETC_COST_PC := null;
2835 l_ETC_Cost_FC := null;
2836 l_PPL_ETC_COST_FC := null;
2837 l_EQPMT_ETC_COST_FC := null;
2838 l_EQPMT_ETC_EFFORT := null;
2839 l_BAC_VALUE1 := null;
2840 l_EARNED_VALUE1 := null;
2841 l_remaining_effort1 := null;
2842 l_EQPMT_ETC_EFFORT := null;
2843 l_OTH_ACT_COST_TO_DATE_PC := null;
2844 l_PPL_ACT_COST_TO_DATE_PC := null;
2845 l_EQPMT_ACT_COST_TO_DATE_PC := null;
2846 l_OTH_ACT_COST_TO_DATE_FC := null;
2847 l_PPL_ACT_COST_TO_DATE_FC := null;
2848 l_EQPMT_ACT_COST_TO_DATE_FC := null;
2849 l_PPL_ACT_EFFORT_TO_DATE := null;
2850 l_EQPMT_ACT_EFFORT_TO_DATE := null;
2851 -- Bug 3621404 : Raw Cost Changes
2852 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
2853 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
2854 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
2855 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
2856 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
2857 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
2858 l_ETC_RAWCost_PC := null;
2859 l_PPL_ETC_RAWCOST_PC := null;
2860 l_EQPMT_ETC_RAWCOST_PC := null;
2861 l_ETC_RAWCost_FC := null;
2862 l_PPL_ETC_RAWCOST_FC := null;
2863 l_EQPMT_ETC_RAWCOST_FC := null;
2864 l_actual_start_date := l_rollup_table1(i).start_date1;
2865 l_actual_finish_date := l_rollup_table1(i).finish_date1;
2866 l_estimated_start_date := l_rollup_table1(i).start_date2;
2867 l_estimated_finish_date := l_rollup_table1(i).finish_date2;
2868
2869 --OPEN cur_pa_rollup1( cur_reverse_tree_rec.proj_element_id );
2870 --FETCH cur_pa_rollup1 INTO l_cur_pa_rollup1_rec;
2871 --CLOSE cur_pa_rollup1;
2872
2873
2874 l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
2875 l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
2876
2877
2878 IF g1_debug_mode = 'Y' THEN
2879 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
2880 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat, x_Log_Level=> 3);
2881 END IF;
2882
2883 IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task value, we shd get it for each task
2884 THEN
2885 -- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
2886 l_rolled_up_base_prog_stat := l_progress_status_code;
2887 ELSE
2888 -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
2889 l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
2890 END IF;
2891
2892
2893 l_PROGRESS_ROLLUP_ID := null;
2894 l_rollup_rec_ver_number := null;
2895 l_percent_complete_id := null;
2896 IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
2897 l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
2898 l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
2899 END IF;
2900
2901
2902
2903 IF g1_debug_mode = 'Y' THEN
2904 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
2905 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
2906 END IF;
2907
2908 -- 4392189 : Program Reporting Changes - Phase 2
2909 -- Having Set2 columns to get Project level % complete
2910
2911 IF p_structure_type = 'WORKPLAN' THEN
2912 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
2913 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
2914 ELSE
2915 l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
2916 l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
2917 END IF;
2918
2919 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
2920 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
2921
2922 IF g1_debug_mode = 'Y' THEN
2923 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
2924 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
2925 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
2926 END IF;
2927
2928 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
2929
2930 IF p_wp_rollup_method = 'EFFORT' THEN
2931 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
2932 ELSE
2933 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
2934 END IF;
2935
2936 --bug 4317491, added a check of WORKPLAN
2937 IF p_structure_type = 'WORKPLAN' THEN
2938 BEGIN
2939 SELECT
2940
2941 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2942 PERIOD_NAME
2943 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
2944 , ACT_PRJ_LABOR_BRDN_COST
2945 , ACT_PRJ_EQUIP_BRDN_COST
2946 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
2947 , ACT_POU_LABOR_BRDN_COST
2948 , ACT_POU_EQUIP_BRDN_COST
2949 , ACT_LABOR_HRS
2950 , ACT_EQUIP_HRS
2951 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
2952 , ETC_PRJ_LABOR_BRDN_COST
2953 , ETC_PRJ_EQUIP_BRDN_COST
2954 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
2955 , ETC_POU_LABOR_BRDN_COST
2956 , ETC_POU_EQUIP_BRDN_COST
2957 , ETC_LABOR_HRS
2958 , ETC_EQUIP_HRS
2959 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
2960 , ACT_PRJ_LABOR_RAW_COST
2961 , ACT_PRJ_EQUIP_RAW_COST
2962 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
2963 , ACT_POU_LABOR_RAW_COST
2964 , ACT_POU_EQUIP_RAW_COST
2965 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
2966 , ETC_PRJ_LABOR_RAW_COST
2967 , ETC_PRJ_EQUIP_RAW_COST
2968 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
2969 , ETC_POU_LABOR_RAW_COST
2970 , ETC_POU_EQUIP_RAW_COST
2971 , LABOR_HOURS
2972 , EQUIPMENT_HOURS
2973 , POU_LABOR_BRDN_COST
2974 , PRJ_LABOR_BRDN_COST
2975 , POU_EQUIP_BRDN_COST
2976 , PRJ_EQUIP_BRDN_COST
2977 , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
2978 , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
2979 , POU_LABOR_RAW_COST
2980 , PRJ_LABOR_RAW_COST
2981 , POU_EQUIP_RAW_COST
2982 , PRJ_EQUIP_RAW_COST
2983 , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
2984 , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
2985 INTO
2986 l_PERIOD_NAME
2987 , l_OTH_ACT_COST_TO_DATE_PC
2988 , l_PPL_ACT_COST_TO_DATE_PC
2989 , l_EQPMT_ACT_COST_TO_DATE_PC
2990 , l_OTH_ACT_COST_TO_DATE_FC
2991 , l_PPL_ACT_COST_TO_DATE_FC
2992 , l_EQPMT_ACT_COST_TO_DATE_FC
2993 , l_PPL_ACT_EFFORT_TO_DATE
2994 , l_EQPMT_ACT_EFFORT_TO_DATE
2995 , l_ETC_Cost_PC
2996 , l_PPL_ETC_COST_PC
2997 , l_EQPMT_ETC_COST_PC
2998 , l_ETC_Cost_FC
2999 , l_PPL_ETC_COST_FC
3000 , l_EQPMT_ETC_COST_FC
3001 , l_remaining_effort1
3002 , l_EQPMT_ETC_EFFORT
3003 , l_OTH_ACT_RAWCOST_TO_DATE_PC
3004 , l_PPL_ACT_RAWCOST_TO_DATE_PC
3005 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
3006 , l_OTH_ACT_RAWCOST_TO_DATE_FC
3007 , l_PPL_ACT_RAWCOST_TO_DATE_FC
3008 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
3009 , l_ETC_RAWCost_PC
3010 , l_PPL_ETC_RAWCOST_PC
3011 , l_EQPMT_ETC_RAWCOST_PC
3012 , l_ETC_RAWCost_FC
3013 , l_PPL_ETC_RAWCOST_FC
3014 , l_EQPMT_ETC_RAWCOST_FC
3015 , l_LABOR_HOURS
3016 , l_EQUIPMENT_HOURS
3017 , l_POU_LABOR_BRDN_COST
3018 , l_PRJ_LABOR_BRDN_COST
3019 , l_POU_EQUIP_BRDN_COST
3020 , l_PRJ_EQUIP_BRDN_COST
3021 , l_POU_OTH_BRDN_COST
3022 , l_PRJ_OTH_BRDN_COST
3023 , l_POU_LABOR_RAW_COST
3024 , l_PRJ_LABOR_RAW_COST
3025 , l_POU_EQUIP_RAW_COST
3026 , l_PRJ_EQUIP_RAW_COST
3027 , l_POU_OTH_RAW_COST
3028 , l_PRJ_OTH_RAW_COST
3029 FROM PJI_FM_XBS_ACCUM_TMP1
3030 WHERE project_id = p_project_id
3031 AND struct_version_id = p_structure_version_id
3032 AND project_element_id = cur_reverse_tree_rec.proj_element_id
3033 AND plan_version_id > 0
3034 AND txn_currency_code is null
3035 AND calendar_type = 'A'
3036 AND res_list_member_id is null;
3037 EXCEPTION
3038 WHEN NO_DATA_FOUND THEN
3039 null;
3040 WHEN OTHERS THEN
3041 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
3042 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
3043 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
3044 RAISE FND_API.G_EXC_ERROR;
3045 END;
3046
3047
3048
3049 IF g1_debug_mode = 'Y' THEN
3050 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
3051 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
3052 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
3053 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
3054 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
3055 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
3056 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
3057 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
3058 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
3059 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_Cost_PC: '||l_ETC_Cost_PC, x_Log_Level=> 3);
3060 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=> 3);
3061 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC, x_Log_Level=> 3);
3062 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_Cost_FC: '||l_ETC_Cost_FC, x_Log_Level=> 3);
3063 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=> 3);
3064 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC, x_Log_Level=> 3);
3065 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1, x_Log_Level=> 3);
3066 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT: '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
3067 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3068 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3069 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3070 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3071 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3072 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3073 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
3074 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC, x_Log_Level=> 3);
3075 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=> 3);
3076 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
3077 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC, x_Log_Level=> 3);
3078 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=> 3);
3079 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_LABOR_HOURS: '||l_LABOR_HOURS, x_Log_Level=> 3);
3080 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=> 3);
3081 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
3082 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
3083 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
3084 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
3085 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST, x_Log_Level=> 3);
3086 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST, x_Log_Level=> 3);
3087 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST, x_Log_Level=> 3);
3088 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST, x_Log_Level=> 3);
3089 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST, x_Log_Level=> 3);
3090 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST, x_Log_Level=> 3);
3091 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_OTH_RAW_COST: '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
3092 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST: '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
3093 END IF;
3094
3095 /* 5726773 --bug 3829341
3096 --bug 3824042, the check for whether exisitng etc(l_cur_rollup_rec. )
3097 -- is null is not required as we are always taking from pji.
3098
3099 IF ( L_EQPMT_ETC_EFFORT IS NULL AND L_EQUIPMENT_HOURS >= L_EQPMT_ACT_EFFORT_TO_DATE)
3100 THEN
3101 L_EQPMT_ETC_EFFORT := (L_EQUIPMENT_HOURS - L_EQPMT_ACT_EFFORT_TO_DATE);
3102 END IF;
3103
3104 IF L_EQPMT_ETC_EFFORT < 0
3105 THEN
3106 L_EQPMT_ETC_EFFORT :=0;
3107 END IF;
3108
3109 IF (L_REMAINING_EFFORT1 IS NULL AND L_LABOR_HOURS >= L_PPL_ACT_EFFORT_TO_DATE) THEN
3110 L_REMAINING_EFFORT1 := (L_LABOR_HOURS - L_PPL_ACT_EFFORT_TO_DATE);
3111 END IF;
3112
3113 IF L_REMAINING_EFFORT1 <0
3114 THEN
3115 L_REMAINING_EFFORT1 := 0;
3116 END IF;
3117
3118 IF ( L_ETC_COST_FC IS NULL AND L_POU_OTH_BRDN_COST >= L_OTH_ACT_COST_TO_DATE_FC) THEN
3119 L_ETC_COST_FC:= L_POU_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_FC;
3120 END IF;
3121
3122 IF L_ETC_COST_FC < 0
3123 THEN
3124 L_ETC_COST_FC := 0;
3125 END IF;
3126
3127 IF (L_ETC_COST_PC IS NULL AND L_PRJ_OTH_BRDN_COST >= L_OTH_ACT_COST_TO_DATE_PC) THEN
3128 L_ETC_COST_PC:= L_PRJ_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_PC;
3129 END IF;
3130
3131 IF L_ETC_COST_PC <0
3132 THEN
3133 L_ETC_COST_PC :=0;
3134 END IF;
3135
3136 IF (L_PPL_ETC_COST_FC IS NULL AND L_POU_LABOR_BRDN_COST >= L_PPL_ACT_COST_TO_DATE_FC) THEN
3137 L_PPL_ETC_COST_FC := (L_POU_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_FC);
3138 END IF;
3139
3140 IF L_PPL_ETC_COST_FC <0
3141 THEN
3142 L_PPL_ETC_COST_FC :=0;
3143 END IF;
3144
3145 IF (L_PPL_ETC_COST_PC IS NULL AND L_PRJ_LABOR_BRDN_COST >= L_PPL_ACT_COST_TO_DATE_PC) THEN
3146 L_PPL_ETC_COST_PC := (L_PRJ_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_PC);
3147 END IF;
3148
3149 IF L_PPL_ETC_COST_PC <0
3150 THEN
3151 L_PPL_ETC_COST_PC :=0;
3152 END IF;
3153
3154 IF ( L_EQPMT_ETC_COST_FC IS NULL AND L_POU_EQUIP_BRDN_COST >= L_EQPMT_ACT_COST_TO_DATE_FC) THEN
3155 L_EQPMT_ETC_COST_FC := (L_POU_EQUIP_BRDN_COST - L_EQPMT_ACT_COST_TO_DATE_FC);
3156 END IF;
3157
3158 IF L_EQPMT_ETC_COST_FC <0
3159 THEN
3160 L_EQPMT_ETC_COST_FC :=0;
3161 END IF;
3162
3163 IF (L_EQPMT_ETC_COST_PC IS NULL AND L_PRJ_EQUIP_BRDN_COST >= L_EQPMT_ACT_COST_TO_DATE_PC) THEN
3164 L_EQPMT_ETC_COST_PC := (L_PRJ_EQUIP_BRDN_COST - L_EQPMT_ACT_COST_TO_DATE_PC);
3165 END IF;
3166
3167 IF L_EQPMT_ETC_COST_PC <0
3168 THEN
3169 L_EQPMT_ETC_COST_PC :=0;
3170 END IF;
3171
3172 IF (L_ETC_RAWCOST_FC IS NULL AND L_POU_OTH_RAW_COST >= L_OTH_ACT_RAWCOST_TO_DATE_FC) THEN
3173 L_ETC_RAWCOST_FC:= L_POU_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_FC;
3174 END IF;
3175
3176 IF L_ETC_RAWCOST_FC <0
3177 THEN
3178 L_ETC_RAWCOST_FC :=0;
3179 END IF;
3180
3181 IF (L_ETC_RAWCOST_PC IS NULL AND L_PRJ_OTH_RAW_COST >= L_OTH_ACT_RAWCOST_TO_DATE_PC) THEN
3182 L_ETC_RAWCOST_PC:= L_PRJ_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_PC;
3183 END IF;
3184
3185 IF L_ETC_RAWCOST_PC <0
3186 THEN
3187 L_ETC_RAWCOST_PC :=0;
3188 END IF;
3189
3190 IF (L_PPL_ETC_RAWCOST_FC IS NULL AND L_POU_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_FC) THEN
3191 L_PPL_ETC_RAWCOST_FC := (L_POU_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_FC);
3192 END IF;
3193
3194 IF L_PPL_ETC_RAWCOST_FC <0
3195 THEN
3196 L_PPL_ETC_RAWCOST_FC :=0;
3197 END IF;
3198
3199 IF (L_PPL_ETC_RAWCOST_PC IS NULL AND L_PRJ_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_PC) THEN
3200 L_PPL_ETC_RAWCOST_PC := (L_PRJ_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_PC);
3201 END IF;
3202
3203 IF L_PPL_ETC_RAWCOST_PC <0
3204 THEN
3205 L_PPL_ETC_RAWCOST_PC :=0;
3206 END IF;
3207
3208 IF ( L_EQPMT_ETC_RAWCOST_FC IS NULL AND L_POU_EQUIP_RAW_COST >= L_EQPMT_ACT_RAWCOST_TO_DATE_FC) THEN
3209 L_EQPMT_ETC_RAWCOST_FC := (L_POU_EQUIP_RAW_COST - L_EQPMT_ACT_RAWCOST_TO_DATE_FC);
3210 END IF;
3211
3212 IF L_EQPMT_ETC_RAWCOST_FC <0
3213 THEN
3214 L_EQPMT_ETC_RAWCOST_FC :=0;
3215 END IF;
3216
3217 IF ( L_EQPMT_ETC_RAWCOST_PC IS NULL AND L_PRJ_EQUIP_RAW_COST >= L_EQPMT_ACT_RAWCOST_TO_DATE_PC) THEN
3218 L_EQPMT_ETC_RAWCOST_PC := (L_PRJ_EQUIP_RAW_COST - L_EQPMT_ACT_RAWCOST_TO_DATE_PC);
3219 END IF;
3220
3221 IF L_EQPMT_ETC_RAWCOST_PC <0
3222 THEN
3223 L_EQPMT_ETC_RAWCOST_PC :=0;
3224 END IF;
3225 */
3226
3227 IF p_working_wp_prog_flag = 'Y' OR l_published_structure = 'N'
3228 --for working version p_working_wp_prog_flag may not be 'Y' because of bug 3846353
3229 THEN
3230 l_EQPMT_ETC_EFFORT := null;
3231 l_remaining_effort1:= null;
3232 l_ETC_Cost_FC:= null;
3233 l_ETC_Cost_PC:= null;
3234 l_PPL_ETC_COST_FC:= null;
3235 l_PPL_ETC_COST_PC := null;
3236 l_EQPMT_ETC_COST_FC:= null;
3237 l_EQPMT_ETC_COST_PC:= null;
3238 l_ETC_RAWCost_FC:= null;
3239 l_ETC_RAWCost_PC := null;
3240 l_PPL_ETC_RAWCOST_FC:= null;
3241 l_PPL_ETC_RAWCOST_PC:= null;
3242 l_EQPMT_ETC_RAWCOST_FC:= null;
3243 l_EQPMT_ETC_RAWCOST_PC:= null;
3244 END IF;
3245
3246 -- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
3247 IF g1_debug_mode = 'Y' THEN
3248 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
3249 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
3250 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
3251 END IF;
3252
3253 IF cur_reverse_tree_rec.object_type = 'PA_TASKS' THEN
3254
3255 --do not rollup on-hold task status. We dont need to worry about
3256 --cancelled bcoz they are not selected.
3257
3258 -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
3259 l_actual_exists := 'N';
3260 ---5726773 changed '>0' to '<>0'
3261 IF (l_PPL_ACT_EFFORT_TO_DATE <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
3262 IF g1_debug_mode = 'Y' THEN
3263 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
3264 END IF;
3265 l_actual_exists := 'Y';
3266 END IF;
3267
3268 IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
3269 -- 14-Feb-2005 Patched thru Bug 4180026
3270 OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id);
3271 FETCH c_get_dlv_status INTO l_actual_exists;
3272 CLOSE c_get_dlv_status;
3273 END IF;
3274
3275 IF g1_debug_mode = 'Y' THEN
3276 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
3277 END IF;
3278
3279 IF ( ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
3280 OR
3281 ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
3282 OR l_actual_exists = 'Y'
3283 ) THEN
3284 -- Bug 3842084 : Initilaized l_status_code with l_existing_object_status
3285 --get the existing status
3286 OPEN c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);
3287 FETCH c_get_object_status INTO l_existing_object_status;
3288 CLOSE c_get_object_status;
3289
3290 l_status_code := l_existing_object_status;
3291 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
3292 l_status_code_temp := l_status_code; --Bug#5374114
3293 l_system_status_code_temp := l_system_status_code; --Bug#5374114
3294
3295 IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
3296 THEN
3297 OPEN cur_task_status ( to_char(l_rollup_table1(i).task_status1) );
3298 FETCH cur_task_status INTO l_status_code;
3299 CLOSE cur_task_status;
3300 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
3301 END IF;
3302 -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
3303
3304 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
3305 IF g1_debug_mode = 'Y' THEN
3306 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
3307 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
3308 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
3309 END IF;
3310
3311 IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
3312 THEN
3313 l_status_code := '127';
3314 l_system_status_code := 'COMPLETED';
3315 ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100)) AND l_system_status_code IN ('NOT_STARTED','COMPLETED'))
3316 THEN
3317 l_status_code := '125';
3318 l_system_status_code := 'IN_PROGRESS';
3319 l_actual_finish_date := null;
3320 -- This is done to first time make task In Progress if any sub-objects are in Progress
3321 ELSIF (l_actual_exists ='Y' AND l_system_status_code = 'NOT_STARTED')
3322 THEN
3323 l_status_code := '125';
3324 l_system_status_code := 'IN_PROGRESS';
3325 l_actual_finish_date := null;
3326 END IF;
3327
3328 /* Changes by shanif for bug#5374114 - START */
3329
3330 IF (l_system_status_code = l_system_status_code_temp) THEN
3331 l_system_status_code := l_system_status_code_temp;
3332 l_status_code := l_status_code_temp;
3333 END IF;
3334
3335 /* Changes by shanif for bug#5374114 - END */
3336
3337 IF g1_debug_mode = 'Y' THEN
3338 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
3339 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
3340 END IF;
3341
3342 IF l_structure_version_id IS NULL THEN -- Bug 3922325 : This does not make sense for working wp version rollup
3343 UPDATE pa_proj_elements
3344 SET status_code = l_status_code
3345 WHERE project_id = p_project_id
3346 AND proj_element_id = cur_reverse_tree_rec.proj_element_id;
3347 END IF;
3348
3349
3350 IF p_structure_type = 'WORKPLAN' THEN
3351 OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1);
3352 FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
3353 CLOSE c_get_dates;
3354 IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3355 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3356 l_actual_finish_date := to_date(null);
3357 END IF;
3358 -- Bug 4232099 : added folling IF
3359 IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3360 l_actual_finish_date := to_date(null);
3361 END IF;
3362 IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3363 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3364 END IF;
3365 IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3366 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
3367 END IF;
3368
3369 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
3370 IF l_actual_finish_date < l_actual_start_date THEN
3371 IF TRUNC(SYSDATE) < l_actual_start_date THEN
3372 l_actual_finish_date := l_actual_start_date;
3373 ELSE
3374 l_actual_finish_date := TRUNC(SYSDATE);
3375 END IF;
3376 END IF;
3377 END IF;
3378 END IF;
3379
3380 UPDATE pa_percent_completes
3381 SET status_code = l_status_code
3382 , actual_start_date = l_actual_start_date -- Bug 3956299
3383 , actual_finish_date = l_actual_finish_date -- Bug 3956299
3384 WHERE object_id = cur_reverse_tree_rec.proj_element_id
3385 AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3386 AND project_id = p_project_id
3387 --AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED', 'COMPLETED' )
3388 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
3389 AND structure_type = p_structure_type -- FPM Dev CR 3
3390 AND current_flag = 'N' and published_flag = 'N'
3391 ;
3392
3393 -- 14-Feb-2005 : Added Patched thru Bug 4180026
3394 UPDATE pa_percent_completes
3395 SET status_code = l_status_code
3396 , actual_start_date = l_actual_start_date -- Bug 3956299
3397 , actual_finish_date = l_actual_finish_date -- Bug 3956299
3398 WHERE object_id = cur_reverse_tree_rec.proj_element_id
3399 AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3400 AND project_id = p_project_id
3401 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
3402 AND structure_type = p_structure_type -- FPM Dev CR 3
3403 AND published_flag = 'Y' ---4743866
3404 AND current_flag = 'Y'
3405 AND trunc(date_computed) = trunc(p_as_of_date)
3406 ;
3407
3408 END IF;
3409 END IF;
3410
3411 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
3412 l_ETC_Cost_FC:= null;
3413 l_ETC_Cost_PC:= null;
3414 l_PPL_ETC_COST_FC:= null;
3415 l_PPL_ETC_COST_PC := null;
3416 l_EQPMT_ETC_COST_FC:= null;
3417 l_EQPMT_ETC_COST_PC:= null;
3418 l_ETC_RAWCost_FC:= null;
3419 l_ETC_RAWCost_PC := null;
3420 l_PPL_ETC_RAWCOST_FC:= null;
3421 l_PPL_ETC_RAWCOST_PC:= null;
3422 l_EQPMT_ETC_RAWCOST_FC:= null;
3423 l_EQPMT_ETC_RAWCOST_PC:= null;
3424 l_OTH_ACT_COST_TO_DATE_PC:= null;
3425 l_OTH_ACT_COST_TO_DATE_FC:= null;
3426 l_PPL_ACT_COST_TO_DATE_PC:= null;
3427 l_PPL_ACT_COST_TO_DATE_FC:= null;
3428 l_EQPMT_ACT_COST_TO_DATE_PC:= null;
3429 l_EQPMT_ACT_COST_TO_DATE_FC:= null;
3430 l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
3431 l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
3432 l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
3433 l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
3434 l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
3435 l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
3436 END IF;
3437
3438
3439 END IF; -- IF p_structure_type = 'WORKPLAN' --bug 4317491
3440
3441
3442 -- Bug 4651304 Begin
3443 -- One solution for this issue could be to pass
3444 -- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
3445 -- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
3446 -- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
3447 -- Best way is to always retain the existing object_version_id in pa_progress_rollup
3448 -- table in case of update, in case of insert, use the new object version id
3449
3450 -- Commented below code and added new condition
3451
3452
3453 --IF p_upd_new_elem_ver_id_flag = 'Y' THEN
3454 -- l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3455 --END IF;
3456
3457 IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
3458 null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
3459 ELSE
3460 l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3461 END IF;
3462 -- Bug 4651304 End
3463
3464 l_tsk_proj_element_id_tab(task_index) := l_task_id;
3465 l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
3466 -- 4392189 : Program Reporting Changes - Phase 2
3467 -- Having Set2 columns to get Project level % complete
3468 -- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3469 -- Bug 4506461 Begin
3470 l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
3471 -- 4540890 : Removed l_subproject_found check from below
3472 IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
3473 l_rederive_base_pc := 'N';
3474 OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
3475 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
3476 CLOSE c_get_any_childs_have_subprj;
3477 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3478 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3479 END IF;
3480 END IF;
3481 -- Bug 4506461 End
3482
3483 l_tsk_earned_value_tab(task_index) := l_earned_value1;
3484 l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
3485 l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
3486
3487
3488 IF p_structure_type = 'WORKPLAN' THEN
3489 l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
3490 l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
3491 l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
3492 l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
3493 -- 4533112 : Base Progress Status is not used
3494 --l_tsk_base_prog_stat_code_tab(task_index) := l_rolled_up_base_prog_stat;
3495 l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
3496
3497 IF p_progress_mode <> 'BACKDATED' THEN
3498 l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
3499 l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
3500 l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
3501 l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
3502 l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
3503 l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
3504 l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
3505 l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
3506 l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
3507 l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
3508
3509 l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
3510 l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
3511 l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
3512 l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
3513 l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
3514 l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
3515 l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
3516 l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
3517 l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
3518 l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
3519
3520 l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
3521 l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
3522 l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
3523 l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
3524 l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
3525 l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
3526 l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
3527 l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
3528
3529 END IF; -- p_progress_mode <> 'BACKDATED'
3530
3531 -- 5119716 Begin
3532 -- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
3533 -- For performance changes, it was removed and replaced with direct update statement
3534 -- The follwoing portion for dirty schedule was missing out.
3535 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y' THEN
3536
3537 PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
3538 p_structure_version_id => p_structure_version_id
3539 ,p_dirty_flag => 'Y'
3540 ,x_return_status => x_return_status
3541 ,x_msg_count => x_msg_count
3542 ,x_msg_data => x_msg_data
3543 );
3544
3545 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3546 raise FND_API.G_EXC_ERROR;
3547 END IF;
3548
3549 END IF;
3550 -- 5119716 End
3551
3552 UPDATE pa_proj_elem_ver_schedule
3553 SET ACTUAL_START_DATE = l_actual_start_date
3554 , ACTUAL_FINISH_DATE = l_actual_finish_date
3555 , ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
3556 , ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
3557 , record_version_number = record_version_number+1
3558 -- 5119716 Begin
3559 , estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
3560 , actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
3561 -- 5119716 End
3562 , last_updated_by = l_user_id
3563 , last_update_date= sysdate
3564 , last_update_login = l_login_id
3565 WHERE project_id = p_project_id
3566 AND element_version_id = l_rollup_table1(i).object_id;
3567
3568
3569 IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
3570 UPDATE pa_projects_all
3571 SET actual_start_date = l_rollup_table1(i).start_date1,
3572 actual_finish_date = l_rollup_table1(i).finish_date1
3573 WHERE project_id = p_project_id;
3574 END IF;
3575 END IF; -- p_structure_type = 'WORKPLAN'
3576
3577 IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3578 l_tsk_update_required(task_index):='Y';
3579 ELSE
3580 -- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
3581 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3582 l_tsk_create_required(task_index):='Y';
3583 BEGIN
3584 SELECT percent_complete_id
3585 INTO l_percent_complete_id
3586 FROM pa_percent_completes
3587 WHERE project_id = p_project_id
3588 AND object_id = cur_reverse_tree_rec.proj_element_id
3589 AND object_Type = l_rollup_table1(i).object_Type
3590 AND structure_type = p_structure_type
3591 AND date_computed = ( SELECT max(date_computed)
3592 FROM pa_percent_completes
3593 WHERE project_id = p_project_id
3594 AND object_id = cur_reverse_tree_rec.proj_element_id
3595 AND object_Type = l_rollup_table1(i).object_Type
3596 AND structure_type = p_structure_type
3597 AND date_computed <= p_as_of_date);
3598 EXCEPTION WHEN OTHERS THEN
3599 l_percent_complete_id := null;
3600 END;
3601 l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
3602 (p_project_id => p_project_id,
3603 p_object_id => cur_reverse_tree_rec.proj_element_id,
3604 p_object_type => l_rollup_table1(i).object_type,
3605 p_structure_type => p_structure_type,
3606 p_structure_version_id => l_structure_version_id,
3607 p_proj_element_id => cur_reverse_tree_rec.proj_element_id
3608 );
3609
3610 IF l_max_rollup_as_of_date2 > p_as_of_date THEN
3611 l_current_flag := 'N';
3612 ELSE
3613 l_current_flag := 'Y';
3614 END IF;
3615 l_tsk_current_flag_tab(task_index) := l_current_flag;
3616 l_tsk_prog_pa_period_name_tab(task_index) := l_prog_pa_period_name;
3617 l_tsk_prog_gl_period_name_tab(task_index) := l_prog_gl_period_name;
3618
3619
3620 IF l_max_rollup_as_of_date2 < p_as_of_date THEN
3621 UPDATE pa_progress_rollup
3622 SET current_flag = 'N'
3623 WHERE project_id = p_project_id
3624 AND object_id = cur_reverse_tree_rec.proj_element_id
3625 AND object_type = l_rollup_table1(i).object_type
3626 AND current_flag <> 'W'
3627 AND structure_type = p_structure_type
3628 AND ((l_published_structure = 'Y' AND structure_version_id is null) OR (l_published_structure = 'N' AND structure_version_id = p_structure_version_id))
3629 ;
3630 END IF;
3631 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3632 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3633 END IF;-- p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y'
3634 exit;
3635 END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
3636 END LOOP;
3637 END LOOP;
3638
3639 FORALL i in 1..l_tsk_object_version_id_tab.count
3640 UPDATE pa_progress_rollup
3641 SET
3642 object_version_id = l_tsk_object_version_id_tab(i)
3643 , last_update_date = sysdate
3644 , last_updated_by = l_user_id
3645 , last_update_login = l_login_id
3646 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3647 , completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
3648 -- Bug 4284353 : Used decode above
3649 , estimated_start_date = l_tsk_est_start_date_tab(i)
3650 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3651 , actual_start_date = l_tsk_actual_start_date_tab(i)
3652 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3653 , record_version_number = record_version_number +1
3654 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3655 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
3656 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
3657 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3658 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
3659 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3660 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3661 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3662 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3663 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3664 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
3665 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
3666 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3667 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3668 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3669 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
3670 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
3671 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3672 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3673 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3674 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
3675 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
3676 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3677 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3678 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3679 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3680 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3681 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3682 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3683 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
3684 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3685 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3686 , earned_value = l_tsk_earned_value_tab(i)
3687 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3688 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3689 WHERE l_tsk_update_required(i) = 'Y'
3690 AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i)
3691 ;
3692
3693
3694 IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED' THEN
3695 FORALL i in 1..l_tsk_object_version_id_tab.count
3696 UPDATE pa_progress_rollup
3697 SET
3698 object_version_id = l_tsk_object_version_id_tab(i)
3699 , last_update_date = sysdate
3700 , last_updated_by = l_user_id
3701 , last_update_login = l_login_id
3702 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3703 , estimated_start_date = l_tsk_est_start_date_tab(i)
3704 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3705 , actual_start_date = l_tsk_actual_start_date_tab(i)
3706 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3707 , record_version_number = record_version_number +1
3708 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3709 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
3710 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
3711 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3712 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
3713 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3714 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3715 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3716 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3717 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3718 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
3719 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
3720 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3721 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3722 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3723 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
3724 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
3725 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3726 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3727 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3728 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
3729 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
3730 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3731 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3732 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3733 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3734 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3735 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3736 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3737 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
3738 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3739 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3740 , earned_value = l_tsk_earned_value_tab(i)
3741 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3742 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3743 WHERE l_tsk_update_required(i) = 'Y'
3744 AND project_id = p_project_id
3745 AND object_id = l_tsk_object_id_tab(i)
3746 AND proj_element_id = l_tsk_proj_element_id_tab(i)
3747 AND object_type = l_tsk_object_type_tab(i)
3748 AND as_of_date >= p_as_of_date
3749 AND current_flag = 'W'
3750 AND structure_type = 'WORKPLAN'
3751 AND structure_version_id is null
3752 ;
3753 END IF;
3754
3755 -- Bug 4242787 : This is effective solution for the bug 4097710
3756 -- We should not create new records if the rollup is called from Future Rollup API
3757 -- It should just update.
3758 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3759 FORALL i in 1..l_tsk_object_version_id_tab.count
3760 INSERT INTO pa_progress_rollup
3761 (
3762 progress_rollup_id
3763 ,project_id
3764 ,object_id
3765 ,object_type
3766 ,as_of_date
3767 ,object_version_id
3768 ,last_update_date
3769 ,last_updated_by
3770 ,creation_date
3771 ,created_by
3772 ,progress_status_code
3773 ,last_update_login
3774 ,eff_rollup_percent_comp
3775 ,completed_percentage
3776 ,estimated_start_date
3777 ,estimated_finish_date
3778 ,actual_start_date
3779 ,actual_finish_date
3780 ,record_version_number
3781 ,base_percent_comp_deriv_code
3782 ,base_progress_status_code
3783 ,eff_rollup_prog_stat_code
3784 ,percent_complete_id
3785 ,structure_type
3786 ,proj_element_id
3787 ,structure_version_id
3788 ,ppl_act_effort_to_date
3789 ,ppl_act_cost_to_date_pc
3790 ,ppl_act_cost_to_date_fc
3791 ,ppl_act_rawcost_to_date_pc
3792 ,ppl_act_rawcost_to_date_fc
3793 ,estimated_remaining_effort
3794 ,ppl_etc_cost_pc
3795 ,ppl_etc_cost_fc
3796 ,ppl_etc_rawcost_pc
3797 ,ppl_etc_rawcost_fc
3798 ,eqpmt_act_effort_to_date
3799 ,eqpmt_act_cost_to_date_pc
3800 ,eqpmt_act_cost_to_date_fc
3801 ,eqpmt_act_rawcost_to_date_pc
3802 ,eqpmt_act_rawcost_to_date_fc
3803 ,eqpmt_etc_effort
3804 ,eqpmt_etc_cost_pc
3805 ,eqpmt_etc_cost_fc
3806 ,eqpmt_etc_rawcost_pc
3807 ,eqpmt_etc_rawcost_fc
3808 ,oth_quantity_to_date
3809 ,oth_act_cost_to_date_pc
3810 ,oth_act_cost_to_date_fc
3811 ,oth_act_rawcost_to_date_pc
3812 ,oth_act_rawcost_to_date_fc
3813 ,oth_etc_quantity
3814 ,oth_etc_cost_pc
3815 ,oth_etc_cost_fc
3816 ,oth_etc_rawcost_pc
3817 ,oth_etc_rawcost_fc
3818 ,earned_value
3819 ,task_wt_basis_code
3820 ,current_flag
3821 ,projfunc_cost_rate_type
3822 ,projfunc_cost_exchange_rate
3823 ,projfunc_cost_rate_date
3824 ,proj_cost_rate_type
3825 ,proj_cost_exchange_rate
3826 ,proj_cost_rate_date
3827 ,txn_currency_code
3828 ,prog_pa_period_name
3829 ,prog_gl_period_name
3830 ,base_percent_complete
3831 )
3832 SELECT
3833 PA_PROGRESS_ROLLUP_S.nextval
3834 , p_project_id
3835 , l_tsk_object_id_tab(i)
3836 , l_tsk_object_type_tab(i)
3837 , p_as_of_date
3838 , l_tsk_object_version_id_tab(i)
3839 , sysdate
3840 , l_user_id
3841 , sysdate
3842 , l_user_id
3843 , l_tsk_progress_stat_code_tab(i)
3844 , l_login_id
3845 , l_tsk_roll_comp_percent_tab(i)
3846 , decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
3847 -- Bug 4284353 : Used decode above
3848 , l_tsk_est_start_date_tab(i)
3849 , l_tsk_est_finish_date_tab(i)
3850 , l_tsk_actual_start_date_tab(i)
3851 , l_tsk_actual_finish_date_tab(i)
3852 , 1
3853 , l_tsk_deriv_method_tab(i)
3854 , l_tsk_base_prog_stat_code_tab(i)
3855 , l_tsk_eff_roll_prg_st_code_tab(i)
3856 , l_tsk_percent_complete_id_tab(i)
3857 , p_structure_type
3858 , l_tsk_proj_element_id_tab(i)
3859 , l_structure_version_id
3860 , l_tsk_ppl_act_eff_tab(i)
3861 , l_tsk_ppl_act_cost_pc_tab(i)
3862 , l_tsk_ppl_act_cost_fc_tab(i)
3863 , l_tsk_ppl_act_rawcost_pc_tab(i)
3864 , l_tsk_ppl_act_rawcost_fc_tab(i)
3865 , l_tsk_est_rem_effort_tab(i)
3866 , l_tsk_ppl_etc_cost_pc_tab(i)
3867 , l_tsk_ppl_etc_cost_fc_tab(i)
3868 , l_tsk_ppl_etc_rawcost_pc_tab(i)
3869 , l_tsk_ppl_etc_rawcost_fc_tab(i)
3870 , l_tsk_eqpmt_act_effort_tab(i)
3871 , l_tsk_eqpmt_act_cost_pc_tab(i)
3872 , l_tsk_eqpmt_act_cost_fc_tab(i)
3873 , l_tsk_eqpmt_act_rawcost_pc_tab(i)
3874 , l_tsk_eqpmt_act_rawcost_fc_tab(i)
3875 , l_tsk_eqpmt_etc_effort_tab(i)
3876 , l_tsk_eqpmt_etc_cost_pc_tab(i)
3877 , l_tsk_eqpmt_etc_cost_fc_tab(i)
3878 , l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3879 , l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3880 , l_tsk_oth_quantity_tab(i)
3881 , l_tsk_oth_act_cost_pc_tab(i)
3882 , l_tsk_oth_act_cost_fc_tab(i)
3883 , l_tsk_oth_act_rawcost_pc_tab(i)
3884 , l_tsk_oth_act_rawcost_fc_tab(i)
3885 , l_tsk_oth_etc_quantity_tab(i)
3886 , l_tsk_oth_etc_cost_pc_tab(i)
3887 , l_tsk_oth_etc_cost_fc_tab(i)
3888 , l_tsk_oth_etc_rawcost_pc_tab(i)
3889 , l_tsk_oth_etc_rawcost_fc_tab(i)
3890 , l_tsk_earned_value_tab(i)
3891 , l_tsk_task_wt_basis_code_tab(i)
3892 , l_tsk_current_flag_tab(i)
3893 , l_tsk_pf_cost_rate_type_tab(i)
3894 , l_tsk_pf_cost_exc_rate_tab(i)
3895 , l_tsk_pf_cost_rate_date_tab(i)
3896 , l_tsk_p_cost_rate_type_tab(i)
3897 , l_tsk_p_cost_exc_rate_tab(i)
3898 , l_tsk_p_cost_rate_date_tab(i)
3899 , l_tsk_txn_currency_code_tab(i)
3900 , l_tsk_prog_pa_period_name_tab(i)
3901 , l_tsk_prog_gl_period_name_tab(i)
3902 , l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3903 FROM
3904 DUAL
3905 WHERE l_tsk_create_required(i) = 'Y'
3906 ;
3907 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3908
3909 -- Bug 4242787
3910 -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
3911 -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3912
3913 ---- ************** Updation Ends ****************** ----------
3914
3915 -- Bug 4242787
3916 -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
3917 -- Future rollup seprately if they are calling Mass Rollup
3918 IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
3919 IF g1_debug_mode = 'Y' THEN
3920 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
3921 END IF;
3922
3923 FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
3924 IF g1_debug_mode = 'Y' THEN
3925 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
3926 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
3927 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
3928 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
3929 END IF;
3930 -- Bug 4573257 Begin
3931 -- We need to call PJI tmp table population
3932 -- otherwise we will get incorrect actual and etc for future dates records
3933 IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
3934
3935 IF (l_base_struct_ver_id = -1) THEN
3936 l_base_struct_ver_id := p_structure_version_id;
3937 END IF;
3938
3939 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
3940 p_calling_module => p_calling_module
3941 ,p_project_id => p_project_id
3942 ,p_structure_version_id => p_structure_version_id
3943 ,p_baselined_str_ver_id => l_base_struct_ver_id
3944 ,p_program_rollup_flag => 'Y'
3945 ,p_calling_context => 'ROLLUP'
3946 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
3947 ,x_return_status => x_return_status
3948 ,x_msg_count => x_msg_count
3949 ,x_msg_data => x_msg_data
3950 );
3951 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3952 RAISE FND_API.G_EXC_ERROR;
3953 END IF;
3954 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
3955 END IF;
3956 -- Bug 4573257 End
3957
3958 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
3959 p_init_msg_list => 'F'
3960 ,p_calling_module => p_calling_module
3961 ,p_calling_mode => 'FUTURE_ROLLUP'
3962 ,p_commit => 'F'
3963 ,p_validate_only => 'F'
3964 ,p_project_id => p_project_id
3965 ,P_OBJECT_TYPE => 'PA_TASKS'
3966 ,P_OBJECT_ID => cur_tree_rollup_rec.child_task_id
3967 ,p_object_version_id => cur_tree_rollup_rec.child_task_ver_id
3968 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
3969 ,p_lowest_level_task => p_lowest_level_task
3970 ,p_process_whole_tree => 'N'
3971 ,p_structure_type => p_structure_type
3972 ,p_structure_version_id => p_structure_version_id
3973 ,p_rollup_entire_wbs => 'N'
3974 ,p_fin_rollup_method => p_fin_rollup_method
3975 ,p_wp_rollup_method => p_wp_rollup_method
3976 ,p_task_version_id => cur_tree_rollup_rec.child_task_ver_id
3977 ,x_return_status => x_return_status
3978 ,x_msg_count => x_msg_count
3979 ,x_msg_data => x_msg_data);
3980
3981 IF g1_debug_mode = 'Y' THEN
3982 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
3983 END IF;
3984
3985 IF x_return_status <> 'S' THEN
3986 raise FND_API.G_EXC_ERROR;
3987 END IF;
3988 END LOOP;
3989 END IF; -- p_rollup_entire_wbs = 'Y'
3990
3991 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3992
3993
3994
3995 x_return_status := FND_API.G_RET_STS_SUCCESS;
3996
3997 IF (p_commit = FND_API.G_TRUE) THEN
3998 COMMIT;
3999 END IF;
4000
4001
4002 IF g1_debug_mode = 'Y' THEN
4003 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
4004 END IF;
4005
4006 EXCEPTION
4007 WHEN FND_API.G_EXC_ERROR THEN
4008 --BUG 4355204
4009 --IF p_commit = FND_API.G_TRUE THEN
4010 rollback to ROLLUP_PROGRESS_PVT2;
4011 --END IF;
4012 x_return_status := FND_API.G_RET_STS_ERROR;
4013 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4014 --BUG 4355204
4015 --IF p_commit = FND_API.G_TRUE THEN
4016 rollback to ROLLUP_PROGRESS_PVT2;
4017 --END IF;
4018 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4019 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4020 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4021 p_error_text => SUBSTRB(SQLERRM,1,120));
4022 WHEN OTHERS THEN
4023 --BUG 4355204
4024 --IF p_commit = FND_API.G_TRUE THEN
4025 rollback to ROLLUP_PROGRESS_PVT2;
4026 --END IF;
4027 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4028 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4029 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4030 p_error_text => SUBSTRB(SQLERRM,1,120));
4031 raise;
4032 END ROLLUP_PROGRESS_PVT;
4033
4034 -- Start of comments
4035 -- API name : UPDATE_ROLLUP_PROGRESS_PVT
4036 -- Type : Private
4037 -- Pre-reqs : ROLLUP_PROGRESS_PVT shd have been called.
4038 -- Purpose : Updates the Rolled up data
4039 -- Parameters Desc :
4040 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4041 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
4042 -- proj_element_id of the deliverable and task
4043 -- p_object_version_id For Assignments, pass task_version_id, otherwise
4044 -- element_version_id of the deliverable and task
4045 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
4046 -- , for struture pass null
4047 -- p_lowest_level_task Does not seem to be required
4048 -- p_structure_version_id Structure version id of the publsihed or working structure version
4049 -- p_structure_type Possible values WORKPLAN, FINANCIAL
4050 -- p_fin_rollup_method Possible values are COST, EFFORT
4051 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
4052 -- p_published_structure To indicate if the passed structure version is published
4053 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
4054
4055 -- End of comments
4056
4057 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4058 p_api_version IN NUMBER :=1.0
4059 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4060 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4061 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4062 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4063 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4064 ,p_calling_mode IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4065 ,p_debug_mode IN VARCHAR2 :='N'
4066 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4067 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4068 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4069 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4070 ,p_rollup_table IN PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4071 ,p_lowest_level_task IN VARCHAR2 := 'N'
4072 ,p_task_version_id IN NUMBER
4073 ,p_structure_version_id IN NUMBER
4074 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
4075 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
4076 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
4077 ,p_published_structure IN VARCHAR2
4078 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- FPM Dev CR 7
4079 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --bug 3829341
4080 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, for BUG 3951024
4081 ,p_progress_mode IN VARCHAR2 := 'FUTURE' -- 4091457
4082 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4083 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4084 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4085 ) IS
4086 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4087 l_api_version CONSTANT NUMBER := 1.0 ;
4088
4089 l_return_status VARCHAR2(1) ;
4090 l_msg_count NUMBER ;
4091 l_msg_data VARCHAR2(250) ;
4092 l_data VARCHAR2(250) ;
4093 l_msg_index_out NUMBER ;
4094 l_error_msg_code VARCHAR2(250) ;
4095 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
4096 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
4097
4098 BEGIN
4099 -- Bug 4242787 : Commented update_rollup_progress_pvt, IT is merged into rollup_progress_pvt
4100 x_return_status := FND_API.G_RET_STS_SUCCESS;
4101 IF (p_commit = FND_API.G_TRUE) THEN
4102 COMMIT;
4103 END IF;
4104 EXCEPTION
4105 WHEN FND_API.G_EXC_ERROR THEN
4106 IF g1_debug_mode = 'Y' THEN
4107 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4108 END IF;
4109
4110 IF p_commit = FND_API.G_TRUE THEN
4111 rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4112 END IF;
4113 x_return_status := FND_API.G_RET_STS_ERROR;
4114 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4115
4116 IF g1_debug_mode = 'Y' THEN
4117 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4118 END IF;
4119
4120 IF p_commit = FND_API.G_TRUE THEN
4121 rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4122 END IF;
4123 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4124 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4125 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4126 p_error_text => SUBSTRB(SQLERRM,1,120));
4127 WHEN OTHERS THEN
4128 IF g1_debug_mode = 'Y' THEN
4129 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4130 END IF;
4131
4132 IF p_commit = FND_API.G_TRUE THEN
4133 rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4134 END IF;
4135 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4136 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4137 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4138 p_error_text => SUBSTRB(SQLERRM,1,120));
4139 raise;
4140 END UPDATE_ROLLUP_PROGRESS_PVT;
4141
4142 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
4143 p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4144 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4145 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4146 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4147 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4148 ,p_lowest_level_task IN VARCHAR2 := 'N'
4149 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
4150 ,p_calling_mode IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4151 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
4152 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4153 ,p_fin_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4154 ,p_wp_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4155 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- Bug 3606627
4156 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4157 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4158 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4159 )
4160 IS
4161
4162 -- 4537865
4163 l_msg_count NUMBER ;
4164 l_data VARCHAR2(2000);
4165 l_msg_data VARCHAR2(2000);
4166 l_msg_index_out NUMBER;
4167
4168 CURSOR cur_reverse_tree
4169 IS
4170 SELECT proj_element_id, object_id_from1, object_id_to1, object_type
4171 FROM
4172 ( select object_id_from1, object_id_to1
4173 from pa_object_relationships
4174 where p_rollup_entire_wbs='N'
4175 AND relationship_type = 'S' -- FPM
4176 start with object_id_to1 = p_object_version_id
4177 --and relationship_type = 'S' -- Bug 3603636
4178 and relationship_type = 'S' -- Bug 4122809 : Added this
4179 connect by prior object_id_from1 = object_id_to1
4180 and relationship_type = 'S' -- Bug 3958686
4181 ) pobj, pa_proj_element_versions ppev
4182 WHERE element_version_id = object_id_to1
4183 AND p_rollup_entire_wbs='N'
4184 UNION -- AMG Changes
4185 SELECT ever.proj_element_id, obj.object_id_from1 object_id_from1, ever.element_version_id object_id_to1, ever.object_type object_type
4186 FROM pa_proj_element_versions ever
4187 , pa_object_relationships obj
4188 WHERE ever.project_id = p_project_id
4189 and ever.parent_structure_version_id = p_structure_version_id
4190 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
4191 -- and PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(ever.element_version_id) = 'N'
4192 and PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(ever.element_version_id) = 'Y'
4193 and ever.object_type = 'PA_TASKS'
4194 AND obj.object_id_to1 = ever.element_version_id
4195 AND obj.relationship_type = 'S'
4196 and p_rollup_entire_wbs='Y';
4197
4198
4199 l_object_id NUMBER;
4200 -- Bug 3764224 : This cursor deals with tasks only, so no need to add join of proj_element_id
4201 CURSOR cur_tree_rollup_dates
4202 IS
4203 select as_of_date, published_flag, ppc.current_flag
4204 from pa_progress_rollup ppr, pa_percent_completes ppc
4205 where ppr.project_id = p_project_id
4206 and ppr.object_id = l_object_id
4207 and ppr.as_of_Date > p_as_of_date
4208 and ppr.project_id = ppc.project_id(+)
4209 and ppr.object_id = ppc.object_id(+)
4210 and ppr.as_of_date = ppc.date_computed(+)
4211 and ppr.structure_type = p_structure_type
4212 and ppr.structure_version_id is null -- For Future Rollup no need to check for structure version id
4213 order by as_of_date;
4214
4215 cur_tree_rollup_rec cur_tree_rollup_dates%rowtype;
4216 l_structure_version_id NUMBER;
4217 g1_debug_mode VARCHAR2(1);
4218
4219 l_base_struct_ver_id NUMBER; -- Bug 4573257
4220 l_last_as_of_date DATE; -- Bug 4573257
4221 BEGIN
4222
4223 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4224
4225 IF g1_debug_mode = 'Y' THEN
4226 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT');
4227 END IF;
4228
4229 IF g1_debug_mode = 'Y' THEN
4230 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4231 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4232 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
4233 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
4234 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4235 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4236 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4237 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4238 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4239 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4240 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4241 END IF;
4242
4243 For cur_tree_rec in cur_reverse_tree loop
4244
4245 select proj_element_id into l_object_id
4246 from pa_proj_element_versions
4247 where element_version_id = cur_tree_rec.object_id_from1;
4248
4249 IF g1_debug_mode = 'Y' THEN
4250 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'l_object_id'||l_object_id, x_Log_Level=> 3);
4251 END IF;
4252
4253
4254 open cur_tree_rollup_dates;
4255 loop
4256 fetch cur_tree_rollup_dates into cur_tree_rollup_rec;
4257 if cur_tree_rollup_dates%notfound then
4258 exit;
4259 end if;
4260 ----------------dbms_output.put_line(cur_tree_rec.proj_element_id||' '||cur_tree_rollup_rec.as_of_date);
4261 if nvl(cur_tree_rollup_rec.current_flag,'X') = 'N' and nvl(cur_tree_rollup_rec.published_flag,'X') = 'Y' then
4262 null;
4263 else
4264
4265 IF g1_debug_mode = 'Y' THEN
4266 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'Calling ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
4267 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
4268 END IF;
4269
4270 -- Bug 4573257 Begin
4271 -- We need to call PJI tmp table population
4272 -- otherwise we will get incorrect actual and etc for future dates records
4273 IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
4274 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
4275 IF (l_base_struct_ver_id = -1) THEN
4276 l_base_struct_ver_id := p_structure_version_id;
4277 END IF;
4278
4279 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
4280 p_calling_module => p_calling_module
4281 ,p_project_id => p_project_id
4282 ,p_structure_version_id => p_structure_version_id
4283 ,p_baselined_str_ver_id => l_base_struct_ver_id
4284 ,p_program_rollup_flag => 'Y'
4285 ,p_calling_context => 'ROLLUP'
4286 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
4287 ,x_return_status => x_return_status
4288 ,x_msg_count => x_msg_count
4289 ,x_msg_data => x_msg_data
4290 );
4291 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4292 RAISE FND_API.G_EXC_ERROR;
4293 END IF;
4294 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
4295 END IF;
4296 -- Bug 4573257 End
4297
4298 -- Bug 4097710 : Changed the API from PUB to PVT.
4299 -- It is not good idea to call PUB APi from PVT
4300
4301 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
4302 p_init_msg_list => 'F'
4303 --Added by rtarway for BUG 3696263
4304 ,p_calling_module => p_calling_module
4305 ,p_calling_mode => 'FUTURE_ROLLUP' -- Bug 4097710, 4242787 Changed back to FUTURE_ROLLUP
4306 ,p_commit => 'F'
4307 ,p_validate_only => 'F'
4308 ,p_project_id => p_project_id
4309 ,P_OBJECT_TYPE => 'PA_TASKS'
4310 ,P_OBJECT_ID => cur_tree_rec.proj_element_id
4311 ,p_object_version_id => cur_tree_rec.object_id_to1
4312 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
4313 ,p_lowest_level_task => p_lowest_level_task
4314 ,p_process_whole_tree => 'N'
4315 ,p_structure_type => p_structure_type
4316 ,p_structure_version_id => p_structure_version_id
4317 ,p_rollup_entire_wbs => 'N'
4318 ,p_fin_rollup_method => p_fin_rollup_method
4319 ,p_wp_rollup_method => p_wp_rollup_method
4320 ,p_task_version_id => cur_tree_rec.object_id_to1
4321 ,x_return_status => x_return_status
4322 ,x_msg_count => x_msg_count
4323 ,x_msg_data => x_msg_data);
4324
4325 -- Start : 4537865
4326 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4327 RAISE FND_API.G_EXC_ERROR;
4328 END IF;
4329 -- End : 4537865
4330 end if;
4331 end loop;
4332 close cur_tree_rollup_dates;
4333 END loop;
4334 IF g1_debug_mode = 'Y' THEN
4335 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
4336 END IF;
4337 EXCEPTION
4338 -- 4537865 : Start
4339 when FND_API.G_EXC_ERROR then
4340 x_return_status := FND_API.G_RET_STS_ERROR;
4341
4342 l_msg_count := Fnd_Msg_Pub.count_msg;
4343
4344 IF l_msg_count = 1 AND x_msg_data IS NULL
4345 THEN
4346 Pa_Interface_Utils_Pub.get_messages
4347 ( p_encoded => Fnd_Api.G_FALSE
4348 , p_msg_index => 1
4349 , p_msg_count => l_msg_count
4350 , p_msg_data => l_msg_data
4351 , p_data => l_data
4352 , p_msg_index_out => l_msg_index_out);
4353 x_msg_data := l_data;
4354 x_msg_count := l_msg_count;
4355 END IF;
4356
4357 -- 4537865 : End
4358 WHEN OTHERS THEN
4359 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4360 x_msg_count := 1 ; -- 4537865
4361 x_msg_data := SUBSTRB(SQLERRM,1,120); -- 4537865
4362 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4363 p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
4364 p_error_text => SUBSTRB(SQLERRM,1,120));
4365 raise;
4366 END ROLLUP_FUTURE_PROGRESS_PVT;
4367
4368 PROCEDURE program_rollup_pvt(
4369 p_api_version IN NUMBER :=1.0
4370 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4371 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4372 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4373 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4374 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4375 ,p_debug_mode IN VARCHAR2 :='N'
4376 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4377 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4378 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4379 ,p_structure_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4380 ,p_structure_ver_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4381 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4382 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4383 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4384 )
4385 IS
4386 l_api_name CONSTANT VARCHAR2(30) := 'PROGRAM_ROLLUP_PVT';
4387 l_api_version CONSTANT NUMBER := p_api_version;
4388 l_user_id NUMBER := FND_GLOBAL.USER_ID;
4389 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
4390 l_return_status VARCHAR2(1);
4391 l_msg_count NUMBER;
4392 l_msg_data VARCHAR2(250);
4393
4394 l_parent_task_id NUMBER;
4395 l_parent_struc_ver_id NUMBER;
4396
4397 CURSOR c1 (p_project_id NUMBER) IS
4398 /* select *
4399 from pa_structures_links_v
4400 where sub_project_id = p_project_id;*/
4401 --bug 4033869
4402 SELECT
4403 ppv2.project_id sub_project_id
4404 ,ppv2.element_version_id SUB_STRUCTURE_VER_ID
4405 ,ppv1.project_id PARENT_PROJECT_ID
4406 ,ppv1.parent_structure_version_id PARENT_STRUCTURE_VER_ID
4407 ,ppv1.element_version_id PARENT_TASK_VERSION_ID
4408 ,ppv1.proj_element_id PARENT_TASK_ID
4409 FROM
4410 pa_proj_element_versions ppv1
4411 ,pa_proj_elem_ver_structure ppevs1
4412 ,pa_proj_element_versions ppv2
4413 ,pa_proj_elem_ver_structure ppevs2
4414 ,pa_object_relationships por1
4415 ,pa_object_relationships por2
4416 WHERE
4417 ppv2.element_version_id = por1.object_id_to1
4418 AND por1.object_id_from1 = por2.object_id_to1
4419 AND por2.object_id_from1 = ppv1.element_version_id
4420 AND ppv2.object_type = 'PA_STRUCTURES'
4421 -- AND por1.relationship_type in ( 'LW', 'LF' )
4422 AND por1.relationship_type = 'LW'
4423 AND ppevs1.element_version_id = ppv1.parent_structure_version_id
4424 AND ppevs1.project_id = ppv1.project_id
4425 AND ppevs1.status_code = 'STRUCTURE_PUBLISHED'
4426 AND ppevs1.latest_eff_published_flag = 'Y'
4427 AND ppevs2.element_version_id = ppv2.element_version_id
4428 AND ppevs2.project_id = ppv2.project_id
4429 AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
4430 AND ppevs2.latest_eff_published_flag = 'Y'
4431 AND ppv2.project_id=p_project_id
4432 ;
4433
4434 l_parent_task_status VARCHAR2(30);
4435 l_parent_as_of_date DATE;
4436 l_pln_parent_task_self NUMBER;
4437 l_parent_plan_version_id NUMBER;
4438
4439 --This cursor returns self planned value for a task.
4440 CURSOR cur_self_planned ( c_project_id NUMBER, c_proj_element_id NUMBER,
4441 c_plan_version_id NUMBER, c_base_percnt_deriv_code VARCHAR2)
4442 IS
4443 select decode(c_base_percnt_deriv_code, 'COST', sum(brdn_cost), 'EFFORT', sum(nvl(labor_hrs,0)+nvl(equipment_hours,0)))
4444 from pji_fp_xbs_accum_f
4445 where project_id = c_project_id
4446 and plan_version_id = c_plan_version_id
4447 and project_element_id = c_proj_element_id
4448 and calendar_type = 'A'
4449 and wbs_rollup_flag = 'N'
4450 and bitand(curr_record_type_id, 8) = 8
4451 and rbs_aggr_level = 'T'
4452 and prg_rollup_flag = 'N'
4453 ;
4454 --end bug 4033869
4455 l_c1rec c1%rowtype;
4456 l_base_prcnt_comp_drv_code VARCHAR2(30);
4457
4458 l_bcwp NUMBER := 0;
4459 l_bac NUMBER := 0;
4460 l_pln_parent_task NUMBER :=0;
4461 l_pln_sub_project NUMBER :=0;
4462 l_eff_rollup_prcnt_comp NUMBER :=0;
4463 l_mode VARCHAR2(1) := NULL;
4464 l_progress_rollup_id NUMBER;
4465
4466 l_msg_code NUMBER;
4467 l_calling_module VARCHAR2(30);
4468
4469 CURSOR c_get_parent_base_per_comp_der(c_project_id number, c_task_id number) IS
4470 SELECT base_percent_comp_deriv_code
4471 ,status_code --bug 4033869
4472 FROM pa_proj_elements
4473 WHERE project_id = c_project_id
4474 AND proj_element_id = c_task_id;
4475
4476 CURSOR c_get_task_weightage_method(c_project_id number) IS
4477 SELECT task_weight_basis_code,progress_cycle_id ---4701759, 4701727
4478 FROM pa_proj_progress_attr
4479 WHERE project_id = c_project_id
4480 AND structure_type = 'WORKPLAN';
4481
4482 CURSOR c_get_sub_proj_rollup IS
4483 SELECT *
4484 FROM pa_progress_rollup
4485 WHERE project_id = p_project_id
4486 AND object_type = 'PA_STRUCTURES'
4487 AND structure_type = 'WORKPLAN'
4488 AND structure_version_id is NULL
4489 AND as_of_date = p_as_of_date;
4490
4491 CURSOR c_get_par_task_rollup(c_object_id NUMBER, c_project_id NUMBER) IS
4492 SELECT *
4493 FROM pa_progress_rollup
4494 WHERE object_id = c_object_id
4495 AND project_id = c_project_id
4496 AND object_type = 'PA_TASKS'
4497 AND structure_type = 'WORKPLAN'
4498 AND structure_version_id is null
4499 AND as_of_date = p_as_of_date;
4500
4501 CURSOR cur_get_status( c_status_weight VARCHAR2, c_status_type VARCHAR2 ) IS
4502 SELECT project_status_code
4503 FROM pa_project_statuses
4504 WHERE project_status_weight = c_status_weight
4505 AND status_type = c_status_type
4506 AND predefined_flag = 'Y';
4507
4508 CURSOR cur_get_status_weight(c_status_code VARCHAR2, c_status_type VARCHAR2 ) IS
4509 SELECT project_status_weight
4510 FROM pa_project_statuses
4511 WHERE project_status_code = c_status_code
4512 AND status_type = c_status_type;
4513
4514 l_child_prog_cycle_id number; ---4701759, 4701727
4515 l_par_prog_cycle_id number;
4516 l_sub_project_rec c_get_sub_proj_rollup%ROWTYPE;
4517 l_parent_task_rec c_get_par_task_rollup%ROWTYPE;
4518 l_task_weight_basis_code pa_proj_progress_attr.task_weight_basis_code%TYPE;
4519 L_BASE_STRUCT_VER_ID NUMBER;
4520
4521 l_remaining_effort1 NUMBER ;
4522 l_ETC_Cost_PC NUMBER ;
4523 l_PPL_ETC_COST_PC NUMBER ;
4524 l_EQPMT_ETC_COST_PC NUMBER ;
4525 l_ETC_Cost_FC NUMBER ;
4526 l_PPL_ETC_COST_FC NUMBER ;
4527 l_EQPMT_ETC_COST_FC NUMBER ;
4528 l_EQPMT_ETC_EFFORT NUMBER ;
4529 l_OTH_ACT_COST_TO_DATE_PC NUMBER ;
4530 l_PPL_ACT_COST_TO_DATE_PC NUMBER ;
4531 l_EQPMT_ACT_COST_TO_DATE_PC NUMBER;
4532 l_OTH_ACT_COST_TO_DATE_FC NUMBER ;
4533 l_PPL_ACT_COST_TO_DATE_FC NUMBER ;
4534 l_EQPMT_ACT_COST_TO_DATE_FC NUMBER;
4535 l_PPL_ACT_EFFORT_TO_DATE NUMBER ;
4536 l_EQPMT_ACT_EFFORT_TO_DATE NUMBER ;
4537 l_PERIOD_NAME VARCHAR2(10);
4538 g1_debug_mode VARCHAR2(1);
4539 l_OTH_ACT_RAWCOST_TO_DATE_PC NUMBER;
4540 l_PPL_ACT_RAWCOST_TO_DATE_PC NUMBER;
4541 l_EQPMT_ACT_RAWCOST_TO_DATE_PC NUMBER;
4542 l_OTH_ACT_RAWCOST_TO_DATE_FC NUMBER;
4543 l_PPL_ACT_RAWCOST_TO_DATE_FC NUMBER;
4544 l_EQPMT_ACT_RAWCOST_TO_DATE_FC NUMBER;
4545 l_ETC_RAWCost_PC NUMBER;
4546 l_PPL_ETC_RAWCOST_PC NUMBER;
4547 l_EQPMT_ETC_RAWCOST_PC NUMBER;
4548 l_ETC_RAWCost_FC NUMBER;
4549 l_PPL_ETC_RAWCOST_FC NUMBER;
4550 l_EQPMT_ETC_RAWCOST_FC NUMBER;
4551 l_LABOR_HOURS NUMBER;
4552 l_EQUIPMENT_HOURS NUMBER;
4553 l_POU_LABOR_BRDN_COST NUMBER := null;
4554 l_PRJ_LABOR_BRDN_COST NUMBER := null;
4555 l_POU_EQUIP_BRDN_COST NUMBER := null;
4556 l_PRJ_EQUIP_BRDN_COST NUMBER := null;
4557 l_POU_LABOR_RAW_COST NUMBER := null;
4558 l_PRJ_LABOR_RAW_COST NUMBER := null;
4559 l_POU_EQUIP_RAW_COST NUMBER := null;
4560 l_PRJ_EQUIP_RAW_COST NUMBER := null;
4561 l_POU_OTH_BRDN_COST NUMBER := null;
4562 l_PRJ_OTH_BRDN_COST NUMBER := null;
4563 l_POU_OTH_RAW_COST NUMBER := null;
4564 l_PRJ_OTH_RAW_COST NUMBER := null;
4565 l_current_flag VARCHAR2(1);
4566 l_dummy VARCHAR2(1);
4567 l_parent_progress_status pa_progress_rollup.progress_status_code%TYPE;
4568 l_child_progress_status pa_progress_rollup.progress_status_code%TYPE;
4569 l_par_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4570 l_child_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4571 l_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4572 l_eff_rollup_progress_status pa_progress_rollup.progress_status_code%TYPE;
4573 l_actual_start_date DATE;
4574 l_actual_finish_date DATE;
4575 l_estimated_start_date DATE;
4576 l_estimated_finish_date DATE;
4577 --Added for bug 16230177
4578 cursor get_parent_max_asofdate(l_proj number, l_obj number) is
4579 select as_of_date
4580 from pa_progress_rollup
4581 where project_id = l_proj
4582 and object_id = l_obj
4583 and object_type = 'PA_TASKS'
4584 and structure_version_id is null
4585 and structure_type = 'WORKPLAN'
4586 and current_flag = 'Y';
4587 BEGIN
4588
4589 --Open Question:
4590 --1. The parent Project progress record should go to the parent project cycle date.
4591 --As of now it is going with just passed as of date.
4592 --2.
4593 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4594
4595 IF g1_debug_mode = 'Y' THEN
4596 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4597 END IF;
4598
4599 IF g1_debug_mode = 'Y' THEN
4600 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4601 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4602 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_ver_id='||p_structure_ver_id, x_Log_Level=> 3);
4603 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4604 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4605 END IF;
4606
4607 IF g1_debug_mode = 'Y' THEN
4608 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4609 END IF;
4610
4611 IF (p_commit = FND_API.G_TRUE) THEN
4612 savepoint PROGRAM_ROLLUP_PVT2;
4613 END IF;
4614
4615 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4616 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4617 END IF;
4618
4619 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4620 FND_MSG_PUB.initialize;
4621 END IF;
4622
4623 x_return_status := FND_API.G_RET_STS_SUCCESS;
4624
4625 -- Get the parent task of the project.
4626
4627 IF p_structure_type <> 'WORKPLAN' THEN
4628 return;
4629 END IF;
4630
4631 l_calling_module := p_calling_module; ---4492493
4632
4633 IF (l_calling_module = 'ASGMT_PLAN_CHANGE') then --4492493
4634 l_calling_module := 'SELF_SERVICE';
4635 END IF;
4636
4637 OPEN c1(p_project_id);
4638 ---4701759, 4701727
4639 OPEN c_get_task_weightage_method(p_project_id);
4640 FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_child_prog_cycle_id;
4641 CLOSE c_get_task_weightage_method;
4642 LOOP
4643 if ((p_calling_module = 'ASGMT_PLAN_CHANGE' and NVL(PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(l_c1rec.parent_project_id), 'N' ) = 'N') OR
4644 (p_calling_module <> 'ASGMT_PLAN_CHANGE')) then --4492493
4645 FETCH c1 INTO l_c1rec;
4646 EXIT WHEN c1%NOTFOUND;
4647
4648 IF g1_debug_mode = 'Y' THEN
4649 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_project_id='||l_c1rec.parent_project_id, x_Log_Level=> 3);
4650 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_task_id='||l_c1rec.parent_task_id, x_Log_Level=> 3);
4651 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_structure_ver_id='||l_c1rec.parent_structure_ver_id, x_Log_Level=> 3);
4652 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_task_version_id='||l_c1rec.parent_task_version_id, x_Log_Level=> 3);
4653 END IF;
4654
4655 IF (p_structure_type = 'WORKPLAN') THEN
4656
4657 -- Bug 3807299 Program_rollup redesign
4658 --l_base_prcnt_comp_drv_code := null;
4659
4660 --OPEN c_get_parent_base_per_comp_der(l_c1rec.parent_project_id,l_c1rec.parent_task_id);
4661 --FETCH c_get_parent_base_per_comp_der INTO l_base_prcnt_comp_drv_code,
4662 -- l_parent_task_status; --bug 4033869
4663 --CLOSE c_get_parent_base_per_comp_der;
4664
4665 OPEN c_get_task_weightage_method(l_c1rec.parent_project_id);
4666 FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_par_prog_cycle_id;
4667 CLOSE c_get_task_weightage_method;
4668 --Bug 16230177 changes start here
4669 --Commented below code for AWE Performance bug 16230177
4670
4671 ---4701759, 4701727
4672 /*if (l_child_prog_cycle_id <> l_par_prog_cycle_id) then
4673 l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
4674 p_project_id => l_c1rec.parent_project_id
4675 ,p_task_id => l_c1rec.parent_task_id
4676 ,p_start_date => trunc(p_as_of_date)-1);
4677 else
4678 l_parent_as_of_date := trunc(p_as_of_date);
4679 end if;*/
4680 --Forward ported 11i changes
4681 open get_parent_max_asofdate(l_c1rec.parent_project_id,l_c1rec.parent_task_id);
4682 fetch get_parent_max_asofdate into l_parent_as_of_date;
4683 close get_parent_max_asofdate;
4684 if (l_parent_as_of_date is null or l_parent_as_of_date < p_as_of_date) then
4685 l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
4686 p_project_id => l_c1rec.parent_project_id
4687 ,p_task_id => l_c1rec.parent_task_id
4688 ,p_start_date => trunc(p_as_of_date)-1);
4689 end if;
4690 --Bug 16230177 changes end here
4691
4692 IF g1_debug_mode = 'Y' THEN
4693 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_task_weight_basis_code='||l_task_weight_basis_code, x_Log_Level=> 3);
4694 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_as_of_date='||l_parent_as_of_date, x_Log_Level=> 3);
4695 END IF;
4696
4697 -- 4586449 : This is not related to this but but putting this fix with this bug.
4698 -- In this API we earlier decided that we do not need to call PJI temp table
4699 -- population, because update_progress_bulk or get_summarized_actuals have already
4700 -- populated it for the entire hierarchy upwards for the given p_as_of_date.
4701 -- But note that program project next cycle date might be ahead than the passed p_as_of_date.
4702 -- In this case, we will get wrong data for program. So we need to populate it here too..
4703
4704 IF l_parent_as_of_date > p_as_of_date THEN
4705 pa_progress_pub.populate_pji_tab_for_plan(
4706 p_init_msg_list => FND_API.G_FALSE
4707 ,p_commit => FND_API.G_FALSE
4708 ,p_calling_module => l_calling_module
4709 ,p_project_id => l_c1rec.parent_project_id
4710 ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4711 ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(l_c1rec.parent_project_id)
4712 ,p_structure_type => 'WORKPLAN'
4713 ,p_program_rollup_flag => 'Y'
4714 ,p_calling_context => 'SUMMARIZE'
4715 ,p_as_of_date => l_parent_as_of_date
4716 ,x_return_status => x_return_status
4717 ,x_msg_count => x_msg_count
4718 ,x_msg_data => x_msg_data);
4719
4720 IF x_return_status <> 'S' THEN
4721 RAISE FND_API.G_EXC_ERROR;
4722 END IF;
4723 END IF;
4724
4725 /* Bug 4392189 : Now Rollup API will take care of everything. No need to do anything here
4726
4727 -- Amit : Reducing the scope of this IF condition as COST or EFFORT should rollup even
4728 -- if task derivation method is other than COST or EFFORT
4729 --IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
4730 --THEN
4731 -- Calculating BCWP.
4732 l_sub_project_rec := null;
4733
4734 OPEN c_get_sub_proj_rollup;
4735 FETCH c_get_sub_proj_rollup INTO l_sub_project_rec;
4736 CLOSE c_get_sub_proj_rollup;
4737
4738 l_parent_task_rec := null;
4739
4740 OPEN c_get_par_task_rollup(l_c1rec.parent_task_id, l_c1rec.parent_project_id);
4741 FETCH c_get_par_task_rollup INTO l_parent_task_rec;
4742 CLOSE c_get_par_task_rollup;
4743
4744 --bug 4033869
4745 -- Get sub project plan in terms of derivation method of parent task
4746 l_pln_sub_project := pa_progress_utils.Get_BAC_Value(p_project_id => p_project_id
4747 ,p_task_weight_method => l_base_prcnt_comp_drv_code
4748 ,p_proj_element_id => l_sub_project_rec.object_id
4749 ,p_structure_version_id => p_structure_ver_id
4750 ,p_structure_type => 'WORKPLAN');
4751 --l_pln_parent_task_self
4752 --get the plan version id of the parent structure ver id.
4753 IF g1_debug_mode = 'Y' THEN
4754 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_pln_sub_project='||l_pln_sub_project, x_Log_Level=> 3);
4755 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Before calling Pa_Fp_wp_gen_amt_utils.get_wp_version_id', x_Log_Level=> 3);
4756 END IF;
4757
4758 BEGIN
4759 l_parent_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
4760 p_project_id => l_c1rec.parent_project_id,
4761 p_plan_type_id => -1,
4762 p_proj_str_ver_id => l_c1rec.parent_structure_ver_id) ;
4763 EXCEPTION
4764 WHEN OTHERS THEN
4765 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4766 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
4767 p_error_text => SUBSTRB('Call of PA_FP_WP_GEN_AMT_UTILS.GET_WP_VERSION_ID Failed: SQLERRM'||SQLERRM,1,120));
4768 RAISE FND_API.G_EXC_ERROR;
4769 END;
4770
4771 IF g1_debug_mode = 'Y' THEN
4772 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_plan_version_id='||l_parent_plan_version_id, x_Log_Level=> 3);
4773 END IF;
4774
4775 --if l_base_prcnt_comp_drv_code is COST then select self planned COST for parent task in l_pln_parent_task_self
4776 --if l_base_prcnt_comp_drv_code is EFFORT then select self planned EFFORT for parent task in l_pln_parent_task_self
4777
4778 OPEN cur_self_planned ( l_c1rec.parent_project_id, l_c1rec.parent_task_id,
4779 l_parent_plan_version_id, l_base_prcnt_comp_drv_code);
4780 FETCH cur_self_planned INTO l_pln_parent_task_self;
4781 CLOSE cur_self_planned;
4782 --End bug 4033869
4783
4784 IF g1_debug_mode = 'Y' THEN
4785 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_pln_parent_task_self='||l_pln_parent_task_self, x_Log_Level=> 3);
4786 END IF;
4787
4788 IF l_parent_task_rec.project_id IS NOT NULL THEN
4789 IF g1_debug_mode = 'Y' THEN
4790 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Update U', x_Log_Level=> 3);
4791 END IF;
4792
4793 l_mode := 'U';
4794
4795 --l_bcwp := nvl(l_parent_task_rec.earned_value,0) + nvl(l_sub_project_rec.earned_value,0);
4796 l_bcwp :=nvl((nvl(l_parent_task_rec.completed_percentage,l_parent_task_rec.eff_rollup_percent_comp)*l_pln_parent_task_self)/100,0) + --bug 4033869 nvl(l_parent_task_rec.earned_value,0)
4797 nvl((nvl(l_sub_project_rec.completed_percentage,l_sub_project_rec.eff_rollup_percent_comp)*l_pln_sub_project)/100,0); --bug 4033869
4798 --l_eff_rollup_prcnt_comp := l_parent_task_rec.eff_rollup_percent_comp;
4799
4800 IF g1_debug_mode = 'Y' THEN
4801 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.completed_percentage='||l_parent_task_rec.completed_percentage, x_Log_Level=> 3);
4802 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.eff_rollup_percent_comp='||l_parent_task_rec.eff_rollup_percent_comp, x_Log_Level=> 3);
4803 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.as_of_date='||l_parent_task_rec.as_of_date, x_Log_Level=> 3);
4804 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.completed_percentage='||l_sub_project_rec.completed_percentage, x_Log_Level=> 3);
4805 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.eff_rollup_percent_comp='||l_sub_project_rec.eff_rollup_percent_comp, x_Log_Level=> 3);
4806 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.as_of_date='||l_sub_project_rec.as_of_date, x_Log_Level=> 3);
4807 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4808 END IF;
4809
4810
4811 IF PA_PROGRESS_UTILS.get_system_task_status(l_parent_task_status) NOT IN ( 'CANCELLED', 'ON_HOLD', 'COMPLETED' )
4812 --bug 4033869 If parent is ON-HOLD, CANCELLED or COMPLETED then do not rollup any progress attributes.
4813 THEN
4814 --l_parent_progress_status := nvl(l_parent_task_rec.PROGRESS_STATUS_CODE, l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE);
4815 --l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4816 l_parent_progress_status := l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE;
4817 l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4818
4819 IF g1_debug_mode = 'Y' THEN
4820 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_progress_status='||l_parent_progress_status, x_Log_Level=> 3);
4821 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_child_progress_status='||l_child_progress_status, x_Log_Level=> 3);
4822 END IF;
4823
4824 IF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NOT NULL THEN
4825 OPEN cur_get_status_weight(l_parent_progress_status, 'PROGRESS');
4826 FETCH cur_get_status_weight INTO l_par_progress_status_weight;
4827 CLOSE cur_get_status_weight;
4828
4829 OPEN cur_get_status_weight(l_child_progress_status, 'PROGRESS');
4830 FETCH cur_get_status_weight INTO l_child_progress_status_weight;
4831 CLOSE cur_get_status_weight;
4832
4833 SELECT GREATEST(l_par_progress_status_weight, l_child_progress_status_weight)
4834 INTO l_progress_status_weight
4835 FROM DUAL;
4836
4837 IF g1_debug_mode = 'Y' THEN
4838 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_par_progress_status_weight='||l_par_progress_status_weight, x_Log_Level=> 3);
4839 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_child_progress_status_weight='||l_child_progress_status_weight, x_Log_Level=> 3);
4840 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_progress_status_weight='||l_progress_status_weight, x_Log_Level=> 3);
4841 END IF;
4842
4843 OPEN cur_get_status(l_progress_status_weight, 'PROGRESS');
4844 FETCH cur_get_status INTO l_eff_rollup_progress_status;
4845 CLOSE cur_get_status;
4846
4847 IF l_eff_rollup_progress_status IS NULL THEN
4848 l_eff_rollup_progress_status := l_parent_progress_status;
4849 END IF;
4850 ELSIF l_parent_progress_status IS NULL AND l_child_progress_status IS NOT NULL THEN
4851 l_eff_rollup_progress_status := l_child_progress_status;
4852 ELSIF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NULL THEN
4853 l_eff_rollup_progress_status := l_parent_progress_status;
4854 ELSE
4855 l_eff_rollup_progress_status := null;
4856 END IF;
4857
4858 IF g1_debug_mode = 'Y' THEN
4859 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_eff_rollup_progress_status='||l_eff_rollup_progress_status, x_Log_Level=> 3);
4860 END IF;
4861
4862
4863 IF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4864 SELECT LEAST(l_sub_project_rec.ACTUAL_START_DATE, l_parent_task_rec.ACTUAL_START_DATE)
4865 INTO l_actual_start_date
4866 FROM DUAL;
4867 ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4868 l_actual_start_date := l_parent_task_rec.ACTUAL_START_DATE;
4869 ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NULL THEN
4870 l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4871 ELSE
4872 l_actual_start_date := null;
4873 END IF;
4874
4875 IF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4876 SELECT GREATEST(l_sub_project_rec.ACTUAL_FINISH_DATE, l_parent_task_rec.ACTUAL_FINISH_DATE)
4877 INTO l_actual_finish_date
4878 FROM DUAL;
4879 ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4880 l_actual_finish_date := l_parent_task_rec.ACTUAL_FINISH_DATE;
4881 ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NULL THEN
4882 l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4883 ELSE
4884 l_actual_finish_date := null;
4885 END IF;
4886
4887 IF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4888 SELECT LEAST(l_sub_project_rec.ESTIMATED_START_DATE, l_parent_task_rec.ESTIMATED_START_DATE)
4889 INTO l_estimated_start_date
4890 FROM DUAL;
4891 ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4892 l_estimated_start_date := l_parent_task_rec.ESTIMATED_START_DATE;
4893 ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NULL THEN
4894 l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4895 ELSE
4896 l_estimated_start_date := null;
4897 END IF;
4898
4899 IF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4900 SELECT GREATEST(l_sub_project_rec.ESTIMATED_FINISH_DATE, l_parent_task_rec.ESTIMATED_FINISH_DATE)
4901 INTO l_estimated_finish_date
4902 FROM DUAL;
4903 ELSIF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4904 l_estimated_finish_date := l_parent_task_rec.ESTIMATED_FINISH_DATE;
4905 ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NULL THEN
4906 l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4907 ELSE
4908 l_estimated_finish_date := null;
4909 END IF;
4910
4911 IF g1_debug_mode = 'Y' THEN
4912 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
4913 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
4914 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
4915 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
4916 END IF;
4917
4918 -- For Task Status Rollup, we can use PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS
4919 -- First we need to confirm that whether we are inserting/updating in PPC table
4920 END IF; --PA_PROGRESS_UTILS.get_system_task_status bug 4033869
4921 ELSE
4922 IF g1_debug_mode = 'Y' THEN
4923 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Insert I', x_Log_Level=> 3);
4924 END IF;
4925
4926 l_mode := 'I';
4927 l_bcwp := nvl((nvl(l_sub_project_rec.completed_percentage,l_sub_project_rec.eff_rollup_percent_comp)*l_pln_sub_project)/100,0); --bug 4033869
4928 l_eff_rollup_prcnt_comp := null;
4929 l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4930 l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4931 l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4932 l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4933 --task status can not rollup as we are not creating records in percent complete table
4934 --l_task_status :=
4935 l_eff_rollup_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4936 END IF;
4937
4938 IF g1_debug_mode = 'Y' THEN
4939 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.earned_value='||l_parent_task_rec.earned_value, x_Log_Level=> 3);
4940 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.earned_value='||l_sub_project_rec.earned_value, x_Log_Level=> 3);
4941 END IF;
4942 */
4943
4944
4945 /* Bug 4392189 : No need to call populate_pji_tab_for_plan for parnet here.
4946 The temp table will be having data up in the complete hierrachy of program
4947 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_c1rec.parent_project_id);
4948
4949 pa_progress_pub.populate_pji_tab_for_plan(
4950 p_init_msg_list => 'F',
4951 p_calling_module => l_calling_module,
4952 p_project_id => l_c1rec.parent_project_id,
4953 p_structure_version_id => l_c1rec.parent_structure_ver_id,
4954 p_baselined_str_ver_id => l_base_struct_ver_id,
4955 p_structure_type => 'WORKPLAN',
4956 x_return_status => x_return_status,
4957 x_msg_count => x_msg_count,
4958 x_msg_data => x_msg_data);
4959
4960 IF x_return_status <> 'S' THEN
4961 RAISE FND_API.G_EXC_ERROR;
4962 END IF;
4963 */
4964 /*
4965
4966 l_pln_parent_task := pa_progress_utils.Get_BAC_Value(p_project_id => l_c1rec.parent_project_id
4967 ,p_task_weight_method => l_base_prcnt_comp_drv_code
4968 ,p_proj_element_id => l_c1rec.parent_task_id
4969 ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4970 ,p_structure_type => 'WORKPLAN');
4971
4972
4973 --parent plan includes child plan. --bug 4033869
4974 l_bac := nvl(l_pln_parent_task,0);
4975
4976 IF g1_debug_mode = 'Y' THEN
4977 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4978 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bac='||l_bac, x_Log_Level=> 3);
4979 END IF;
4980
4981 -- Calculating rollup percent_complete.
4982 IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT') THEN
4983 IF (l_bac > 0) THEN
4984 l_eff_rollup_prcnt_comp := (l_bcwp/l_bac) * 100;
4985 ELSE
4986 l_eff_rollup_prcnt_comp := NULL;
4987 END IF;
4988 END IF;
4989
4990 IF g1_debug_mode = 'Y' THEN
4991 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_eff_rollup_prcnt_comp='||l_eff_rollup_prcnt_comp, x_Log_Level=> 3);
4992 END IF;
4993
4994
4995 BEGIN
4996 SELECT
4997 */
4998 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
4999 /*
5000 PERIOD_NAME
5001 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
5002 , ACT_PRJ_LABOR_BRDN_COST
5003 , ACT_PRJ_EQUIP_BRDN_COST
5004 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
5005 , ACT_POU_LABOR_BRDN_COST
5006 , ACT_POU_EQUIP_BRDN_COST
5007 , ACT_LABOR_HRS
5008 , ACT_EQUIP_HRS
5009 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
5010 , ETC_PRJ_LABOR_BRDN_COST
5011 , ETC_PRJ_EQUIP_BRDN_COST
5012 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
5013 , ETC_POU_LABOR_BRDN_COST
5014 , ETC_POU_EQUIP_BRDN_COST
5015 , ETC_LABOR_HRS
5016 , ETC_EQUIP_HRS
5017 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
5018 , ACT_PRJ_LABOR_RAW_COST
5019 , ACT_PRJ_EQUIP_RAW_COST
5020 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
5021 , ACT_POU_LABOR_RAW_COST
5022 , ACT_POU_EQUIP_RAW_COST
5023 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
5024 , ETC_PRJ_LABOR_RAW_COST
5025 , ETC_PRJ_EQUIP_RAW_COST
5026 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
5027 , ETC_POU_LABOR_RAW_COST
5028 , ETC_POU_EQUIP_RAW_COST
5029 , LABOR_HOURS
5030 , EQUIPMENT_HOURS
5031 , POU_LABOR_BRDN_COST
5032 , PRJ_LABOR_BRDN_COST
5033 , POU_EQUIP_BRDN_COST
5034 , PRJ_EQUIP_BRDN_COST
5035 , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
5036 , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
5037 , POU_LABOR_RAW_COST
5038 , PRJ_LABOR_RAW_COST
5039 , POU_EQUIP_RAW_COST
5040 , PRJ_EQUIP_RAW_COST
5041 , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
5042 , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
5043 INTO l_PERIOD_NAME
5044 , l_OTH_ACT_COST_TO_DATE_PC
5045 , l_PPL_ACT_COST_TO_DATE_PC
5046 , l_EQPMT_ACT_COST_TO_DATE_PC
5047 , l_OTH_ACT_COST_TO_DATE_FC
5048 , l_PPL_ACT_COST_TO_DATE_FC
5049 , l_EQPMT_ACT_COST_TO_DATE_FC
5050 , l_PPL_ACT_EFFORT_TO_DATE
5051 , l_EQPMT_ACT_EFFORT_TO_DATE
5052 , l_ETC_Cost_PC
5053 , l_PPL_ETC_COST_PC
5054 , l_EQPMT_ETC_COST_PC
5055 , l_ETC_Cost_FC
5056 , l_PPL_ETC_COST_FC
5057 , l_EQPMT_ETC_COST_FC
5058 , l_remaining_effort1
5059 , l_EQPMT_ETC_EFFORT
5060 , l_OTH_ACT_RAWCOST_TO_DATE_PC
5061 , l_PPL_ACT_RAWCOST_TO_DATE_PC
5062 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5063 , l_OTH_ACT_RAWCOST_TO_DATE_FC
5064 , l_PPL_ACT_RAWCOST_TO_DATE_FC
5065 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5066 , l_ETC_RAWCost_PC
5067 , l_PPL_ETC_RAWCOST_PC
5068 , l_EQPMT_ETC_RAWCOST_PC
5069 , l_ETC_RAWCost_FC
5070 , l_PPL_ETC_RAWCOST_FC
5071 , l_EQPMT_ETC_RAWCOST_FC
5072 , l_LABOR_HOURS
5073 , l_EQUIPMENT_HOURS
5074 , l_POU_LABOR_BRDN_COST
5075 , l_PRJ_LABOR_BRDN_COST
5076 , l_POU_EQUIP_BRDN_COST
5077 , l_PRJ_EQUIP_BRDN_COST
5078 , l_POU_OTH_BRDN_COST
5079 , l_PRJ_OTH_BRDN_COST
5080 , l_POU_LABOR_RAW_COST
5081 , l_PRJ_LABOR_RAW_COST
5082 , l_POU_EQUIP_RAW_COST
5083 , l_PRJ_EQUIP_RAW_COST
5084 , l_POU_OTH_RAW_COST
5085 , l_PRJ_OTH_RAW_COST
5086 FROM PJI_FM_XBS_ACCUM_TMP1
5087 WHERE project_id = l_c1rec.parent_project_id
5088 AND struct_version_id = l_c1rec.parent_structure_ver_id
5089 AND project_element_id = l_c1rec.parent_task_id
5090 AND plan_version_id > 0
5091 AND txn_currency_code is null
5092 AND calendar_type = 'A'
5093 AND res_list_member_id is null;
5094 EXCEPTION
5095 WHEN NO_DATA_FOUND THEN
5096 null;
5097 WHEN OTHERS THEN
5098 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
5099 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5100 p_error_text => SUBSTRB('Select from PJI_FM_XBS_ACCUM_TMP1 Failed: SQLERRM'||SQLERRM,1,120));
5101 RAISE FND_API.G_EXC_ERROR;
5102 END;
5103
5104
5105 IF g1_debug_mode = 'Y' THEN
5106 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC='||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
5107 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE='||l_PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
5108 END IF;
5109
5110
5111 -- Rollup the attributes from the structure progress record into parent task record
5112 IF l_mode = 'U' THEN
5113
5114 l_parent_as_of_date := l_parent_task_rec.AS_OF_DATE; --bug 4033869
5115
5116 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
5117 X_PROGRESS_ROLLUP_ID => l_parent_task_rec.PROGRESS_ROLLUP_ID
5118 ,X_PROJECT_ID => l_parent_task_rec.PROJECT_ID
5119 ,X_OBJECT_ID => l_parent_task_rec.OBJECT_ID
5120 ,X_OBJECT_TYPE => l_parent_task_rec.OBJECT_TYPE
5121 ,X_AS_OF_DATE => l_parent_task_rec.AS_OF_DATE
5122 ,X_OBJECT_VERSION_ID => l_parent_task_rec.OBJECT_VERSION_ID
5123 ,X_LAST_UPDATE_DATE => sysdate
5124 ,X_LAST_UPDATED_BY => l_user_id
5125 ,X_PROGRESS_STATUS_CODE => l_parent_task_rec.PROGRESS_STATUS_CODE
5126 ,X_LAST_UPDATE_LOGIN => l_login_id
5127 ,X_INCREMENTAL_WORK_QTY => l_parent_task_rec.INCREMENTAL_WORK_QUANTITY
5128 ,X_CUMULATIVE_WORK_QTY => l_parent_task_rec.CUMULATIVE_WORK_QUANTITY
5129 ,X_BASE_PERCENT_COMPLETE => l_parent_task_rec.BASE_PERCENT_COMPLETE
5130 ,X_EFF_ROLLUP_PERCENT_COMP => l_eff_rollup_prcnt_comp
5131 ,X_COMPLETED_PERCENTAGE => l_parent_task_rec.COMPLETED_PERCENTAGE
5132 ,X_ESTIMATED_START_DATE => l_estimated_start_date -- l_parent_task_rec.ESTIMATED_START_DATE
5133 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date -- l_parent_task_rec.ESTIMATED_FINISH_DATE
5134 ,X_ACTUAL_START_DATE => l_actual_start_date --l_parent_task_rec.ACTUAL_START_DATE
5135 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date -- l_parent_task_rec.ACTUAL_FINISH_DATE
5136 ,X_EST_REMAINING_EFFORT => l_remaining_effort1
5137 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_parent_task_rec.BASE_PERCENT_COMP_DERIV_CODE
5138 ,X_BASE_PROGRESS_STATUS_CODE => l_parent_task_rec.BASE_PROGRESS_STATUS_CODE
5139 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_eff_rollup_progress_status--l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE
5140 ,X_RECORD_VERSION_NUMBER => l_parent_task_rec.RECORD_VERSION_NUMBER
5141 ,X_percent_complete_id => l_parent_task_rec.percent_complete_id
5142 ,X_STRUCTURE_TYPE => l_parent_task_rec.STRUCTURE_TYPE
5143 ,X_PROJ_ELEMENT_ID => l_parent_task_rec.PROJ_ELEMENT_ID
5144 ,X_STRUCTURE_VERSION_ID => l_parent_task_rec.STRUCTURE_VERSION_ID
5145 ,X_PPL_ACT_EFFORT_TO_DATE => l_PPL_ACT_EFFORT_TO_DATE
5146 ,X_EQPMT_ACT_EFFORT_TO_DATE => l_EQPMT_ACT_EFFORT_TO_DATE
5147 ,X_EQPMT_ETC_EFFORT => l_EQPMT_ETC_EFFORT
5148 ,X_OTH_ACT_COST_TO_DATE_TC => l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5149 ,X_OTH_ACT_COST_TO_DATE_FC => l_OTH_ACT_COST_TO_DATE_FC
5150 ,X_OTH_ACT_COST_TO_DATE_PC => l_OTH_ACT_COST_TO_DATE_PC
5151 ,X_OTH_ETC_COST_TC => l_parent_task_rec.OTH_ETC_COST_TC
5152 ,X_OTH_ETC_COST_FC => l_ETC_Cost_FC
5153 ,X_OTH_ETC_COST_PC => l_ETC_Cost_PC
5154 ,X_PPL_ACT_COST_TO_DATE_TC => l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5155 ,X_PPL_ACT_COST_TO_DATE_FC => l_PPL_ACT_COST_TO_DATE_FC
5156 ,X_PPL_ACT_COST_TO_DATE_PC => l_PPL_ACT_COST_TO_DATE_PC
5157 ,X_PPL_ETC_COST_TC => l_parent_task_rec.PPL_ETC_COST_TC
5158 ,X_PPL_ETC_COST_FC => l_PPL_ETC_COST_FC
5159 ,X_PPL_ETC_COST_PC => l_PPL_ETC_COST_PC
5160 ,X_EQPMT_ACT_COST_TO_DATE_TC => l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5161 ,X_EQPMT_ACT_COST_TO_DATE_FC => l_EQPMT_ACT_COST_TO_DATE_FC
5162 ,X_EQPMT_ACT_COST_TO_DATE_PC => l_EQPMT_ACT_COST_TO_DATE_PC
5163 ,X_EQPMT_ETC_COST_TC => l_parent_task_rec.EQPMT_ETC_COST_TC
5164 ,X_EQPMT_ETC_COST_FC => l_EQPMT_ETC_COST_FC
5165 ,X_EQPMT_ETC_COST_PC => l_EQPMT_ETC_COST_PC
5166 ,X_EARNED_VALUE => l_bcwp
5167 ,X_TASK_WT_BASIS_CODE => l_parent_task_rec.TASK_WT_BASIS_CODE
5168 ,X_SUBPRJ_PPL_ACT_EFFORT => null
5169 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
5170 ,X_SUBPRJ_PPL_ETC_EFFORT => null
5171 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
5172 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
5173 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
5174 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
5175 ,X_SUBPRJ_PPL_ACT_COST_TC => null
5176 ,X_SUBPRJ_PPL_ACT_COST_FC => null
5177 ,X_SUBPRJ_PPL_ACT_COST_PC => null
5178 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
5179 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
5180 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
5181 ,X_SUBPRJ_OTH_ETC_COST_TC => null
5182 ,X_SUBPRJ_OTH_ETC_COST_FC => null
5183 ,X_SUBPRJ_OTH_ETC_COST_PC => null
5184 ,X_SUBPRJ_PPL_ETC_COST_TC => null
5185 ,X_SUBPRJ_PPL_ETC_COST_FC => null
5186 ,X_SUBPRJ_PPL_ETC_COST_PC => null
5187 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
5188 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
5189 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
5190 ,X_SUBPRJ_EARNED_VALUE => null
5191 ,X_CURRENT_FLAG => l_parent_task_rec.CURRENT_FLAG
5192 ,X_PROJFUNC_COST_RATE_TYPE => l_parent_task_rec.PROJFUNC_COST_RATE_TYPE
5193 ,X_PROJFUNC_COST_EXCHANGE_RATE => l_parent_task_rec.PROJFUNC_COST_EXCHANGE_RATE
5194 ,X_PROJFUNC_COST_RATE_DATE => l_parent_task_rec.PROJFUNC_COST_RATE_DATE
5195 ,X_PROJ_COST_RATE_TYPE => l_parent_task_rec.PROJ_COST_RATE_TYPE
5196 ,X_PROJ_COST_EXCHANGE_RATE => l_parent_task_rec.PROJ_COST_EXCHANGE_RATE
5197 ,X_PROJ_COST_RATE_DATE => l_parent_task_rec.PROJ_COST_RATE_DATE
5198 ,X_TXN_CURRENCY_CODE => l_parent_task_rec.TXN_CURRENCY_CODE
5199 ,X_PROG_PA_PERIOD_NAME => l_parent_task_rec.PROG_PA_PERIOD_NAME
5200 ,X_PROG_GL_PERIOD_NAME => l_parent_task_rec.PROG_GL_PERIOD_NAME
5201 ,X_OTH_QUANTITY_TO_DATE => l_parent_task_rec.oth_quantity_to_date
5202 ,X_OTH_ETC_QUANTITY => l_parent_task_rec.oth_etc_quantity
5203 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => l_parent_task_rec.OTH_ACT_RAWCOST_TO_DATE_TC
5204 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => l_OTH_ACT_RAWCOST_TO_DATE_FC
5205 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => l_OTH_ACT_RAWCOST_TO_DATE_PC
5206 ,X_OTH_ETC_RAWCOST_TC => l_parent_task_rec.OTH_ETC_RAWCOST_TC
5207 ,X_OTH_ETC_RAWCOST_FC => l_ETC_RAWCost_FC
5208 ,X_OTH_ETC_RAWCOST_PC => l_ETC_RAWCost_PC
5209 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => l_parent_task_rec.PPL_ACT_RAWCOST_TO_DATE_TC
5210 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => l_PPL_ACT_RAWCOST_TO_DATE_FC
5211 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => l_PPL_ACT_RAWCOST_TO_DATE_PC
5212 ,X_PPL_ETC_RAWCOST_TC => l_parent_task_rec.PPL_ETC_RAWCOST_TC
5213 ,X_PPL_ETC_RAWCOST_FC => l_PPL_ETC_RAWCOST_FC
5214 ,X_PPL_ETC_RAWCOST_PC => l_PPL_ETC_RAWCOST_PC
5215 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => l_parent_task_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC
5216 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5217 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5218 ,X_EQPMT_ETC_RAWCOST_TC => l_parent_task_rec.EQPMT_ETC_RAWCOST_TC
5219 ,X_EQPMT_ETC_RAWCOST_FC => l_EQPMT_ETC_RAWCOST_FC
5220 ,X_EQPMT_ETC_RAWCOST_PC => l_EQPMT_ETC_RAWCOST_PC
5221 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
5222 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
5223 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
5224 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
5225 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
5226 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
5227 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
5228 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
5229 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
5230 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
5231 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
5232 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
5233 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
5234 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
5235 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
5236 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
5237 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
5238 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
5239 );
5240
5241 -- FPM Dev CR 6
5242 IF Fnd_Msg_Pub.count_msg > 0 THEN
5243 RAISE FND_API.G_EXC_ERROR;
5244 END IF;
5245 ELSE -- IF l_mode = 'U' THEN
5246 BEGIN
5247 SELECT 'X'
5248 INTO l_dummy
5249 FROM pa_progress_rollup
5250 WHERE project_id = l_c1rec.parent_project_id
5251 AND object_id = l_c1rec.parent_task_id
5252 AND object_type = 'PA_TASKS'
5253 AND structure_type = 'WORKPLAN'
5254 AND structure_version_id is NULL
5255 AND trunc(as_of_date) > p_as_of_date
5256 AND current_flag = 'Y';
5257
5258 l_current_flag := 'N';
5259 EXCEPTION
5260 WHEN NO_DATA_FOUND THEN
5261 l_current_flag := 'Y';
5262
5263 UPDATE pa_progress_rollup
5264 SET current_flag = 'N'
5265 WHERE project_id = l_c1rec.parent_project_id
5266 AND object_id = l_c1rec.parent_task_id
5267 AND object_type = 'PA_TASKS'
5268 AND structure_type = 'WORKPLAN'
5269 AND structure_version_id is NULL
5270 AND current_flag = 'Y';
5271 END;
5272 --bug 4033869
5273 --derive as of date for parent task relative to p_as_of_date
5274 l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
5275 p_project_id => l_c1rec.parent_project_id
5276 ,p_task_id => l_c1rec.parent_task_id
5277 ,p_start_date => p_as_of_date);
5278 --End bug 4033869
5279 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5280 X_PROGRESS_ROLLUP_ID => l_progress_rollup_id
5281 ,X_PROJECT_ID => l_c1rec.parent_project_id
5282 ,X_OBJECT_ID => l_c1rec.parent_task_id
5283 ,X_OBJECT_TYPE => 'PA_TASKS'
5284 ,X_AS_OF_DATE => l_parent_as_of_date --bug 4033869
5285 ,X_OBJECT_VERSION_ID => l_c1rec.parent_task_version_id
5286 ,X_LAST_UPDATE_DATE => SYSDATE
5287 ,X_LAST_UPDATED_BY => l_user_id
5288 ,X_CREATION_DATE => SYSDATE
5289 ,X_CREATED_BY => l_user_id
5290 ,X_PROGRESS_STATUS_CODE => null
5291 ,X_LAST_UPDATE_LOGIN => l_login_id
5292 ,X_INCREMENTAL_WORK_QTY => null
5293 ,X_CUMULATIVE_WORK_QTY => null
5294 ,X_BASE_PERCENT_COMPLETE => null
5295 ,X_EFF_ROLLUP_PERCENT_COMP => l_eff_rollup_prcnt_comp
5296 ,X_COMPLETED_PERCENTAGE => null
5297 ,X_ESTIMATED_START_DATE => l_estimated_start_date
5298 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
5299 ,X_ACTUAL_START_DATE => l_actual_start_date
5300 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
5301 ,X_EST_REMAINING_EFFORT => l_remaining_effort1
5302 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
5303 ,X_BASE_PROGRESS_STATUS_CODE => null
5304 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_eff_rollup_progress_status
5305 ,x_percent_complete_id => null
5306 ,X_STRUCTURE_TYPE => 'WORKPLAN'
5307 ,X_PROJ_ELEMENT_ID => l_c1rec.parent_task_id
5308 ,X_STRUCTURE_VERSION_ID => null
5309 ,X_PPL_ACT_EFFORT_TO_DATE => l_PPL_ACT_EFFORT_TO_DATE
5310 ,X_EQPMT_ACT_EFFORT_TO_DATE => l_EQPMT_ACT_EFFORT_TO_DATE
5311 ,X_EQPMT_ETC_EFFORT => l_EQPMT_ETC_EFFORT
5312 ,X_OTH_ACT_COST_TO_DATE_TC => l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5313 ,X_OTH_ACT_COST_TO_DATE_FC => l_OTH_ACT_COST_TO_DATE_FC
5314 ,X_OTH_ACT_COST_TO_DATE_PC => l_OTH_ACT_COST_TO_DATE_PC
5315 ,X_OTH_ETC_COST_TC => l_parent_task_rec.OTH_ETC_COST_TC
5316 ,X_OTH_ETC_COST_FC => l_ETC_Cost_FC
5317 ,X_OTH_ETC_COST_PC => l_ETC_Cost_PC
5318 ,X_PPL_ACT_COST_TO_DATE_TC => l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5319 ,X_PPL_ACT_COST_TO_DATE_FC => l_PPL_ACT_COST_TO_DATE_FC
5320 ,X_PPL_ACT_COST_TO_DATE_PC => l_PPL_ACT_COST_TO_DATE_PC
5321 ,X_PPL_ETC_COST_TC => l_parent_task_rec.PPL_ETC_COST_TC
5322 ,X_PPL_ETC_COST_FC => l_PPL_ETC_COST_FC
5323 ,X_PPL_ETC_COST_PC => l_PPL_ETC_COST_PC
5324 ,X_EQPMT_ACT_COST_TO_DATE_TC => l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5325 ,X_EQPMT_ACT_COST_TO_DATE_FC => l_EQPMT_ACT_COST_TO_DATE_FC
5326 ,X_EQPMT_ACT_COST_TO_DATE_PC => l_EQPMT_ACT_COST_TO_DATE_PC
5327 ,X_EQPMT_ETC_COST_TC => l_parent_task_rec.EQPMT_ETC_COST_TC
5328 ,X_EQPMT_ETC_COST_FC => l_EQPMT_ETC_COST_FC
5329 ,X_EQPMT_ETC_COST_PC => l_EQPMT_ETC_COST_PC
5330 ,X_EARNED_VALUE => l_bcwp
5331 ,X_TASK_WT_BASIS_CODE => l_task_weight_basis_code
5332 ,X_SUBPRJ_PPL_ACT_EFFORT => null
5333 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
5334 ,X_SUBPRJ_PPL_ETC_EFFORT => null
5335 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
5336 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
5337 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
5338 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
5339 ,X_SUBPRJ_PPL_ACT_COST_TC => null
5340 ,X_SUBPRJ_PPL_ACT_COST_FC => null
5341 ,X_SUBPRJ_PPL_ACT_COST_PC => null
5342 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
5343 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
5344 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
5345 ,X_SUBPRJ_OTH_ETC_COST_TC => null
5346 ,X_SUBPRJ_OTH_ETC_COST_FC => null
5347 ,X_SUBPRJ_OTH_ETC_COST_PC => null
5348 ,X_SUBPRJ_PPL_ETC_COST_TC => null
5349 ,X_SUBPRJ_PPL_ETC_COST_FC => null
5350 ,X_SUBPRJ_PPL_ETC_COST_PC => null
5351 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
5352 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
5353 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
5354 ,X_SUBPRJ_EARNED_VALUE => null
5355 ,X_CURRENT_FLAG => l_current_flag
5356 ,X_PROJFUNC_COST_RATE_TYPE => l_sub_project_rec.PROJFUNC_COST_RATE_TYPE
5357 ,X_PROJFUNC_COST_EXCHANGE_RATE => l_sub_project_rec.PROJFUNC_COST_EXCHANGE_RATE
5358 ,X_PROJFUNC_COST_RATE_DATE => l_sub_project_rec.PROJFUNC_COST_RATE_DATE
5359 ,X_PROJ_COST_RATE_TYPE => l_sub_project_rec.PROJ_COST_RATE_TYPE
5360 ,X_PROJ_COST_EXCHANGE_RATE => l_sub_project_rec.PROJ_COST_EXCHANGE_RATE
5361 ,X_PROJ_COST_RATE_DATE => l_sub_project_rec.PROJ_COST_RATE_DATE
5362 ,X_TXN_CURRENCY_CODE => l_sub_project_rec.TXN_CURRENCY_CODE
5363 ,X_PROG_PA_PERIOD_NAME => l_sub_project_rec.PROG_PA_PERIOD_NAME
5364 ,X_PROG_GL_PERIOD_NAME => l_sub_project_rec.PROG_GL_PERIOD_NAME
5365 ,X_OTH_QUANTITY_TO_DATE => null
5366 ,X_OTH_ETC_QUANTITY => null
5367 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
5368 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => l_OTH_ACT_RAWCOST_TO_DATE_FC
5369 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => l_OTH_ACT_RAWCOST_TO_DATE_PC
5370 ,X_OTH_ETC_RAWCOST_TC => null
5371 ,X_OTH_ETC_RAWCOST_FC => l_ETC_RAWCost_FC
5372 ,X_OTH_ETC_RAWCOST_PC => l_ETC_RAWCost_PC
5373 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
5374 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => l_PPL_ACT_RAWCOST_TO_DATE_FC
5375 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => l_PPL_ACT_RAWCOST_TO_DATE_PC
5376 ,X_PPL_ETC_RAWCOST_TC => null
5377 ,X_PPL_ETC_RAWCOST_FC => l_PPL_ETC_RAWCOST_FC
5378 ,X_PPL_ETC_RAWCOST_PC => l_PPL_ETC_RAWCOST_PC
5379 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
5380 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5381 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5382 ,X_EQPMT_ETC_RAWCOST_TC => null
5383 ,X_EQPMT_ETC_RAWCOST_FC => l_EQPMT_ETC_RAWCOST_FC
5384 ,X_EQPMT_ETC_RAWCOST_PC => l_EQPMT_ETC_RAWCOST_PC
5385 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
5386 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
5387 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
5388 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
5389 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
5390 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
5391 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
5392 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
5393 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
5394 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
5395 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
5396 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
5397 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
5398 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
5399 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
5400 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
5401 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
5402 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
5403 );
5404 END IF;
5405 */
5406 -- Call rollup_progress_pvt api for the parent project.
5407
5408 IF g1_debug_mode = 'Y' THEN
5409 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Done with Insert/Update, Calling Rollup', x_Log_Level=> 3);
5410 END IF;
5411 -- Bug 4097710 : Changed the API from PUB to PVT.
5412 -- It is not good idea to call PUB APi from PVT
5413
5414 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
5415 p_init_msg_list => p_init_msg_list
5416 ,p_commit => p_commit
5417 ,p_calling_module => l_calling_module
5418 ,p_validate_only => p_validate_only
5419 ,p_project_id => l_c1rec.parent_project_id
5420 ,p_object_type => 'PA_TASKS'
5421 ,p_object_id => l_c1rec.parent_task_id
5422 ,p_object_version_id => l_c1rec.parent_task_version_id
5423 ,p_task_version_id => l_c1rec.parent_task_version_id
5424 ,p_structure_version_id => l_c1rec.parent_structure_ver_id
5425 ,p_structure_type => 'WORKPLAN'
5426 ,p_wp_rollup_method => l_task_weight_basis_code
5427 ,p_as_of_date => l_parent_as_of_date --bug 4033869
5428 ,p_lowest_level_task => 'Y' -- Bug 4392189
5429 ,x_return_status => l_return_status
5430 ,x_msg_count => l_msg_count
5431 ,x_msg_data => l_msg_data);
5432
5433 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5434 x_msg_data := l_msg_data;
5435 x_return_status := 'E';
5436 x_msg_count := l_msg_count;
5437 RAISE FND_API.G_EXC_ERROR;
5438 END IF;
5439
5440 -- 4392189 : Added call of ROLLUP_FUTURE_PROGRESS_PVT
5441
5442 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
5443 p_project_id => l_c1rec.parent_project_id
5444 ,P_OBJECT_TYPE => 'PA_TASKS'
5445 ,P_OBJECT_ID => l_c1rec.parent_task_id
5446 ,p_object_version_id => l_c1rec.parent_task_version_id
5447 ,p_as_of_date => l_parent_as_of_date
5448 ,p_lowest_level_task => 'Y'
5449 ,p_calling_module => l_calling_module
5450 ,p_structure_type => 'WORKPLAN'
5451 ,p_structure_version_id => l_c1rec.parent_structure_ver_id
5452 ,p_wp_rollup_method => l_task_weight_basis_code
5453 ,x_return_status => l_return_status
5454 ,x_msg_count => l_msg_count
5455 ,x_msg_data => l_msg_data
5456 );
5457
5458 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5459 x_msg_data := l_msg_data;
5460 x_return_status := 'E';
5461 x_msg_count := l_msg_count;
5462 RAISE FND_API.G_EXC_ERROR;
5463 END IF;
5464
5465 -- END IF; -- IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
5466 END IF; -- p_structure_type = 'WORKPLAN'
5467
5468 --bug 4033869
5469 IF g1_debug_mode = 'Y' THEN
5470 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Calling program_rollup_pvt in recursion', x_Log_Level=> 3);
5471 END IF;
5472 -- Bug 4097710 : Changed the API from PUB to PVT.
5473 -- It is not good idea to call PUB APi from PVT
5474 pa_progress_pvt.program_rollup_pvt(
5475 p_init_msg_list => 'F'
5476 ,p_calling_module => p_calling_module --4492493
5477 ,p_commit => 'F'
5478 ,p_validate_only => 'F'
5479 ,p_project_id => l_c1rec.parent_project_id
5480 ,p_as_of_date => p_as_of_date
5481 ,p_structure_type => p_structure_type
5482 ,p_structure_ver_id => l_c1rec.parent_structure_ver_id
5483 ,x_return_status => l_return_status
5484 ,x_msg_count => l_msg_count
5485 ,x_msg_data => l_msg_data);
5486 IF g1_debug_mode = 'Y' THEN
5487 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'After Calling program_rollup_pvt recursively l_return_status='||l_return_status, x_Log_Level=> 3);
5488 END IF;
5489
5490 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5491 x_msg_data := l_msg_data;
5492 x_return_status := 'E';
5493 x_msg_count := l_msg_count;
5494 RAISE FND_API.G_EXC_ERROR;
5495 END IF;
5496 --end bug 4033869
5497 end if; ---4492493
5498 END LOOP;
5499 CLOSE C1;
5500
5501 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5502 x_msg_data := l_msg_data;
5503 x_return_status := 'E';
5504 x_msg_count := l_msg_count;
5505 RAISE FND_API.G_EXC_ERROR;
5506 END IF;
5507
5508 IF (p_commit = FND_API.G_TRUE) THEN
5509 COMMIT;
5510 END IF;
5511
5512
5513 EXCEPTION
5514 when FND_API.G_EXC_ERROR then
5515 if p_commit = FND_API.G_TRUE then
5516 rollback to PROGRAM_ROLLUP_PVT2;
5517 end if;
5518 x_return_status := FND_API.G_RET_STS_ERROR;
5519 when FND_API.G_EXC_UNEXPECTED_ERROR then
5520 if p_commit = FND_API.G_TRUE then
5521 rollback to PROGRAM_ROLLUP_PVT2;
5522 end if;
5523 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5524 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
5525 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5526 p_error_text => SUBSTRB(SQLERRM,1,120));
5527 when OTHERS then
5528 if p_commit = FND_API.G_TRUE then
5529 rollback to PROGRAM_ROLLUP_PVT2;
5530 end if;
5531 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5532 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
5533 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5534 p_error_text => SUBSTRB(SQLERRM,1,120));
5535 raise;
5536 END program_rollup_pvt;
5537
5538 -- Bug 3614828 : Created this procedure for partial rollup.
5539 -- Start of comments
5540 -- API name : ASGN_DLV_TO_TASK_ROLLUP_PVT
5541 -- Type : Private
5542 -- Pre-reqs : None.
5543 -- Purpose : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
5544 -- : This does partial rollup of working progress records
5545 -- History : 15-JUNE-04 amksingh Rewritten For FPM Development Bug 3614828
5546 -- End of comments
5547
5548 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
5549 p_api_version IN NUMBER :=1.0
5550 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- Since it is a private API so false
5551 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5552 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5553 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5554 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5555 ,p_debug_mode IN VARCHAR2 :='N'
5556 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5557 ,p_project_id IN NUMBER
5558 ,p_task_id IN NUMBER
5559 ,p_task_version_id IN NUMBER
5560 ,p_as_of_date IN DATE
5561 ,p_structure_version_id IN NUMBER
5562 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
5563 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5564 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5565 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5566 )
5567 IS
5568
5569 l_api_name CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT' ;
5570 l_api_version CONSTANT NUMBER := 1.0 ;
5571 l_return_status VARCHAR2(1) ;
5572 l_msg_count NUMBER ;
5573 l_msg_data VARCHAR2(250) ;
5574 l_data VARCHAR2(250) ;
5575 l_msg_index_out NUMBER ;
5576 l_error_msg_code VARCHAR2(250) ;
5577 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
5578 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
5579 l_lowest_task VARCHAR2(1) ;
5580 l_published_structure VARCHAR2(1) ;
5581 l_task_version_id NUMBER ;
5582 l_rollup_table1 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE ;
5583 l_index NUMBER := 0 ;
5584 l_parent_count NUMBER := 0 ;
5585 l_process_number NUMBER ;
5586 j NUMBER ;
5587 l_wbs_level NUMBER ;
5588 l_action_allowed VARCHAR2(1) ;
5589 l_sharing_Enabled VARCHAR2(1) ;
5590 L_TASK_DERIVATION_CODE pa_proj_elements.base_percent_comp_deriv_code%TYPE ;
5591 l_split_workplan VARCHAR2(1) ;
5592 l_structure_version_id NUMBER ;
5593 g1_debug_mode VARCHAR2(1) ;
5594 l_Rollup_Method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
5595
5596
5597 --This cursor selects the given task.
5598 CURSOR cur_tasks( c_task_ver_id NUMBER )
5599 IS
5600 SELECT obj.object_id_from1
5601 , obj.object_type_from parent_object_type
5602 , ppev.wbs_level-1 parent_wbs_level
5603 , ppev.element_version_id object_id_to1
5604 , ppev.object_type object_type
5605 , ppev.wbs_level wbs_level
5606 , obj.weighting_percentage
5607 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5608 , ppr.completed_percentage override_percent_complete
5609 , ppr.base_percent_complete
5610 , ppr.actual_start_date
5611 , ppr.actual_finish_date
5612 , ppr.estimated_start_date
5613 , ppr.estimated_finish_date
5614 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5615 , pps2.project_status_weight override_weight2 ---override progress status code
5616 , pps3.project_status_weight base_weight3 --base prog status
5617 , ppr.ESTIMATED_REMAINING_EFFORT
5618 , to_number( null ) task_weight4 --task status
5619 , to_char(null) status_code
5620 , ppev.proj_element_id
5621 , ppr.STRUCTURE_TYPE
5622 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5623 , ppr.PPL_ACT_EFFORT_TO_DATE
5624 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5625 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5626 , ppr.EQPMT_ETC_EFFORT
5627 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5628 , ppr.OTH_ACT_COST_TO_DATE_TC
5629 , ppr.OTH_ACT_COST_TO_DATE_PC
5630 , ppr.OTH_ACT_COST_TO_DATE_FC
5631 , ppr.OTH_ETC_COST_TC
5632 , ppr.OTH_ETC_COST_PC
5633 , ppr.OTH_ETC_COST_FC
5634 , ppr.PPL_ACT_COST_TO_DATE_TC
5635 , ppr.PPL_ACT_COST_TO_DATE_PC
5636 , ppr.PPL_ACT_COST_TO_DATE_FC
5637 , ppr.PPL_ETC_COST_TC
5638 , ppr.PPL_ETC_COST_PC
5639 , ppr.PPL_ETC_COST_FC
5640 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5641 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5642 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5643 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
5644 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
5645 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
5646 , ppr.EQPMT_ETC_COST_TC
5647 , ppr.EQPMT_ETC_COST_PC
5648 , ppr.EQPMT_ETC_COST_FC
5649 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5650 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5651 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5652 --Bug 3614828 Begin
5653 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5654 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5655 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5656 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5657 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5658 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5659 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5660 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5661 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5662 , ppr.OTH_ETC_RAWCost_TC
5663 , ppr.OTH_ETC_RAWCost_PC
5664 , ppr.OTH_ETC_RAWCost_FC
5665 , ppr.PPL_ETC_RAWCOST_TC
5666 , ppr.PPL_ETC_RAWCOST_PC
5667 , ppr.PPL_ETC_RAWCOST_FC
5668 , ppr.EQPMT_ETC_RAWCOST_TC
5669 , ppr.EQPMT_ETC_RAWCOST_PC
5670 , ppr.EQPMT_ETC_RAWCOST_FC
5671 --Bug 3614828 End
5672 , ppr.SUBPRJ_PPL_ACT_EFFORT
5673 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5674 , ppr.SUBPRJ_PPL_ETC_EFFORT
5675 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5676 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
5677 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
5678 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
5679 , ppr.SUBPRJ_PPL_ACT_COST_TC
5680 , ppr.SUBPRJ_PPL_ACT_COST_FC
5681 , ppr.SUBPRJ_PPL_ACT_COST_PC
5682 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5683 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5684 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5685 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5686 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5687 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5688 , ppr.SUBPRJ_OTH_ETC_COST_TC
5689 , ppr.SUBPRJ_OTH_ETC_COST_FC
5690 , ppr.SUBPRJ_OTH_ETC_COST_PC
5691 , ppr.SUBPRJ_PPL_ETC_COST_TC
5692 , ppr.SUBPRJ_PPL_ETC_COST_FC
5693 , ppr.SUBPRJ_PPL_ETC_COST_PC
5694 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5695 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
5696 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
5697 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
5698 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
5699 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
5700 , ppr.SUBPRJ_EARNED_VALUE
5701 , ppr.CURRENT_FLAG
5702 , ppr.PROJFUNC_COST_RATE_TYPE
5703 , ppr.PROJFUNC_COST_EXCHANGE_RATE
5704 , ppr.PROJFUNC_COST_RATE_DATE
5705 , ppr.PROJ_COST_RATE_TYPE
5706 , ppr.PROJ_COST_EXCHANGE_RATE
5707 , ppr.PROJ_COST_RATE_DATE
5708 , ppr.TXN_CURRENCY_CODE
5709 , ppr.PROG_PA_PERIOD_NAME
5710 , ppr.PROG_GL_PERIOD_NAME
5711 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN') BAC_value
5712 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
5713 , null earned_value
5714 , ppr.Oth_quantity_to_date
5715 , ppr.Oth_etc_quantity
5716 -- 4533112 : Added base_progress_status_code
5717 , decode(ppr.base_progress_status_code, 'Y' , 'Y', 'N') base_progress_status_code
5718 FROM pa_proj_element_versions ppev,
5719 pa_object_relationships obj,
5720 pa_progress_rollup ppr,
5721 pa_project_statuses pps1,
5722 pa_project_statuses pps2,
5723 pa_project_statuses pps3,
5724 pa_proj_elements ppe -- 4392189
5725 WHERE ppev.element_version_id = c_task_ver_id
5726 AND ppev.element_version_id = obj.object_id_to1
5727 AND obj.relationship_type = 'S'
5728 AND ppev.object_type = 'PA_TASKS'
5729 AND ppev.proj_element_id = ppe.proj_element_id -- 4392189
5730 AND ppe.link_task_flag <> 'Y' -- 4392189
5731 AND ppr.project_id = ppev.project_id
5732 AND ppr.object_id = ppev.proj_element_id
5733 AND ppr.proj_element_id = ppev.proj_element_id -- Bug 3764224
5734 -- AND ppr.as_of_date = trunc(p_as_of_date)
5735 -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
5736 -- It is to select only the rollup record till passed as of date
5737 AND ppr.as_of_date = (SELECT max(as_of_date)
5738 FROM pa_progress_rollup
5739 WHERE project_id = p_project_id
5740 AND object_id = ppev.proj_element_id
5741 AND proj_element_id = ppev.proj_element_id
5742 AND object_type = 'PA_TASKS'
5743 AND structure_type = 'WORKPLAN'
5744 AND structure_version_id is null
5745 AND as_of_date <= p_as_of_date
5746 )
5747 AND (ppr.current_flag = 'W'
5748 OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
5749 AND NOT EXISTS (select 1
5750 from pa_progress_rollup ppc1
5751 where ppc1.project_id = p_project_id
5752 and ppc1.object_id = ppev.proj_element_id
5753 and ppc1.proj_element_id = ppev.proj_element_id
5754 and ppc1.object_Type = 'PA_TASKS'
5755 and ppc1.structure_type = 'WORKPLAN'
5756 and ppc1.as_of_date <= p_as_of_date
5757 and ppc1.structure_version_id is null
5758 and ppc1.current_flag = 'W')))
5759 -- AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5760 -- ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */)
5761 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
5762 AND ppr.progress_status_code = pps2.project_status_code(+)
5763 AND ppr.base_progress_status_code = pps3.project_status_code(+)
5764 AND ppr.structure_type = 'WORKPLAN'
5765 AND ppr.structure_version_id is null
5766 -- AND ppr.current_flag = 'W' --bug 3879461
5767 UNION ALL
5768 SELECT to_number(null) object_id_from1
5769 , ppev.object_type parent_object_type
5770 , wbs_level parent_wbs_level
5771 , element_version_id object_id_to1
5772 , ppev.object_type object_type
5773 , wbs_level wbs_level
5774 , to_number( null ) weighting_percentage
5775 , to_number(null) rollup_completed_percentage
5776 , to_number(null) override_percent_complete
5777 , to_number(null) base_percent_complete
5778 , to_date(null) actual_start_date
5779 , to_date(null) actual_finish_date
5780 , to_date(null) estimated_start_date
5781 , to_date(null) estimated_finish_date
5782 , to_number(null) rollup_weight1 ---rollup progress status code
5783 , to_number(null) override_weight2 ---override progress status code
5784 , to_number(null) base_weight3 --base prog status
5785 , to_number(null) ESTIMATED_REMAINING_EFFORT
5786 , to_number( null ) task_weight4 --task status
5787 , to_char(null) status_code
5788 , ppev.proj_element_id
5789 , to_char(null) STRUCTURE_TYPE
5790 , to_number(null) rollup_proj_element_id
5791 , to_number(null) PPL_ACT_EFFORT_TO_DATE
5792 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
5793 , to_number(null) total_act_effort_to_date
5794 , to_number(null) EQPMT_ETC_EFFORT
5795 , to_number(null) total_etc_effort
5796 , to_number(null) OTH_ACT_COST_TO_DATE_TC
5797 , to_number(null) OTH_ACT_COST_TO_DATE_PC
5798 , to_number(null) OTH_ACT_COST_TO_DATE_FC
5799 , to_number(null) OTH_ETC_COST_TC
5800 , to_number(null) OTH_ETC_COST_PC
5801 , to_number(null) OTH_ETC_COST_FC
5802 , to_number(null) PPL_ACT_COST_TO_DATE_TC
5803 , to_number(null) PPL_ACT_COST_TO_DATE_PC
5804 , to_number(null) PPL_ACT_COST_TO_DATE_FC
5805 , to_number(null) PPL_ETC_COST_TC
5806 , to_number(null) PPL_ETC_COST_PC
5807 , to_number(null) PPL_ETC_COST_FC
5808 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
5809 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
5810 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
5811 , to_number(null) total_act_cost_to_date_tc
5812 , to_number(null) total_act_cost_to_date_pc
5813 , to_number(null) total_act_cost_to_date_fc
5814 , to_number(null) EQPMT_ETC_COST_TC
5815 , to_number(null) EQPMT_ETC_COST_PC
5816 , to_number(null) EQPMT_ETC_COST_FC
5817 , to_number(null) total_etc_cost_tc
5818 , to_number(null) total_etc_cost_pc
5819 , to_number(null) total_etc_cost_fc
5820 --Bug 3614828 Begin
5821 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
5822 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
5823 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
5824 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
5825 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
5826 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
5827 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
5828 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
5829 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
5830 , to_number(null) OTH_ETC_RAWCost_TC
5831 , to_number(null) OTH_ETC_RAWCost_PC
5832 , to_number(null) OTH_ETC_RAWCost_FC
5833 , to_number(null) PPL_ETC_RAWCOST_TC
5834 , to_number(null) PPL_ETC_RAWCOST_PC
5835 , to_number(null) PPL_ETC_RAWCOST_FC
5836 , to_number(null) EQPMT_ETC_RAWCOST_TC
5837 , to_number(null) EQPMT_ETC_RAWCOST_PC
5838 , to_number(null) EQPMT_ETC_RAWCOST_FC
5839 --Bug 3614828 End
5840 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
5841 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
5842 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
5843 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
5844 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
5845 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
5846 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
5847 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
5848 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
5849 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
5850 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
5851 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
5852 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
5853 , to_number(null) total_subproj_act_cost_tc
5854 , to_number(null) total_subproj_act_cost_pc
5855 , to_number(null) total_subproj_act_cost_fc
5856 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
5857 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
5858 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
5859 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
5860 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
5861 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
5862 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
5863 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
5864 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
5865 , to_number(null) total_subproj_etc_cost_tc
5866 , to_number(null) total_subproj_etc_cost_pc
5867 , to_number(null) total_subproj_etc_cost_fc
5868 , to_number(null) SUBPRJ_EARNED_VALUE
5869 , to_char(null) CURRENT_FLAG
5870 , to_char(null) PROJFUNC_COST_RATE_TYPE
5871 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
5872 , to_date(null) PROJFUNC_COST_RATE_DATE
5873 , to_char(null) PROJ_COST_RATE_TYPE
5874 , to_number(null) PROJ_COST_EXCHANGE_RATE
5875 , to_date(null) PROJ_COST_RATE_DATE
5876 , to_char(null) TXN_CURRENCY_CODE
5877 , to_char(null) PROG_PA_PERIOD_NAME
5878 , to_char(null) PROG_GL_PERIOD_NAME
5879 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN') BAC_value
5880 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
5881 , null earned_value
5882 , to_number(null) Oth_quantity_to_date
5883 , to_number(null) Oth_etc_quantity
5884 -- 4533112 : Added base_progress_status_code
5885 , 'N' base_progress_status_code
5886 FROM pa_proj_element_versions ppev
5887 WHERE ppev.element_version_id = c_task_ver_id
5888 AND ppev.object_type = 'PA_TASKS'
5889 -- Bug 3879461 Begin
5890 AND NOT EXISTS (SELECT 1
5891 FROM pa_progress_rollup
5892 WHERE project_id = p_project_id
5893 AND object_id = ppev.proj_element_id
5894 AND proj_element_id = ppev.proj_element_id
5895 AND object_type = 'PA_TASKS'
5896 AND structure_type = 'WORKPLAN'
5897 AND structure_version_id is null
5898 AND as_of_date <= p_as_of_date
5899 )
5900 -- AND pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5901 -- ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */) IS NULL
5902 -- Bug 3879461 End
5903 -- Begin fix for Bug # 4032987.
5904 -- This query returns the progress of immediate sub-tasks of the input task.
5905 UNION ALL
5906 SELECT obj.object_id_from1
5907 , obj.object_type_from parent_object_type
5908 , ppev1.wbs_level-1 parent_wbs_level
5909 , ppev2.element_version_id object_id_to1
5910 , ppev2.object_type object_type
5911 , ppev2.wbs_level wbs_level
5912 , obj.weighting_percentage
5913 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5914 , ppr.completed_percentage override_percent_complete
5915 , ppr.base_percent_complete
5916 , ppr.actual_start_date
5917 , ppr.actual_finish_date
5918 , ppr.estimated_start_date
5919 , ppr.estimated_finish_date
5920 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5921 , pps2.project_status_weight override_weight2 ---override progress status code
5922 , pps3.project_status_weight base_weight3 --base prog status
5923 , ppr.ESTIMATED_REMAINING_EFFORT
5924 , to_number( null ) task_weight4 --task status
5925 , to_char(null) status_code
5926 , ppev2.proj_element_id
5927 , ppr.STRUCTURE_TYPE
5928 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5929 , ppr.PPL_ACT_EFFORT_TO_DATE
5930 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5931 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5932 , ppr.EQPMT_ETC_EFFORT
5933 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5934 , ppr.OTH_ACT_COST_TO_DATE_TC
5935 , ppr.OTH_ACT_COST_TO_DATE_PC
5936 , ppr.OTH_ACT_COST_TO_DATE_FC
5937 , ppr.OTH_ETC_COST_TC
5938 , ppr.OTH_ETC_COST_PC
5939 , ppr.OTH_ETC_COST_FC
5940 , ppr.PPL_ACT_COST_TO_DATE_TC
5941 , ppr.PPL_ACT_COST_TO_DATE_PC
5942 , ppr.PPL_ACT_COST_TO_DATE_FC
5943 , ppr.PPL_ETC_COST_TC
5944 , ppr.PPL_ETC_COST_PC
5945 , ppr.PPL_ETC_COST_FC
5946 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5947 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5948 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5949 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
5950 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
5951 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
5952 , ppr.EQPMT_ETC_COST_TC
5953 , ppr.EQPMT_ETC_COST_PC
5954 , ppr.EQPMT_ETC_COST_FC
5955 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5956 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5957 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5958 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5959 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5960 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5961 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5962 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5963 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5964 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5965 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5966 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5967 , ppr.OTH_ETC_RAWCost_TC
5968 , ppr.OTH_ETC_RAWCost_PC
5969 , ppr.OTH_ETC_RAWCost_FC
5970 , ppr.PPL_ETC_RAWCOST_TC
5971 , ppr.PPL_ETC_RAWCOST_PC
5972 , ppr.PPL_ETC_RAWCOST_FC
5973 , ppr.EQPMT_ETC_RAWCOST_TC
5974 , ppr.EQPMT_ETC_RAWCOST_PC
5975 , ppr.EQPMT_ETC_RAWCOST_FC
5976 , ppr.SUBPRJ_PPL_ACT_EFFORT
5977 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5978 , ppr.SUBPRJ_PPL_ETC_EFFORT
5979 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5980 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
5981 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
5982 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
5983 , ppr.SUBPRJ_PPL_ACT_COST_TC
5984 , ppr.SUBPRJ_PPL_ACT_COST_FC
5985 , ppr.SUBPRJ_PPL_ACT_COST_PC
5986 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5987 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5988 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5989 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5990 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5991 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5992 , ppr.SUBPRJ_OTH_ETC_COST_TC
5993 , ppr.SUBPRJ_OTH_ETC_COST_FC
5994 , ppr.SUBPRJ_OTH_ETC_COST_PC
5995 , ppr.SUBPRJ_PPL_ETC_COST_TC
5996 , ppr.SUBPRJ_PPL_ETC_COST_FC
5997 , ppr.SUBPRJ_PPL_ETC_COST_PC
5998 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5999 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
6000 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
6001 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
6002 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
6003 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
6004 , ppr.SUBPRJ_EARNED_VALUE
6005 , ppr.CURRENT_FLAG
6006 , ppr.PROJFUNC_COST_RATE_TYPE
6007 , ppr.PROJFUNC_COST_EXCHANGE_RATE
6008 , ppr.PROJFUNC_COST_RATE_DATE
6009 , ppr.PROJ_COST_RATE_TYPE
6010 , ppr.PROJ_COST_EXCHANGE_RATE
6011 , ppr.PROJ_COST_RATE_DATE
6012 , ppr.TXN_CURRENCY_CODE
6013 , ppr.PROG_PA_PERIOD_NAME
6014 , ppr.PROG_GL_PERIOD_NAME
6015 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN') BAC_value
6016 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
6017 , null earned_value
6018 , ppr.Oth_quantity_to_date
6019 , ppr.Oth_etc_quantity
6020 -- 4533112 : Added base_progress_status_code
6021 , decode(ppr.base_progress_status_code,'Y','Y','N') base_progress_status_code
6022 FROM pa_proj_element_versions ppev1,
6023 pa_proj_element_versions ppev2,
6024 pa_object_relationships obj,
6025 pa_progress_rollup ppr,
6026 pa_project_statuses pps1,
6027 pa_project_statuses pps2,
6028 pa_project_statuses pps3,
6029 pa_proj_elements ppe -- 4392189
6030 WHERE obj.object_id_from1 = c_task_ver_id
6031 AND obj.object_id_from1 = ppev1.element_version_id
6032 AND obj.object_id_to1 = ppev2.element_version_id
6033 AND obj.relationship_type = 'S'
6034 AND ppev1.object_type = 'PA_TASKS'
6035 AND ppev2.object_type = 'PA_TASKS'
6036 AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
6037 AND ppe.link_task_flag <> 'Y' -- 4392189
6038 AND ppr.project_id = ppev2.project_id
6039 AND ppr.object_id = ppev2.proj_element_id
6040 AND ppr.proj_element_id = ppev2.proj_element_id
6041 AND ppr.as_of_date = (SELECT max(as_of_date)
6042 FROM pa_progress_rollup
6043 WHERE project_id = p_project_id
6044 AND object_id = ppev2.proj_element_id
6045 AND proj_element_id = ppev2.proj_element_id
6046 AND object_type = 'PA_TASKS'
6047 AND structure_type = 'WORKPLAN'
6048 AND structure_version_id is null
6049 AND as_of_date <= p_as_of_date
6050 )
6051 AND (ppr.current_flag = 'W'
6052 OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
6053 AND NOT EXISTS (select 1
6054 from pa_progress_rollup ppc1
6055 where ppc1.project_id = p_project_id
6056 and ppc1.object_id = ppev2.proj_element_id
6057 and ppc1.proj_element_id = ppev2.proj_element_id
6058 and ppc1.object_Type = 'PA_TASKS'
6059 and ppc1.structure_type = 'WORKPLAN'
6060 and ppc1.as_of_date <= p_as_of_date
6061 and ppc1.structure_version_id is null
6062 and ppc1.current_flag = 'W')))
6063 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
6064 AND ppr.progress_status_code = pps2.project_status_code(+)
6065 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6066 AND ppr.structure_type = 'WORKPLAN'
6067 AND ppr.structure_version_id is null
6068 -- This query returns etc value = planned value when ther is no progress for the immediate sub-tasks.
6069 UNION ALL
6070 SELECT
6071 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
6072 obj.object_id_from1 object_id_from1
6073 , ppev1.object_type parent_object_type
6074 , ppev1.wbs_level-1 parent_wbs_level
6075 , ppev2.element_version_id object_id_to1
6076 , ppev2.object_type object_type
6077 , ppev2.wbs_level wbs_level
6078 --, to_number( null ) weighting_percentage --bug 4191181
6079 , obj.weighting_percentage weighting_percentage
6080 , to_number(null) rollup_completed_percentage
6081 , to_number(null) override_percent_complete
6082 , to_number(null) base_percent_complete
6083 , to_date(null) actual_start_date
6084 , to_date(null) actual_finish_date
6085 , to_date(null) estimated_start_date
6086 , to_date(null) estimated_finish_date
6087 , to_number(null) rollup_weight1 ---rollup progress status code
6088 , to_number(null) override_weight2 ---override progress status code
6089 , to_number(null) base_weight3 --base prog status
6090 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) ESTIMATED_REMAINING_EFFORT
6091 , to_number( null ) task_weight4 --task status
6092 , to_char(null) status_code
6093 , ppev2.proj_element_id
6094 , to_char(null) STRUCTURE_TYPE
6095 , to_number(null) rollup_proj_element_id
6096 , to_number(null) PPL_ACT_EFFORT_TO_DATE
6097 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
6098 , to_number(null) total_act_effort_to_date
6099 , pfxat.equipment_hours EQPMT_ETC_EFFORT
6100 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) total_etc_effort
6101 , to_number(null) OTH_ACT_COST_TO_DATE_TC
6102 , to_number(null) OTH_ACT_COST_TO_DATE_PC
6103 , to_number(null) OTH_ACT_COST_TO_DATE_FC
6104 , (nvl(pfxat.txn_brdn_cost,0) - (nvl(pfxat.txn_labor_brdn_cost,0) + nvl(pfxat.txn_equip_brdn_cost,0))) OTH_ETC_COST_TC
6105 , (nvl(pfxat.prj_brdn_cost,0) - (nvl(pfxat.prj_labor_brdn_cost,0) + nvl(pfxat.prj_equip_brdn_cost,0))) OTH_ETC_COST_PC
6106 , (nvl(pfxat.pou_brdn_cost,0) - (nvl(pfxat.pou_labor_brdn_cost,0) + nvl(pfxat.pou_equip_brdn_cost,0))) OTH_ETC_COST_FC
6107 , to_number(null) PPL_ACT_COST_TO_DATE_TC
6108 , to_number(null) PPL_ACT_COST_TO_DATE_PC
6109 , to_number(null) PPL_ACT_COST_TO_DATE_FC
6110 , pfxat.txn_labor_brdn_cost PPL_ETC_COST_TC
6111 , pfxat.prj_labor_brdn_cost PPL_ETC_COST_PC
6112 , pfxat.pou_labor_brdn_cost PPL_ETC_COST_FC
6113 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
6114 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
6115 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
6116 , to_number(null) total_act_cost_to_date_tc
6117 , to_number(null) total_act_cost_to_date_pc
6118 , to_number(null) total_act_cost_to_date_fc
6119 , pfxat.txn_equip_brdn_cost EQPMT_ETC_COST_TC
6120 , pfxat.prj_equip_brdn_cost EQPMT_ETC_COST_PC
6121 , pfxat.pou_equip_brdn_cost EQPMT_ETC_COST_FC
6122 , pfxat.txn_brdn_cost total_etc_cost_tc
6123 , pfxat.prj_brdn_cost total_etc_cost_pc
6124 , pfxat.pou_brdn_cost total_etc_cost_fc
6125 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
6126 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
6127 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
6128 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
6129 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
6130 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
6131 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
6132 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
6133 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
6134 , (nvl(pfxat.txn_raw_cost,0) - (nvl(pfxat.txn_labor_raw_cost,0) + nvl(pfxat.txn_equip_raw_cost,0))) OTH_ETC_RAWCost_TC
6135 , (nvl(pfxat.prj_raw_cost,0) - (nvl(pfxat.prj_labor_raw_cost,0) + nvl(pfxat.prj_equip_raw_cost,0))) OTH_ETC_RAWCost_PC
6136 , (nvl(pfxat.pou_raw_cost,0) - (nvl(pfxat.pou_labor_raw_cost,0) + nvl(pfxat.pou_equip_raw_cost,0))) OTH_ETC_RAWCost_FC
6137 , pfxat.txn_labor_raw_cost PPL_ETC_RAWCOST_TC
6138 , pfxat.prj_labor_raw_cost PPL_ETC_RAWCOST_PC
6139 , pfxat.pou_labor_raw_cost PPL_ETC_RAWCOST_FC
6140 , pfxat.txn_equip_raw_cost EQPMT_ETC_RAWCOST_TC
6141 , pfxat.prj_equip_raw_cost EQPMT_ETC_RAWCOST_PC
6142 , pfxat.pou_equip_raw_cost EQPMT_ETC_RAWCOST_FC
6143 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
6144 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
6145 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
6146 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
6147 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
6148 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
6149 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
6150 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
6151 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
6152 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
6153 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
6154 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
6155 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
6156 , to_number(null) total_subproj_act_cost_tc
6157 , to_number(null) total_subproj_act_cost_pc
6158 , to_number(null) total_subproj_act_cost_fc
6159 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
6160 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
6161 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
6162 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
6163 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
6164 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
6165 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
6166 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
6167 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
6168 , to_number(null) total_subproj_etc_cost_tc
6169 , to_number(null) total_subproj_etc_cost_pc
6170 , to_number(null) total_subproj_etc_cost_fc
6171 , to_number(null) SUBPRJ_EARNED_VALUE
6172 , to_char(null) CURRENT_FLAG
6173 , to_char(null) PROJFUNC_COST_RATE_TYPE
6174 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
6175 , to_date(null) PROJFUNC_COST_RATE_DATE
6176 , to_char(null) PROJ_COST_RATE_TYPE
6177 , to_number(null) PROJ_COST_EXCHANGE_RATE
6178 , to_date(null) PROJ_COST_RATE_DATE
6179 , to_char(null) TXN_CURRENCY_CODE
6180 , to_char(null) PROG_PA_PERIOD_NAME
6181 , to_char(null) PROG_GL_PERIOD_NAME
6182 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN') BAC_value
6183 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
6184 , null earned_value
6185 , to_number(null) Oth_quantity_to_date
6186 , to_number(null) Oth_etc_quantity
6187 -- 4533112 : Added base_progress_status_code
6188 , 'N' base_progress_status_code
6189 FROM pa_proj_element_versions ppev1,
6190 pa_proj_element_versions ppev2,
6191 pa_object_relationships obj,
6192 pji_fm_xbs_accum_tmp1 pfxat,
6193 pa_proj_elements ppe -- 4392189
6194 WHERE obj.object_id_from1 = c_task_ver_id
6195 AND obj.object_id_from1 = ppev1.element_version_id
6196 AND obj.object_id_to1 = ppev2.element_version_id
6197 AND obj.relationship_type = 'S'
6198 AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
6199 AND ppe.link_task_flag <> 'Y' -- 4392189
6200 AND ppev1.object_type = 'PA_TASKS'
6201 AND ppev2.object_type = 'PA_TASKS'
6202 AND pfxat.project_id(+) = ppev2.project_id
6203 AND pfxat.struct_version_id(+) = ppev2.parent_structure_version_id
6204 AND pfxat.project_element_id(+) = ppev2.proj_element_id
6205 AND pfxat.calendar_type(+) = 'A'
6206 AND pfxat.plan_version_id(+) > 0
6207 AND pfxat.txn_currency_code(+) is null
6208 AND NOT EXISTS (SELECT 1
6209 FROM pa_progress_rollup
6210 WHERE project_id = p_project_id
6211 AND object_id = ppev2.proj_element_id
6212 AND proj_element_id = ppev2.proj_element_id
6213 AND object_type = 'PA_TASKS'
6214 AND structure_type = 'WORKPLAN'
6215 AND structure_version_id is null
6216 AND as_of_date <= p_as_of_date
6217 )
6218 -- End fix for Bug # 4032987.
6219 ;
6220
6221 --This cursor selects the task assignments of a given task.
6222 --sql id:14905993 bug:4871809
6223 CURSOR cur_assgn( c_task_id NUMBER, c_task_ver_id NUMBER, c_task_per_comp_deriv_method VARCHAR2 )
6224 IS
6225 SELECT asgn.task_version_id
6226 , 'PA_TASKS' parent_object_type
6227 , asgn.resource_assignment_id object_id_to1
6228 , asgn.task_version_id object_id_from1
6229 , 'PA_ASSIGNMENTS' object_type
6230 , asgn.resource_class_code
6231 , asgn.rate_based_flag
6232 , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST') assignment_type
6233 , ppr.actual_start_date
6234 , ppr.actual_finish_date
6235 , ppr.estimated_start_date
6236 , ppr.estimated_finish_date
6237 --, ppr.ESTIMATED_REMAINING_EFFORT --bug 3977167
6238 , nvl(ppr.ESTIMATED_REMAINING_EFFORT,
6239 decode(asgn.resource_class_code,'PEOPLE',
6240 decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6241 nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))
6242 , 0)) ESTIMATED_REMAINING_EFFORT
6243 , ppr.STRUCTURE_VERSION_ID
6244 , ppr.STRUCTURE_TYPE
6245 , ppr.PROJ_ELEMENT_ID
6246 , ppr.PPL_ACT_EFFORT_TO_DATE
6247 , ppr.EQPMT_ACT_EFFORT_TO_DATE
6248 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
6249 --, ppr.EQPMT_ETC_EFFORT --bug 3977167
6250 , nvl(ppr.EQPMT_ETC_EFFORT,
6251 decode(asgn.resource_class_code,'EQUIPMENT',
6252 decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6253 nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0))
6254 , 0)) EQPMT_ETC_EFFORT
6255 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
6256 , ppr.OTH_ACT_COST_TO_DATE_TC
6257 , ppr.OTH_ACT_COST_TO_DATE_PC
6258 , ppr.OTH_ACT_COST_TO_DATE_FC
6259 --, ppr.OTH_ETC_COST_TC --bug 3977167
6260 --, ppr.OTH_ETC_COST_PC --bug 3977167
6261 --, ppr.OTH_ETC_COST_FC --bug 3977167
6262 , nvl(ppr.OTH_ETC_COST_TC,
6263 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6264 decode( sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6265 nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0))
6266 )) OTH_ETC_COST_TC
6267 ,nvl(ppr.OTH_ETC_COST_PC,
6268 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6269 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6270 nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0))
6271 )) OTH_ETC_COST_PC
6272 , nvl(ppr.OTH_ETC_COST_FC,
6273 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6274 decode( sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6275 nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0))
6276 )) OTH_ETC_COST_FC
6277 , ppr.PPL_ACT_COST_TO_DATE_TC
6278 , ppr.PPL_ACT_COST_TO_DATE_PC
6279 , ppr.PPL_ACT_COST_TO_DATE_FC
6280 --, ppr.PPL_ETC_COST_TC --bug 3977167
6281 --, ppr.PPL_ETC_COST_PC --bug 3977167
6282 --, ppr.PPL_ETC_COST_FC --bug 3977167
6283 , nvl(ppr.PPL_ETC_COST_TC,
6284 decode(asgn.resource_class_code,'PEOPLE',
6285 decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6286 nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0))
6287 ,0)) PPL_ETC_COST_TC
6288 , nvl(ppr.PPL_ETC_COST_PC,
6289 decode(asgn.resource_class_code,'PEOPLE',
6290 decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6291 nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0))
6292 ,0)) PPL_ETC_COST_PC
6293 , nvl(ppr.PPL_ETC_COST_FC,
6294 decode(asgn.resource_class_code,'PEOPLE',
6295 decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6296 nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0))
6297 ,0)) PPL_ETC_COST_FC
6298 , ppr.EQPMT_ACT_COST_TO_DATE_TC
6299 , ppr.EQPMT_ACT_COST_TO_DATE_PC
6300 , ppr.EQPMT_ACT_COST_TO_DATE_FC
6301 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
6302 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
6303 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
6304 --, ppr.EQPMT_ETC_COST_TC --bug 3977167
6305 --, ppr.EQPMT_ETC_COST_PC --bug 3977167
6306 --, ppr.EQPMT_ETC_COST_FC --bug 3977167
6307 , nvl(ppr.EQPMT_ETC_COST_TC,
6308 decode(asgn.resource_class_code,'EQUIPMENT',
6309 decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6310 nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0))
6311 ,0)) EQPMT_ETC_COST_TC
6312 , nvl(ppr.EQPMT_ETC_COST_PC,
6313 decode(asgn.resource_class_code,'EQUIPMENT',
6314 decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6315 nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0))
6316 ,0)) EQPMT_ETC_COST_PC
6317 , nvl(ppr.EQPMT_ETC_COST_FC,
6318 decode(asgn.resource_class_code,'EQUIPMENT',
6319 decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6320 nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0))
6321 ,0)) EQPMT_ETC_COST_FC
6322 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
6323 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
6324 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
6325 --Bug 3614828 Begin
6326 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6327 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6328 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6329 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6330 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6331 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6332 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6333 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6334 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6335 --, ppr.OTH_ETC_RAWCost_TC --bug 3977167
6336 --, ppr.OTH_ETC_RAWCost_PC --bug 3977167
6337 --, ppr.OTH_ETC_RAWCost_FC --bug 3977167
6338 , nvl(ppr.OTH_ETC_RAWCost_TC,
6339 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6340 decode( sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0)), -1, 0,
6341 nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0))
6342 )) OTH_ETC_RAWCost_TC
6343 , nvl(ppr.OTH_ETC_RAWCost_PC,
6344 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6345 decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0)), -1, 0,
6346 nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0))
6347 )) OTH_ETC_RAWCost_PC
6348 , nvl(ppr.OTH_ETC_RAWCost_FC,
6349 decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6350 decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0)), -1, 0,
6351 nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0))
6352 )) OTH_ETC_RAWCost_FC
6353 --, ppr.PPL_ETC_RAWCOST_TC --bug 3977167
6354 --, ppr.PPL_ETC_RAWCOST_PC --bug 3977167
6355 --, ppr.PPL_ETC_RAWCOST_FC --bug 3977167
6356 , nvl(ppr.PPL_ETC_RAWCOST_TC,
6357 decode(asgn.resource_class_code,'PEOPLE',
6358 decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6359 nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0))
6360 ,0)) PPL_ETC_RAWCOST_TC
6361 , nvl(ppr.PPL_ETC_RAWCOST_PC,
6362 decode(asgn.resource_class_code,'PEOPLE',
6363 decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6364 nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0))
6365 ,0)) PPL_ETC_RAWCOST_PC
6366 , nvl(ppr.PPL_ETC_RAWCOST_FC,
6367 decode(asgn.resource_class_code,'PEOPLE',
6368 decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6369 nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0))
6370 ,0)) PPL_ETC_RAWCOST_FC
6371 --, ppr.EQPMT_ETC_RAWCOST_TC --bug 3977167
6372 --, ppr.EQPMT_ETC_RAWCOST_PC --bug 3977167
6373 --, ppr.EQPMT_ETC_RAWCOST_FC --bug 3977167
6374 , nvl(ppr.EQPMT_ETC_RAWCOST_TC,
6375 decode(asgn.resource_class_code,'EQUIPMENT',
6376 decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6377 nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0))
6378 ,0)) EQPMT_ETC_RAWCOST_TC
6379 , nvl(ppr.EQPMT_ETC_RAWCOST_PC,
6380 decode(asgn.resource_class_code,'EQUIPMENT',
6381 decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6382 nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0))
6383 ,0)) EQPMT_ETC_RAWCOST_PC
6384 , nvl(ppr.EQPMT_ETC_RAWCOST_FC,
6385 decode(asgn.resource_class_code,'EQUIPMENT',
6386 decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6387 nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0))
6388 ,0)) EQPMT_ETC_RAWCOST_FC
6389 --Bug 3614828 End
6390 , ppr.CURRENT_FLAG
6391 , ppr.PROJFUNC_COST_RATE_TYPE
6392 , ppr.PROJFUNC_COST_EXCHANGE_RATE
6393 , ppr.PROJFUNC_COST_RATE_DATE
6394 , ppr.PROJ_COST_RATE_TYPE
6395 , ppr.PROJ_COST_EXCHANGE_RATE
6396 , ppr.PROJ_COST_RATE_DATE
6397 , ppr.TXN_CURRENCY_CODE
6398 , ppr.PROG_PA_PERIOD_NAME
6399 , ppr.PROG_GL_PERIOD_NAME
6400 ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
6401 ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)) ) earned_value
6402 ,decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
6403 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0)
6404 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT', decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
6405 + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0) + nvl(ppr.estimated_remaining_effort,0)), 0) bac_value_in_rollup_method
6406 --bug 3815252
6407 ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
6408 decode( asgn.resource_class_code,
6409 'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
6410 decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1, 0,
6411 nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))),
6412 'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,
6413 decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1, 0,
6414 nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0) -- Bug 4213130 nvl(asgn.planned_quantity,0))
6415 ),
6416 ( NVL( decode( asgn.resource_class_code,
6417 'FINANCIAL_ELEMENTS',
6418 nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6419 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6420 nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6421 'MATERIAL_ITEMS',
6422 nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6423 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6424 nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6425 'PEOPLE',
6426 nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,
6427 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
6428 nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0))),
6429 'EQUIPMENT',
6430 nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
6431 decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1, 0,
6432 nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
6433 nvl(asgn.planned_bur_cost_proj_cur,0)
6434 ))
6435 ) bac_value_in_task_deriv
6436 , ppr.Oth_quantity_to_date
6437 , ppr.Oth_etc_quantity
6438 FROM
6439 pa_task_asgmts_v asgn,
6440 pa_progress_rollup ppr
6441 WHERE asgn.task_version_id = c_task_ver_id
6442 AND asgn.task_id = c_task_id
6443 AND asgn.project_id = p_project_id
6444 AND asgn.project_id = ppr.project_id(+)
6445 AND asgn.RESOURCE_LIST_MEMBER_ID = ppr.object_id(+) -- Bug 3764224
6446 AND asgn.task_id = ppr.proj_element_id(+) -- Bug 3764224
6447 AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
6448 -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6449 -- It is to select only the rollup record till passed as of date
6450 AND ppr.structure_type(+) = 'WORKPLAN'
6451 AND ppr.structure_version_id(+) is null
6452 AND ppr.as_of_date(+) <= p_as_of_date
6453 AND nvl(ppr.progress_rollup_id,-99) = pa_progress_utils.get_w_pub_prupid_asofdate(p_project_id,asgn.RESOURCE_LIST_MEMBER_ID,'PA_ASSIGNMENTS',asgn.task_id,p_as_of_date);
6454
6455 /* (SELECT nvl(max(progress_rollup_id),-99)
6456 FROM pa_progress_rollup
6457 WHERE project_id = p_project_id
6458 AND object_id = asgn.RESOURCE_LIST_MEMBER_ID
6459 AND proj_element_id = asgn.task_id
6460 AND object_type = 'PA_ASSIGNMENTS'
6461 AND structure_type = 'WORKPLAN'
6462 AND structure_version_id is null
6463 AND as_of_date <= p_as_of_date
6464 AND (ppr.current_flag = 'W'
6465 --OR (ppr.current_flag ='Y' --bug 4183176
6466 OR (ppr.current_flag IN ('Y', 'N')
6467 AND NOT EXISTS (select 1
6468 from pa_progress_rollup ppc1
6469 where ppc1.project_id = p_project_id
6470 and ppc1.object_id = asgn.RESOURCE_LIST_MEMBER_ID
6471 and ppc1.proj_element_id = asgn.task_id
6472 and ppc1.object_Type = 'PA_ASSIGNMENTS'
6473 and ppc1.structure_type = 'WORKPLAN'
6474 and ppc1.as_of_date <= p_as_of_date
6475 and ppc1.structure_version_id is null
6476 and ppc1.current_flag = 'W'))))
6477 -- AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(asgn.project_id,
6478 -- asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS','WORKPLAN', null, asgn.task_id) ---Bug 3764224
6479 --bug 3958686, hidden assignments should not to be selected
6480 -- AND asgn.ta_display_flag = 'Y' -- Bug 4323537
6481 ; */
6482
6483
6484 --sql id: 14906033 bug: 4871809
6485 --This cursor selects the deliverables of a given task.
6486 CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
6487 IS
6488 SELECT obj.object_type_from
6489 , 'PA_TASKS' parent_object_type
6490 , obj.object_id_to2 object_id
6491 , obj.object_id_to1
6492 , obj.object_id_from1
6493 , 'PA_DELIVERABLES' object_type
6494 , ppr.actual_finish_date
6495 , ppr.completed_percentage
6496 , ppr.STRUCTURE_TYPE
6497 , ppr.PROJ_ELEMENT_ID
6498 , ppr.STRUCTURE_VERSION_ID
6499 , ppr.TASK_WT_BASIS_CODE
6500 , elem.progress_weight weighting_percentage
6501 , ppr.base_percent_complete
6502 , pps2.project_status_weight override_weight ---override progress status code
6503 , pps3.project_status_weight base_weight --base prog status
6504 FROM pa_proj_elements elem
6505 , pa_object_relationships obj
6506 , pa_progress_rollup ppr
6507 , pa_project_statuses pps2
6508 , pa_project_statuses pps3
6509 WHERE obj.object_id_from2= c_task_proj_elem_id
6510 ---AND obj.object_id_from1 = c_task_ver_id ---to get delv for specific task ver , object_id_from1 is not populated in this case
6511 AND obj.object_type_from = 'PA_TASKS'
6512 AND obj.object_type_to = 'PA_DELIVERABLES'
6513 AND obj.relationship_type = 'A'
6514 AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
6515 AND elem.proj_element_id = obj.object_id_to2
6516 AND elem.object_type = 'PA_DELIVERABLES'
6517 and elem.project_id = c_project_id
6518 AND ppr.project_id(+) = c_project_id
6519 AND ppr.object_id(+) = obj.object_id_to2
6520 AND ppr.object_type(+) = 'PA_DELIVERABLES'
6521 AND ppr.as_of_date(+) <= p_as_of_date
6522 -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6523 -- It is to select only the rollup record till passed as of date
6524 AND nvl(ppr.progress_rollup_id,-99) = pa_progress_utils.get_w_pub_prupid_asofdate(c_project_id,obj.object_id_to2,'PA_DELIVERABLES',obj.object_id_from2,p_as_of_date)
6525 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6526 AND ppr.progress_status_code = pps2.project_status_code(+);
6527
6528 /* (SELECT nvl(max(progress_rollup_id),-99)
6529 FROM pa_progress_rollup
6530 WHERE project_id = p_project_id
6531 AND object_id = obj.object_id_to2
6532 --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6533 --AND proj_element_id = obj.object_id_from2
6534 AND object_type = 'PA_DELIVERABLES'
6535 AND structure_type = 'WORKPLAN'
6536 AND structure_version_id is null
6537 AND as_of_date <= p_as_of_date
6538 --bug 4182870, added for selecting only one record
6539 AND (ppr.current_flag = 'W'
6540 OR (ppr.current_flag IN ('Y', 'N')
6541 AND NOT EXISTS (select 1
6542 from pa_progress_rollup ppc1
6543 where ppc1.project_id = p_project_id
6544 and ppc1.object_id = obj.object_id_to2
6545 --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6546 --and ppc1.proj_element_id = obj.object_id_from2
6547 and ppc1.object_Type = 'PA_DELIVERABLES'
6548 and ppc1.structure_type = 'WORKPLAN'
6549 and ppc1.as_of_date <= p_as_of_date
6550 and ppc1.structure_version_id is null
6551 and ppc1.current_flag = 'W'))))
6552 -- AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate2(c_project_id,
6553 -- obj.object_id_to2, 'PA_DELIVERABLES','WORKPLAN', null, obj.object_id_from2 ) -- bug 3764224 Bug 3808044 : Changed to2 to from2
6554 AND ppr.structure_type(+) = 'WORKPLAN'
6555 AND ppr.structure_version_id(+) is null
6556 -- AND ppr.current_flag(+) = 'W' --bug 3879461
6557 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6558 AND ppr.progress_status_code = pps2.project_status_code(+)
6559 ; */
6560
6561 CURSOR cur_base_p_comp_deriv_code(c_task_proj_elem_id NUMBER, c_project_id NUMBER)
6562 IS
6563 SELECT elem.status_code, stat.project_system_status_code, decode(elem.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,elem.base_percent_comp_deriv_code), ttype.prog_entry_enable_flag
6564 FROM pa_proj_elements elem
6565 , pa_task_types ttype
6566 , pa_project_statuses stat
6567 where elem.proj_element_id = c_task_proj_elem_id
6568 AND elem.project_id = c_project_id
6569 AND elem.object_type ='PA_TASKS'
6570 AND elem.type_id = ttype.task_type_id
6571 AND elem.status_code = stat.project_status_code(+);
6572
6573 CURSOR cur_status( c_status_weight VARCHAR2 )
6574 IS
6575 select lookup_code
6576 from fnd_lookup_values
6577 where attribute4 = c_status_weight
6578 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
6579 and language = 'US'
6580 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
6581
6582 CURSOR cur_task_status( c_status_weight VARCHAR2 )
6583 IS
6584 select project_status_code
6585 from pa_project_statuses
6586 where project_status_weight = c_status_weight
6587 and status_type = 'TASK'
6588 and predefined_flag = 'Y';
6589
6590 CURSOR cur_rollup( c_progress_rollup_id NUMBER )
6591 IS
6592 SELECT * from pa_progress_rollup
6593 WHERE progress_rollup_id = c_progress_rollup_id;
6594
6595 CURSOR cur_pa_rollup1( c_proj_element_id NUMBER )
6596 IS
6597 SELECT *
6598 FROM pa_progress_rollup
6599 WHERE project_id = p_project_id
6600 AND object_id = c_proj_element_id
6601 AND structure_type = 'WORKPLAN'
6602 AND structure_version_id is null
6603 AND as_of_date = ( SELECT max( as_of_date )
6604 FROM pa_progress_rollup
6605 WHERE project_id = p_project_id
6606 AND object_id = c_proj_element_id
6607 AND structure_type = 'WORKPLAN'
6608 AND structure_version_id is null
6609 AND as_of_date <= p_as_of_date );
6610
6611
6612
6613 l_eff_rollup_status_code VARCHAR2(150) ;
6614 l_cur_rollup_rec cur_rollup%ROWTYPE ;
6615 l_pev_schedule_id NUMBER ;
6616 l_sch_rec_ver_number NUMBER ;
6617 l_total_tasks NUMBER ;
6618 l_PROGRESS_ROLLUP_ID NUMBER ;
6619 l_progress_exists_on_aod VARCHAR2(15) ;
6620 l_percent_complete_id NUMBER ;
6621 l_rollup_rec_ver_number NUMBER ;
6622 l_progress_status_code VARCHAR2(150) ;
6623 l_rolled_up_base_per_comp NUMBER ;
6624 l_rolled_up_base_prog_stat VARCHAR2(150) ;
6625 l_rolled_up_per_comp NUMBER ;
6626 l_rolled_up_prog_stat VARCHAR2(150) ;
6627 l_cur_pa_rollup1_rec cur_pa_rollup1%ROWTYPE ;
6628 l_status_code VARCHAR2(150) ;
6629 l_working_aod DATE ;
6630 l_PROGRESS_ROLLUP_ID2 NUMBER ;
6631 l_rollup_rec_ver_number2 NUMBER ;
6632 l_cur_rollup_rec2 cur_rollup%ROWTYPE ;
6633 l_remaining_effort1 NUMBER ;
6634 l_percent_complete1 NUMBER ;
6635 l_percent_complete2 NUMBER ;
6636 l_ETC_Cost_PC NUMBER ;
6637 l_PPL_ETC_COST_PC NUMBER ;
6638 l_EQPMT_ETC_COST_PC NUMBER ;
6639 l_ETC_Cost_FC NUMBER ;
6640 l_PPL_ETC_COST_FC NUMBER ;
6641 l_EQPMT_ETC_COST_FC NUMBER ;
6642 l_EQPMT_ETC_EFFORT NUMBER ;
6643 l_SUB_PRJ_ETC_COST_PC NUMBER ;
6644 l_SUB_PRJ_PPL_ETC_COST_PC NUMBER ;
6645 l_SUB_PRJ_EQPMT_ETC_COST_PC NUMBER ;
6646 l_SUB_PRJ_ETC_COST_FC NUMBER ;
6647 l_SUB_PRJ_PPL_ETC_COST_FC NUMBER ;
6648 l_SUB_PRJ_EQPMT_ETC_COST_FC NUMBER ;
6649 l_SUB_PRJ_PPL_ETC_EFFORT NUMBER ;
6650 l_SUB_PRJ_EQPMT_ETC_EFFORT NUMBER ;
6651 l_BAC_VALUE1 NUMBER ;
6652 l_EARNED_VALUE1 NUMBER ;
6653 l_bcwp NUMBER ;
6654 l_OTH_ACT_COST_TO_DATE_PC NUMBER ;
6655 l_PPL_ACT_COST_TO_DATE_PC NUMBER ;
6656 l_EQPMT_ACT_COST_TO_DATE_PC NUMBER ;
6657 l_OTH_ACT_COST_TO_DATE_FC NUMBER ;
6658 l_PPL_ACT_COST_TO_DATE_FC NUMBER ;
6659 l_EQPMT_ACT_COST_TO_DATE_FC NUMBER ;
6660 l_PPL_ACT_EFFORT_TO_DATE NUMBER ;
6661 l_EQPMT_ACT_EFFORT_TO_DATE NUMBER ;
6662 l_PERIOD_NAME VARCHAR2(10) ;
6663 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
6664 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
6665 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type() ;
6666 l_prog_pa_period_name VARCHAR2(30) ;
6667 l_prog_gl_period_name VARCHAR2(30) ;
6668 l_current_flag VARCHAR2(1):= 'W' ;
6669 l_max_rollup_as_of_date2 DATE ;
6670 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE ;
6671 l_OTH_ACT_RAWCOST_TO_DATE_PC NUMBER ;
6672 l_PPL_ACT_RAWCOST_TO_DATE_PC NUMBER ;
6673 l_EQPMT_ACT_RAWCOST_TO_DATE_PC NUMBER ;
6674 l_OTH_ACT_RAWCOST_TO_DATE_FC NUMBER ;
6675 l_PPL_ACT_RAWCOST_TO_DATE_FC NUMBER ;
6676 l_EQPMT_ACT_RAWCOST_TO_DATE_FC NUMBER ;
6677 l_ETC_RAWCost_PC NUMBER ;
6678 l_PPL_ETC_RAWCOST_PC NUMBER ;
6679 l_EQPMT_ETC_RAWCOST_PC NUMBER ;
6680 l_ETC_RAWCost_FC NUMBER ;
6681 l_PPL_ETC_RAWCOST_FC NUMBER ;
6682 l_EQPMT_ETC_RAWCOST_FC NUMBER ;
6683 l_EQUIPMENT_HOURS NUMBER ;
6684 l_POU_LABOR_BRDN_COST NUMBER ;
6685 l_PRJ_LABOR_BRDN_COST NUMBER ;
6686 l_POU_EQUIP_BRDN_COST NUMBER ;
6687 l_PRJ_EQUIP_BRDN_COST NUMBER ;
6688 l_POU_LABOR_RAW_COST NUMBER ;
6689 l_PRJ_LABOR_RAW_COST NUMBER ;
6690 l_POU_EQUIP_RAW_COST NUMBER ;
6691 l_PRJ_EQUIP_RAW_COST NUMBER ;
6692 L_TASK_STATUS_CODE pa_project_statuses.project_status_code%TYPE ;
6693 l_task_system_status_code pa_project_statuses.project_system_status_code%TYPE;
6694 L_TASK_WEIGHTING_PERCENTAGE NUMBER ;
6695 L_PROG_ENTRY_ENABLE_FLAG VARCHAR2(1) ;
6696 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30) ;
6697 -- Bug 5675437
6698 l_PROGRESS_ROLLUP_ID3 NUMBER ;
6699 l_cur_rollup_rec3 cur_rollup%ROWTYPE ;
6700 l_rollup_rec_ver_number3 NUMBER ;
6701
6702 -- Bug 3879461 Begin
6703 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
6704 IS
6705 SELECT STATUS_CODE
6706 FROM PA_PROJ_ELEMENTS
6707 WHERE PROJ_ELEMENT_ID=l_proj_element_id
6708 AND PROJECT_ID = l_project_id;
6709
6710 L_EXISTING_OBJECT_STATUS pa_project_statuses.project_status_code%TYPE ;
6711 l_Oth_quantity_to_date NUMBER;
6712 l_Oth_etc_quantity NUMBER;
6713
6714 -- Bug 3879461 End
6715
6716 l_prj_currency_code VARCHAR2(15); --bug 3949093
6717
6718 -- Bug 3956299 Begin
6719 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
6720 IS
6721 SELECT scheduled_start_date, scheduled_finish_date
6722 FROM pa_proj_elem_ver_schedule
6723 WHERE PROJECT_ID = c_project_id
6724 AND element_version_id = c_element_version_id;
6725
6726 l_tsk_scheduled_start_date Date;
6727 l_tsk_scheduled_finish_date Date;
6728 l_actual_start_date Date;
6729 l_actual_finish_date Date;
6730 l_estimated_start_date Date;
6731 l_estimated_finish_date Date;
6732 -- Bug 3956299 End
6733
6734 -- Bug 3922325 Begin
6735 CURSOR c_get_dlv_status IS
6736 SELECT 'Y' FROM DUAL
6737 WHERE EXISTS
6738 (SELECT 'xyz'
6739 FROM pa_percent_completes
6740 WHERE project_id = p_project_id
6741 AND task_id = p_task_id
6742 AND object_type = 'PA_DELIVERABLES'
6743 AND trunc(date_computed)<= trunc(p_as_of_date)
6744 AND structure_type = 'WORKPLAN'
6745 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
6746 );
6747
6748 l_actual_exists VARCHAR2(1):='N';
6749 -- Bug 3922325 End
6750
6751 -- Bug 4392189 Begin
6752 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
6753 SELECT
6754 ppv2.project_id sub_project_id
6755 ,ppv2.element_version_id sub_structure_ver_id
6756 ,ppv2.proj_element_id sub_proj_element_id
6757 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method, ppv2.proj_element_id, ppv2.parent_structure_version_id,
6758 'WORKPLAN','N') sub_project_bac_value
6759 FROM
6760 pa_proj_element_versions ppv2
6761 ,pa_proj_elem_ver_structure ppevs2
6762 ,pa_object_relationships por1
6763 ,pa_object_relationships por2
6764 WHERE
6765 por1.object_id_from1 = c_task_version_id
6766 AND por1.object_id_to1 = por2.object_id_from1
6767 AND por2.object_id_to1 = ppv2.element_version_id
6768 AND ppv2.object_type = 'PA_STRUCTURES'
6769 -- AND por2.relationship_type in ( 'LW', 'LF' )
6770 AND por2.relationship_type = 'LW'
6771 AND ppevs2.element_version_id = ppv2.element_version_id
6772 AND ppevs2.project_id = ppv2.project_id
6773 AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
6774 AND ppevs2.latest_eff_published_flag = 'Y';
6775
6776 l_sub_project_id NUMBER;
6777 l_sub_structure_ver_id NUMBER;
6778 l_sub_proj_element_id NUMBER;
6779 l_sub_project_bac_value NUMBER;
6780
6781 --- sql id: 14906260 bug 4871809
6782 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
6783 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
6784 SELECT /*+ index(pfxat pji_fm_xbs_accum_tmp1_n1) */
6785 ppr.progress_rollup_id
6786 , ppr.as_of_date
6787 , ppr.actual_start_date
6788 , ppr.actual_finish_date
6789 , ppr.estimated_start_date
6790 , ppr.estimated_finish_date
6791 , ppr.PPL_ACT_EFFORT_TO_DATE
6792 , ppr.PPL_ACT_COST_TO_DATE_TC
6793 , ppr.PPL_ACT_COST_TO_DATE_PC
6794 , ppr.PPL_ACT_COST_TO_DATE_FC
6795 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6796 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6797 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6798 , ppr.EQPMT_ACT_EFFORT_TO_DATE
6799 , ppr.EQPMT_ACT_COST_TO_DATE_TC
6800 , ppr.EQPMT_ACT_COST_TO_DATE_PC
6801 , ppr.EQPMT_ACT_COST_TO_DATE_FC
6802 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6803 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6804 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6805 , ppr.OTH_QUANTITY_TO_DATE
6806 , ppr.OTH_ACT_COST_TO_DATE_TC
6807 , ppr.OTH_ACT_COST_TO_DATE_PC
6808 , ppr.OTH_ACT_COST_TO_DATE_FC
6809 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6810 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6811 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6812 , decode(ppr.progress_rollup_id,null,pfxat.ETC_LABOR_HRS,ppr.ESTIMATED_REMAINING_EFFORT) ESTIMATED_REMAINING_EFFORT
6813 , ppr.PPL_ETC_COST_TC
6814 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_BRDN_COST,ppr.PPL_ETC_COST_PC) PPL_ETC_COST_PC
6815 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_BRDN_COST,ppr.PPL_ETC_COST_FC) PPL_ETC_COST_FC
6816 , ppr.PPL_ETC_RAWCOST_TC
6817 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_PC) PPL_ETC_RAWCOST_PC
6818 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_FC) PPL_ETC_RAWCOST_FC
6819 , decode(ppr.progress_rollup_id,null,pfxat.ETC_EQUIP_HRS,ppr.EQPMT_ETC_EFFORT) EQPMT_ETC_EFFORT
6820 , ppr.EQPMT_ETC_COST_TC
6821 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_PC) EQPMT_ETC_COST_PC
6822 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_FC) EQPMT_ETC_COST_FC
6823 , ppr.EQPMT_ETC_RAWCOST_TC
6824 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_PC) EQPMT_ETC_RAWCOST_PC
6825 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_FC) EQPMT_ETC_RAWCOST_FC
6826 , ppr.OTH_ETC_QUANTITY
6827 , ppr.OTH_ETC_COST_TC
6828 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_PRJ_BRDN_COST-nvl(pfxat.ETC_PRJ_EQUIP_BRDN_COST,0)-nvl(pfxat.ETC_PRJ_LABOR_BRDN_COST,0)),ppr.OTH_ETC_COST_PC) OTH_ETC_COST_PC
6829 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_POU_BRDN_COST-nvl(pfxat.ETC_POU_EQUIP_BRDN_COST,0)-nvl(pfxat.ETC_POU_LABOR_BRDN_COST,0)),ppr.OTH_ETC_COST_FC) OTH_ETC_COST_FC
6830 , ppr.OTH_ETC_RAWCost_TC
6831 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_PRJ_RAW_COST-nvl(pfxat.ETC_PRJ_EQUIP_RAW_COST,0)-nvl(pfxat.ETC_PRJ_LABOR_RAW_COST,0)),ppr.OTH_ETC_RAWCost_PC) OTH_ETC_RAWCost_PC
6832 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_POU_RAW_COST-nvl(pfxat.ETC_POU_EQUIP_RAW_COST,0)-nvl(pfxat.ETC_POU_LABOR_RAW_COST,0)),ppr.OTH_ETC_RAWCost_FC) OTH_ETC_RAWCost_FC
6833 , pps1.project_status_weight rollup_weight1
6834 , pps2.project_status_weight override_weight2
6835 , pps3.project_status_weight base_weight3
6836 , pps4.project_status_weight task_weight4
6837 -- Bug 4506009, decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
6838 -- ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
6839 , decode(c_task_per_comp_deriv_method,'EFFORT', decode(nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0),0,
6840 nvl(pfxat.ETC_LABOR_HRS,0) + nvl(pfxat.ETC_EQUIP_HRS,0),nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0))
6841 , decode(nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0),0,
6842 nvl(pfxat.ETC_PRJ_BRDN_COST,0), nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0))) bac_value
6843 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage -- Bug 4506009
6844 FROM
6845 pa_progress_rollup ppr
6846 ,pa_project_statuses pps1
6847 ,pa_project_statuses pps2
6848 ,pa_project_statuses pps3
6849 ,pa_project_statuses pps4
6850 ,pa_proj_elements ppe
6851 ,pji_fm_xbs_accum_tmp1 pfxat
6852 WHERE
6853 ppr.project_id = c_sub_project_id
6854 AND ppe.project_id = c_sub_project_id
6855 AND ppe.object_type = 'PA_STRUCTURES'
6856 AND ppe.proj_element_id = c_sub_proj_element_id
6857 AND ppr.object_id(+) = c_sub_proj_element_id
6858 AND ppr.object_type(+) = 'PA_STRUCTURES'
6859 AND ppr.structure_version_id(+) is null
6860 AND ppr.structure_type(+) = 'WORKPLAN'
6861 AND ppr.current_flag(+) <> 'W' ---IN ('Y', 'N')
6862 AND ppr.as_of_date(+) <= c_as_of_date
6863 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
6864 AND ppr.progress_status_code = pps2.project_status_code(+)
6865 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6866 AND ppe.status_code = pps4.project_status_code(+)
6867 AND pfxat.project_id = ppe.project_id
6868 AND pfxat.struct_version_id = c_sub_str_version_id
6869 AND pfxat.project_element_id = ppe.proj_element_id
6870 AND pfxat.plan_version_id > 0
6871 AND pfxat.txn_currency_code is null
6872 AND pfxat.calendar_type = 'A'
6873 AND pfxat.res_list_member_id is null
6874 order by as_of_date desc
6875 ;
6876
6877 l_sub_rec c_get_sub_project_progress%ROWTYPE;
6878 l_subproj_prog_rollup_id NUMBER;
6879 l_subproj_act_start_date DATE;
6880 l_subproj_act_finish_date DATE;
6881 l_subproj_est_start_date DATE;
6882 l_subproj_est_finish_date DATE;
6883 l_subproj_rollup_weight1 NUMBER;
6884 l_subproj_override_weight2 NUMBER;
6885 l_subproj_base_weight3 NUMBER;
6886 l_subproj_task_weight4 NUMBER;
6887 l_subproj_earned_value NUMBER;
6888 l_subproj_bac_value NUMBER;
6889 l_actual_lowest_task VARCHAR2(1) := 'N';
6890 -- Bug 4392189 End
6891
6892 -- Bug 4506461 Begin
6893 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
6894 SELECT 'Y'
6895 FROM pa_object_relationships
6896 WHERE --relationship_type in ( 'LW', 'LF' )
6897 relationship_type = 'LW'
6898 AND object_id_from1 IN
6899 (SELECT object_id_to1
6900 FROM pa_object_relationships
6901 START WITH object_id_from1 = c_task_version_id
6902 AND relationship_type = 'S'
6903 CONNECT BY PRIOR object_id_to1 = object_id_from1
6904 AND relationship_type = 'S')
6905 ;
6906 l_subproject_found VARCHAR2(1):='N';
6907 l_rederive_base_pc VARCHAR2(1):='N';
6908 l_override_pc_temp NUMBER;
6909 l_base_pc_temp NUMBER;
6910 -- Bug 4506461 End
6911
6912 l_subproj_task_version_id NUMBER;--4582956
6913
6914 BEGIN
6915
6916 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
6917
6918 IF g1_debug_mode = 'Y' THEN
6919 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT');
6920 END IF;
6921
6922 IF g1_debug_mode = 'Y' THEN
6923 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
6924 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
6925 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
6926 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
6927 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
6928 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
6929 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
6930 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
6931 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
6932 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
6933 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
6934 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
6935 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
6936 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
6937 END IF;
6938
6939 IF p_structure_version_id IS NULL THEN
6940 return;
6941 END IF;
6942
6943 IF (p_commit = FND_API.G_TRUE) THEN
6944 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT2;
6945 END IF;
6946
6947 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
6948 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6949 END IF;
6950
6951 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
6952 FND_MSG_PUB.initialize;
6953 END IF;
6954
6955 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
6956 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
6957
6958 --bug 3949093
6959 SELECT project_currency_code INTO l_prj_currency_code FROM pa_projects_all WHERE project_id = p_project_id;
6960
6961 IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) THEN
6962 l_split_workplan := 'Y';
6963 ELSE
6964 l_split_workplan := 'N';
6965 END IF;
6966
6967 l_structure_version_id := null;
6968 l_task_version_id := p_task_version_id;
6969 l_rollup_method := p_wp_rollup_method;
6970
6971 IF g1_debug_mode = 'Y' THEN
6972 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled, x_Log_Level=> 3);
6973 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_structure_sharing_code='||l_structure_sharing_code, x_Log_Level=> 3);
6974 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
6975 END IF;
6976
6977
6978 l_task_derivation_code := null;
6979 l_task_status_code := null;
6980 l_task_weighting_percentage := 0;
6981
6982 OPEN cur_base_p_comp_deriv_code(p_task_id, p_project_id);
6983 FETCH cur_base_p_comp_deriv_code INTO l_task_status_code, l_task_system_status_code, l_task_derivation_code, l_prog_entry_enable_flag;
6984 CLOSE cur_base_p_comp_deriv_code;
6985
6986
6987 IF g1_debug_mode = 'Y' THEN
6988 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_derivation_code='||l_task_derivation_code, x_Log_Level=> 3);
6989 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
6990 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_prog_entry_enable_flag='||l_prog_entry_enable_flag, x_Log_Level=> 3);
6991 END IF;
6992
6993 -- Cursor: cur_tasks returns the input task and its immediate sub-tasks. -- Fix for Bug # 4032987.
6994 FOR cur_tasks_rec in cur_tasks(p_task_version_id) LOOP
6995
6996 IF g1_debug_mode = 'Y' THEN
6997 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Inside Tasks Loop', x_Log_Level=> 3);
6998 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'cur_tasks_rec.base_progress_status_code='||cur_tasks_rec.base_progress_status_code, x_Log_Level=> 3);
6999 END IF;
7000
7001 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7002
7003 -- We only populate the asssignment and deliverable records n the PL/SQL table for the input task
7004 -- , assignments and deliverables of the sub-tasks are not considered. -- Fix for Bug # 4032987.
7005
7006 if (cur_tasks_rec.object_id_to1 = p_task_version_id) then -- Fix for Bug # 4032987.
7007
7008 l_override_pc_temp := cur_tasks_rec.override_percent_complete; -- Bug 4506461
7009
7010 -- Bug 4392189 : Program Changes Begin
7011 l_sub_project_id := null;
7012 l_sub_rec := null;
7013
7014 -- 4587527 : It was not supporting multiple sub projects at link task
7015 -- So converted it into FOR LOOP
7016
7017 FOR rec_subproj IN c_get_sub_project(p_task_version_id, l_task_derivation_code) LOOP
7018 --OPEN c_get_sub_project (p_task_version_id, l_task_derivation_code);
7019 --FETCH c_get_sub_project INTO l_sub_project_id, l_sub_structure_ver_id, l_sub_proj_element_id,l_sub_project_bac_value;
7020 --CLOSE c_get_sub_project;
7021
7022 --IF l_sub_project_id IS NOT NULL THEN
7023 IF g1_debug_mode = 'Y' THEN
7024 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
7025 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
7026 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
7027 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
7028 END IF;
7029 l_subproject_found := 'Y' ; -- Bug 4506461
7030 l_subproj_task_version_id := p_task_version_id;--4582956
7031
7032 OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_task_derivation_code);
7033 FETCH c_get_sub_project_progress INTO l_sub_rec;
7034 CLOSE c_get_sub_project_progress;
7035
7036 IF g1_debug_mode = 'Y' THEN
7037 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_sub_rec.progress_rollup_id, x_Log_Level=> 3);
7038 END IF;
7039
7040 l_index := l_index + 1;
7041
7042 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_SUBPROJECTS';
7043 l_rollup_table1(l_index).OBJECT_ID := (-1 * l_index);
7044 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
7045 l_rollup_table1(l_index).PARENT_OBJECT_ID := p_task_version_id;
7046 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
7047 l_rollup_table1(l_index).CALENDAR_ID := l_index;
7048
7049 -- 4533112 : Added following check
7050 IF nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN
7051 l_rollup_table1(l_index).START_DATE1 := l_sub_rec.actual_start_date;
7052 l_rollup_table1(l_index).FINISH_DATE1 := l_sub_rec.actual_finish_date;
7053 l_rollup_table1(l_index).START_DATE2 := l_sub_rec.estimated_start_date;
7054 l_rollup_table1(l_index).FINISH_DATE2 := l_sub_rec.estimated_finish_date;
7055 END IF;
7056
7057
7058 -- 4582956 Begin : LInk task should be treated as summaru task which means
7059 -- we should be passing % complete of sub project and bac value of sub project
7060 /*
7061
7062 -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
7063 -- This is additional sefety fix
7064
7065 -- Bug 4506009 : Deriving l_subproj_earned_value
7066 IF l_task_derivation_code = 'EFFORT' THEN
7067 --l_subproj_earned_value := nvl(round((NVL(l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_sub_rec.completed_percentage,0)/100), 5),0);
7068 -- 4579654 : For more accuracy, Do not round the earned value here.
7069 --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100), 5),0);
7070 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7071 ELSE
7072 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_sub_rec.completed_percentage,0)/100), l_prj_currency_code),0);
7073 -- 4579654 : For more accuracy, Do not round the earned value here.
7074 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100), l_prj_currency_code),0);
7075 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7076 END IF;
7077
7078 l_rollup_table1(l_index).EARNED_VALUE1 := nvl(l_subproj_earned_value,0) ; --NVL( l_sub_rec.earned_value, 0 );
7079 --l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0) );
7080 l_rollup_table1(l_index).BAC_VALUE1 := NVL(l_sub_project_bac_value, 0);
7081 */
7082
7083 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl(l_sub_rec.completed_percentage, 0);
7084 l_rollup_table1(l_index).BAC_VALUE1 := NVL(rec_subproj.sub_project_bac_value, 0);
7085 -- 4582956 End
7086
7087
7088 -- Rollup Progress Status Rollup
7089 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_sub_rec.rollup_weight1,0); --rollup prog status
7090 l_rollup_table1(l_index).PROGRESS_override1 := l_sub_rec.override_weight2; --override prg status
7091
7092 -- Base Progress Status Rollup
7093 -- 4533112 : Now base progress status is not used
7094 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_sub_rec.base_weight3, 0 ); --base prog status
7095 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
7096
7097 -- Task Status Rollup
7098 l_rollup_table1(l_index).task_status1 := nvl(l_sub_rec.task_weight4, 0 ); -- task status
7099
7100
7101 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( l_sub_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7102 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( l_sub_rec.EQPMT_ETC_EFFORT, 0 );
7103
7104 -- ETC Burden Cost in Project Currency Rollup
7105 l_rollup_table1(l_index).ETC_COST1 := NVL( l_sub_rec.OTH_ETC_COST_PC, 0 );
7106 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( l_sub_rec.PPL_ETC_COST_PC, 0 );
7107 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( l_sub_rec.EQPMT_ETC_COST_PC, 0 );
7108
7109 -- ETC Burden Cost in Project Functional Currency Rollup
7110 l_rollup_table1(l_index).ETC_COST2 := NVL( l_sub_rec.OTH_ETC_COST_FC, 0 );
7111 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( l_sub_rec.PPL_ETC_COST_FC, 0 );
7112 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( l_sub_rec.EQPMT_ETC_COST_FC, 0 );
7113
7114
7115
7116 -- ETC Burden Cost in Transaction Currency Rollup
7117 l_rollup_table1(l_index).ETC_COST3 := NVL( l_sub_rec.OTH_ETC_COST_TC, 0 );
7118 l_rollup_table1(l_index).PPL_ETC_COST3 := NVL( l_sub_rec.PPL_ETC_COST_TC, 0 );
7119 l_rollup_table1(l_index).EQPMT_ETC_COST3 := NVL( l_sub_rec.EQPMT_ETC_COST_TC, 0 );
7120
7121 -- ETC Raw Cost in Transaction Currency Rollup
7122 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7123 --l_rollup_table1(l_index).ETC_COST4 := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7124 --l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7125 --l_rollup_table1(l_index).EQPMT_ETC_COST4 := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7126
7127 l_rollup_table1(l_index).ETC_COST4 := NVL( l_sub_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7128 l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( l_sub_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7129
7130 -- ETC Raw Cost in Project Currency Rollup
7131 l_rollup_table1(l_index).ETC_COST5 := NVL( l_sub_rec.OTH_ETC_RAWCost_PC, 0 );
7132 l_rollup_table1(l_index).PPL_ETC_COST5 := NVL( l_sub_rec.PPL_ETC_RAWCOST_PC, 0 );
7133 l_rollup_table1(l_index).EQPMT_ETC_COST5 := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7134
7135 -- ETC Raw Cost in PRoject Functional Currency Rollup
7136 l_rollup_table1(l_index).ETC_COST6 := NVL( l_sub_rec.OTH_ETC_RAWCost_FC, 0 );
7137 l_rollup_table1(l_index).PPL_ETC_COST6 := NVL( l_sub_rec.PPL_ETC_RAWCOST_FC, 0 );
7138 l_rollup_table1(l_index).EQPMT_ETC_COST6 := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7139
7140 -- Actual Burden Cost in Transaction Currency Rollup
7141 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3 := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7142 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3 := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7143 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3 := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7144 -- Actual Burden Cost in Project Currency Rollup
7145 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3 := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7146 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3 := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7147 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3 := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7148 -- Actual Burden Cost in Project Functional Currency Rollup
7149 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4 := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7150 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4 := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7151 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4 := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7152
7153 -- Actual Raw Cost in Transaction Currency Rollup
7154 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4 := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7155 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4 := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7156 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4 := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7157 -- Actual Raw Cost in Project Currency Rollup
7158 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5 := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7159 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5 := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7160 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5 := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7161 -- Actual Raw Cost in Project Functional Currency Rollup
7162 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5 := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7163 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5 := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7164 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5 := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7165
7166 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6 := NVL( l_sub_rec.Oth_quantity_to_date, 0 );
7167 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6 := NVL( l_sub_rec.oth_etc_quantity, 0 );
7168
7169
7170 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
7171 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
7172 l_rollup_table1(l_index).DIRTY_FLAG3 := 'Y';
7173 l_rollup_table1(l_index).DIRTY_FLAG4 := 'Y';
7174 l_rollup_table1(l_index).DIRTY_FLAG5 := 'Y';
7175 l_rollup_table1(l_index).DIRTY_FLAG6 := 'Y';
7176
7177 IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7178 l_action_allowed := 'N';
7179 END IF;
7180
7181 l_action_allowed := 'Y'; --temporarrily setting it to Y, need to investigate as why it is N
7182
7183 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Assgn l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7184
7185 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
7186 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
7187 l_rollup_table1(l_index).rollup_node3 := l_action_allowed;
7188 l_rollup_table1(l_index).rollup_node4 := l_action_allowed;
7189 l_rollup_table1(l_index).rollup_node5 := l_action_allowed;
7190 l_rollup_table1(l_index).rollup_node6 := l_action_allowed;
7191 END LOOP;
7192 --END IF;
7193 -- Bug 4392189 : Program Changes End
7194
7195
7196 -- Loop thru all task assignments of a passed task
7197 FOR cur_assgn_rec in cur_assgn(p_task_id, p_task_version_id, l_task_derivation_code) LOOP
7198
7199 l_index := l_index + 1;
7200
7201 l_rollup_table1(l_index).OBJECT_TYPE := cur_assgn_rec.object_type;
7202 l_rollup_table1(l_index).OBJECT_ID := cur_assgn_rec.object_id_to1; -- Reaource Assignment Id
7203 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_assgn_rec.parent_object_type;
7204 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_assgn_rec.object_id_from1; -- Task Version Id
7205 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
7206
7207 -- Percent Complete needs to be derived using Earned Value and BAC Value
7208
7209 -- Percent Complete at Assignment level does not get calculated
7210
7211 -- 4533112 : Added following check for base_progress_status_code
7212 IF l_task_derivation_code IN ('EFFORT', 'COST') AND nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN -- Bug 3956299
7213 -- Actual Date Rollup : Only Start Date gets rolls up.
7214 l_rollup_table1(l_index).START_DATE1 := cur_assgn_rec.actual_start_date;
7215 l_rollup_table1(l_index).FINISH_DATE1 := cur_assgn_rec.actual_finish_date;
7216
7217 -- Estimated Date Rollup : Only Start Date gets rolls up.
7218 l_rollup_table1(l_index).START_DATE2 := cur_assgn_rec.estimated_start_date;
7219 l_rollup_table1(l_index).FINISH_DATE2 := cur_assgn_rec.estimated_finish_date;
7220 END IF;
7221
7222
7223 -- Progress Status entry is not there at assignment level
7224
7225 -- Assignment Status entry is not there at assignment level
7226
7227 -- ETC Effort Rollup
7228 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_assgn_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7229 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_assgn_rec.EQPMT_ETC_EFFORT, 0 );
7230
7231 -- ETC Burden Cost in Project Currency Rollup
7232 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_assgn_rec.OTH_ETC_COST_PC, 0 );
7233 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_assgn_rec.PPL_ETC_COST_PC, 0 );
7234 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_assgn_rec.EQPMT_ETC_COST_PC, 0 );
7235
7236 -- ETC Burden Cost in Project Functional Currency Rollup
7237 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_assgn_rec.OTH_ETC_COST_FC, 0 );
7238 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_assgn_rec.PPL_ETC_COST_FC, 0 );
7239 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_assgn_rec.EQPMT_ETC_COST_FC, 0 );
7240
7241 -- Earned Value and BAC Rollup
7242 l_rollup_table1(l_index).EARNED_VALUE1 := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7243 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7244
7245 -- 4392189 : Program Reporting Changes - Phase 2
7246 -- Having Set2 columns to get Project level % complete
7247 l_rollup_table1(l_index).EARNED_VALUE2 := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7248 l_rollup_table1(l_index).BAC_VALUE2 := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7249
7250
7251 --Bug 3614828 Begin
7252
7253 -- ETC Burden Cost in Transaction Currency Rollup
7254 l_rollup_table1(l_index).ETC_COST3 := NVL( cur_assgn_rec.OTH_ETC_COST_TC, 0 );
7255 l_rollup_table1(l_index).PPL_ETC_COST3 := NVL( cur_assgn_rec.PPL_ETC_COST_TC, 0 );
7256 l_rollup_table1(l_index).EQPMT_ETC_COST3 := NVL( cur_assgn_rec.EQPMT_ETC_COST_TC, 0 );
7257
7258 -- ETC Raw Cost in Transaction Currency Rollup
7259 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7260 --l_rollup_table1(l_index).ETC_COST4 := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7261 --l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7262 --l_rollup_table1(l_index).EQPMT_ETC_COST4 := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7263
7264 l_rollup_table1(l_index).ETC_COST4 := NVL( cur_assgn_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7265 l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_assgn_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7266
7267 -- ETC Raw Cost in Project Currency Rollup
7268 l_rollup_table1(l_index).ETC_COST5 := NVL( cur_assgn_rec.OTH_ETC_RAWCost_PC, 0 );
7269 l_rollup_table1(l_index).PPL_ETC_COST5 := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_PC, 0 );
7270 l_rollup_table1(l_index).EQPMT_ETC_COST5 := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7271
7272 -- ETC Raw Cost in PRoject Functional Currency Rollup
7273 l_rollup_table1(l_index).ETC_COST6 := NVL( cur_assgn_rec.OTH_ETC_RAWCost_FC, 0 );
7274 l_rollup_table1(l_index).PPL_ETC_COST6 := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_FC, 0 );
7275 l_rollup_table1(l_index).EQPMT_ETC_COST6 := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7276
7277 -- Actual Burden Cost in Transaction Currency Rollup
7278 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3 := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7279 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3 := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7280 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3 := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7281 -- Actual Burden Cost in Project Currency Rollup
7282 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3 := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7283 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3 := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7284 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3 := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7285 -- Actual Burden Cost in Project Functional Currency Rollup
7286 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4 := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7287 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4 := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7288 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4 := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7289
7290 -- Actual Raw Cost in Transaction Currency Rollup
7291 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4 := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7292 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4 := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7293 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4 := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7294 -- Actual Raw Cost in Project Currency Rollup
7295 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5 := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7296 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5 := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7297 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5 := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7298 -- Actual Raw Cost in Project Functional Currency Rollup
7299 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5 := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7300 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5 := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7301 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5 := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7302
7303 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7304 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6 := NVL( cur_assgn_rec.Oth_quantity_to_date, 0 );
7305 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6 := NVL( cur_assgn_rec.oth_etc_quantity, 0 );
7306
7307
7308 --Bug 3614828 End
7309
7310
7311 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
7312 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
7313 l_rollup_table1(l_index).DIRTY_FLAG3 := 'Y';
7314 l_rollup_table1(l_index).DIRTY_FLAG4 := 'Y';
7315 l_rollup_table1(l_index).DIRTY_FLAG5 := 'Y';
7316 l_rollup_table1(l_index).DIRTY_FLAG6 := 'Y';
7317
7318 IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7319 l_action_allowed := 'N';
7320 END IF;
7321
7322 l_action_allowed := 'Y'; --temporarrily setting it to Y, need to investigate as why it is N
7323
7324 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Assgn l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7325
7326 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
7327 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
7328 l_rollup_table1(l_index).rollup_node3 := l_action_allowed;
7329 l_rollup_table1(l_index).rollup_node4 := l_action_allowed;
7330 l_rollup_table1(l_index).rollup_node5 := l_action_allowed;
7331 l_rollup_table1(l_index).rollup_node6 := l_action_allowed;
7332 END LOOP; -- Assignments Loop cur_assgn_rec
7333
7334
7335 IF l_task_derivation_code = 'DELIVERABLE' THEN
7336
7337 FOR cur_del_rec in cur_deliverables(p_task_id, p_task_version_id, p_project_id) LOOP
7338
7339 l_index := l_index + 1;
7340
7341 l_rollup_table1(l_index).OBJECT_TYPE := cur_del_rec.object_type;
7342 l_rollup_table1(l_index).OBJECT_ID := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
7343 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_del_rec.parent_object_type;
7344 l_rollup_table1(l_index).PARENT_OBJECT_ID := p_task_version_id;
7345 l_rollup_table1(l_index).WBS_LEVEL := 9999999;
7346
7347 -- Rollup Percent Complete Rollup
7348 l_rollup_table1(l_index).task_weight1 := nvl( cur_del_rec.weighting_percentage, 0 );
7349 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_del_rec.completed_percentage, 0 );
7350 --l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0; -- FPM Dev CR 2
7351
7352 -- 4392189 : Program Reporting Changes - Phase 2
7353 -- Having Set2 columns to get Project level % complete
7354 l_rollup_table1(l_index).task_weight2 := nvl( cur_del_rec.weighting_percentage, 0 );
7355 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.completed_percentage, 0 );
7356
7357
7358 -- Base Percent Complete Rollup
7359 -- l_rollup_table1(l_index).task_weight2 := nvl( cur_del_rec.weighting_percentage, 0 );
7360 -- l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.base_percent_complete, 0 );
7361 -- l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
7362
7363 -- Dates will not get rolled up for deliverable
7364 -- Rollup Progress Status Rollup
7365
7366 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0; --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
7367 l_rollup_table1(l_index).PROGRESS_override1 := cur_del_rec.override_weight; --override prg status
7368
7369 -- Base Progress Status Rollup
7370 -- 4533112 : Now base progress status weight is not used
7371 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
7372 -- l_rollup_table1(l_index).PROGRESS_override2 := 0;
7373
7374 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
7375 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
7376
7377 -- Deliverable Status will not get rolled up for deliverable
7378
7379 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7380
7381 IF nvl( l_task_weighting_percentage, 0 ) = 0 THEN
7382 l_action_allowed := 'N';
7383 END IF;
7384
7385 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
7386 l_action_allowed := 'N';
7387 END IF;
7388
7389 IF g1_debug_mode = 'Y' THEN
7390 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7391 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
7392 END IF;
7393
7394 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
7395 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
7396
7397 l_rollup_table1(l_index).rollup_node1 := 'Y';
7398 l_rollup_table1(l_index).rollup_node2 := 'Y';
7399
7400 END LOOP; -- Delivertables Loop cur_del_rec
7401 END IF; -- l_task_derivation_code = 'DELIVERABLES' THEN
7402
7403 end if; -- Fix for Bug # 4032987.
7404
7405 l_index := l_index + 1;
7406
7407 l_rollup_table1(l_index).OBJECT_TYPE := cur_tasks_rec.object_type;
7408 l_rollup_table1(l_index).OBJECT_ID := cur_tasks_rec.object_id_to1;--Task Version Id
7409 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_tasks_rec.parent_object_type;
7410 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7411 l_rollup_table1(l_index).WBS_LEVEL := NVL( cur_tasks_rec.wbs_level, 0 );
7412
7413 -- 4582956 Begin
7414 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);--4370746
7415 IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789) THEN
7416 -- 4586449 : Passing L for link tasks
7417 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'L'; --Link task shd be treated as summary task
7418 --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; --Link task shd be treated as summary task
7419 ELSE
7420 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);
7421 END IF;
7422 -- 4582956 end
7423
7424 -- Rollup Percent Complete Rollup
7425 l_rollup_table1(l_index).task_weight1 := nvl( cur_tasks_rec.weighting_percentage, 0 );
7426 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7427 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := cur_tasks_rec.override_percent_complete;
7428
7429 -- 4392189 : Program Reporting Changes - Phase 2
7430 -- Having Set2 columns to get Project level % complete
7431 l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
7432 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
7433 --4557541 : For self % complete Override at tasks level would not be considered
7434 --l_rollup_table1(l_index).PERCENT_OVERRIDE2 := cur_tasks_rec.override_percent_complete;
7435 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
7436
7437
7438 -- Base Percent Complete Rollup
7439 -- l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
7440 -- l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
7441 -- l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
7442
7443 -- Actual Date Rollup
7444 l_rollup_table1(l_index).START_DATE1 := cur_tasks_rec.actual_start_date;
7445 l_rollup_table1(l_index).FINISH_DATE1 := cur_tasks_rec.actual_finish_date;
7446
7447 -- Estimated Date Rollup
7448 l_rollup_table1(l_index).START_DATE2 := cur_tasks_rec.estimated_start_date;
7449 l_rollup_table1(l_index).FINISH_DATE2 := cur_tasks_rec.estimated_finish_date;
7450
7451 -- Rollup Progress Status Rollup
7452 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(cur_tasks_rec.rollup_weight1,0); --rollup prog status
7453 l_rollup_table1(l_index).PROGRESS_override1 := cur_tasks_rec.override_weight2; --override prg status
7454
7455 -- Base Progress Status Rollup
7456 -- 4533112 : Now base_progress_status_code is not used
7457 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 ); --base prog status
7458 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
7459
7460 -- Task Status Rollup
7461 l_rollup_table1(l_index).task_status1 := nvl( cur_tasks_rec.task_weight4, 0 ); -- task status
7462
7463 -- ETC Effort Rollup
7464 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7465 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7466
7467 -- ETC Burden Cost in Project Currency Rollup
7468 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7469 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7470 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7471
7472 -- ETC Burden Cost in Project Functional Currency Rollup
7473 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7474 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7475 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7476
7477 -- Sub Project ETC Effort Rollup
7478 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7479 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7480
7481 -- Sub Project ETC Cost in Project Currency Rollup
7482 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7483 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7484 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7485
7486 -- Sub Project ETC Cost in Project Functional Currency Rollup
7487 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7488 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7489 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7490
7491 -- 4392189 : Program Reporting Changes - Phase 2
7492 -- Having Set2 columns to get Project level % complete
7493
7494 -- Earned Value and BAC Rollup
7495 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7496 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7497
7498 -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
7499 -- in EARNED_VALUE1
7500 IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789)
7501 AND cur_tasks_rec.object_id_to1 = p_task_version_id
7502 THEN
7503
7504 l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
7505 , l_task_derivation_code, p_task_id, p_structure_version_id,
7506 'WORKPLAN','N','Y');
7507 -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
7508 --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 );
7509 l_rollup_table1(l_index).EARNED_VALUE2 := 1;
7510 END IF;
7511
7512 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7513
7514 IF g1_debug_mode = 'Y' THEN
7515 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1, x_Log_Level=> 3);
7516 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
7517 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
7518 END IF;
7519 -- 4586449 End
7520
7521
7522 l_rollup_table1(l_index).BAC_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
7523
7524
7525 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7526 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_task_derivation_code;
7527
7528 --Bug 3614828 Begin
7529 -- ETC Burden Cost in Transaction Currency Rollup
7530 l_rollup_table1(l_index).ETC_COST3 := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7531 l_rollup_table1(l_index).PPL_ETC_COST3 := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7532 l_rollup_table1(l_index).EQPMT_ETC_COST3 := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7533
7534 -- ETC Raw Cost in Transaction Currency Rollup
7535 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7536 --l_rollup_table1(l_index).ETC_COST4 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7537 --l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7538 --l_rollup_table1(l_index).EQPMT_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7539
7540 l_rollup_table1(l_index).ETC_COST4 := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7541 l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7542
7543 -- ETC Raw Cost in Project Currency Rollup
7544 l_rollup_table1(l_index).ETC_COST5 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7545 l_rollup_table1(l_index).PPL_ETC_COST5 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7546 l_rollup_table1(l_index).EQPMT_ETC_COST5 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7547
7548 -- ETC Raw Cost in PRoject Functional Currency Rollup
7549 l_rollup_table1(l_index).ETC_COST6 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7550 l_rollup_table1(l_index).PPL_ETC_COST6 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7551 l_rollup_table1(l_index).EQPMT_ETC_COST6 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7552
7553
7554 -- Actual Burden Cost in Transaction Currency Rollup
7555 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7556 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7557 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7558 -- Actual Burden Cost in Project Currency Rollup
7559 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7560 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7561 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7562 -- Actual Burden Cost in Project Functional Currency Rollup
7563 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7564 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7565 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7566
7567 -- Actual Raw Cost in Transaction Currency Rollup
7568 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7569 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7570 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7571 -- Actual Raw Cost in Project Currency Rollup
7572 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7573 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7574 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7575 -- Actual Raw Cost in Project Functional Currency Rollup
7576 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7577 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7578 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7579
7580 --Bug 3614828 End
7581
7582 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7583 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6 := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7584 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6 := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7585
7586
7587
7588 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
7589 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
7590 l_rollup_table1(l_index).DIRTY_FLAG3 := 'Y';
7591 l_rollup_table1(l_index).DIRTY_FLAG4 := 'Y';
7592 l_rollup_table1(l_index).DIRTY_FLAG5 := 'Y';
7593 l_rollup_table1(l_index).DIRTY_FLAG6 := 'Y';
7594
7595 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7596 l_action_allowed := 'N';
7597 END IF;
7598
7599 IF g1_debug_mode = 'Y' THEN
7600 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7601 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
7602 END IF;
7603
7604 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
7605 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
7606 l_rollup_table1(l_index).rollup_node3 := l_action_allowed;
7607 l_rollup_table1(l_index).rollup_node4 := l_action_allowed;
7608 l_rollup_table1(l_index).rollup_node5 := l_action_allowed;
7609 l_rollup_table1(l_index).rollup_node6 := l_action_allowed;
7610
7611 l_rollup_table1(l_index).rollup_node1 := 'Y';
7612 l_rollup_table1(l_index).rollup_node2 := 'Y';
7613 l_rollup_table1(l_index).rollup_node3 := 'Y';
7614 l_rollup_table1(l_index).rollup_node4 := 'Y';
7615 l_rollup_table1(l_index).rollup_node5 := 'Y';
7616 l_rollup_table1(l_index).rollup_node6 := 'Y';
7617
7618 END LOOP; -- Tasks Loop
7619
7620 /*
7621 --bug 3951982
7622 --populate scheduling pl/sql table with sub-tasks of a summary tasks if it has assignments.
7623 IF PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_task_version_id ) = 'N'
7624 AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
7625 THEN
7626 -- Loop thru all tasks of a passed task
7627 FOR cur_tasks_rec in cur_tasks( p_task_version_id ) LOOP
7628 IF cur_tasks_rec.object_type = 'PA_TASKS'
7629 THEN
7630 IF g1_debug_mode = 'Y' THEN
7631 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Inside Tasks Loop: Second pass', x_Log_Level=> 3);
7632 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
7633 END IF;
7634
7635 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7636
7637 IF g1_debug_mode = 'Y' THEN
7638 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_index='||l_index, x_Log_Level=> 3);
7639 END IF;
7640
7641 l_index := l_index + 1;
7642
7643 l_rollup_table1(l_index).OBJECT_TYPE := cur_tasks_rec.object_type;
7644 l_rollup_table1(l_index).OBJECT_ID := cur_tasks_rec.object_id_to1;--Task Version Id
7645 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_tasks_rec.parent_object_type;
7646 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7647 l_rollup_table1(l_index).WBS_LEVEL := NVL( cur_tasks_rec.wbs_level, 0 );
7648
7649 -- Rollup Percent Complete Rollup
7650 l_rollup_table1(l_index).task_weight1 := nvl( cur_tasks_rec.weighting_percentage, 0 );
7651 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7652 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := cur_tasks_rec.override_percent_complete;
7653
7654 -- Base Percent Complete Rollup
7655 -- l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
7656 -- l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
7657 -- l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
7658
7659 -- Actual Date Rollup
7660 l_rollup_table1(l_index).START_DATE1 := cur_tasks_rec.actual_start_date;
7661 l_rollup_table1(l_index).FINISH_DATE1 := cur_tasks_rec.actual_finish_date;
7662
7663 -- Estimated Date Rollup
7664 l_rollup_table1(l_index).START_DATE2 := cur_tasks_rec.estimated_start_date;
7665 l_rollup_table1(l_index).FINISH_DATE2 := cur_tasks_rec.estimated_finish_date;
7666
7667 -- Rollup Progress Status Rollup
7668 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(cur_tasks_rec.rollup_weight1,0); --rollup prog status
7669 l_rollup_table1(l_index).PROGRESS_override1 := cur_tasks_rec.override_weight2; --override prg status
7670
7671 -- Base Progress Status Rollup
7672 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 ); --base prog status
7673 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
7674
7675 -- Task Status Rollup
7676 l_rollup_table1(l_index).task_status1 := nvl( cur_tasks_rec.task_weight4, 0 ); -- task status
7677
7678 -- ETC Effort Rollup
7679 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7680 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7681
7682 -- ETC Burden Cost in Project Currency Rollup
7683 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7684 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7685 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7686
7687 -- ETC Burden Cost in Project Functional Currency Rollup
7688 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7689 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7690 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7691
7692 -- Sub Project ETC Effort Rollup
7693 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7694 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7695
7696 -- Sub Project ETC Cost in Project Currency Rollup
7697 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7698 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7699 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7700
7701 -- Sub Project ETC Cost in Project Functional Currency Rollup
7702 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7703 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7704 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7705
7706 -- Earned Value and BAC Rollup
7707 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7708 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7709
7710 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7711
7712 --Bug 3614828 Begin
7713 -- ETC Burden Cost in Transaction Currency Rollup
7714 l_rollup_table1(l_index).ETC_COST3 := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7715 l_rollup_table1(l_index).PPL_ETC_COST3 := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7716 l_rollup_table1(l_index).EQPMT_ETC_COST3 := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7717
7718 -- ETC Raw Cost in Transaction Currency Rollup
7719 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7720 --l_rollup_table1(l_index).ETC_COST4 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7721 --l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7722 --l_rollup_table1(l_index).EQPMT_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7723
7724 l_rollup_table1(l_index).ETC_COST4 := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7725 l_rollup_table1(l_index).PPL_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7726
7727 -- ETC Raw Cost in Project Currency Rollup
7728 l_rollup_table1(l_index).ETC_COST5 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7729 l_rollup_table1(l_index).PPL_ETC_COST5 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7730 l_rollup_table1(l_index).EQPMT_ETC_COST5 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7731
7732 -- ETC Raw Cost in PRoject Functional Currency Rollup
7733 l_rollup_table1(l_index).ETC_COST6 := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7734 l_rollup_table1(l_index).PPL_ETC_COST6 := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7735 l_rollup_table1(l_index).EQPMT_ETC_COST6 := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7736
7737
7738 -- Actual Burden Cost in Transaction Currency Rollup
7739 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7740 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7741 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7742 -- Actual Burden Cost in Project Currency Rollup
7743 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7744 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7745 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7746 -- Actual Burden Cost in Project Functional Currency Rollup
7747 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4 := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7748 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4 := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7749 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4 := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7750
7751 -- Actual Raw Cost in Transaction Currency Rollup
7752 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7753 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7754 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7755 -- Actual Raw Cost in Project Currency Rollup
7756 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7757 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7758 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7759 -- Actual Raw Cost in Project Functional Currency Rollup
7760 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5 := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7761 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5 := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7762 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5 := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7763
7764 --Bug 3614828 End
7765
7766 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7767 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6 := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7768 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6 := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7769
7770
7771
7772 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
7773 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
7774 l_rollup_table1(l_index).DIRTY_FLAG3 := 'Y';
7775 l_rollup_table1(l_index).DIRTY_FLAG4 := 'Y';
7776 l_rollup_table1(l_index).DIRTY_FLAG5 := 'Y';
7777 l_rollup_table1(l_index).DIRTY_FLAG6 := 'Y';
7778
7779 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7780 l_action_allowed := 'N';
7781 END IF;
7782
7783 IF g1_debug_mode = 'Y' THEN
7784 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7785 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
7786 END IF;
7787
7788 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
7789 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
7790 l_rollup_table1(l_index).rollup_node3 := l_action_allowed;
7791 l_rollup_table1(l_index).rollup_node4 := l_action_allowed;
7792 l_rollup_table1(l_index).rollup_node5 := l_action_allowed;
7793 l_rollup_table1(l_index).rollup_node6 := l_action_allowed;
7794
7795 l_rollup_table1(l_index).rollup_node1 := 'Y';
7796 l_rollup_table1(l_index).rollup_node2 := 'Y';
7797 l_rollup_table1(l_index).rollup_node3 := 'Y';
7798 l_rollup_table1(l_index).rollup_node4 := 'Y';
7799 l_rollup_table1(l_index).rollup_node5 := 'Y';
7800 l_rollup_table1(l_index).rollup_node6 := 'Y';
7801
7802 END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
7803 END LOOP;
7804 END IF;
7805 --end bug 3951982
7806 */
7807
7808 IF g1_debug_mode = 'Y' THEN
7809 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
7810 FOR i IN 1..l_rollup_table1.count LOOP
7811 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
7812 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
7813 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
7814 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
7815 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
7816 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7817 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7818 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7819 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7820 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7821 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
7822 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7823 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7824 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7825 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7826 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7827 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7828 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7829 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7830 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7831 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7832 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7833 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7834 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7835 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7836 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7837 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7838 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7839 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
7840 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
7841 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
7842 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7843 x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
7844 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7845 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7846 x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
7847 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2|| ' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7848 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='
7849 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7850 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4||' PPL_ETC_COST4 ='
7851 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7852 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
7853 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7854 END LOOP;
7855 END IF;
7856 -- Bug 4207995 : Commented partial_flags in the below call
7857 --Call generate schedule with the second table.
7858 PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
7859 p_commit => p_commit
7860 ,p_debug_mode => 'Y'
7861 ,x_return_status => l_return_status
7862 ,x_msg_count => l_msg_count
7863 ,x_msg_data => l_msg_data
7864 ,x_process_number => l_process_number
7865 ,p_number_digit => 2 --bug 3941447
7866 ,p_data_structure => l_rollup_table1
7867 ,p_process_flag1 => 'Y'
7868 ,p_process_rollup_flag1 => 'Y'
7869 ,p_process_progress_flag1 => 'Y'
7870 ,p_process_percent_flag1 => 'Y'
7871 ,p_process_effort_flag1 => 'Y'
7872 ,p_process_task_status_flag1 => 'Y'
7873 ,p_process_flag2 => 'Y'
7874 ,p_process_rollup_flag2 => 'Y'
7875 ,p_process_progress_flag2 => 'Y'
7876 ,p_process_percent_flag2 => 'Y'
7877 -- ,p_partial_process_flag1 => 'Y'
7878 -- ,p_partial_process_flag2 => 'Y'
7879 -- ,p_partial_dates_flag1 => 'Y'
7880 -- ,p_partial_dates_flag2 => 'Y'
7881 -- ,p_partial_progress_flag1 => 'Y'
7882 -- ,p_partial_progress_flag2 => 'Y'
7883 -- ,p_partial_task_status_flag1 => 'N'
7884 -- ,p_partial_effort_flag1 => 'Y'
7885 -- ,p_partial_percent_flag1 => 'Y'
7886 -- ,p_partial_percent_flag2 => 'Y'
7887 -- ,p_process_ETC_Flag1 => 'Y'
7888 -- ,p_partial_ETC_Flag1 => 'Y'
7889 -- ,p_process_ETC_Flag2 => 'Y'
7890 -- ,p_partial_ETC_Flag2 => 'Y'
7891 --Bug 3614828 Begin
7892 ,p_process_flag3 => 'Y'
7893 ,p_process_rollup_flag3 => 'Y'
7894 ,p_process_progress_flag3 => 'Y'
7895 ,p_process_percent_flag3 => 'Y'
7896 ,p_process_effort_flag3 => 'Y'
7897 ,p_process_task_status_flag3 => 'Y'
7898 ,p_process_ETC_Flag3 => 'Y'
7899 -- ,p_partial_ETC_Flag3 => 'Y'
7900 ,p_process_flag4 => 'Y'
7901 ,p_process_rollup_flag4 => 'Y'
7902 ,p_process_progress_flag4 => 'Y'
7903 ,p_process_percent_flag4 => 'Y'
7904 ,p_process_effort_flag4 => 'Y'
7905 ,p_process_task_status_flag4 => 'Y'
7906 ,p_process_ETC_Flag4 => 'Y'
7907 -- ,p_partial_ETC_Flag4 => 'Y'
7908 ,p_process_flag5 => 'Y'
7909 ,p_process_rollup_flag5 => 'Y'
7910 ,p_process_progress_flag5 => 'Y'
7911 ,p_process_percent_flag5 => 'Y'
7912 ,p_process_effort_flag5 => 'Y'
7913 ,p_process_task_status_flag5 => 'Y'
7914 ,p_process_ETC_Flag5 => 'Y'
7915 -- ,p_partial_ETC_Flag5 => 'Y'
7916 ,p_process_flag6 => 'Y'
7917 ,p_process_rollup_flag6 => 'Y'
7918 ,p_process_progress_flag6 => 'Y'
7919 ,p_process_percent_flag6 => 'Y'
7920 ,p_process_effort_flag6 => 'Y'
7921 ,p_process_task_status_flag6 => 'Y'
7922 ,p_process_ETC_Flag6 => 'Y'
7923 -- ,p_partial_ETC_Flag6 => 'Y'
7924 --Bug 3614828 End
7925 ,p_Rollup_Method => l_Rollup_Method
7926 );
7927
7928 IF g1_debug_mode = 'Y' THEN
7929 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After GENERATE_SCHEDULE', x_Log_Level=> 3);
7930 END IF;
7931
7932 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7933 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7934 p_msg_name => l_msg_data
7935 );
7936 x_msg_data := l_msg_data;
7937 x_return_status := 'E';
7938 RAISE FND_API.G_EXC_ERROR;
7939 END IF;
7940
7941 -- Updating the Rolled up Task Record
7942 IF g1_debug_mode = 'Y' THEN
7943 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '******Returned from Genertate Schedule ***', x_Log_Level=> 3);
7944 FOR i IN 1..l_rollup_table1.count LOOP
7945 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
7946 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
7947 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
7948 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
7949 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
7950 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7951 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7952 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7953 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7954 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7955 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
7956 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7957 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7958 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7959 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7960 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7961 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7962 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7963 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7964 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7965 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7966 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7967 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7968 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7969 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7970 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7971 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7972 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7973 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
7974 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
7975 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
7976 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7977 x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
7978 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7979 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7980 x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
7981 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7982 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='
7983 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7984 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4||' PPL_ETC_COST4 ='
7985 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7986 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
7987 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7988 END LOOP;
7989 END IF;
7990
7991 l_percent_complete_id := null;
7992
7993 l_total_tasks := l_rollup_table1.count; -- Actually it is not the tasks count, it is count of all the objects.
7994
7995 IF g1_debug_mode = 'Y' THEN
7996 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
7997 FOR i IN 1..l_total_tasks LOOP
7998 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id ='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
7999 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_type ='||l_rollup_table1(i).object_type, x_Log_Level=> 3);
8000 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
8001 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
8002 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
8003 END LOOP;
8004 END IF;
8005
8006 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
8007 BEGIN
8008 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date),null);
8009 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date),null);
8010 EXCEPTION
8011 WHEN OTHERS THEN
8012 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8013 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
8014 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
8015 x_return_status := 'E';
8016 x_msg_count := fnd_msg_pub.count_msg;
8017 RAISE FND_API.G_EXC_ERROR;
8018 END ;
8019
8020 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
8021
8022
8023 IF l_total_tasks > 0 THEN
8024 FOR i in 1..l_total_tasks LOOP
8025 IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
8026 THEN
8027 IF g1_debug_mode = 'Y' THEN
8028 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
8029 END IF;
8030
8031 l_BASE_PERCENT_COMP_DERIV_CODE := l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1;
8032 l_eff_rollup_status_code := null;
8033 l_progress_status_code := null;
8034
8035 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
8036 FETCH cur_status INTO l_eff_rollup_status_code;
8037 CLOSE cur_status;
8038
8039 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) ); --get the base prog status
8040 FETCH cur_status INTO l_progress_status_code;
8041 CLOSE cur_status;
8042
8043 IF g1_debug_mode = 'Y' THEN
8044 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
8045 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
8046 END IF;
8047
8048
8049
8050 l_rolled_up_per_comp := null;
8051 l_rolled_up_prog_stat := null;
8052 l_rolled_up_base_prog_stat := null;
8053 l_rolled_up_prog_stat := null;
8054 l_remaining_effort1 := null;
8055 l_percent_complete1 := null;
8056 l_ETC_Cost_PC := null;
8057 l_PPL_ETC_COST_PC := null;
8058 l_EQPMT_ETC_COST_PC := null;
8059 l_ETC_Cost_FC := null;
8060 l_PPL_ETC_COST_FC := null;
8061 l_EQPMT_ETC_COST_FC := null;
8062 l_EQPMT_ETC_EFFORT := null;
8063 l_SUB_PRJ_ETC_COST_PC := null;
8064 l_SUB_PRJ_PPL_ETC_COST_PC := null;
8065 l_SUB_PRJ_EQPMT_ETC_COST_PC := null;
8066 l_SUB_PRJ_ETC_COST_FC := null;
8067 l_SUB_PRJ_PPL_ETC_COST_FC := null;
8068 l_SUB_PRJ_EQPMT_ETC_COST_FC := null;
8069 l_SUB_PRJ_PPL_ETC_EFFORT := null;
8070 l_SUB_PRJ_EQPMT_ETC_EFFORT := null;
8071 l_BAC_VALUE1 := null;
8072 l_EARNED_VALUE1 := null;
8073 l_remaining_effort1 := null;
8074 l_EQPMT_ETC_EFFORT := null;
8075 l_OTH_ACT_COST_TO_DATE_PC := null;
8076 l_PPL_ACT_COST_TO_DATE_PC := null;
8077 l_EQPMT_ACT_COST_TO_DATE_PC := null;
8078 l_OTH_ACT_COST_TO_DATE_FC := null;
8079 l_PPL_ACT_COST_TO_DATE_FC := null;
8080 l_EQPMT_ACT_COST_TO_DATE_FC := null;
8081 l_PPL_ACT_EFFORT_TO_DATE := null;
8082 l_EQPMT_ACT_EFFORT_TO_DATE := null;
8083 l_cur_pa_rollup1_rec := null;
8084 l_cur_rollup_rec := null;
8085 -- Bug 3621404 : Raw Cost Changes
8086 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
8087 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
8088 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
8089 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
8090 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
8091 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
8092 l_ETC_RAWCost_PC := null;
8093 l_PPL_ETC_RAWCOST_PC := null;
8094 l_EQPMT_ETC_RAWCOST_PC := null;
8095 l_ETC_RAWCost_FC := null;
8096 l_PPL_ETC_RAWCOST_FC := null;
8097 l_EQPMT_ETC_RAWCOST_FC := null;
8098 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8099 l_Oth_quantity_to_date := null;
8100 l_oth_etc_quantity := null;
8101 -- Bug 3956299 Begin
8102 l_actual_start_date := l_rollup_table1(i).start_date1;
8103 l_actual_finish_date := l_rollup_table1(i).finish_date1;
8104 l_estimated_start_date := l_rollup_table1(i).start_date2;
8105 l_estimated_finish_date := l_rollup_table1(i).finish_date2;
8106 -- Bug 3956299 End
8107
8108 -- Bug 5675437
8109 l_cur_rollup_rec3 := null;
8110
8111 OPEN cur_pa_rollup1(p_task_id);
8112 FETCH cur_pa_rollup1 INTO l_cur_pa_rollup1_rec;
8113 CLOSE cur_pa_rollup1;
8114
8115 l_rolled_up_per_comp := l_cur_pa_rollup1_rec.completed_percentage;
8116 l_rolled_up_prog_stat := l_cur_pa_rollup1_rec.progress_status_code;
8117 IF g1_debug_mode = 'Y' THEN
8118 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
8119 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat, x_Log_Level=> 3);
8120 END IF;
8121 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
8122 -- 4533112 : Now base_progress_status_code is not used
8123 /*
8124 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_task_version_id )= 'Y'
8125 THEN
8126 -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
8127 l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8128 ELSE
8129 -- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
8130 l_rolled_up_base_prog_stat := l_progress_status_code;
8131 END IF;
8132 */
8133 l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8134
8135 --Check whether there exists any rollup record for the task.
8136 --if exists then update otherwise create.
8137 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
8138 p_project_id => p_project_id
8139 ,p_object_id => p_task_id
8140 ,p_object_type => 'PA_TASKS'
8141 ,p_object_version_id => p_task_version_id
8142 ,p_as_of_date => p_as_of_date
8143 ,p_structure_type => 'WORKPLAN'
8144 ,p_structure_version_id => l_structure_version_id
8145 ,p_proj_element_id => p_task_id
8146 ,p_action => 'SAVE' -- Bug 3879461
8147 ,x_record_version_number => l_rollup_rec_ver_number
8148 );
8149
8150 IF g1_debug_mode = 'Y' THEN
8151 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
8152 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
8153 END IF;
8154
8155
8156 --bug 3949093, round the values
8157 --l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
8158 --l_remaining_effort1 := nvl(l_rollup_table1(i).remaining_effort1,0);
8159
8160 -- 4392189 : Program Reporting Changes - Phase 2
8161 -- Having Set2 columns to get Project level % complete
8162
8163 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
8164 -- 4506461 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,2),0);
8165 l_base_pc_temp := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
8166 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
8167 --bug 3949093, end
8168
8169 -- Bug 4506461 Begin
8170 l_percent_complete2 := nvl(l_override_pc_temp,l_percent_complete1);
8171 -- 4540890 : Removed l_subproject_found check from below
8172 --IF l_subproject_found = 'Y' THEN
8173 l_rederive_base_pc := 'N';
8174 OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
8175 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
8176 CLOSE c_get_any_childs_have_subprj;
8177 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
8178 l_percent_complete2 := l_base_pc_temp;
8179 END IF;
8180 --END IF;
8181 -- Bug 4506461 End
8182
8183
8184 --do not rollup on-hold task status. We dont need to worry about
8185 --cancelled bcoz they are not selected.
8186 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
8187 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
8188
8189 -- Bug 3922325 : Moved the code for status defaulting and updating after Actual is derived
8190
8191 --Bug 3614828 Begin
8192
8193 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0); -- Bug 3764224
8194 --bug 3949093, rund the earned value
8195 --l_EARNED_VALUE1 := nvl(l_rollup_table1(i).EARNED_VALUE1,0); -- Bug 3764224
8196
8197 IF g1_debug_mode = 'Y' THEN
8198 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
8199 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
8200 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
8201 END IF;
8202
8203 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
8204
8205 IF p_wp_rollup_method = 'EFFORT'
8206 THEN
8207 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
8208 ELSE
8209 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
8210 END IF;
8211 --bug 3949093, end
8212
8213 l_OTH_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT3;
8214 l_PPL_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT3;
8215 l_EQPMT_ACT_COST_TO_DATE_PC := l_rollup_table1(i).PPL_UNPLAND_EFFORT3;
8216 l_OTH_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_ETC_COST4;
8217 l_PPL_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST4;
8218 l_EQPMT_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST4;
8219 l_PPL_ACT_EFFORT_TO_DATE := l_rollup_table1(i).ETC_COST4;
8220 l_EQPMT_ACT_EFFORT_TO_DATE := l_rollup_table1(i).PPL_ETC_COST4;
8221 l_ETC_Cost_PC := l_rollup_table1(i).ETC_COST1;
8222 l_PPL_ETC_COST_PC := l_rollup_table1(i).PPL_ETC_COST1;
8223 l_EQPMT_ETC_COST_PC := l_rollup_table1(i).EQPMT_ETC_COST1;
8224 l_ETC_Cost_FC := l_rollup_table1(i).ETC_COST2;
8225 l_PPL_ETC_COST_FC := l_rollup_table1(i).PPL_ETC_COST2;
8226 l_EQPMT_ETC_COST_FC := l_rollup_table1(i).EQPMT_ETC_COST2;
8227 l_remaining_effort1 := l_rollup_table1(i).REMAINING_EFFORT1;
8228 l_EQPMT_ETC_EFFORT := l_rollup_table1(i).EQPMT_ETC_EFFORT1;
8229 l_OTH_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_ETC_COST5;
8230 l_PPL_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST5;
8231 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST5;
8232 l_OTH_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT5;
8233 l_PPL_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT5;
8234 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).PPL_UNPLAND_EFFORT5;
8235 l_ETC_RAWCost_PC := l_rollup_table1(i).ETC_COST5;
8236 l_PPL_ETC_RAWCOST_PC := l_rollup_table1(i).PPL_ETC_COST5;
8237 l_EQPMT_ETC_RAWCOST_PC := l_rollup_table1(i).EQPMT_ETC_COST5;
8238 l_ETC_RAWCost_FC := l_rollup_table1(i).ETC_COST6;
8239 l_PPL_ETC_RAWCOST_FC := l_rollup_table1(i).PPL_ETC_COST6;
8240 l_EQPMT_ETC_RAWCOST_FC := l_rollup_table1(i).EQPMT_ETC_COST6;
8241 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8242 l_Oth_quantity_to_date := l_rollup_table1(i).SUB_PRJ_ETC_COST6;
8243 l_oth_etc_quantity := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST6;
8244
8245
8246 --Bug 3614828 End
8247
8248 -- Bug 3922325 : Moved here the code from above
8249 -- Begin
8250
8251
8252 -- Bug 3879461 Begin : Commented this logic for defaulting status and added new
8253 /*IF (l_percent_complete1 > 0) THEN
8254 l_status_code := null;
8255
8256 OPEN cur_task_status( to_char(l_rollup_table1(i).task_status1) );
8257 FETCH cur_task_status INTO l_status_code;
8258 CLOSE cur_task_status;
8259
8260 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
8261
8262 IF (l_percent_complete1 = 100 AND l_task_system_status_code = 'NOT_STARTED')
8263 THEN
8264 l_status_code := '127';
8265 ELSIF (l_percent_complete1 > 0 AND l_task_system_status_code = 'NOT_STARTED')
8266 THEN
8267 l_status_code := '125';
8268 END IF;
8269
8270
8271 UPDATE pa_percent_completes
8272 SET status_code = l_status_code
8273 WHERE object_id = p_task_id
8274 AND project_id = p_project_id
8275 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8276 AND structure_type = 'WORKPLAN'
8277 AND current_flag = 'N' and published_flag = 'N';
8278
8279 END IF;*/
8280 -- If Actual Exists or Deliverable is in progress then task shd be In PRogress
8281 l_actual_exists := 'N';
8282 ---5726773 changed '>0' to '<>0'
8283 IF (l_PPL_ACT_EFFORT_TO_DATE <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
8284 IF g1_debug_mode = 'Y' THEN
8285 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
8286 END IF;
8287 l_actual_exists := 'Y';
8288 END IF;
8289 OPEN c_get_dlv_status;
8290 FETCH c_get_dlv_status INTO l_actual_exists;
8291 CLOSE c_get_dlv_status;
8292
8293 IF g1_debug_mode = 'Y' THEN
8294 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
8295 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Defaulting Status and Actual Dates', x_Log_Level=> 3);
8296 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_percent_complete1='||l_percent_complete1, x_Log_Level=> 3);
8297 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
8298 END IF;
8299
8300
8301 IF ( ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8302 OR
8303 ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
8304 OR l_actual_exists = 'Y'
8305 ) THEN
8306
8307 OPEN c_get_object_status ( p_project_id, p_task_id);
8308 FETCH c_get_object_status INTO l_existing_object_status;
8309 CLOSE c_get_object_status;
8310
8311 l_status_code := l_existing_object_status;
8312
8313 IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8314 THEN
8315 OPEN cur_task_status ( to_char(l_rollup_table1(i).task_status1) );
8316 FETCH cur_task_status INTO l_status_code;
8317 CLOSE cur_task_status;
8318 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
8319 END IF; -- Bug 3956299 : Reduced scope of IF.
8320 -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
8321 --ELSE
8322 --l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_existing_object_status ); Bug 3956299
8323 l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
8324
8325 IF g1_debug_mode = 'Y' THEN
8326 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
8327 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
8328 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_system_status_code='||l_task_system_status_code, x_Log_Level=> 3);
8329 END IF;
8330
8331
8332 IF ( NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_task_system_status_code <> 'COMPLETED')
8333 THEN
8334 l_status_code := '127';
8335 l_task_system_status_code := 'COMPLETED';
8336 -- In the below check, Completed is also added as Scheduling API may return status as COMPLETED but % complete may not be as 100
8337 ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100)) AND l_task_system_status_code IN ('NOT_STARTED','COMPLETED'))
8338 THEN
8339 l_status_code := '125';
8340 l_task_system_status_code := 'IN_PROGRESS';
8341 l_actual_finish_date := null;
8342 -- This is done to first time make task In Progress if any sub-objects are in Progress
8343 ELSIF (l_actual_exists ='Y' AND l_task_system_status_code = 'NOT_STARTED')
8344 THEN
8345 l_status_code := '125';
8346 l_task_system_status_code := 'IN_PROGRESS';
8347 l_actual_finish_date := null;
8348 END IF;
8349 --END IF;
8350
8351 IF g1_debug_mode = 'Y' THEN
8352 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
8353 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Defaulting l_task_system_status_code='||l_task_system_status_code, x_Log_Level=> 3);
8354 END IF;
8355
8356
8357 -- Bug 3956299 Begin
8358 OPEN c_get_dates (p_project_id, p_task_version_id);
8359 FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
8360 CLOSE c_get_dates;
8361 /* Bug 3922325 : Date defaulting should be based on Status rather % complete
8362 IF l_actual_start_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 THEN
8363 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8364 END IF;
8365 IF l_actual_start_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100 THEN
8366 l_actual_finish_date := null;
8367 END IF;
8368 IF l_actual_finish_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 THEN
8369 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8370 END IF;
8371 */
8372 IF l_actual_start_date IS NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8373 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8374 l_actual_finish_date := to_date(null);
8375 END IF;
8376 -- Bug 4232099 : added folling IF
8377 IF l_actual_finish_date IS NOT NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8378 l_actual_finish_date := to_date(null);
8379 END IF;
8380 IF l_actual_start_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8381 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8382 END IF;
8383 IF l_actual_finish_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8384 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8385 END IF;
8386
8387 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
8388 IF l_actual_finish_date < l_actual_start_date THEN
8389 IF TRUNC(SYSDATE) < l_actual_start_date THEN
8390 l_actual_finish_date := l_actual_start_date;
8391 ELSE
8392 l_actual_finish_date := TRUNC(SYSDATE);
8393 END IF;
8394 END IF;
8395 END IF;
8396 -- Bug 3956299 End
8397
8398 UPDATE pa_percent_completes
8399 SET status_code = l_status_code
8400 , actual_start_date = l_actual_start_date -- Bug 3956299
8401 , actual_finish_date = l_actual_finish_date -- Bug 3956299
8402 WHERE object_id = p_task_id
8403 AND project_id = p_project_id
8404 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8405 AND structure_type = 'WORKPLAN'
8406 AND current_flag = 'N' and published_flag = 'N';
8407 END IF;
8408 -- Bug 3879461 End
8409 -- Bug 3922325 End
8410
8411
8412 --Bug 3614828 Begin
8413 /* In Save action, Actuals and ETC is not to be read from PJI.
8414 BEGIN
8415 SELECT
8416 PERIOD_NAME
8417 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
8418 , ACT_PRJ_LABOR_BRDN_COST
8419 , ACT_PRJ_EQUIP_BRDN_COST
8420 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
8421 , ACT_POU_LABOR_BRDN_COST
8422 , ACT_POU_EQUIP_BRDN_COST
8423 , ACT_LABOR_HRS
8424 , ACT_EQUIP_HRS
8425 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
8426 , ETC_PRJ_LABOR_BRDN_COST
8427 , ETC_PRJ_EQUIP_BRDN_COST
8428 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
8429 , ETC_POU_LABOR_BRDN_COST
8430 , ETC_POU_EQUIP_BRDN_COST
8431 , ETC_LABOR_HRS
8432 , ETC_EQUIP_HRS
8433 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
8434 , ACT_PRJ_LABOR_RAW_COST
8435 , ACT_PRJ_EQUIP_RAW_COST
8436 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
8437 , ACT_POU_LABOR_RAW_COST
8438 , ACT_POU_EQUIP_RAW_COST
8439 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
8440 , ETC_PRJ_LABOR_RAW_COST
8441 , ETC_PRJ_EQUIP_RAW_COST
8442 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
8443 , ETC_POU_LABOR_RAW_COST
8444 , ETC_POU_EQUIP_RAW_COST
8445 ,EQUIPMENT_HOURS
8446 ,POU_LABOR_BRDN_COST
8447 ,PRJ_LABOR_BRDN_COST
8448 ,POU_EQUIP_BRDN_COST
8449 ,PRJ_EQUIP_BRDN_COST
8450 ,POU_LABOR_RAW_COST
8451 ,PRJ_LABOR_RAW_COST
8452 ,POU_EQUIP_RAW_COST
8453 ,PRJ_EQUIP_RAW_COST
8454 INTO l_PERIOD_NAME
8455 , l_OTH_ACT_COST_TO_DATE_PC
8456 , l_PPL_ACT_COST_TO_DATE_PC
8457 , l_EQPMT_ACT_COST_TO_DATE_PC
8458 , l_OTH_ACT_COST_TO_DATE_FC
8459 , l_PPL_ACT_COST_TO_DATE_FC
8460 , l_EQPMT_ACT_COST_TO_DATE_FC
8461 , l_PPL_ACT_EFFORT_TO_DATE
8462 , l_EQPMT_ACT_EFFORT_TO_DATE
8463 , l_ETC_Cost_PC
8464 , l_PPL_ETC_COST_PC
8465 , l_EQPMT_ETC_COST_PC
8466 , l_ETC_Cost_FC
8467 , l_PPL_ETC_COST_FC
8468 , l_EQPMT_ETC_COST_FC
8469 , l_remaining_effort1
8470 , l_EQPMT_ETC_EFFORT
8471 , l_OTH_ACT_RAWCOST_TO_DATE_PC
8472 , l_PPL_ACT_RAWCOST_TO_DATE_PC
8473 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8474 , l_OTH_ACT_RAWCOST_TO_DATE_FC
8475 , l_PPL_ACT_RAWCOST_TO_DATE_FC
8476 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8477 , l_ETC_RAWCost_PC
8478 , l_PPL_ETC_RAWCOST_PC
8479 , l_EQPMT_ETC_RAWCOST_PC
8480 , l_ETC_RAWCost_FC
8481 , l_PPL_ETC_RAWCOST_FC
8482 , l_EQPMT_ETC_RAWCOST_FC
8483 ,l_EQUIPMENT_HOURS
8484 ,l_POU_LABOR_BRDN_COST
8485 ,l_PRJ_LABOR_BRDN_COST
8486 ,l_POU_EQUIP_BRDN_COST
8487 ,l_PRJ_EQUIP_BRDN_COST
8488 ,l_POU_LABOR_RAW_COST
8489 ,l_PRJ_LABOR_RAW_COST
8490 ,l_POU_EQUIP_RAW_COST
8491 ,l_PRJ_EQUIP_RAW_COST
8492 FROM PJI_FM_XBS_ACCUM_TMP1
8493 WHERE project_id = p_project_id
8494 AND struct_version_id = p_structure_version_id
8495 AND project_element_id = p_task_id
8496 AND plan_version_id > 0
8497 AND txn_currency_code is null
8498 AND calendar_type = 'A'
8499 AND res_list_member_id is null;
8500 EXCEPTION
8501 WHEN NO_DATA_FOUND THEN
8502 null;
8503 WHEN OTHERS THEN
8504 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
8505 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
8506 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_TMP1:'||SQLERRM,1,120));
8507 RAISE FND_API.G_EXC_ERROR;
8508 END;
8509 */
8510 --Bug 3614828 End
8511
8512
8513 IF l_PROGRESS_ROLLUP_ID IS NOT NULL
8514 THEN
8515 --update
8516 OPEN cur_rollup( l_PROGRESS_ROLLUP_ID );
8517 FETCH cur_rollup INTO l_cur_rollup_rec;
8518 CLOSE cur_rollup;
8519 /* Do not update actuals if the project is of shared type. */
8520 -- 4623833 : Added l_subproj_task_version_id check
8521 -- update_task_progress makes equip amount as null for link task
8522 -- This should be updated back with the rolled amounts from sub projects
8523 -- Ideally, the below code should not be there at all and alwsy values shd rollup
8524 -- but for precuations at this last stage of build, just including link task check here
8525
8526 IF l_split_workplan = 'N' AND l_subproj_task_version_id IS NULL
8527 THEN
8528 /* Start of changes for bug 5675437*/
8529 -- For hidden assignment case, we need to get the actuals from submitted record rather than current working one
8530
8531 IF l_rollup_table1(i).SUMMARY_OBJECT_FLAG = 'N' AND PA_PROGRESS_UTILS.check_assignment_exists(p_project_id, p_task_version_id, 'PA_TASKS') = 'N' THEN
8532
8533 l_PROGRESS_ROLLUP_ID3 := PA_PROGRESS_UTILS.get_prog_rollup_id(
8534 p_project_id => p_project_id
8535 ,p_object_id => p_task_id
8536 ,p_object_type => 'PA_TASKS'
8537 ,p_object_version_id => p_task_version_id
8538 ,p_as_of_date => p_as_of_date
8539 ,p_structure_type => 'WORKPLAN'
8540 ,p_structure_version_id => l_structure_version_id
8541 ,p_proj_element_id => p_task_id
8542 ,x_record_version_number => l_rollup_rec_ver_number3
8543 );
8544 OPEN cur_rollup( l_PROGRESS_ROLLUP_ID3 );
8545 FETCH cur_rollup INTO l_cur_rollup_rec3;
8546 CLOSE cur_rollup;
8547
8548 l_PPL_ACT_EFFORT_TO_DATE := l_cur_rollup_rec3.PPL_ACT_EFFORT_TO_DATE;
8549 l_EQPMT_ACT_EFFORT_TO_DATE := l_cur_rollup_rec3.EQPMT_ACT_EFFORT_TO_DATE;
8550 l_OTH_ACT_COST_TO_DATE_FC := l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_FC;
8551 l_OTH_ACT_COST_TO_DATE_PC := l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_PC;
8552 l_PPL_ACT_COST_TO_DATE_FC := l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_FC;
8553 l_PPL_ACT_COST_TO_DATE_PC := l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_PC;
8554 l_EQPMT_ACT_COST_TO_DATE_FC := l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_FC;
8555 l_EQPMT_ACT_COST_TO_DATE_PC := l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_PC;
8556 l_OTH_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_FC;
8557 l_OTH_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_PC;
8558 l_PPL_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_FC;
8559 l_PPL_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_PC;
8560 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec3.EQPMT_ACT_RAWCOST_TO_DATE_FC;l_EQPMT_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec3.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8561 l_Oth_quantity_to_date := l_cur_rollup_rec3.Oth_quantity_to_date;
8562
8563 ELSE
8564
8565 /* End of changes for bug 5675437*/
8566
8567 l_PPL_ACT_EFFORT_TO_DATE := l_cur_rollup_rec.PPL_ACT_EFFORT_TO_DATE;
8568 l_EQPMT_ACT_EFFORT_TO_DATE := l_cur_rollup_rec.EQPMT_ACT_EFFORT_TO_DATE;
8569 l_OTH_ACT_COST_TO_DATE_FC := l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_FC;
8570 l_OTH_ACT_COST_TO_DATE_PC := l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_PC;
8571 l_PPL_ACT_COST_TO_DATE_FC := l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_FC;
8572 l_PPL_ACT_COST_TO_DATE_PC := l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_PC;
8573 l_EQPMT_ACT_COST_TO_DATE_FC := l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_FC;
8574 l_EQPMT_ACT_COST_TO_DATE_PC := l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_PC;
8575 l_OTH_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
8576 l_OTH_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
8577 l_PPL_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
8578 l_PPL_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
8579 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
8580 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8581 l_Oth_quantity_to_date := l_cur_rollup_rec.Oth_quantity_to_date;
8582 END IF; --5675437
8583
8584 END IF;
8585
8586
8587 /* if etc values are null, set them as planned - actual. */
8588
8589 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
8590 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
8591 ,X_PROJECT_ID => p_project_id
8592 ,X_OBJECT_ID => p_task_id
8593 ,X_OBJECT_TYPE => l_rollup_table1(i).object_type
8594 ,X_AS_OF_DATE => p_as_of_date
8595 ,X_OBJECT_VERSION_ID => l_rollup_table1(i).object_id
8596 ,X_LAST_UPDATE_DATE => SYSDATE
8597 ,X_LAST_UPDATED_BY => l_user_id
8598 ,X_PROGRESS_STATUS_CODE => l_cur_rollup_rec.progress_status_code
8599 ,X_LAST_UPDATE_LOGIN => l_login_id
8600 ,X_INCREMENTAL_WORK_QTY => l_cur_rollup_rec.incremental_work_quantity
8601 ,X_CUMULATIVE_WORK_QTY => l_cur_rollup_rec.cumulative_work_quantity
8602 ,X_BASE_PERCENT_COMPLETE => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8603 ,X_EFF_ROLLUP_PERCENT_COMP => l_percent_complete1
8604 ,X_COMPLETED_PERCENTAGE => l_cur_rollup_rec.completed_percentage
8605 ,X_ESTIMATED_START_DATE => l_rollup_table1(i).start_date2
8606 ,X_ESTIMATED_FINISH_DATE => l_rollup_table1(i).finish_date2
8607 ,X_ACTUAL_START_DATE => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8608 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8609 ,X_EST_REMAINING_EFFORT => l_remaining_effort1
8610 ,X_RECORD_VERSION_NUMBER => l_rollup_rec_ver_number
8611 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_cur_rollup_rec.BASE_PERCENT_COMP_DERIV_CODE
8612 ,X_BASE_PROGRESS_STATUS_CODE => l_rolled_up_base_prog_stat
8613 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_eff_rollup_status_code
8614 ,x_percent_complete_id => null
8615 ,X_STRUCTURE_TYPE => 'WORKPLAN'
8616 ,X_PROJ_ELEMENT_ID => p_task_id
8617 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
8618 ,X_PPL_ACT_EFFORT_TO_DATE => l_PPL_ACT_EFFORT_TO_DATE
8619 ,X_EQPMT_ACT_EFFORT_TO_DATE => l_EQPMT_ACT_EFFORT_TO_DATE
8620 ,X_EQPMT_ETC_EFFORT => l_EQPMT_ETC_EFFORT
8621 ,X_OTH_ACT_COST_TO_DATE_TC => null
8622 ,X_OTH_ACT_COST_TO_DATE_FC => l_OTH_ACT_COST_TO_DATE_FC
8623 ,X_OTH_ACT_COST_TO_DATE_PC => l_OTH_ACT_COST_TO_DATE_PC
8624 ,X_OTH_ETC_COST_TC => null
8625 ,X_OTH_ETC_COST_FC => l_ETC_Cost_FC
8626 ,X_OTH_ETC_COST_PC => l_ETC_Cost_PC
8627 ,X_PPL_ACT_COST_TO_DATE_TC => null
8628 ,X_PPL_ACT_COST_TO_DATE_FC => l_PPL_ACT_COST_TO_DATE_FC
8629 ,X_PPL_ACT_COST_TO_DATE_PC => l_PPL_ACT_COST_TO_DATE_PC
8630 ,X_PPL_ETC_COST_TC => null
8631 ,X_PPL_ETC_COST_FC => l_PPL_ETC_COST_FC
8632 ,X_PPL_ETC_COST_PC => l_PPL_ETC_COST_PC
8633 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
8634 ,X_EQPMT_ACT_COST_TO_DATE_FC => l_EQPMT_ACT_COST_TO_DATE_FC
8635 ,X_EQPMT_ACT_COST_TO_DATE_PC => l_EQPMT_ACT_COST_TO_DATE_PC
8636 ,X_EQPMT_ETC_COST_TC => null
8637 ,X_EQPMT_ETC_COST_FC => l_EQPMT_ETC_COST_FC
8638 ,X_EQPMT_ETC_COST_PC => l_EQPMT_ETC_COST_PC
8639 ,X_EARNED_VALUE => l_earned_value1
8640 ,X_TASK_WT_BASIS_CODE => l_rollup_method
8641 ,X_SUBPRJ_PPL_ACT_EFFORT => l_cur_rollup_rec.SUBPRJ_PPL_ACT_EFFORT
8642 ,X_SUBPRJ_EQPMT_ACT_EFFORT => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_EFFORT
8643 ,X_SUBPRJ_PPL_ETC_EFFORT => l_cur_rollup_rec.SUBPRJ_PPL_ETC_EFFORT
8644 ,X_SUBPRJ_EQPMT_ETC_EFFORT => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_EFFORT
8645 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
8646 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC
8647 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC
8648 ,X_SUBPRJ_PPL_ACT_COST_TC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_TC
8649 ,X_SUBPRJ_PPL_ACT_COST_FC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_FC
8650 ,X_SUBPRJ_PPL_ACT_COST_PC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_PC
8651 ,X_SUBPRJ_EQPMT_ACT_COST_TC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_TC
8652 ,X_SUBPRJ_EQPMT_ACT_COST_FC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_FC
8653 ,X_SUBPRJ_EQPMT_ACT_COST_PC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_PC
8654 ,X_SUBPRJ_OTH_ETC_COST_TC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_TC
8655 ,X_SUBPRJ_OTH_ETC_COST_FC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_FC
8656 ,X_SUBPRJ_OTH_ETC_COST_PC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_PC
8657 ,X_SUBPRJ_PPL_ETC_COST_TC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_TC
8658 ,X_SUBPRJ_PPL_ETC_COST_FC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_FC
8659 ,X_SUBPRJ_PPL_ETC_COST_PC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_PC
8660 ,X_SUBPRJ_EQPMT_ETC_COST_TC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_TC
8661 ,X_SUBPRJ_EQPMT_ETC_COST_FC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_FC
8662 ,X_SUBPRJ_EQPMT_ETC_COST_PC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_PC
8663 ,X_SUBPRJ_EARNED_VALUE => l_cur_rollup_rec.SUBPRJ_EARNED_VALUE
8664 ,X_CURRENT_FLAG => l_cur_rollup_rec.CURRENT_FLAG
8665 ,X_PROJFUNC_COST_RATE_TYPE => l_cur_rollup_rec.PROJFUNC_COST_RATE_TYPE
8666 ,X_PROJFUNC_COST_EXCHANGE_RATE => l_cur_rollup_rec.PROJFUNC_COST_EXCHANGE_RATE
8667 ,X_PROJFUNC_COST_RATE_DATE => l_cur_rollup_rec.PROJFUNC_COST_RATE_DATE
8668 ,X_PROJ_COST_RATE_TYPE => l_cur_rollup_rec.PROJ_COST_RATE_TYPE
8669 ,X_PROJ_COST_EXCHANGE_RATE => l_cur_rollup_rec.PROJ_COST_EXCHANGE_RATE
8670 ,X_PROJ_COST_RATE_DATE => l_cur_rollup_rec.PROJ_COST_RATE_DATE
8671 ,X_TXN_CURRENCY_CODE => l_cur_rollup_rec.TXN_CURRENCY_CODE
8672 ,X_PROG_PA_PERIOD_NAME => l_cur_rollup_rec.PROG_PA_PERIOD_NAME
8673 ,X_PROG_GL_PERIOD_NAME => l_cur_rollup_rec.PROG_GL_PERIOD_NAME
8674 ,X_OTH_QUANTITY_TO_DATE => l_Oth_quantity_to_date
8675 ,X_OTH_ETC_QUANTITY => l_Oth_etc_quantity
8676 -- Bug 3621404 : Raw Cost Changes
8677 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
8678 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => l_OTH_ACT_RAWCOST_TO_DATE_FC
8679 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => l_OTH_ACT_RAWCOST_TO_DATE_PC
8680 ,X_OTH_ETC_RAWCOST_TC => null
8681 ,X_OTH_ETC_RAWCOST_FC => l_ETC_RAWCost_FC
8682 ,X_OTH_ETC_RAWCOST_PC => l_ETC_RAWCost_PC
8683 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
8684 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => l_PPL_ACT_RAWCOST_TO_DATE_FC
8685 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => l_PPL_ACT_RAWCOST_TO_DATE_PC
8686 ,X_PPL_ETC_RAWCOST_TC => null
8687 ,X_PPL_ETC_RAWCOST_FC => l_PPL_ETC_RAWCOST_FC
8688 ,X_PPL_ETC_RAWCOST_PC => l_PPL_ETC_RAWCOST_PC
8689 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
8690 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8691 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8692 ,X_EQPMT_ETC_RAWCOST_TC => null
8693 ,X_EQPMT_ETC_RAWCOST_FC => l_EQPMT_ETC_RAWCOST_FC
8694 ,X_EQPMT_ETC_RAWCOST_PC => l_EQPMT_ETC_RAWCOST_PC
8695 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
8696 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
8697 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
8698 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8699 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8700 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8701 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8702 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8703 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8704 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8705 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8706 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8707 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8708 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8709 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8710 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8711 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8712 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8713 );
8714 -- FPM Dev CR 6
8715 IF Fnd_Msg_Pub.count_msg > 0 THEN
8716 RAISE FND_API.G_EXC_ERROR;
8717 END IF;
8718
8719 --update progress_outdated_flag for summary tasks if there exists any ppc record
8720 --for the summary task
8721
8722 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8723 p_task_id => p_task_id
8724 ,p_object_id => p_task_id -- Bug 3764224
8725 ,p_as_of_date => p_as_of_date
8726 ,p_project_id => p_project_id
8727 ,p_object_version_id => l_rollup_table1(i).object_id
8728 ,p_object_type => l_rollup_table1(i).object_type
8729 ,p_structure_type => 'WORKPLAN'
8730 );
8731
8732 /* commenting out the code for bug 3851528
8733 IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8734 UPDATE pa_proj_elements
8735 SET progress_outdated_flag = 'Y'
8736 WHERE proj_element_id = p_task_id
8737 AND project_id = p_project_id
8738 AND object_type = l_rollup_table1(i).object_type;
8739 END IF;
8740 */
8741 ELSE --l_PROGRESS_ROLLUP_ID IS NOT NULL
8742 -- get percent_complete_id
8743 BEGIN
8744 SELECT percent_complete_id
8745 INTO l_percent_complete_id
8746 FROM pa_percent_completes
8747 WHERE project_id = p_project_id
8748 AND object_id = p_task_id
8749 AND object_Type = l_rollup_table1(i).object_Type
8750 AND structure_type = 'WORKPLAN'
8751 AND date_computed = ( SELECT max(date_computed)
8752 FROM pa_percent_completes
8753 WHERE project_id = p_project_id
8754 AND object_id = p_task_id
8755 AND object_Type = l_rollup_table1(i).object_Type
8756 AND structure_type = 'WORKPLAN'
8757 AND date_computed <= p_as_of_date
8758 );
8759 EXCEPTION WHEN OTHERS THEN
8760 l_percent_complete_id := null;
8761 END;
8762
8763 -- Bug 3879461 Begin : Code Not Required now
8764 /*
8765 l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
8766 (p_project_id => p_project_id,
8767 p_object_id => p_task_id,
8768 p_object_type => l_rollup_table1(i).object_type,
8769 p_structure_type => 'WORKPLAN',
8770 p_structure_version_id => l_structure_version_id,
8771 p_proj_element_id => p_task_id -- Bug 3764224
8772 );
8773
8774
8775 IF l_max_rollup_as_of_date2 > p_as_of_date
8776 THEN
8777 l_current_flag := 'N'; --this means that there is a future record than the current one.
8778 ELSE
8779 l_current_flag := 'Y';
8780 END IF;
8781 */
8782 -- Bug 3879461 End
8783
8784 -- This code is not required if we do not do partail rollup from assignmnet progress details page
8785
8786 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
8787 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
8788 ,X_PROJECT_ID => p_project_id
8789 ,X_OBJECT_ID => p_task_id
8790 ,X_OBJECT_TYPE => l_rollup_table1(i).object_type
8791 ,X_AS_OF_DATE => p_as_of_date
8792 ,X_OBJECT_VERSION_ID => l_rollup_table1(i).object_id
8793 ,X_LAST_UPDATE_DATE => SYSDATE
8794 ,X_LAST_UPDATED_BY => l_user_id
8795 ,X_CREATION_DATE => SYSDATE
8796 ,X_CREATED_BY => l_user_id
8797 ,X_PROGRESS_STATUS_CODE => l_rolled_up_prog_stat
8798 ,X_LAST_UPDATE_LOGIN => l_login_id
8799 ,X_INCREMENTAL_WORK_QTY => null
8800 ,X_CUMULATIVE_WORK_QTY => null
8801 ,X_BASE_PERCENT_COMPLETE => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8802 ,X_EFF_ROLLUP_PERCENT_COMP => l_percent_complete1
8803 ,X_COMPLETED_PERCENTAGE => l_rolled_up_per_comp
8804 ,X_ESTIMATED_START_DATE => l_rollup_table1(i).start_date2
8805 ,X_ESTIMATED_FINISH_DATE => l_rollup_table1(i).finish_date2
8806 ,X_ACTUAL_START_DATE => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8807 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8808 ,X_EST_REMAINING_EFFORT => l_remaining_effort1
8809 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
8810 ,X_BASE_PROGRESS_STATUS_CODE => l_rolled_up_base_prog_stat
8811 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_eff_rollup_status_code
8812 ,x_percent_complete_id => l_percent_complete_id
8813 ,X_STRUCTURE_TYPE => 'WORKPLAN'
8814 ,X_PROJ_ELEMENT_ID => p_task_id
8815 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
8816 ,X_PPL_ACT_EFFORT_TO_DATE => l_PPL_ACT_EFFORT_TO_DATE
8817 ,X_EQPMT_ACT_EFFORT_TO_DATE => l_EQPMT_ACT_EFFORT_TO_DATE
8818 ,X_EQPMT_ETC_EFFORT => l_EQPMT_ETC_EFFORT
8819 ,X_OTH_ACT_COST_TO_DATE_TC => null
8820 ,X_OTH_ACT_COST_TO_DATE_FC => l_OTH_ACT_COST_TO_DATE_FC
8821 ,X_OTH_ACT_COST_TO_DATE_PC => l_OTH_ACT_COST_TO_DATE_PC
8822 ,X_OTH_ETC_COST_TC => null
8823 ,X_OTH_ETC_COST_FC => l_ETC_Cost_FC
8824 ,X_OTH_ETC_COST_PC => l_ETC_Cost_PC
8825 ,X_PPL_ACT_COST_TO_DATE_TC => null
8826 ,X_PPL_ACT_COST_TO_DATE_FC => l_PPL_ACT_COST_TO_DATE_FC
8827 ,X_PPL_ACT_COST_TO_DATE_PC => l_PPL_ACT_COST_TO_DATE_PC
8828 ,X_PPL_ETC_COST_TC => null
8829 ,X_PPL_ETC_COST_FC => l_PPL_ETC_COST_FC
8830 ,X_PPL_ETC_COST_PC => l_PPL_ETC_COST_PC
8831 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
8832 ,X_EQPMT_ACT_COST_TO_DATE_FC => l_EQPMT_ACT_COST_TO_DATE_FC
8833 ,X_EQPMT_ACT_COST_TO_DATE_PC => l_EQPMT_ACT_COST_TO_DATE_PC
8834 ,X_EQPMT_ETC_COST_TC => null
8835 ,X_EQPMT_ETC_COST_FC => l_EQPMT_ETC_COST_FC
8836 ,X_EQPMT_ETC_COST_PC => l_EQPMT_ETC_COST_PC
8837 ,X_EARNED_VALUE => l_earned_value1
8838 ,X_TASK_WT_BASIS_CODE => l_rollup_method
8839 ,X_SUBPRJ_PPL_ACT_EFFORT => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_EFFORT
8840 ,X_SUBPRJ_EQPMT_ACT_EFFORT => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_EFFORT
8841 ,X_SUBPRJ_PPL_ETC_EFFORT => l_SUB_PRJ_PPL_ETC_EFFORT
8842 ,X_SUBPRJ_EQPMT_ETC_EFFORT => l_SUB_PRJ_EQPMT_ETC_EFFORT
8843 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
8844 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC
8845 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC
8846 ,X_SUBPRJ_PPL_ACT_COST_TC => null
8847 ,X_SUBPRJ_PPL_ACT_COST_FC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_FC
8848 ,X_SUBPRJ_PPL_ACT_COST_PC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_PC
8849 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
8850 ,X_SUBPRJ_EQPMT_ACT_COST_FC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_FC
8851 ,X_SUBPRJ_EQPMT_ACT_COST_PC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_PC
8852 ,X_SUBPRJ_OTH_ETC_COST_TC => null
8853 ,X_SUBPRJ_OTH_ETC_COST_FC => l_SUB_PRJ_ETC_COST_FC
8854 ,X_SUBPRJ_OTH_ETC_COST_PC => l_SUB_PRJ_ETC_COST_PC
8855 ,X_SUBPRJ_PPL_ETC_COST_TC => null
8856 ,X_SUBPRJ_PPL_ETC_COST_FC => l_SUB_PRJ_PPL_ETC_COST_FC
8857 ,X_SUBPRJ_PPL_ETC_COST_PC => l_SUB_PRJ_PPL_ETC_COST_PC
8858 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
8859 ,X_SUBPRJ_EQPMT_ETC_COST_FC => l_SUB_PRJ_EQPMT_ETC_COST_FC
8860 ,X_SUBPRJ_EQPMT_ETC_COST_PC => l_SUB_PRJ_EQPMT_ETC_COST_PC
8861 ,X_SUBPRJ_EARNED_VALUE => l_cur_pa_rollup1_rec.SUBPRJ_EARNED_VALUE
8862 ,X_CURRENT_FLAG => l_current_flag --maaansari FPM Dev CR2
8863 ,X_PROJFUNC_COST_RATE_TYPE => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_TYPE
8864 ,X_PROJFUNC_COST_EXCHANGE_RATE => l_cur_pa_rollup1_rec.PROJFUNC_COST_EXCHANGE_RATE
8865 ,X_PROJFUNC_COST_RATE_DATE => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_DATE
8866 ,X_PROJ_COST_RATE_TYPE => l_cur_pa_rollup1_rec.PROJ_COST_RATE_TYPE
8867 ,X_PROJ_COST_EXCHANGE_RATE => l_cur_pa_rollup1_rec.PROJ_COST_EXCHANGE_RATE
8868 ,X_PROJ_COST_RATE_DATE => l_cur_pa_rollup1_rec.PROJ_COST_RATE_DATE
8869 ,X_TXN_CURRENCY_CODE => l_cur_pa_rollup1_rec.TXN_CURRENCY_CODE
8870 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
8871 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
8872 ,X_OTH_QUANTITY_TO_DATE => l_Oth_quantity_to_date
8873 ,X_OTH_ETC_QUANTITY => l_Oth_etc_quantity
8874 -- Bug 3621404 : Raw Cost Changes
8875 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
8876 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => l_OTH_ACT_RAWCOST_TO_DATE_FC
8877 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => l_OTH_ACT_RAWCOST_TO_DATE_PC
8878 ,X_OTH_ETC_RAWCOST_TC => null
8879 ,X_OTH_ETC_RAWCOST_FC => l_ETC_RAWCost_FC
8880 ,X_OTH_ETC_RAWCOST_PC => l_ETC_RAWCost_PC
8881 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
8882 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => l_PPL_ACT_RAWCOST_TO_DATE_FC
8883 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => l_PPL_ACT_RAWCOST_TO_DATE_PC
8884 ,X_PPL_ETC_RAWCOST_TC => null
8885 ,X_PPL_ETC_RAWCOST_FC => l_PPL_ETC_RAWCOST_FC
8886 ,X_PPL_ETC_RAWCOST_PC => l_PPL_ETC_RAWCOST_PC
8887 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
8888 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8889 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8890 ,X_EQPMT_ETC_RAWCOST_TC => null
8891 ,X_EQPMT_ETC_RAWCOST_FC => l_EQPMT_ETC_RAWCOST_FC
8892 ,X_EQPMT_ETC_RAWCOST_PC => l_EQPMT_ETC_RAWCOST_PC
8893 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
8894 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
8895 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
8896 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8897 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8898 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8899 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8900 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8901 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8902 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8903 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8904 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8905 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8906 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8907 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8908 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8909 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8910 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8911 );
8912 -- Bug 3879461 Begin : Code nOt required now
8913 /*
8914 --update all previous record current flag to 'N'
8915 IF l_max_rollup_as_of_date2 < p_as_of_date --creating a new progress record.
8916 THEN
8917 UPDATE pa_progress_rollup
8918 SET current_flag = 'N'
8919 WHERE progress_rollup_id <> l_progress_rollup_id
8920 AND project_id = p_project_id
8921 AND object_id = p_task_id
8922 AND object_type = l_rollup_table1(i).object_type
8923 AND structure_type = 'WORKPLAN'
8924 AND structure_version_id is null
8925 ;
8926 END IF;
8927
8928
8929 --update progress_outdated_flag for summary tasks if there exists any ppc record
8930 --for the summary task
8931
8932 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8933 p_task_id => p_task_id
8934 ,p_object_id => p_task_id -- Bug 3764224
8935 ,p_as_of_date => p_as_of_date
8936 ,p_project_id => p_project_id
8937 ,p_object_version_id => l_rollup_table1(i).object_id
8938 ,p_object_type => l_rollup_table1(i).object_type
8939 ,p_structure_type => 'WORKPLAN'
8940 );
8941 */
8942 -- Bug 3879461 End
8943
8944 /* commenting out the code for bug 3851528
8945 IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8946 UPDATE pa_proj_elements
8947 SET progress_outdated_flag = 'Y'
8948 WHERE proj_element_id = p_task_id
8949 AND project_id = p_project_id
8950 AND object_type = l_rollup_table1(i).object_type;
8951 END IF;
8952 */
8953 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL
8954 END IF; -- IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
8955 END LOOP;
8956 END IF; --<< l_total_tasks >>
8957
8958 /* We need to confirm that whether this needs to be called for working progress rollup or not
8959 IF l_split_workplan = 'Y'
8960 THEN
8961 BEGIN
8962 l_project_ids.extend(1);
8963 l_project_ids(1) := p_project_id;
8964 l_struture_version_ids.extend(1);
8965 l_struture_version_ids(1) := p_structure_version_id;
8966 l_proj_thru_dates_tbl.extend(1);
8967 l_proj_thru_dates_tbl(1) := p_as_of_date;
8968 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
8969 (P_PROJECT_ID_TAB => l_project_ids,
8970 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
8971 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
8972 P_CALLING_CONTEXT => 'WP_PROGRESS',
8973 X_RETURN_STATUS => l_return_status,
8974 X_MSG_COUNT => l_msg_count,
8975 X_MSG_DATA => l_msg_data
8976 );
8977
8978
8979 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8980 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8981 p_msg_name => l_msg_data);
8982 x_msg_data := l_msg_data;
8983 x_return_status := 'E';
8984 x_msg_count := l_msg_count;
8985 RAISE FND_API.G_EXC_ERROR;
8986 END IF;
8987 EXCEPTION
8988 WHEN OTHERS THEN
8989 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
8990 p_procedure_name => 'update_ASGN_DLV_TO_TASK_ROLLUP_PVT',
8991 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
8992 RAISE FND_API.G_EXC_ERROR;
8993 END;
8994 END IF;*/
8995
8996
8997 x_return_status := FND_API.G_RET_STS_SUCCESS;
8998
8999 IF (p_commit = FND_API.G_TRUE) THEN
9000 COMMIT;
9001 END IF;
9002
9003 IF g1_debug_mode = 'Y' THEN
9004 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT End', x_Log_Level=> 3);
9005 END IF;
9006
9007
9008 x_return_status := FND_API.G_RET_STS_SUCCESS;
9009
9010 IF (p_commit = FND_API.G_TRUE) THEN
9011 COMMIT;
9012 END IF;
9013
9014
9015 IF g1_debug_mode = 'Y' THEN
9016 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT END', x_Log_Level=> 3);
9017 END IF;
9018
9019 EXCEPTION
9020 WHEN FND_API.G_EXC_ERROR THEN
9021 IF p_commit = FND_API.G_TRUE THEN
9022 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9023 END IF;
9024 x_return_status := FND_API.G_RET_STS_ERROR;
9025 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9026 IF p_commit = FND_API.G_TRUE THEN
9027 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9028 END IF;
9029 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9030 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
9031 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
9032 p_error_text => SUBSTRB(SQLERRM,1,120));
9033 WHEN OTHERS THEN
9034 IF p_commit = FND_API.G_TRUE THEN
9035 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9036 END IF;
9037 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9038 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
9039 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
9040 p_error_text => SUBSTRB(SQLERRM,1,120));
9041 raise;
9042 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
9043
9044
9045 --bug 3935699
9046
9047
9048 PROCEDURE convert_task_prog_to_assgn
9049 (
9050 p_api_version IN NUMBER :=1.0
9051 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- Since it is a private API so false
9052 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
9053 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
9054 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
9055 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
9056 ,p_debug_mode IN VARCHAR2 :='N'
9057 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9058 ,p_resource_list_mem_id IN NUMBER
9059 ,p_project_id IN NUMBER
9060 ,p_task_id IN NUMBER
9061 ,p_structure_version_id IN NUMBER
9062 ,p_as_of_date IN DATE -- Bug 3958686
9063 ,p_action IN VARCHAR2 -- Bug 3958686
9064 ,p_subprj_actual_exists IN VARCHAR2 := 'N' -- Bug 4490532
9065 ,p_object_version_id IN NUMBER := null -- Bug 4490532
9066 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9067 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
9068 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9069 ) IS
9070
9071 g1_debug_mode VARCHAR2(1);
9072 l_version_enabled_flag VARCHAR2(1);
9073
9074 x_percent_complete_id NUMBER;
9075 X_PROGRESS_ROLLUP_ID NUMBER;
9076
9077 l_api_name CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT' ;
9078 l_api_version CONSTANT NUMBER := 1.0 ;
9079 l_return_status VARCHAR2(1) ;
9080 l_msg_count NUMBER ;
9081 l_msg_data VARCHAR2(250) ;
9082 l_data VARCHAR2(250) ;
9083 l_msg_index_out NUMBER ;
9084 l_error_msg_code VARCHAR2(250) ;
9085 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
9086 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
9087
9088 -- Bug 3958686 : Commented
9089 /*
9090 CURSOR cur_chk_asgn
9091 IS
9092 SELECT 'x'
9093 FROM pa_progress_rollup
9094 WHERE object_id = p_resource_list_mem_id
9095 and structure_version_id = p_structure_version_id
9096 and proj_element_id = p_task_id
9097 and structure_type = 'WORKPLAN'
9098 and object_type = 'PA_ASSIGNMENTS'
9099 and current_flag = 'Y';
9100 */
9101
9102 -- Bug 4490532 Begin
9103 CURSOR c_get_subproject IS
9104 SELECT obj2.object_id_to1 subprj_str_ver_id
9105 , obj2.object_id_to2 subprj_id
9106 , ver.proj_element_id subprj_proj_elem_id
9107 from pa_object_relationships obj1
9108 , pa_object_relationships obj2
9109 , pa_proj_element_versions ver
9110 WHERE obj1.object_id_from1 = p_object_version_id
9111 AND obj1.relationship_type = 'S'
9112 AND obj1.object_id_to1 = obj2.object_id_from1
9113 AND obj2.relationship_type = 'LW'
9114 AND obj2.object_id_to1 = ver.element_version_id
9115 ;
9116 l_subprj_str_ver_id NUMBER;
9117 l_subprj_id NUMBER;
9118 l_subprj_proj_elem_id NUMBER;
9119
9120 -- We canot use directly the parent project
9121 -- from pji_fm_xbs_accum_tmp1 table
9122 -- because PJI table stores self amounts p_xxx
9123 -- only for PC and not for PFC.
9124
9125 CURSOR c_get_subproj_act(c_str_version_id NUMBER, c_project_id NUMBER, c_proj_element_id NUMBER) IS
9126 SELECT
9127 ETC_LABOR_HRS ESTIMATED_REMAINING_EFFORT
9128 ,ACT_LABOR_HRS PPL_ACT_EFFORT_TO_DATE
9129 ,ACT_EQUIP_HRS EQPMT_ACT_EFFORT_TO_DATE
9130 ,ETC_EQUIP_HRS EQPMT_ETC_EFFORT
9131 ,ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST OTH_ACT_COST_TO_DATE_FC
9132 ,ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST OTH_ACT_COST_TO_DATE_PC
9133 ,ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST OTH_ETC_COST_FC
9134 ,ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST OTH_ETC_COST_PC
9135 ,ACT_POU_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_FC
9136 ,ACT_PRJ_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_PC
9137 ,ETC_POU_LABOR_BRDN_COST PPL_ETC_COST_FC
9138 ,ETC_PRJ_LABOR_BRDN_COST PPL_ETC_COST_PC
9139 ,ACT_POU_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_FC
9140 ,ACT_PRJ_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_PC
9141 ,ETC_POU_EQUIP_BRDN_COST EQPMT_ETC_COST_FC
9142 ,ETC_PRJ_EQUIP_BRDN_COST EQPMT_ETC_COST_PC
9143 ,ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST OTH_ACT_RAWCOST_TO_DATE_FC
9144 ,ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST OTH_ACT_RAWCOST_TO_DATE_PC
9145 ,ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST OTH_ETC_RAWCOST_FC
9146 ,ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST OTH_ETC_RAWCOST_PC
9147 ,ACT_POU_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_FC
9148 ,ACT_PRJ_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_PC
9149 ,ETC_POU_LABOR_RAW_COST PPL_ETC_RAWCOST_FC
9150 ,ETC_PRJ_LABOR_RAW_COST PPL_ETC_RAWCOST_PC
9151 ,ACT_POU_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_FC
9152 ,ACT_PRJ_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_PC
9153 ,ETC_POU_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_FC
9154 ,ETC_PRJ_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_PC
9155 FROM pji_fm_xbs_accum_tmp1 pjitmp
9156 WHERE pjitmp.project_id = c_project_id
9157 AND struct_version_id = c_str_version_id
9158 AND project_element_id = c_proj_element_id
9159 AND plan_version_id > 0
9160 AND txn_currency_code is null
9161 AND calendar_type = 'A'
9162 AND res_list_member_id is null;
9163 l_subproj_rec c_get_subproj_act%ROWTYPE;
9164 -- Bug 4490532 End
9165
9166 -- Bug 4661350 begin : Introduced local variables for sum of subprojects values
9167 sp_ESTIMATED_REMAINING_EFFORT NUMBER;
9168 sp_PPL_ACT_EFFORT_TO_DATE NUMBER;
9169 sp_EQPMT_ACT_EFFORT_TO_DATE NUMBER;
9170 sp_EQPMT_ETC_EFFORT NUMBER;
9171 sp_OTH_ACT_COST_TO_DATE_FC NUMBER;
9172 sp_OTH_ACT_COST_TO_DATE_PC NUMBER;
9173 sp_OTH_ETC_COST_FC NUMBER;
9174 sp_OTH_ETC_COST_PC NUMBER;
9175 sp_PPL_ACT_COST_TO_DATE_FC NUMBER;
9176 sp_PPL_ACT_COST_TO_DATE_PC NUMBER;
9177 sp_PPL_ETC_COST_FC NUMBER;
9178 sp_PPL_ETC_COST_PC NUMBER;
9179 sp_EQPMT_ACT_COST_TO_DATE_FC NUMBER;
9180 sp_EQPMT_ACT_COST_TO_DATE_PC NUMBER;
9181 sp_EQPMT_ETC_COST_FC NUMBER;
9182 sp_EQPMT_ETC_COST_PC NUMBER;
9183 sp_OTH_ACT_RAWCOST_TO_DATE_FC NUMBER;
9184 sp_OTH_ACT_RAWCOST_TO_DATE_PC NUMBER;
9185 sp_OTH_ETC_RAWCOST_FC NUMBER;
9186 sp_OTH_ETC_RAWCOST_PC NUMBER;
9187 sp_PPL_ACT_RAWCOST_TO_DATE_FC NUMBER;
9188 sp_PPL_ACT_RAWCOST_TO_DATE_PC NUMBER;
9189 sp_PPL_ETC_RAWCOST_FC NUMBER;
9190 sp_PPL_ETC_RAWCOST_PC NUMBER;
9191 sp_EQPMT_ACT_RAWCOST_TODATE_FC NUMBER;
9192 sp_EQPMT_ACT_RAWCOST_TODATE_PC NUMBER;
9193 sp_EQPMT_ETC_RAWCOST_FC NUMBER;
9194 sp_EQPMT_ETC_RAWCOST_PC NUMBER;
9195 -- Bug 4661350 end
9196
9197 BEGIN
9198
9199 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9200
9201 IF g1_debug_mode = 'Y' THEN
9202 pa_debug.init_err_stack ('PA_PROGRESS_PVT.convert_task_prog_to_assgn');
9203 END IF;
9204
9205 IF (p_commit = FND_API.G_TRUE) THEN
9206 savepoint convert_task_prog_to_assgn;
9207 END IF;
9208
9209 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9210 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9211 END IF;
9212
9213 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9214 FND_MSG_PUB.initialize;
9215 END IF;
9216
9217 IF g1_debug_mode = 'Y' THEN
9218
9219 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_resource_list_mem_id='||p_resource_list_mem_id, x_Log_Level=> 3);
9220 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
9221 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
9222 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
9223 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
9224 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
9225 END IF;
9226
9227 --bug 3958686, start
9228
9229 IF p_action = 'SAVE' THEN
9230 delete from pa_percent_completes
9231 where project_id= p_project_id
9232 and task_id = p_task_id
9233 and object_id = p_resource_list_mem_id
9234 and object_type = 'PA_ASSIGNMENTS'
9235 and published_flag = 'N'
9236 and structure_type = 'WORKPLAN'
9237 ;
9238
9239 delete from pa_progress_rollup
9240 where project_id= p_project_id
9241 and proj_element_id = p_task_id
9242 and object_id = p_resource_list_mem_id
9243 and current_flag = 'W'
9244 and object_type = 'PA_ASSIGNMENTS'
9245 and structure_type = 'WORKPLAN'
9246 and structure_version_id is null
9247 ;
9248 END IF;
9249
9250
9251 IF p_action = 'PUBLISH' THEN
9252 delete from pa_percent_completes
9253 where project_id= p_project_id
9254 and task_id = p_task_id
9255 and object_id = p_resource_list_mem_id
9256 and object_type = 'PA_ASSIGNMENTS'
9257 and published_flag = 'N'
9258 and date_computed <= p_as_of_date
9259 and structure_type = 'WORKPLAN'
9260 ;
9261
9262 delete from pa_percent_completes
9263 WHERE project_id = p_project_id
9264 and object_id = p_resource_list_mem_id
9265 and task_id = p_task_id
9266 and trunc(date_computed) = trunc(p_as_of_date)
9267 and structure_type = 'WORKPLAN'
9268 and object_type = 'PA_ASSIGNMENTS'
9269 and published_flag = 'Y';
9270
9271
9272 delete from pa_progress_rollup
9273 where project_id= p_project_id
9274 and proj_element_id = p_task_id
9275 and object_id = p_resource_list_mem_id
9276 and object_type = 'PA_ASSIGNMENTS'
9277 and current_flag = 'W'
9278 and as_of_date <= p_as_of_date
9279 and structure_type = 'WORKPLAN'
9280 and structure_version_id is null
9281 ;
9282
9283 delete from pa_progress_rollup
9284 WHERE project_id = p_project_id
9285 and object_id = p_resource_list_mem_id
9286 and structure_version_id is null
9287 and proj_element_id = p_task_id
9288 and trunc(as_of_date) = trunc(p_as_of_date)
9289 and structure_type = 'WORKPLAN'
9290 and object_type = 'PA_ASSIGNMENTS'
9291 and current_flag in ('Y', 'N');
9292
9293 end if;
9294
9295 --bug 3958686, end
9296
9297 --Create records in percent completes and rollup table for new assignment.
9298
9299
9300 -- Added update code to set current_flag as N otherwise upon publishinh it will give error
9301 -- ORA-00001: unique constraint (PA.PA_BUDGET_LINES_U1) violated in Package PA_FP_MAINTAIN_ACTUAL_PUB Procedure MAINTAIN_ACTUAL_AMT_RA
9302 -- Patched thru Bug 4183307
9303 IF p_action = 'PUBLISH' THEN
9304 UPDATE pa_percent_completes
9305 SET current_flag = 'N'
9306 WHERE project_id = p_project_id
9307 AND object_id = p_resource_list_mem_id
9308 AND task_id = p_task_id
9309 AND current_flag = 'Y'
9310 AND object_type = 'PA_ASSIGNMENTS';
9311
9312 UPDATE pa_progress_rollup
9313 SET current_flag = 'N'
9314 WHERE project_id = p_project_id
9315 AND object_id = p_resource_list_mem_id
9316 AND proj_element_id = p_task_id
9317 AND current_flag = 'Y'
9318 AND object_type = 'PA_ASSIGNMENTS'
9319 AND structure_version_id is null
9320 AND structure_type = 'WORKPLAN'
9321 ;
9322 END IF;
9323
9324 -- Bug 4490532 Begin
9325 IF g1_debug_mode = 'Y' THEN
9326 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_subprj_actual_exists='||p_subprj_actual_exists, x_Log_Level=> 3);
9327 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
9328 END IF;
9329 l_subproj_rec := null;
9330 IF p_subprj_actual_exists = 'Y' THEN
9331 -- Bug 4661350 : Converted to FOR loop to support multiple sub projects
9332 --OPEN c_get_subproject;
9333 --FETCH c_get_subproject INTO l_subprj_str_ver_id, l_subprj_id, l_subprj_proj_elem_id;
9334 --CLOSE c_get_subproject;
9335
9336 FOR l_rec IN c_get_subproject LOOP
9337
9338 l_subproj_rec := null;
9339
9340 OPEN c_get_subproj_act(l_rec.subprj_str_ver_id, l_rec.subprj_id, l_rec.subprj_proj_elem_id);
9341 FETCH c_get_subproj_act INTO l_subproj_rec;
9342 CLOSE c_get_subproj_act;
9343 -- Bug 4661350 : introduced local variable to store subprojects sum value
9344
9345 sp_ESTIMATED_REMAINING_EFFORT := nvl(sp_ESTIMATED_REMAINING_EFFORT,0) + nvl(l_subproj_rec.ESTIMATED_REMAINING_EFFORT,0);
9346 sp_PPL_ACT_EFFORT_TO_DATE := nvl(sp_PPL_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.PPL_ACT_EFFORT_TO_DATE,0);
9347 sp_EQPMT_ACT_EFFORT_TO_DATE := nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
9348 sp_EQPMT_ETC_EFFORT := nvl(sp_EQPMT_ETC_EFFORT,0) + nvl(l_subproj_rec.EQPMT_ETC_EFFORT,0);
9349 sp_OTH_ACT_COST_TO_DATE_FC := nvl(sp_OTH_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.OTH_ACT_COST_TO_DATE_FC,0);
9350 sp_OTH_ACT_COST_TO_DATE_PC := nvl(sp_OTH_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.OTH_ACT_COST_TO_DATE_PC,0);
9351 sp_OTH_ETC_COST_FC := nvl(sp_OTH_ETC_COST_FC,0) + nvl(l_subproj_rec.OTH_ETC_COST_FC,0);
9352 sp_OTH_ETC_COST_PC := nvl(sp_OTH_ETC_COST_PC,0) + nvl(l_subproj_rec.OTH_ETC_COST_PC,0);
9353 sp_PPL_ACT_COST_TO_DATE_FC := nvl(sp_PPL_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.PPL_ACT_COST_TO_DATE_FC,0);
9354 sp_PPL_ACT_COST_TO_DATE_PC := nvl(sp_PPL_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.PPL_ACT_COST_TO_DATE_PC,0);
9355 sp_PPL_ETC_COST_FC := nvl(sp_PPL_ETC_COST_FC,0) + nvl(l_subproj_rec.PPL_ETC_COST_FC,0);
9356 sp_PPL_ETC_COST_PC := nvl(sp_PPL_ETC_COST_PC,0) + nvl(l_subproj_rec.PPL_ETC_COST_PC,0);
9357 sp_EQPMT_ACT_COST_TO_DATE_FC := nvl(sp_EQPMT_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.EQPMT_ACT_COST_TO_DATE_FC,0);
9358 sp_EQPMT_ACT_COST_TO_DATE_PC := nvl(sp_EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
9359 sp_EQPMT_ETC_COST_FC := nvl(sp_EQPMT_ETC_COST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_FC,0);
9360 sp_EQPMT_ETC_COST_PC := nvl(sp_EQPMT_ETC_COST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_PC,0);
9361 sp_OTH_ACT_RAWCOST_TO_DATE_FC := nvl(sp_OTH_ACT_RAWCOST_TO_DATE_FC,0) + nvl(l_subproj_rec.OTH_ACT_RAWCOST_TO_DATE_FC,0);
9362 sp_OTH_ACT_RAWCOST_TO_DATE_PC := nvl(sp_OTH_ACT_RAWCOST_TO_DATE_PC,0) + nvl(l_subproj_rec.OTH_ACT_RAWCOST_TO_DATE_PC,0);
9363 sp_OTH_ETC_RAWCOST_FC := nvl(sp_OTH_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_FC,0);
9364 sp_OTH_ETC_RAWCOST_PC := nvl(sp_OTH_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_PC,0);
9365 sp_PPL_ACT_RAWCOST_TO_DATE_FC := nvl(sp_PPL_ACT_RAWCOST_TO_DATE_FC,0) + nvl(l_subproj_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
9366 sp_PPL_ACT_RAWCOST_TO_DATE_PC := nvl(sp_PPL_ACT_RAWCOST_TO_DATE_PC,0) + nvl(l_subproj_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
9367 sp_PPL_ETC_RAWCOST_FC := nvl(sp_PPL_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_FC,0);
9368 sp_PPL_ETC_RAWCOST_PC := nvl(sp_PPL_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_PC,0);
9369 sp_EQPMT_ACT_RAWCOST_TODATE_FC := nvl(sp_EQPMT_ACT_RAWCOST_TODATE_FC,0) + nvl(l_subproj_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC,0);
9370 sp_EQPMT_ACT_RAWCOST_TODATE_PC := nvl(sp_EQPMT_ACT_RAWCOST_TODATE_PC,0) + nvl(l_subproj_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC,0);
9371 sp_EQPMT_ETC_RAWCOST_FC := nvl(sp_EQPMT_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_FC,0);
9372 sp_EQPMT_ETC_RAWCOST_PC := nvl(sp_EQPMT_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_PC,0);
9373 END LOOP;
9374
9375 END IF;
9376 -- Bug 4490532 End
9377
9378
9379 select PA_PERCENT_COMPLETES_S.nextval
9380 into x_percent_complete_id
9381 from dual;
9382
9383 select PA_PROGRESS_ROLLUP_S.nextval
9384 into X_PROGRESS_ROLLUP_ID
9385 from dual;
9386 IF g1_debug_mode = 'Y' THEN
9387 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Before Inserting into pa_percent_completes', x_Log_Level=> 3);
9388 END IF;
9389 INSERT INTO pa_percent_completes(
9390 TASK_ID
9391 ,DATE_COMPUTED
9392 ,LAST_UPDATE_DATE
9393 ,LAST_UPDATED_BY
9394 ,CREATION_DATE
9395 ,CREATED_BY
9396 ,LAST_UPDATE_LOGIN
9397 ,COMPLETED_PERCENTAGE
9398 ,DESCRIPTION
9399 ,PROJECT_ID
9400 ,PM_PRODUCT_CODE
9401 ,CURRENT_FLAG
9402 ,PERCENT_COMPLETE_ID
9403 ,OBJECT_ID
9404 ,OBJECT_VERSION_ID
9405 ,OBJECT_TYPE
9406 ,STATUS_CODE
9407 ,PROGRESS_STATUS_CODE
9408 ,ESTIMATED_START_DATE
9409 ,ESTIMATED_FINISH_DATE
9410 ,ACTUAL_START_DATE
9411 ,ACTUAL_FINISH_DATE
9412 ,PUBLISHED_FLAG
9413 ,PUBLISHED_BY_PARTY_ID
9414 ,RECORD_VERSION_NUMBER
9415 ,PROGRESS_COMMENT
9416 ,HISTORY_FLAG
9417 ,ATTRIBUTE_CATEGORY
9418 ,ATTRIBUTE1
9419 ,ATTRIBUTE2
9420 ,ATTRIBUTE3
9421 ,ATTRIBUTE4
9422 ,ATTRIBUTE5
9423 ,ATTRIBUTE6
9424 ,ATTRIBUTE7
9425 ,ATTRIBUTE8
9426 ,ATTRIBUTE9
9427 ,ATTRIBUTE10
9428 ,ATTRIBUTE11
9429 ,ATTRIBUTE12
9430 ,ATTRIBUTE13
9431 ,ATTRIBUTE14
9432 ,ATTRIBUTE15
9433 ,STRUCTURE_TYPE
9434 )
9435 SELECT
9436 TASK_ID
9437 ,DATE_COMPUTED
9438 ,SYSDATE
9439 ,l_user_id
9440 ,SYSDATE
9441 ,l_user_id
9442 ,l_login_id
9443 ,null --COMPLETED_PERCENTAGE
9444 ,null --DESCRIPTION
9445 ,PROJECT_ID
9446 ,PM_PRODUCT_CODE
9447 ,CURRENT_FLAG
9448 ,x_PERCENT_COMPLETE_ID
9449 ,p_resource_list_mem_id --OBJECT_ID
9450 ,OBJECT_VERSION_ID
9451 ,'PA_ASSIGNMENTS' --OBJECT_TYPE
9452 ,null --STATUS_CODE
9453 ,PROGRESS_STATUS_CODE
9454 ,ESTIMATED_START_DATE
9455 ,ESTIMATED_FINISH_DATE
9456 ,ACTUAL_START_DATE
9457 ,ACTUAL_FINISH_DATE
9458 ,PUBLISHED_FLAG
9459 ,PUBLISHED_BY_PARTY_ID
9460 ,RECORD_VERSION_NUMBER
9461 ,PROGRESS_COMMENT
9462 ,HISTORY_FLAG
9463 ,ATTRIBUTE_CATEGORY
9464 ,ATTRIBUTE1
9465 ,ATTRIBUTE2
9466 ,ATTRIBUTE3
9467 ,ATTRIBUTE4
9468 ,ATTRIBUTE5
9469 ,ATTRIBUTE6
9470 ,ATTRIBUTE7
9471 ,ATTRIBUTE8
9472 ,ATTRIBUTE9
9473 ,ATTRIBUTE10
9474 ,ATTRIBUTE11
9475 ,ATTRIBUTE12
9476 ,ATTRIBUTE13
9477 ,ATTRIBUTE14
9478 ,ATTRIBUTE15
9479 ,STRUCTURE_TYPE
9480 FROM pa_percent_completes
9481 WHERE project_id = p_project_id
9482 and object_id = p_task_id
9483 and task_id = p_task_id
9484 and structure_type = 'WORKPLAN'
9485 and trunc(date_computed) = trunc(p_as_of_date)
9486 --and published_flag = 'Y' --bug 3958686
9487 --and current_flag = 'Y'
9488 and ((p_action = 'SAVE' and published_flag = 'N')
9489 or (p_action = 'PUBLISH' and published_flag = 'Y' and current_flag = 'Y'))
9490 ;
9491
9492 IF g1_debug_mode = 'Y' THEN
9493 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Done Inserting into pa_percent_completes', x_Log_Level=> 3);
9494 END IF;
9495 -- Bug 4490532 : Subtracting the subproject amounts if available.
9496 -- Bug 4661350 : Using newly introduced local variable to store subprojects sum value
9497 INSERT INTO pa_progress_rollup(
9498 PROGRESS_ROLLUP_ID
9499 ,PERCENT_COMPLETE_ID
9500 ,PROJECT_ID
9501 ,OBJECT_ID
9502 ,OBJECT_TYPE
9503 ,AS_OF_DATE
9504 ,OBJECT_VERSION_ID
9505 ,LAST_UPDATE_DATE
9506 ,LAST_UPDATED_BY
9507 ,CREATION_DATE
9508 ,CREATED_BY
9509 ,PROGRESS_STATUS_CODE
9510 ,LAST_UPDATE_LOGIN
9511 ,INCREMENTAL_WORK_QUANTITY
9512 ,CUMULATIVE_WORK_QUANTITY
9513 ,BASE_PERCENT_COMPLETE
9514 ,EFF_ROLLUP_PERCENT_COMP
9515 ,COMPLETED_PERCENTAGE
9516 ,ESTIMATED_START_DATE
9517 ,ESTIMATED_FINISH_DATE
9518 ,ACTUAL_START_DATE
9519 ,ACTUAL_FINISH_DATE
9520 ,ESTIMATED_REMAINING_EFFORT
9521 ,RECORD_VERSION_NUMBER
9522 ,BASE_PERCENT_COMP_DERIV_CODE
9523 ,BASE_PROGRESS_STATUS_CODE
9524 ,EFF_ROLLUP_PROG_STAT_CODE
9525 ,STRUCTURE_TYPE
9526 ,PROJ_ELEMENT_ID
9527 ,STRUCTURE_VERSION_ID
9528 ,PPL_ACT_EFFORT_TO_DATE
9529 ,EQPMT_ACT_EFFORT_TO_DATE
9530 ,EQPMT_ETC_EFFORT
9531 ,OTH_ACT_COST_TO_DATE_TC
9532 ,OTH_ACT_COST_TO_DATE_FC
9533 ,OTH_ACT_COST_TO_DATE_PC
9534 ,OTH_ETC_COST_TC
9535 ,OTH_ETC_COST_FC
9536 ,OTH_ETC_COST_PC
9537 ,PPL_ACT_COST_TO_DATE_TC
9538 ,PPL_ACT_COST_TO_DATE_FC
9539 ,PPL_ACT_COST_TO_DATE_PC
9540 ,PPL_ETC_COST_TC
9541 ,PPL_ETC_COST_FC
9542 ,PPL_ETC_COST_PC
9543 ,EQPMT_ACT_COST_TO_DATE_TC
9544 ,EQPMT_ACT_COST_TO_DATE_FC
9545 ,EQPMT_ACT_COST_TO_DATE_PC
9546 ,EQPMT_ETC_COST_TC
9547 ,EQPMT_ETC_COST_FC
9548 ,EQPMT_ETC_COST_PC
9549 ,EARNED_VALUE
9550 ,TASK_WT_BASIS_CODE
9551 ,CURRENT_FLAG
9552 ,PROJFUNC_COST_RATE_TYPE
9553 ,PROJFUNC_COST_EXCHANGE_RATE
9554 ,PROJFUNC_COST_RATE_DATE
9555 ,PROJ_COST_RATE_TYPE
9556 ,PROJ_COST_EXCHANGE_RATE
9557 ,PROJ_COST_RATE_DATE
9558 ,TXN_CURRENCY_CODE
9559 ,PROG_PA_PERIOD_NAME
9560 ,PROG_GL_PERIOD_NAME
9561 ,OTH_QUANTITY_TO_DATE
9562 ,OTH_ETC_QUANTITY
9563 ,OTH_ACT_RAWCOST_TO_DATE_TC
9564 ,OTH_ACT_RAWCOST_TO_DATE_FC
9565 ,OTH_ACT_RAWCOST_TO_DATE_PC
9566 ,OTH_ETC_RAWCOST_TC
9567 ,OTH_ETC_RAWCOST_FC
9568 ,OTH_ETC_RAWCOST_PC
9569 ,PPL_ACT_RAWCOST_TO_DATE_TC
9570 ,PPL_ACT_RAWCOST_TO_DATE_FC
9571 ,PPL_ACT_RAWCOST_TO_DATE_PC
9572 ,PPL_ETC_RAWCOST_TC
9573 ,PPL_ETC_RAWCOST_FC
9574 ,PPL_ETC_RAWCOST_PC
9575 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9576 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
9577 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
9578 ,EQPMT_ETC_RAWCOST_TC
9579 ,EQPMT_ETC_RAWCOST_FC
9580 ,EQPMT_ETC_RAWCOST_PC
9581 )
9582 SELECT
9583 X_PROGRESS_ROLLUP_ID
9584 ,x_percent_complete_id
9585 ,PROJECT_ID
9586 ,p_resource_list_mem_id
9587 ,'PA_ASSIGNMENTS'
9588 ,AS_OF_DATE
9589 ,OBJECT_VERSION_ID
9590 ,SYSDATE
9591 ,LAST_UPDATED_BY
9592 ,SYSDATE
9593 ,CREATED_BY
9594 ,PROGRESS_STATUS_CODE
9595 ,LAST_UPDATE_LOGIN
9596 ,null --INCREMENTAL_WORK_QUANTITY
9597 ,null --CUMULATIVE_WORK_QUANTITY
9598 ,null --BASE_PERCENT_COMPLETE
9599 ,null --EFF_ROLLUP_PERCENT_COMP
9600 ,null --COMPLETED_PERCENTAGE
9601 ,ESTIMATED_START_DATE
9602 ,ESTIMATED_FINISH_DATE
9603 ,ACTUAL_START_DATE
9604 ,ACTUAL_FINISH_DATE
9605 ,ESTIMATED_REMAINING_EFFORT - nvl(sp_ESTIMATED_REMAINING_EFFORT,0)
9606 ,1
9607 ,null --BASE_PERCENT_COMP_DERIV_CODE
9608 ,BASE_PROGRESS_STATUS_CODE
9609 ,null --EFF_ROLLUP_PROG_STAT_CODE
9610 ,STRUCTURE_TYPE
9611 ,PROJ_ELEMENT_ID
9612 ,STRUCTURE_VERSION_ID
9613 ,PPL_ACT_EFFORT_TO_DATE- nvl(sp_PPL_ACT_EFFORT_TO_DATE,0)
9614 ,EQPMT_ACT_EFFORT_TO_DATE- nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0)
9615 ,EQPMT_ETC_EFFORT- nvl(sp_EQPMT_ETC_EFFORT,0)
9616 ,OTH_ACT_COST_TO_DATE_TC
9617 ,OTH_ACT_COST_TO_DATE_FC- nvl(sp_OTH_ACT_COST_TO_DATE_FC,0)
9618 ,OTH_ACT_COST_TO_DATE_PC- nvl(sp_OTH_ACT_COST_TO_DATE_PC,0)
9619 ,OTH_ETC_COST_TC
9620 ,OTH_ETC_COST_FC- nvl(sp_OTH_ETC_COST_FC,0)
9621 ,OTH_ETC_COST_PC- nvl(sp_OTH_ETC_COST_PC,0)
9622 ,PPL_ACT_COST_TO_DATE_TC
9623 ,PPL_ACT_COST_TO_DATE_FC- nvl(sp_PPL_ACT_COST_TO_DATE_FC,0)
9624 ,PPL_ACT_COST_TO_DATE_PC- nvl(sp_PPL_ACT_COST_TO_DATE_PC,0)
9625 ,PPL_ETC_COST_TC
9626 ,PPL_ETC_COST_FC- nvl(sp_PPL_ETC_COST_FC,0)
9627 ,PPL_ETC_COST_PC- nvl(sp_PPL_ETC_COST_PC,0)
9628 ,EQPMT_ACT_COST_TO_DATE_TC
9629 ,EQPMT_ACT_COST_TO_DATE_FC- nvl(sp_EQPMT_ACT_COST_TO_DATE_FC,0)
9630 ,EQPMT_ACT_COST_TO_DATE_PC- nvl(sp_EQPMT_ACT_COST_TO_DATE_PC,0)
9631 ,EQPMT_ETC_COST_TC
9632 ,EQPMT_ETC_COST_FC- nvl(sp_EQPMT_ETC_COST_FC,0)
9633 ,EQPMT_ETC_COST_PC- nvl(sp_EQPMT_ETC_COST_PC,0)
9634 ,EARNED_VALUE
9635 ,TASK_WT_BASIS_CODE
9636 ,CURRENT_FLAG
9637 ,PROJFUNC_COST_RATE_TYPE
9638 ,PROJFUNC_COST_EXCHANGE_RATE
9639 ,PROJFUNC_COST_RATE_DATE
9640 ,PROJ_COST_RATE_TYPE
9641 ,PROJ_COST_EXCHANGE_RATE
9642 ,PROJ_COST_RATE_DATE
9643 ,TXN_CURRENCY_CODE
9644 ,PROG_PA_PERIOD_NAME
9645 ,PROG_GL_PERIOD_NAME
9646 ,OTH_QUANTITY_TO_DATE
9647 ,OTH_ETC_QUANTITY
9648 ,OTH_ACT_RAWCOST_TO_DATE_TC
9649 ,OTH_ACT_RAWCOST_TO_DATE_FC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_FC,0)
9650 ,OTH_ACT_RAWCOST_TO_DATE_PC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_PC,0)
9651 ,OTH_ETC_RAWCOST_TC
9652 ,OTH_ETC_RAWCOST_FC- nvl(sp_OTH_ETC_RAWCOST_FC,0)
9653 ,OTH_ETC_RAWCOST_PC- nvl(sp_OTH_ETC_RAWCOST_PC,0)
9654 ,PPL_ACT_RAWCOST_TO_DATE_TC
9655 ,PPL_ACT_RAWCOST_TO_DATE_FC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_FC,0)
9656 ,PPL_ACT_RAWCOST_TO_DATE_PC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_PC,0)
9657 ,PPL_ETC_RAWCOST_TC
9658 ,PPL_ETC_RAWCOST_FC- nvl(sp_PPL_ETC_RAWCOST_FC,0)
9659 ,PPL_ETC_RAWCOST_PC- nvl(sp_PPL_ETC_RAWCOST_PC,0)
9660 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9661 ,EQPMT_ACT_RAWCOST_TO_DATE_FC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_FC,0)
9662 ,EQPMT_ACT_RAWCOST_TO_DATE_PC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_PC,0)
9663 ,EQPMT_ETC_RAWCOST_TC
9664 ,EQPMT_ETC_RAWCOST_FC- nvl(sp_EQPMT_ETC_RAWCOST_FC,0)
9665 ,EQPMT_ETC_RAWCOST_PC- nvl(sp_EQPMT_ETC_RAWCOST_PC,0)
9666 FROM pa_progress_rollup
9667 WHERE project_id = p_project_id
9668 and object_id = p_task_id
9669 and structure_version_id is NULL
9670 and proj_element_id = p_task_id
9671 and structure_type = 'WORKPLAN'
9672 --and current_flag = 'Y'; --bug 3958686
9673 and trunc(as_of_date) = trunc(p_as_of_date)
9674 and ((p_action = 'SAVE' and current_flag = 'W')
9675 or (p_action = 'PUBLISH' and current_flag in ('Y', 'N')));
9676
9677
9678 IF g1_debug_mode = 'Y' THEN
9679 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Done Inserting into pa_progress_rollup', x_Log_Level=> 3);
9680 END IF;
9681
9682 -- END IF;
9683
9684 x_return_status := FND_API.G_RET_STS_SUCCESS;
9685
9686 EXCEPTION
9687 WHEN FND_API.G_EXC_ERROR THEN
9688 IF p_commit = FND_API.G_TRUE THEN
9689 rollback to convert_task_prog_to_assgn;
9690 END IF;
9691 x_return_status := FND_API.G_RET_STS_ERROR;
9692 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9693 IF p_commit = FND_API.G_TRUE THEN
9694 rollback to convert_task_prog_to_assgn;
9695 END IF;
9696 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9697 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
9698 p_procedure_name => 'convert_task_prog_to_assgn',
9699 p_error_text => SUBSTRB(SQLERRM,1,120));
9700 WHEN OTHERS THEN
9701 IF p_commit = FND_API.G_TRUE THEN
9702 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9703 END IF;
9704 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9705 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
9706 p_procedure_name => 'convert_task_prog_to_assgn',
9707 p_error_text => SUBSTRB(SQLERRM,1,120));
9708 raise;
9709
9710 END convert_task_prog_to_assgn;
9711
9712
9713 --bug 4046422, moved this api from PAFPCPFB.pls to this package
9714 /*=============================================================================
9715 This is a private api that copies progress/actuals from one workplan version
9716 to another with in the project. Functionally this is called to copy progress
9717 from last published version while publishing a new version
9718
9719 p_calling_context will have values WP_PROGRESS and WP_APPLY_PROGRESS_TO_WORKING.
9720 ==============================================================================*/
9721
9722 PROCEDURE copy_actuals_for_workplan(
9723 p_calling_context IN VARCHAR2 DEFAULT 'WP_PROGRESS'
9724 ,p_project_id IN pa_projects_all.project_id%TYPE
9725 ,p_source_struct_ver_id IN pa_proj_element_versions.element_version_id%TYPE
9726 ,p_target_struct_ver_id IN pa_proj_element_versions.element_version_id%TYPE
9727 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9728 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
9729 ,x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
9730 AS
9731
9732 --Start of variables used for debugging
9733
9734 l_return_status VARCHAR2(1);
9735 l_msg_count NUMBER := 0;
9736 l_msg_data VARCHAR2(2000);
9737 l_data VARCHAR2(2000);
9738 l_msg_index_out NUMBER;
9739 l_debug_mode VARCHAR2(30);
9740
9741 --End of variables used for debugging
9742
9743 l_res_list_mismatch_flag VARCHAR2(1);
9744 l_target_people_rlm_id pa_resource_list_members.resource_list_member_id%TYPE;
9745
9746 CURSOR budget_version_info_cur(c_str_ver_id NUMBER) IS
9747 SELECT resource_list_id,
9748 etc_start_date,
9749 budget_version_id
9750 FROM pa_budget_versions
9751 WHERE project_id = p_project_id
9752 AND wp_version_flag = 'Y'
9753 AND project_structure_version_id = c_str_ver_id;
9754
9755 l_source_str_ver_info_rec budget_version_info_cur%ROWTYPE;
9756 l_target_str_ver_info_rec budget_version_info_cur%ROWTYPE;
9757
9758 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9759 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9760 l_proj_thru_dates_tbl SYSTEM.PA_DATE_TBL_TYPE:= SYSTEM.PA_DATE_TBL_TYPE();
9761 l_no_of_recs_for_processing NUMBER;--Bug 3953743
9762
9763 /* Begin code to fix Bug # 4144300. */
9764
9765 CURSOR cur_ppabpt(c_budget_version_id NUMBER, t_budget_version_id NUMBER) IS
9766 SELECT source.project_id PROJECT_ID
9767 ,p_target_struct_ver_id STRUCTURE_VERSION_ID
9768 ,source.task_id TASK_ID
9769 ,target.resource_assignment_id RESOURCE_ASSIGNMENT_ID
9770 ,bl.txn_init_burdened_cost ACTUAL_COST
9771 ,bl.init_quantity ACTUAL_EFFORT
9772 ,bl.period_name PERIOD_NAME
9773 ,bl.txn_currency_code TXN_CURRENCY_CODE
9774 ,bl.project_init_burdened_cost ACTUAL_COST_PC
9775 ,bl.init_burdened_cost ACTUAL_COST_FC
9776 ,bl.txn_init_raw_cost ACTUAL_RAWCOST
9777 ,bl.project_init_raw_cost ACTUAL_RAWCOST_PC
9778 ,bl.init_raw_cost ACTUAL_RAWCOST_FC
9779 ,bl.start_date START_DATE
9780 ,bl.end_date END_DATE
9781 ,source.resource_list_member_id RESOURCE_LIST_MEMBER_ID
9782 ,source.cbs_element_id CBS_ELEMENT_ID
9783 FROM pa_resource_assignments source,
9784 pa_resource_assignments target,
9785 pa_budget_lines bl
9786 WHERE bl.resource_assignment_id = source.resource_assignment_id
9787 and source.budget_version_id = c_budget_version_id
9788 and target.budget_version_id = t_budget_version_id
9789 and target.resource_list_member_id = decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id, l_target_people_rlm_id)
9790 AND NVL(source.cbs_element_id,-1) = NVL(target.cbs_element_id,-1)-- Added for bug 16895485
9791 and source.task_id = target.task_id
9792 and source.project_id = target.project_id
9793 and bl.budget_version_id = c_budget_version_id
9794 and (bl.init_quantity is not null or
9795 bl.txn_init_raw_cost is not null);
9796
9797 cur_ppabpt_rec cur_ppabpt%ROWTYPE;
9798
9799 I_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
9800 I_STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
9801 I_TASK_ID PA_PLSQL_DATATYPES.Num15TabTyp;
9802 I_RESOURCE_ASSIGNMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
9803 I_ACTUAL_COST PA_PLSQL_DATATYPES.AmtTabTyp;
9804 I_ACTUAL_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
9805 I_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
9806 I_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
9807 I_ACTUAL_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
9808 I_ACTUAL_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
9809 I_ACTUAL_RAWCOST PA_PLSQL_DATATYPES.AmtTabTyp;
9810 I_ACTUAL_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
9811 I_ACTUAL_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
9812 I_RESOURCE_LIST_MEMBER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
9813 I_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
9814 I_END_DATE PA_PLSQL_DATATYPES.DateTabTyp;
9815
9816 l_index NUMBER := null;
9817 i NUMBER := null;
9818
9819 /* End code to fix Bug # 4144300. */
9820
9821 /* Begin code to fix Bug # 4141850. */
9822
9823 cursor cur_as_of_date(p_project_id NUMBER) is
9824 select max(as_of_date)
9825 from pa_progress_rollup ppr
9826 where ppr.project_id = p_project_id
9827 and ppr.structure_version_id is null
9828 and ppr.structure_type = 'WORKPLAN'
9829 and ppr.current_flag <> 'W';
9830
9831 /* End code to fix Bug # 4141850. */
9832
9833 --bug 4255329
9834 l_as_of_date DATE;
9835 l_bv_id NUMBER;
9836 --end bug 4255329
9837 BEGIN
9838 x_msg_count := 0;
9839 x_return_status := FND_API.G_RET_STS_SUCCESS;
9840
9841 l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9842
9843 -- Set curr function
9844 pa_debug.set_curr_function(
9845 p_function =>'pa_fp_copy_from_pkg.copy_actuals_for_workplan'
9846 ,p_debug_mode => l_debug_mode );
9847
9848 -- Check for business rules violations
9849 IF l_debug_mode = 'Y' THEN
9850 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Validating input parameters', x_Log_Level=> 3);
9851 END IF;
9852
9853 IF (p_project_id IS NULL) OR
9854 (p_source_struct_ver_id IS NULL) OR
9855 (p_target_struct_ver_id IS NULL)
9856 THEN
9857
9858 IF l_debug_mode = 'Y' THEN
9859 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Project_id = '||p_project_id, x_Log_Level=> 3);
9860 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'p_source_struct_ver_id = '||p_source_struct_ver_id, x_Log_Level=> 3);
9861 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'p_target_struct_ver_id = '||p_target_struct_ver_id, x_Log_Level=> 3);
9862 END IF;
9863
9864 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
9865 p_msg_name => 'PA_FP_INV_PARAM_PASSED',
9866 p_token1 => 'PROCEDURENAME',
9867 p_value1 => 'pa_progress_pvt.copy_actuals_for_workplan');
9868
9869 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
9870
9871 END IF;
9872
9873 -- Fetch resource lists for both source and target structure versions
9874 OPEN budget_version_info_cur(p_source_struct_ver_id);
9875 FETCH budget_version_info_cur INTO l_source_str_ver_info_rec;
9876 CLOSE budget_version_info_cur;
9877
9878 OPEN budget_version_info_cur(p_target_struct_ver_id);
9879 FETCH budget_version_info_cur INTO l_target_str_ver_info_rec;
9880 CLOSE budget_version_info_cur;
9881
9882 -- If resource lists are different as of now the only possible case is that
9883 -- source resource list is uncategorized res list and target res list is a
9884 -- categorized res list in which case all the actuals from source would get
9885 -- mapped to the 'PEOPLE' res class rlm id of target res list
9886
9887 IF l_source_str_ver_info_rec.resource_list_id <> l_target_str_ver_info_rec.resource_list_id THEN
9888 l_res_list_mismatch_flag := 'Y';
9889
9890 BEGIN
9891 -- Fetch PEOPLE res class member id for the target target res list
9892 SELECT resource_list_member_id
9893 INTO l_target_people_rlm_id
9894 FROM pa_resource_list_members rlm,
9895 pa_resource_lists_all_bg rl
9896 WHERE rl.resource_list_id = l_target_str_ver_info_rec.resource_list_id
9897 AND rl.resource_list_id = rlm.resource_list_id
9898 AND object_type = Decode(control_flag, 'Y','RESOURCE_LIST','PROJECT')
9899 AND object_id = Decode(control_flag, 'Y',rl.resource_list_id,p_project_id)
9900 AND rlm.resource_class_flag = 'Y' -- Added for 13535688 CBS
9901 AND resource_class_code = 'PEOPLE';
9902 EXCEPTION
9903 WHEN OTHERS THEN
9904 RAISE;
9905 END;
9906 ELSE
9907 l_res_list_mismatch_flag := 'N';
9908 END IF;
9909
9910 -- Delete any existing records from the table first
9911 DELETE FROM PA_PROG_ACT_BY_PERIOD_TEMP;
9912
9913 -- Populate the PA_PROG_ACT_BY_PERIOD_TEMP table from pa_budget_lines init columns data
9914 -- Using task_id and resource list member id fetch mapping target resource assignment id
9915
9916 /* Begin code to fix Bug # 4144300. */
9917
9918 -- Populate the PL/SQL tables that will be used for the Bulk insert.
9919
9920 l_index := 0;
9921
9922 for cur_ppabpt_rec in cur_ppabpt(l_source_str_ver_info_rec.budget_version_id, l_target_str_ver_info_rec.budget_version_id)
9923 loop
9924
9925 l_index := l_index+1;
9926
9927 I_PROJECT_ID(l_index) := cur_ppabpt_rec.PROJECT_ID;
9928 I_STRUCTURE_VERSION_ID(l_index) := cur_ppabpt_rec.STRUCTURE_VERSION_ID;
9929 I_TASK_ID(l_index) := cur_ppabpt_rec.TASK_ID;
9930 I_RESOURCE_ASSIGNMENT_ID(l_index) := cur_ppabpt_rec.RESOURCE_ASSIGNMENT_ID;
9931 I_ACTUAL_COST(l_index) := cur_ppabpt_rec.ACTUAL_COST;
9932 I_ACTUAL_EFFORT(l_index) := cur_ppabpt_rec.ACTUAL_EFFORT;
9933 I_PERIOD_NAME(l_index) := cur_ppabpt_rec.PERIOD_NAME;
9934 I_TXN_CURRENCY_CODE(l_index) := cur_ppabpt_rec.TXN_CURRENCY_CODE;
9935 I_ACTUAL_COST_PC(l_index) := cur_ppabpt_rec.ACTUAL_COST_PC;
9936 I_ACTUAL_COST_FC(l_index) := cur_ppabpt_rec.ACTUAL_COST_FC;
9937 I_ACTUAL_RAWCOST(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST;
9938 I_ACTUAL_RAWCOST_PC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_PC;
9939 I_ACTUAL_RAWCOST_FC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_FC;
9940 I_RESOURCE_LIST_MEMBER_ID(l_index) := cur_ppabpt_rec.RESOURCE_LIST_MEMBER_ID;
9941 I_START_DATE(l_index) := cur_ppabpt_rec.start_date;
9942 I_END_DATE(l_index) := cur_ppabpt_rec.end_date;
9943
9944 end loop;
9945
9946 -- Bulk insert the PL/SQL tables into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
9947
9948 forall i in 1..l_index
9949
9950 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
9951 (
9952 PROJECT_ID
9953 ,STRUCTURE_VERSION_ID
9954 ,TASK_ID
9955 ,RESOURCE_ASSIGNMENT_ID
9956 ,AS_OF_DATE
9957 ,ACTUAL_COST
9958 ,ACTUAL_EFFORT
9959 ,PERIOD_NAME
9960 ,TXN_CURRENCY_CODE
9961 ,ACTUAL_COST_PC
9962 ,ACTUAL_COST_FC
9963 ,ACTUAL_RAWCOST
9964 ,ACTUAL_RAWCOST_PC
9965 ,ACTUAL_RAWCOST_FC
9966 ,RESOURCE_LIST_MEMBER_ID
9967 ,HIDDEN_RES_ASSGN_ID
9968 ,CURRENT_FLAG
9969 ,OBJECT_TYPE
9970 ,PERCENT_COMPLETE_ID
9971 ,ATTRIBUTE1
9972 ,ATTRIBUTE2
9973 ,ATTRIBUTE3
9974 ,ATTRIBUTE4
9975 ,ATTRIBUTE5
9976 ,ATTRIBUTE6
9977 ,start_date
9978 ,finish_date
9979 )
9980 VALUES
9981 (
9982 I_PROJECT_ID(i)
9983 ,I_STRUCTURE_VERSION_ID(i)
9984 ,I_TASK_ID(i)
9985 ,I_RESOURCE_ASSIGNMENT_ID(i)
9986 ,to_date(null)
9987 ,I_ACTUAL_COST(i)
9988 ,I_ACTUAL_EFFORT(i)
9989 ,I_PERIOD_NAME(i)
9990 ,I_TXN_CURRENCY_CODE(i)
9991 ,I_ACTUAL_COST_PC(i)
9992 ,I_ACTUAL_COST_FC(i)
9993 ,I_ACTUAL_RAWCOST(i)
9994 ,I_ACTUAL_RAWCOST_PC(i)
9995 ,I_ACTUAL_RAWCOST_FC(i)
9996 ,I_RESOURCE_LIST_MEMBER_ID(i)
9997 ,to_number(null)
9998 ,to_char(null)
9999 ,to_char(null)
10000 ,to_number(null)
10001 ,to_char(null)
10002 ,to_char(null)
10003 ,to_char(null)
10004 ,to_number(null)
10005 ,to_number(null)
10006 ,to_number(null)
10007 ,I_START_DATE(i)
10008 ,I_END_DATE(i)
10009 );
10010
10011 /* End code to fix Bug # 4144300. */
10012
10013 /* Begin commenting out the following code to fix Bug # 4144300.
10014
10015 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
10016 (
10017 PROJECT_ID
10018 ,STRUCTURE_VERSION_ID
10019 ,TASK_ID
10020 ,RESOURCE_ASSIGNMENT_ID
10021 ,AS_OF_DATE
10022 ,ACTUAL_COST
10023 ,ACTUAL_EFFORT
10024 ,PERIOD_NAME
10025 ,TXN_CURRENCY_CODE
10026 ,ACTUAL_COST_PC
10027 ,ACTUAL_COST_FC
10028 ,ACTUAL_RAWCOST
10029 ,ACTUAL_RAWCOST_PC
10030 ,ACTUAL_RAWCOST_FC
10031 ,RESOURCE_LIST_MEMBER_ID
10032 ,HIDDEN_RES_ASSGN_ID
10033 ,CURRENT_FLAG
10034 ,OBJECT_TYPE
10035 ,PERCENT_COMPLETE_ID
10036 ,ATTRIBUTE1
10037 ,ATTRIBUTE2
10038 ,ATTRIBUTE3
10039 ,ATTRIBUTE4
10040 ,ATTRIBUTE5
10041 ,ATTRIBUTE6
10042 )
10043 SELECT target.project_id PROJECT_ID
10044 ,p_target_struct_ver_id STRUCTURE_VERSION_ID
10045 ,target.task_id TASK_ID
10046 ,target.resource_assignment_id RESOURCE_ASSIGNMENT_ID
10047 ,NULL AS_OF_DATE
10048 ,bl.txn_init_burdened_cost ACTUAL_COST
10049 ,bl.init_quantity ACTUAL_EFFORT
10050 ,bl.period_name PERIOD_NAME
10051 ,bl.txn_currency_code TXN_CURRENCY_CODE
10052 ,bl.project_init_burdened_cost ACTUAL_COST_PC
10053 ,bl.init_burdened_cost ACTUAL_COST_FC
10054 ,bl.txn_init_raw_cost ACTUAL_RAWCOST
10055 ,bl.project_init_raw_cost ACTUAL_RAWCOST_PC
10056 ,bl.init_raw_cost ACTUAL_RAWCOST_FC
10057 ,target.resource_list_member_id RESOURCE_LIST_MEMBER_ID
10058 ,NULL HIDDEN_RES_ASSGN_ID
10059 ,NULL CURRENT_FLAG
10060 ,NULL OBJECT_TYPE
10061 ,NULL PERCENT_COMPLETE_ID
10062 ,NULL ATTRIBUTE1
10063 ,NULL ATTRIBUTE2
10064 ,NULL ATTRIBUTE3
10065 ,NULL ATTRIBUTE4
10066 ,NULL ATTRIBUTE5
10067 ,NULL ATTRIBUTE6
10068 FROM pa_resource_assignments source,
10069 pa_budget_lines bl,
10070 pa_resource_assignments target
10071 WHERE bl.budget_version_id = l_source_str_ver_info_rec.budget_version_id
10072 and bl.resource_assignment_id = source.resource_assignment_id
10073 AND target.budget_version_id = l_target_str_ver_info_rec.budget_version_id
10074 AND target.task_id = source.task_id
10075 AND target.resource_list_member_id =
10076 decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id,
10077 l_target_people_rlm_id)
10078 --bug 3956258
10079 AND 'Y' = PA_PROGRESS_UTILS.check_object_has_prog(
10080 source.project_id --p_project_id
10081 ,source.task_id --p_proj_element_id
10082 -- ,decode( source.ta_display_flag, 'N', source.task_id,source.resource_list_member_id) --p_object_id -- Fix for Bug # 4112283.
10083 ,source.resource_list_member_id -- Fix for Bug # 4112283.
10084 -- ,decode( source.ta_display_flag, 'N','PA_TASKS', 'PA_ASSIGNMENTS') --p_object_type -- Fix for Bug # 4112283.
10085 ,'PA_ASSIGNMENTS' -- Fix for Bug # 4112283.
10086 ,'WORKPLAN') --p_structure_type
10087
10088 --end bug 3956258
10089 ;
10090
10091 End commenting out the following code to fix Bug # 4144300. */
10092
10093 l_no_of_recs_for_processing := SQL%ROWCOUNT;
10094
10095 IF l_debug_mode = 'Y' THEN
10096 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'No of records inserted into PA_PROG_ACT_BY_PERIOD_TEMP '||l_no_of_recs_for_processing, x_Log_Level=> 3);
10097 END IF;
10098
10099 --Bug 3953743. If No records are inserted into the tmp table then the API need not be called at all.
10100 IF l_no_of_recs_for_processing > 0 THEN
10101
10102 -- Call api that either creates/updates existing budget lines using the temp table
10103 l_project_ids.extend(1);
10104 l_project_ids(1) := p_project_id;
10105 l_struture_version_ids.extend(1);
10106 l_struture_version_ids(1) := p_target_struct_ver_id;
10107 l_proj_thru_dates_tbl.extend(1);
10108
10109 /* Begin code to fix Bug # 4141850. */
10110
10111 -- l_proj_thru_dates_tbl(1) := (l_source_str_ver_info_rec.etc_start_date - 1);
10112
10113 open cur_as_of_date(p_project_id);
10114 fetch cur_as_of_date into l_proj_thru_dates_tbl(1);
10115 close cur_as_of_date;
10116
10117 /* End code to fix Bug # 4141850. */
10118 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
10119 (P_PROJECT_ID_TAB => l_project_ids,
10120 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
10121 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
10122 P_CALLING_CONTEXT => p_calling_context,
10123 X_RETURN_STATUS => l_return_status,
10124 X_MSG_COUNT => l_msg_count,
10125 X_MSG_DATA => l_msg_data
10126 );
10127
10128 IF l_return_status <> 'S' THEN
10129 IF l_debug_mode = 'Y' THEN
10130 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Called API MAINTAIN_ACTUAL_AMT_WRP api returned error', x_Log_Level=> 3);
10131 END IF;
10132
10133 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
10134 END IF;
10135
10136 --bug 4255329
10137 ELSE
10138
10139 IF l_debug_mode = 'Y' THEN
10140 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Opening cursor cur_as_of_date before updating BV etc start date', x_Log_Level=> 3);
10141 END IF;
10142
10143 open cur_as_of_date(p_project_id);
10144 fetch cur_as_of_date into l_as_of_date;
10145 close cur_as_of_date;
10146
10147 IF l_debug_mode = 'Y' THEN
10148 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
10149 END IF;
10150
10151 SELECT budget_version_id into l_bv_id
10152 FROM PA_BUDGET_VERSIONS
10153 WHERE project_id = P_PROJECT_ID
10154 AND project_structure_version_id = p_target_struct_ver_id
10155 AND nvl(wp_version_flag,'N') = 'Y';
10156
10157 IF l_debug_mode = 'Y' THEN
10158 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'l_bv_id='||l_bv_id, x_Log_Level=> 3);
10159 END IF;
10160
10161 UPDATE pa_budget_versions
10162 SET etc_start_date = l_as_of_date + 1
10163 WHERE budget_version_id = l_bv_id;
10164
10165 IF l_debug_mode = 'Y' THEN
10166 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Done with updating pa_budget_versions ETC start date', x_Log_Level=> 3);
10167 END IF;
10168
10169 --bug 4255329
10170
10171 END IF;--IF l_no_of_recs_for_processing > 0 THEN
10172
10173 IF l_debug_mode = 'Y' THEN
10174 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Exiting copy_actuals_for_workplan', x_Log_Level=> 3);
10175 END IF;
10176
10177 -- reset curr function
10178 pa_debug.reset_curr_function();
10179
10180 EXCEPTION
10181
10182 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
10183 l_msg_count := FND_MSG_PUB.count_msg;
10184 IF l_msg_count = 1 THEN
10185 PA_INTERFACE_UTILS_PUB.get_messages
10186 (p_encoded => FND_API.G_TRUE
10187 ,p_msg_index => 1
10188 ,p_msg_count => l_msg_count
10189 ,p_msg_data => l_msg_data
10190 ,p_data => l_data
10191 ,p_msg_index_out => l_msg_index_out);
10192
10193 x_msg_data := l_data;
10194 x_msg_count := l_msg_count;
10195 ELSE
10196 x_msg_count := l_msg_count;
10197 END IF;
10198
10199 x_return_status := FND_API.G_RET_STS_ERROR;
10200
10201 IF l_debug_mode = 'Y' THEN
10202 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Invalid Arguments Passed Or called api raised an error', x_Log_Level=> 3);
10203 END IF;
10204
10205 -- reset curr function
10206 pa_debug.reset_curr_function();
10207
10208 RETURN;
10209 WHEN Others THEN
10210 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10211 x_msg_count := 1;
10212 x_msg_data := SQLERRM;
10213
10214 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'pa_fp_copy_from_pkg'
10215 ,p_procedure_name => 'copy_actuals_for_workplan');
10216
10217 IF l_debug_mode = 'Y' THEN
10218 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Unexpected Error'||SQLERRM, x_Log_Level=> 3);
10219 END IF;
10220
10221 -- reset curr function
10222 pa_debug.Reset_Curr_Function();
10223
10224 RAISE;
10225 END copy_actuals_for_workplan;
10226
10227 -- Bug 4575855 : Added rollup_prog_from_subprojs
10228 PROCEDURE ROLLUP_PROG_FROM_SUBPROJS(
10229 p_api_version IN NUMBER :=1.0
10230 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10231 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10232 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10233 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10234 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10235 ,p_debug_mode IN VARCHAR2 :='N'
10236 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10237 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10238 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10239 ,x_return_status OUT NOCOPY VARCHAR2 -- 4565506 Added while merging
10240 ,x_msg_count OUT NOCOPY NUMBER -- 4565506 Added while merging
10241 ,x_msg_data OUT NOCOPY VARCHAR2 -- 4565506 Added while merging
10242 )
10243 IS
10244
10245 l_api_name CONSTANT VARCHAR2(30) := 'ROLLUP_PROG_FROM_SUBPROJS';
10246 l_api_version CONSTANT NUMBER := p_api_version;
10247 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10248 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10249 l_return_status VARCHAR2(1);
10250 l_msg_count NUMBER;
10251 l_msg_data VARCHAR2(250);
10252 g1_debug_mode VARCHAR2(1);
10253 /*
10254 CURSOR cur_select_grid
10255 IS
10256 SELECT distinct -- 4600547 Added distinct
10257 a.project_id
10258 , a.element_version_id
10259 , a.prg_level
10260 , ppr.as_of_date
10261 FROM pa_proj_element_versions a,
10262 pa_proj_elem_ver_structure b,
10263 pa_proj_structure_types ppst,
10264 pa_proj_element_versions c,
10265 pa_progress_rollup ppr
10266 WHERE
10267 c.project_id = p_project_id
10268 AND c.element_version_id = p_structure_version_id ---5095632
10269 AND c.prg_group = a.prg_group
10270 AND a.project_id = b.project_id
10271 AND a.element_version_id = b.element_version_id
10272 AND b.status_code = 'STRUCTURE_PUBLISHED'
10273 AND b.latest_eff_published_flag = 'Y'
10274 AND a.proj_element_id = ppst.proj_element_id
10275 AND ppst.structure_type_id =1
10276 AND a.prg_level > 1
10277 AND a.proj_element_id = ppr.object_id
10278 AND a.project_id = ppr.project_id
10279 AND ppr.object_type = 'PA_STRUCTURES'
10280 AND ppr.structure_version_id is null
10281 AND ppr.structure_type = 'WORKPLAN'
10282 AND ppr.current_flag = 'Y'
10283 order by a.prg_level desc; --select the lowest level of projects first.
10284 */
10285
10286 CURSOR cur_select_grid
10287 IS
10288 SELECT distinct -- 4600547 Added distinct
10289 a.project_id
10290 , a.element_version_id
10291 , a.prg_level
10292 , ppr.as_of_date
10293 FROM pa_proj_element_versions a,
10294 pa_proj_elem_ver_structure b,
10295 pa_proj_structure_types ppst,
10296 pa_proj_element_versions c,
10297 pa_progress_rollup ppr
10298 WHERE
10299 c.project_id = p_project_id
10300 AND c.element_version_id = p_structure_version_id -- Backported performance fix from R12 bug 5095632
10301 AND c.prg_group = a.prg_group
10302 AND a.project_id = b.project_id
10303 AND a.element_version_id = b.element_version_id
10304 AND b.status_code = 'STRUCTURE_PUBLISHED'
10305 AND b.latest_eff_published_flag = 'Y'
10306 AND a.proj_element_id = ppst.proj_element_id
10307 AND ppst.structure_type_id =1
10308 AND a.prg_level > 1
10309 AND a.proj_element_id = ppr.object_id
10310 AND a.project_id = ppr.project_id
10311 AND ppr.object_type = 'PA_STRUCTURES'
10312 AND ppr.structure_version_id is null
10313 AND ppr.structure_type = 'WORKPLAN'
10314 AND ppr.current_flag = 'Y'
10315 AND c.prg_group is not null --Bug 7607077
10316 AND (a.project_id = p_project_id OR a.project_id IN (
10317 -- Bottom up
10318 SELECT object_id_from2
10319 FROM pa_object_relationships
10320 START with object_id_to2 = p_project_id and relationship_type = 'LW'
10321 CONNECT BY PRIOR object_id_from2 = object_id_to2
10322 AND PRIOR relationship_type = relationship_type
10323 UNION
10324 -- Top down
10325 SELECT object_id_to2
10326 FROM pa_object_relationships
10327 START with object_id_from2 = p_project_id and relationship_type = 'LW'
10328 CONNECT BY PRIOR object_id_to2 = object_id_from2
10329 AND PRIOR relationship_type = relationship_type
10330 ))
10331 order by a.prg_level desc; --select the lowest level of projects first.
10332
10333 BEGIN
10334
10335 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10336
10337 IF g1_debug_mode = 'Y' THEN
10338 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10339 END IF;
10340
10341 IF g1_debug_mode = 'Y' THEN
10342 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS Start : Passed Parameters :', x_Log_Level=> 3);
10343 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10344 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
10345 END IF;
10346
10347 IF g1_debug_mode = 'Y' THEN
10348 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10349 END IF;
10350
10351 IF (p_commit = FND_API.G_TRUE) THEN
10352 savepoint rollup_prog_from_subprojs2;
10353 END IF;
10354
10355 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10356 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10357 END IF;
10358
10359 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10360 FND_MSG_PUB.initialize;
10361 END IF;
10362
10363 x_return_status := FND_API.G_RET_STS_SUCCESS;
10364
10365 FOR rec_subprojs IN cur_select_grid LOOP
10366 IF g1_debug_mode = 'Y' THEN
10367 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.project_id='||rec_subprojs.project_id, x_Log_Level=> 3);
10368 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.element_version_id='||rec_subprojs.element_version_id, x_Log_Level=> 3);
10369 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.as_of_date='||rec_subprojs.as_of_date, x_Log_Level=> 3);
10370 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling populate_pji_tab_for_plan', x_Log_Level=> 3);
10371 END IF;
10372
10373 pa_progress_pub.populate_pji_tab_for_plan(
10374 p_init_msg_list => FND_API.G_FALSE
10375 ,p_commit => FND_API.G_FALSE
10376 ,p_calling_module => p_calling_module
10377 ,p_project_id => rec_subprojs.project_id
10378 ,p_structure_version_id => rec_subprojs.element_version_id
10379 ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec_subprojs.project_id)
10380 ,p_structure_type => 'WORKPLAN'
10381 ,p_program_rollup_flag => 'Y'
10382 ,p_calling_context => 'SUMMARIZE'
10383 ,p_as_of_date => rec_subprojs.as_of_date
10384 ,x_return_status => x_return_status
10385 ,x_msg_count => x_msg_count
10386 ,x_msg_data => x_msg_data);
10387
10388 IF g1_debug_mode = 'Y' THEN
10389 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'After Calling populate_pji_tab_for_plan x_return_status='||x_return_status, x_Log_Level=> 3);
10390 END IF;
10391
10392
10393 IF x_return_status <> 'S' THEN
10394 RAISE FND_API.G_EXC_ERROR;
10395 END IF;
10396
10397 IF g1_debug_mode = 'Y' THEN
10398 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
10399 END IF;
10400
10401 pa_progress_pvt.program_rollup_pvt(
10402 p_init_msg_list => FND_API.G_FALSE
10403 ,p_commit => FND_API.G_FALSE
10404 ,p_validate_only => FND_API.G_FALSE
10405 ,p_project_id => rec_subprojs.project_id
10406 ,p_as_of_date => rec_subprojs.as_of_date
10407 ,p_structure_type => 'WORKPLAN'
10408 ,p_structure_ver_id => rec_subprojs.element_version_id
10409 ,x_return_status => x_return_status
10410 ,x_msg_count => x_msg_count
10411 ,x_msg_data => x_msg_data);
10412
10413 IF g1_debug_mode = 'Y' THEN
10414 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'After Calling program_rollup_pvt x_return_status='||x_return_status, x_Log_Level=> 3);
10415 END IF;
10416
10417 IF x_return_status <> 'S' THEN
10418 RAISE FND_API.G_EXC_ERROR;
10419 END IF;
10420 END LOOP;
10421
10422 IF (p_commit = FND_API.G_TRUE) THEN
10423 COMMIT;
10424 END IF;
10425 EXCEPTION
10426 when FND_API.G_EXC_ERROR then
10427 if p_commit = FND_API.G_TRUE then
10428 rollback to rollup_prog_from_subprojs2;
10429 end if;
10430 x_return_status := FND_API.G_RET_STS_ERROR;
10431 when FND_API.G_EXC_UNEXPECTED_ERROR then
10432 if p_commit = FND_API.G_TRUE then
10433 rollback to rollup_prog_from_subprojs2;
10434 end if;
10435 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10436 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
10437 p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10438 p_error_text => SUBSTRB(SQLERRM,1,120));
10439 when OTHERS then
10440 if p_commit = FND_API.G_TRUE then
10441 rollback to rollup_prog_from_subprojs2;
10442 end if;
10443 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10444 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
10445 p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10446 p_error_text => SUBSTRB(SQLERRM,1,120));
10447 raise;
10448 END ROLLUP_PROG_FROM_SUBPROJS;
10449
10450 --Added following procedure for MRup3 merge
10451 PROCEDURE UPD_PROG_RECS_STR_DELETE(p_project_id IN NUMBER,
10452 p_str_ver_id_to_del IN NUMBER,
10453 x_return_status OUT NOCOPY VARCHAR2,
10454 x_msg_count OUT NOCOPY NUMBER,
10455 x_msg_data OUT NOCOPY VARCHAR2) IS
10456
10457 cursor new_str_version_id is
10458 select ppevs.element_version_id
10459 from pa_proj_elem_ver_structure ppevs, pa_proj_structure_types ppst
10460 where ppevs.project_id = p_project_id
10461 and ppevs.proj_element_id = ppst.proj_element_id
10462 and ppst.structure_type_id = 1
10463 and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10464 and ppevs.PUBLISHED_DATE = (select min(ppevs.published_date)
10465 from pa_proj_elem_ver_structure ppevs,
10466 pa_proj_structure_types ppst
10467 where ppevs.project_id = p_project_id
10468 and ppevs.proj_element_id = ppst.proj_element_id
10469 and ppst.structure_type_id = 1
10470 and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10471 and ppevs.published_date > (select published_date
10472 from pa_proj_elem_ver_structure
10473 where project_id = p_project_id
10474 and element_version_id = p_str_ver_id_to_del));
10475
10476 l_str_ver_id number;
10477 -- Begin. Bug 5452282
10478 cursor obj_version_id (x_str_ver_id pa_proj_element_versions.element_version_id%type)is
10479 select ppev.element_version_id old_element_version_id,
10480 ppev1.element_version_id new_element_version_id,
10481 ppev.proj_element_id
10482 from pa_proj_element_versions ppev,
10483 pa_proj_element_versions ppev1
10484 where ppev.project_id = p_project_id
10485 and ppev.parent_structure_version_id = p_str_ver_id_to_del
10486 and ppev.proj_element_id = ppev1.proj_element_id
10487 and ppev1.parent_structure_version_id = x_str_ver_id;
10488
10489 l_old_element_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10490 l_new_element_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10491 l_proj_element_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10492 -- End. Bug 5452282
10493
10494 BEGIN
10495 x_return_status := 'S';
10496 open new_str_version_id;
10497 fetch new_str_version_id into l_str_ver_id;
10498 close new_str_version_id;
10499
10500 if (l_str_ver_id is null) then
10501 raise FND_API.G_EXC_ERROR;
10502 end if;
10503
10504 -- Begin bug 5452282
10505 open obj_version_id(l_str_ver_id);
10506 fetch obj_version_id bulk collect into l_old_element_version_id_tab,
10507 l_new_element_version_id_tab,
10508 l_proj_element_id_tab;
10509 close obj_version_id;
10510
10511 --- update pa_percent_completes table with new object_version_ids
10512 IF l_new_element_version_id_tab.count > 0 THEN
10513 --- update pa_percent_completes table with new object_version_ids
10514 Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10515 update pa_percent_completes ppc
10516 set object_version_id = l_new_element_version_id_tab(i)
10517 where project_id = p_project_id
10518 and task_id = l_proj_element_id_tab(i)
10519 and structure_type = 'WORKPLAN'
10520 and object_version_id = l_old_element_version_id_tab(i);
10521
10522 --- update pa_progress_rollup table with new object_version_ids
10523 Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10524 update pa_progress_rollup ppr
10525 set object_version_id = l_new_element_version_id_tab(i)
10526 where project_id = p_project_id
10527 and proj_element_id = l_proj_element_id_tab(i)
10528 and structure_type = 'WORKPLAN'
10529 and structure_version_id is null
10530 and object_version_id = l_old_element_version_id_tab(i);
10531 End if;
10532
10533 exception
10534 when FND_API.G_EXC_ERROR then
10535 x_return_status := 'E';
10536 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
10537 p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10538 p_error_text => 'This workplan structure cannot be deleted.');
10539
10540 when OTHERS then
10541 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10542 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
10543 p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10544 p_error_text => SUBSTRB(SQLERRM,1,120));
10545 raise;
10546
10547 END UPD_PROG_RECS_STR_DELETE;
10548
10549 PROCEDURE ROLLUP_PVT(
10550 p_api_version IN NUMBER :=1.0
10551 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10552 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10553 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10554 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10555 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10556 ,p_calling_mode IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10557 ,p_debug_mode IN VARCHAR2 :='N'
10558 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10559 ,p_progress_mode IN VARCHAR2 := 'FUTURE'
10560 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10561 ,p_object_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10562 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10563 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10564 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10565 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
10566 ,p_lowest_level_task IN VARCHAR2 := 'N'
10567 ,p_process_whole_tree IN VARCHAR2 := 'Y'
10568 ,p_structure_version_id IN NUMBER
10569 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
10570 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
10571 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
10572 ,p_rollup_entire_wbs IN VARCHAR2 := 'N'
10573 ,p_task_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
10574 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --maansari7/18 to be passed form apply lp progress to select regular planned amounts to send to schduling api for percent comnplete and earned value calculations.
10575 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, 3951024
10576 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10577 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10578 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10579 )
10580 IS
10581
10582 l_api_name CONSTANT VARCHAR(30) := 'ROLLUP_PVT';
10583 l_api_version CONSTANT NUMBER := 1.0 ;
10584 l_return_status VARCHAR2(1) ;
10585 l_msg_count NUMBER ;
10586 l_msg_data VARCHAR2(250) ;
10587 l_data VARCHAR2(250) ;
10588 l_msg_index_out NUMBER ;
10589 l_error_msg_code VARCHAR2(250) ;
10590 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
10591 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
10592 l_lowest_task VARCHAR2(1) ;
10593 l_published_structure VARCHAR2(1) ;
10594 l_task_version_id NUMBER ;
10595 l_rollup_table1 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
10596 l_rollup_table2 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
10597 l_index NUMBER := 0;
10598 l_parent_count NUMBER := 0;
10599 l_process_number NUMBER;
10600 l_wbs_level NUMBER ;
10601 l_action_allowed VARCHAR2(1) ;
10602 l_sharing_Enabled VARCHAR2(1) ;
10603 l_split_workplan VARCHAR2(1) ;
10604 l_structure_version_id NUMBER ;
10605 g1_debug_mode VARCHAR2(1) ;
10606 l_Rollup_Method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
10607
10608
10609 -- Rollup Cases
10610 -- 1. Workplan Publsihed Version Rollup.
10611 -- 2. Workplan Working Version Rollup.
10612 -- 3. Financial Structure Rollup.
10613 -- 4. Entire WBS using structure version id.
10614 -- 5. Program Rollup
10615
10616 --This cursor selects the parents of a given task.
10617
10618
10619 CURSOR cur_reverse_tree_update IS
10620 SELECT proj_element_id, object_id_to1, object_type
10621 FROM
10622 ( select object_id_from1, object_id_to1
10623 from pa_object_relationships
10624 where relationship_type ='S'
10625 and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
10626 and object_type_to = 'PA_TASKS'
10627 and p_rollup_entire_wbs='N'
10628 start with object_id_to1 = p_task_version_id
10629 and relationship_type = 'S'
10630 connect by prior object_id_from1 = object_id_to1
10631 and relationship_type = 'S'
10632 ) pobj
10633 , pa_proj_element_versions ppev
10634 WHERE element_version_id = object_id_to1
10635 and p_rollup_entire_wbs='N'
10636 --select structure
10637 UNION
10638 SELECT proj_element_id, element_version_id, object_type
10639 FROM pa_proj_element_versions
10640 WHERE element_version_id = p_structure_version_id
10641 and project_id = p_project_id
10642 and object_type = 'PA_STRUCTURES'
10643 and p_rollup_entire_wbs='N'
10644 UNION
10645 SELECT proj_element_id, element_version_id, object_type
10646 FROM pa_proj_element_versions
10647 WHERE project_id = p_project_id
10648 and parent_structure_version_id = p_structure_version_id
10649 and object_type IN ('PA_TASKS','PA_STRUCTURES')
10650 and p_rollup_entire_wbs='Y'
10651 ;
10652
10653
10654 l_mass_rollup_prog_exists_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10655 l_mass_rollup_prog_rec_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10656
10657 l_tsk_object_id_from1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10658 l_tsk_parent_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10659 l_tsk_object_id_to1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10660 l_tsk_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10661 l_tsk_wbs_level_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10662 l_tsk_weighting_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10663 l_tsk_roll_comp_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10664 l_tsk_over_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10665 l_tsk_as_of_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10666 l_tsk_actual_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10667 l_tsk_actual_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10668 l_tsk_est_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10669 l_tsk_est_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10670 l_tsk_rollup_weight1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10671 l_tsk_override_weight2_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10672 l_tsk_base_weight3_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10673 l_tsk_task_weight4_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10674 l_tsk_status_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10675 l_tsk_object_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10676 l_tsk_proj_element_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10677 l_tsk_ppl_act_eff_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10678 l_tsk_ppl_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10679 l_tsk_ppl_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10680 l_tsk_ppl_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10681 l_tsk_ppl_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10682 l_tsk_ppl_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10683 l_tsk_ppl_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10684 l_tsk_est_rem_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10685 l_tsk_ppl_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10686 l_tsk_ppl_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10687 l_tsk_ppl_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10688 l_tsk_ppl_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10689 l_tsk_ppl_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10690 l_tsk_ppl_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10691 l_tsk_eqpmt_act_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10692 l_tsk_eqpmt_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10693 l_tsk_eqpmt_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10694 l_tsk_eqpmt_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10695 l_tsk_eqpmt_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10696 l_tsk_eqpmt_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10697 l_tsk_eqpmt_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10698 l_tsk_eqpmt_etc_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10699 l_tsk_eqpmt_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10700 l_tsk_eqpmt_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10701 l_tsk_eqpmt_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10702 l_tsk_eqpmt_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10703 l_tsk_eqpmt_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10704 l_tsk_eqpmt_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10705 l_tsk_oth_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10706 l_tsk_oth_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10707 l_tsk_oth_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10708 l_tsk_oth_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10709 l_tsk_oth_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10710 l_tsk_oth_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10711 l_tsk_oth_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10712 l_tsk_oth_etc_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10713 l_tsk_oth_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10714 l_tsk_oth_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10715 l_tsk_oth_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10716 l_tsk_oth_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10717 l_tsk_oth_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10718 l_tsk_oth_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10719 l_tsk_current_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10720 l_tsk_pf_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10721 l_tsk_pf_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10722 l_tsk_pf_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10723 l_tsk_p_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10724 l_tsk_p_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10725 l_tsk_p_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
10726 l_tsk_txn_currency_code_tab SYSTEM.PA_VARCHAR2_15_TBL_TYPE := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
10727 l_tsk_prog_pa_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10728 l_tsk_prog_gl_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10729 l_tsk_bac_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10730 l_tsk_bac_self_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
10731 l_tsk_earned_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10732 l_tsk_deriv_method_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10733 l_tsk_progress_rollup_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10734 l_tsk_rollup_rec_ver_num_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10735 l_tsk_object_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10736 l_tsk_progress_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10737 l_tsk_incremental_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10738 l_tsk_cumulative_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10739 l_tsk_base_prog_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10740 l_tsk_eff_roll_prg_st_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10741 l_tsk_percent_complete_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10742 l_tsk_task_wt_basis_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10743 l_tsk_base_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10744 l_tsk_structure_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
10745
10746 l_tsk_create_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10747 l_tsk_update_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10748
10749
10750 l_prj_currency_code VARCHAR2(15);
10751 l_total_tasks NUMBER;
10752 l_prog_pa_period_name VARCHAR2(30);
10753 l_prog_gl_period_name VARCHAR2(30);
10754 task_index NUMBER;
10755 l_task_id NUMBER;
10756 l_child_rollup_rec_exists VARCHAR2(1);
10757 l_sch_rec_ver_number NUMBER;
10758
10759 l_equipment_hours NUMBER;
10760 l_pou_labor_brdn_cost NUMBER;
10761 l_prj_labor_brdn_cost NUMBER;
10762 l_pou_equip_brdn_cost NUMBER;
10763 l_prj_equip_brdn_cost NUMBER;
10764 l_pou_labor_raw_cost NUMBER;
10765 l_prj_labor_raw_cost NUMBER;
10766 l_pou_equip_raw_cost NUMBER;
10767 l_prj_equip_raw_cost NUMBER;
10768 l_labor_hours NUMBER;
10769 l_pou_oth_brdn_cost NUMBER;
10770 l_prj_oth_brdn_cost NUMBER;
10771 l_pou_oth_raw_cost NUMBER;
10772 l_prj_oth_raw_cost NUMBER;
10773 l_remaining_effort1 NUMBER;
10774 l_percent_complete1 NUMBER;
10775 l_percent_complete2 NUMBER;
10776 l_etc_cost_pc NUMBER;
10777 l_ppl_etc_cost_pc NUMBER;
10778 l_eqpmt_etc_cost_pc NUMBER;
10779 l_etc_cost_fc NUMBER;
10780 l_ppl_etc_cost_fc NUMBER;
10781 l_eqpmt_etc_cost_fc NUMBER;
10782 l_bac_value1 NUMBER;
10783 l_ppl_act_cost_to_date_pc NUMBER;
10784 l_eqpmt_act_cost_to_date_pc NUMBER;
10785 l_oth_act_cost_to_date_fc NUMBER;
10786 l_ppl_act_cost_to_date_fc NUMBER;
10787 l_eqpmt_act_cost_to_date_fc NUMBER;
10788 l_ppl_act_effort_to_date NUMBER;
10789 l_oth_act_rawcost_to_date_pc NUMBER;
10790 l_ppl_act_rawcost_to_date_pc NUMBER;
10791 l_eqpmt_act_rawcost_to_date_pc NUMBER;
10792 l_etc_rawcost_pc NUMBER;
10793 l_ppl_etc_rawcost_pc NUMBER;
10794 l_eqpmt_act_rawcost_to_date_fc NUMBER;
10795 l_ppl_act_rawcost_to_date_fc NUMBER;
10796 l_oth_act_rawcost_to_date_fc NUMBER;
10797 l_eqpmt_act_effort_to_date NUMBER;
10798 l_eqpmt_etc_effort NUMBER;
10799 l_earned_value1 NUMBER;
10800 l_oth_act_cost_to_date_pc NUMBER;
10801 l_percent_complete_id NUMBER;
10802 l_progress_rollup_id NUMBER;
10803 l_rollup_rec_ver_number NUMBER;
10804 l_eqpmt_etc_rawcost_fc NUMBER;
10805 l_ppl_etc_rawcost_fc NUMBER;
10806 l_etc_rawcost_fc NUMBER;
10807 l_eqpmt_etc_rawcost_pc NUMBER;
10808 l_period_name VARCHAR2(30);
10809 l_existing_object_status VARCHAR2(150);
10810 l_status_code VARCHAR2(150);
10811 l_system_status_code VARCHAR2(150);
10812 l_status_code_temp VARCHAR2(150); --Bug#5374114
10813 l_system_status_code_temp VARCHAR2(150); --Bug#5374114
10814 l_max_rollup_as_of_date2 DATE;
10815 l_current_flag VARCHAR2(1);
10816 l_pev_schedule_id NUMBER;
10817 l_actual_exists VARCHAR2(1):='N';
10818 l_tsk_scheduled_start_date Date;
10819 l_tsk_scheduled_finish_date Date;
10820 l_actual_start_date Date;
10821 l_actual_finish_date Date;
10822 l_estimated_start_date Date;
10823 l_estimated_finish_date Date;
10824 l_eff_rollup_status_code VARCHAR2(150);
10825 l_progress_status_code VARCHAR2(150);
10826 l_rolled_up_base_per_comp NUMBER;
10827 l_rolled_up_base_prog_stat VARCHAR2(150);
10828 l_rolled_up_per_comp NUMBER;
10829 l_rolled_up_prog_stat VARCHAR2(150);
10830
10831
10832 CURSOR cur_sch_id( c_object_version_id NUMBER )
10833 IS
10834 SELECT pev_schedule_id, record_version_number
10835 FROM pa_proj_elem_ver_schedule
10836 WHERE project_id = p_project_id
10837 AND element_version_id = c_object_version_id;
10838
10839
10840 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
10841 IS
10842 SELECT scheduled_start_date, scheduled_finish_date
10843 FROM pa_proj_elem_ver_schedule
10844 WHERE PROJECT_ID = c_project_id
10845 AND element_version_id = c_element_version_id;
10846
10847 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
10848 SELECT 'Y' FROM DUAL
10849 WHERE EXISTS
10850 (SELECT 'xyz'
10851 FROM pa_percent_completes
10852 WHERE project_id = p_project_id
10853 AND task_id = c_task_id
10854 AND object_type = 'PA_DELIVERABLES'
10855 AND trunc(date_computed)<= trunc(p_as_of_date)
10856 AND structure_type = 'WORKPLAN'
10857 AND published_flag = 'Y'
10858 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
10859 );
10860
10861
10862 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
10863 IS
10864 SELECT STATUS_CODE
10865 FROM PA_PROJ_ELEMENTS
10866 WHERE PROJ_ELEMENT_ID = l_proj_element_id
10867 AND PROJECT_ID = l_project_id;
10868
10869 CURSOR cur_status( c_status_weight VARCHAR2 )
10870 IS
10871 select lookup_code
10872 from fnd_lookup_values
10873 where attribute4 = c_status_weight
10874 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
10875 and language = 'US'
10876 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
10877
10878 CURSOR cur_task_status( c_status_weight VARCHAR2 )
10879 IS
10880 select project_status_code
10881 from pa_project_statuses
10882 where project_status_weight = c_status_weight
10883 and status_type = 'TASK'
10884 and predefined_flag = 'Y';
10885
10886 l_process_number_temp NUMBER;
10887
10888 --This cursor selects the immediate child taks of a given task.
10889 CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
10890 IS
10891 --select structure
10892 SELECT to_number(null) object_id_from1
10893 , ppev.object_type parent_object_type
10894 , element_version_id object_id_to1
10895 , ppev.object_type object_type
10896 , ppev.wbs_level wbs_level
10897 , to_number( null ) weighting_percentage
10898 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
10899 , ppr.completed_percentage override_percent_complete
10900 , ppr.as_of_date
10901 , ppr.actual_start_date
10902 , ppr.actual_finish_date
10903 , ppr.estimated_start_date
10904 , ppr.estimated_finish_date
10905 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
10906 , pps2.project_status_weight override_weight2 ---override progress status code
10907 , pps3.project_status_weight base_weight3 --base prog status
10908 , to_number( null ) task_weight4 --task status
10909 , to_char(null) status_code
10910 , ppev.proj_element_id object_id
10911 , ppev.proj_element_id
10912 , ppr.PPL_ACT_EFFORT_TO_DATE
10913 , ppr.PPL_ACT_COST_TO_DATE_TC
10914 , ppr.PPL_ACT_COST_TO_DATE_PC
10915 , ppr.PPL_ACT_COST_TO_DATE_FC
10916 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
10917 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
10918 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
10919 , ppr.ESTIMATED_REMAINING_EFFORT
10920 , ppr.PPL_ETC_COST_TC
10921 , ppr.PPL_ETC_COST_PC
10922 , ppr.PPL_ETC_COST_FC
10923 , ppr.PPL_ETC_RAWCOST_TC
10924 , ppr.PPL_ETC_RAWCOST_PC
10925 , ppr.PPL_ETC_RAWCOST_FC
10926 , ppr.EQPMT_ACT_EFFORT_TO_DATE
10927 , ppr.EQPMT_ACT_COST_TO_DATE_TC
10928 , ppr.EQPMT_ACT_COST_TO_DATE_PC
10929 , ppr.EQPMT_ACT_COST_TO_DATE_FC
10930 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
10931 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
10932 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
10933 , ppr.EQPMT_ETC_EFFORT
10934 , ppr.EQPMT_ETC_COST_TC
10935 , ppr.EQPMT_ETC_COST_PC
10936 , ppr.EQPMT_ETC_COST_FC
10937 , ppr.EQPMT_ETC_RAWCOST_TC
10938 , ppr.EQPMT_ETC_RAWCOST_PC
10939 , ppr.EQPMT_ETC_RAWCOST_FC
10940 , ppr.OTH_QUANTITY_TO_DATE
10941 , ppr.OTH_ACT_COST_TO_DATE_TC
10942 , ppr.OTH_ACT_COST_TO_DATE_PC
10943 , ppr.OTH_ACT_COST_TO_DATE_FC
10944 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
10945 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
10946 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
10947 , ppr.OTH_ETC_QUANTITY
10948 , ppr.OTH_ETC_COST_TC
10949 , ppr.OTH_ETC_COST_PC
10950 , ppr.OTH_ETC_COST_FC
10951 , ppr.OTH_ETC_RAWCOST_TC
10952 , ppr.OTH_ETC_RAWCOST_PC
10953 , ppr.OTH_ETC_RAWCOST_FC
10954 , ppr.CURRENT_FLAG
10955 , ppr.PROJFUNC_COST_RATE_TYPE
10956 , ppr.PROJFUNC_COST_EXCHANGE_RATE
10957 , ppr.PROJFUNC_COST_RATE_DATE
10958 , ppr.PROJ_COST_RATE_TYPE
10959 , ppr.PROJ_COST_EXCHANGE_RATE
10960 , ppr.PROJ_COST_RATE_DATE
10961 , ppr.TXN_CURRENCY_CODE
10962 , ppr.PROG_PA_PERIOD_NAME
10963 , ppr.PROG_GL_PERIOD_NAME
10964 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
10965 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
10966 BAC_value_self -- bug 4493105
10967 , null earned_value
10968 , to_char(null) task_derivation_method
10969 , ppr.progress_rollup_id
10970 , ppr.record_version_number
10971 -- , element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
10972 , ppr.object_version_id -- Bug 4651304
10973 , ppr.progress_status_code
10974 , ppr.incremental_work_quantity
10975 , ppr.cumulative_work_quantity
10976 -- 4533112 : Added decode to select N and Y only
10977 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
10978 , ppr.EFF_ROLLUP_PROG_STAT_CODE
10979 , ppr.percent_complete_id
10980 , ppr.TASK_WT_BASIS_CODE
10981 , ppr.structure_version_id
10982 ,'N' create_required
10983 ,'N' update_required
10984 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
10985 FROM pa_proj_element_versions ppev,
10986 pa_progress_rollup ppr,
10987 pa_project_statuses pps1,
10988 pa_project_statuses pps2,
10989 pa_project_statuses pps3 ,
10990 pa_proj_rollup_temp temp
10991 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
10992 --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
10993 temp.object_id = ppev.element_version_id
10994 AND temp.process_number = l_process_number_temp
10995 AND ppev.object_type = 'PA_STRUCTURES'
10996 AND ppr.project_id = ppev.project_id
10997 AND ppr.object_id = ppev.proj_element_id
10998 AND ppr.object_type = 'PA_STRUCTURES'
10999 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
11000 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
11001 AND ppr.current_flag <> 'W'
11002 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11003 AND ppr.progress_status_code = pps2.project_status_code(+)
11004 AND ppr.base_progress_status_code = pps3.project_status_code(+)
11005 AND ppr.structure_type = p_structure_type
11006 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11007 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
11008 UNION
11009 -- select tasks
11010 SELECT pobj.object_id_from1
11011 , ppev1.object_type parent_object_type
11012 , pobj.object_id_to1
11013 , ppev2.object_type object_type
11014 , ppev2.wbs_level wbs_level
11015 , pobj.weighting_percentage
11016 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
11017 , ppr.completed_percentage override_percent_complete
11018 , ppr.as_of_date
11019 , ppr.actual_start_date
11020 , ppr.actual_finish_date
11021 , ppr.estimated_start_date
11022 , ppr.estimated_finish_date
11023 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
11024 , pps2.project_status_weight override_weight2 ---override progress status code
11025 , pps3.project_status_weight base_weight3 ---base prog status
11026 , pps4.project_status_weight task_weight4
11027 , ppe.status_code
11028 , ppev2.proj_element_id object_id
11029 , ppev2.proj_element_id
11030 , ppr.PPL_ACT_EFFORT_TO_DATE
11031 , ppr.PPL_ACT_COST_TO_DATE_TC
11032 , ppr.PPL_ACT_COST_TO_DATE_PC
11033 , ppr.PPL_ACT_COST_TO_DATE_FC
11034 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
11035 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
11036 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
11037 , ppr.ESTIMATED_REMAINING_EFFORT
11038 , ppr.PPL_ETC_COST_TC
11039 , ppr.PPL_ETC_COST_PC
11040 , ppr.PPL_ETC_COST_FC
11041 , ppr.PPL_ETC_RAWCOST_TC
11042 , ppr.PPL_ETC_RAWCOST_PC
11043 , ppr.PPL_ETC_RAWCOST_FC
11044 , ppr.EQPMT_ACT_EFFORT_TO_DATE
11045 , ppr.EQPMT_ACT_COST_TO_DATE_TC
11046 , ppr.EQPMT_ACT_COST_TO_DATE_PC
11047 , ppr.EQPMT_ACT_COST_TO_DATE_FC
11048 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
11049 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
11050 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
11051 , ppr.EQPMT_ETC_EFFORT
11052 , ppr.EQPMT_ETC_COST_TC
11053 , ppr.EQPMT_ETC_COST_PC
11054 , ppr.EQPMT_ETC_COST_FC
11055 , ppr.EQPMT_ETC_RAWCOST_TC
11056 , ppr.EQPMT_ETC_RAWCOST_PC
11057 , ppr.EQPMT_ETC_RAWCOST_FC
11058 , ppr.OTH_QUANTITY_TO_DATE
11059 , ppr.OTH_ACT_COST_TO_DATE_TC
11060 , ppr.OTH_ACT_COST_TO_DATE_PC
11061 , ppr.OTH_ACT_COST_TO_DATE_FC
11062 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
11063 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
11064 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
11065 , ppr.OTH_ETC_QUANTITY
11066 , ppr.OTH_ETC_COST_TC
11067 , ppr.OTH_ETC_COST_PC
11068 , ppr.OTH_ETC_COST_FC
11069 , ppr.OTH_ETC_RAWCOST_TC
11070 , ppr.OTH_ETC_RAWCOST_PC
11071 , ppr.OTH_ETC_RAWCOST_FC
11072 , ppr.CURRENT_FLAG
11073 , ppr.PROJFUNC_COST_RATE_TYPE
11074 , ppr.PROJFUNC_COST_EXCHANGE_RATE
11075 , ppr.PROJFUNC_COST_RATE_DATE
11076 , ppr.PROJ_COST_RATE_TYPE
11077 , ppr.PROJ_COST_EXCHANGE_RATE
11078 , ppr.PROJ_COST_RATE_DATE
11079 , ppr.TXN_CURRENCY_CODE
11080 , ppr.PROG_PA_PERIOD_NAME
11081 , ppr.PROG_GL_PERIOD_NAME
11082 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
11083 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11084 p_structure_type,p_working_wp_prog_flag) BAC_value
11085 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
11086 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11087 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
11088 , null earned_value
11089 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
11090 , ppr.progress_rollup_id
11091 , ppr.record_version_number
11092 -- , pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
11093 , ppr.object_version_id -- Bug 4651304
11094 , ppr.progress_status_code
11095 , ppr.incremental_work_quantity
11096 , ppr.cumulative_work_quantity
11097 -- 4533112 : Added decode to select N and Y only
11098 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
11099 , ppr.EFF_ROLLUP_PROG_STAT_CODE
11100 , ppr.percent_complete_id
11101 , ppr.TASK_WT_BASIS_CODE
11102 , ppr.structure_version_id
11103 ,'N' create_required
11104 ,'N' update_required
11105 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11106 FROM
11107 pa_object_relationships pobj,
11108 pa_proj_element_versions ppev1,
11109 pa_proj_element_versions ppev2,
11110 pa_progress_rollup ppr,
11111 pa_proj_elements ppe,
11112 pa_project_statuses pps1,
11113 pa_project_statuses pps2,
11114 pa_project_statuses pps3,
11115 pa_project_statuses pps4,
11116 pa_task_types ttype ,
11117 pa_proj_rollup_temp temp
11118 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11119 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11120 temp.object_id = pobj.object_id_from1
11121 AND temp.process_number = l_process_number_temp
11122 AND pobj.object_id_from1 = ppev1.element_version_id
11123 AND pobj.object_id_to1 = ppev2.element_version_id
11124 AND pobj.relationship_type = 'S'
11125 AND ppr.project_id = ppev2.project_id
11126 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
11127 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
11128 AND ppr.current_flag <> 'W'
11129 AND ppr.object_id = ppev2.proj_element_id
11130 AND ppr.project_id = ppev2.project_id
11131 AND ppr.object_type = 'PA_TASKS'
11132 AND ppe.proj_element_id = ppev2.proj_element_id
11133 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11134 AND ppr.progress_status_code = pps2.project_status_code(+)
11135 AND ppr.base_progress_status_code = pps3.project_status_code(+)
11136 AND ppe.status_code = pps4.project_status_code(+)
11137 AND ppe.project_id = ppev2.project_id
11138 AND ppe.object_type = ppev2.object_type
11139 AND ppev2.object_type = 'PA_TASKS'
11140 AND ppe.object_type = 'PA_TASKS'
11141 AND ppe.link_task_flag <> 'Y' -- 4392189
11142 AND pobj.object_type_to = 'PA_TASKS'
11143 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
11144 AND ppe.type_id = ttype.task_type_id
11145 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11146 AND ppr.structure_type = p_structure_type
11147 AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
11148 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
11149 UNION ALL
11150 SELECT to_number(null) object_id_from1
11151 , ppev.object_type parent_object_type
11152 , element_version_id object_id_to1
11153 , ppev.object_type object_type
11154 , ppev.wbs_level wbs_level
11155 , to_number( null ) weighting_percentage
11156 , to_number(null) rollup_completed_percentage
11157 , to_number(null) override_percent_complete
11158 , to_date(null) as_of_date
11159 , to_date(null) actual_start_date
11160 , to_date(null) actual_finish_date
11161 , to_date(null) estimated_start_date
11162 , to_date(null) estimated_finish_date
11163 , to_number(null) rollup_weight1 ---rollup progress status code
11164 , to_number(null) override_weight2 ---override progress status code
11165 , to_number(null) base_weight3 --base prog status
11166 , to_number( null ) task_weight4 --task status
11167 , to_char(null) status_code
11168 , ppev.proj_element_id object_id
11169 , ppev.proj_element_id
11170 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
11171 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
11172 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
11173 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
11174 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
11175 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
11176 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
11177 , to_number( null ) ESTIMATED_REMAINING_EFFORT
11178 , to_number( null ) PPL_ETC_COST_TC
11179 , to_number( null ) PPL_ETC_COST_PC
11180 , to_number( null ) PPL_ETC_COST_FC
11181 , to_number( null ) PPL_ETC_RAWCOST_TC
11182 , to_number( null ) PPL_ETC_RAWCOST_PC
11183 , to_number( null ) PPL_ETC_RAWCOST_FC
11184 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
11185 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
11186 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
11187 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
11188 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
11189 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
11190 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
11191 , to_number( null ) EQPMT_ETC_EFFORT
11192 , to_number( null ) EQPMT_ETC_COST_TC
11193 , to_number( null ) EQPMT_ETC_COST_PC
11194 , to_number( null ) EQPMT_ETC_COST_FC
11195 , to_number( null ) EQPMT_ETC_RAWCOST_TC
11196 , to_number( null ) EQPMT_ETC_RAWCOST_PC
11197 , to_number( null ) EQPMT_ETC_RAWCOST_FC
11198 , to_number( null ) OTH_QUANTITY_TO_DATE
11199 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
11200 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
11201 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
11202 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
11203 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
11204 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
11205 , to_number( null ) OTH_ETC_QUANTITY
11206 , to_number( null ) OTH_ETC_COST_TC
11207 , to_number( null ) OTH_ETC_COST_PC
11208 , to_number( null ) OTH_ETC_COST_FC
11209 , to_number( null ) OTH_ETC_RAWCOST_TC
11210 , to_number( null ) OTH_ETC_RAWCOST_PC
11211 , to_number( null ) OTH_ETC_RAWCOST_FC
11212 , to_char(null) CURRENT_FLAG
11213 , to_char(null) PROJFUNC_COST_RATE_TYPE
11214 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
11215 , to_date(null) PROJFUNC_COST_RATE_DATE
11216 , to_char(null) PROJ_COST_RATE_TYPE
11217 , to_number( null ) PROJ_COST_EXCHANGE_RATE
11218 , to_date(null) PROJ_COST_RATE_DATE
11219 , to_char(null) TXN_CURRENCY_CODE
11220 , to_char(null) PROG_PA_PERIOD_NAME
11221 , to_char(null) PROG_GL_PERIOD_NAME
11222 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
11223 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
11224 BAC_value_self -- bug 4493105
11225 , null earned_value
11226 , to_char(null) task_derivation_method
11227 , to_number(null) progress_rollup_id
11228 , to_number(null) record_version_number
11229 , element_version_id object_version_id
11230 , to_char(null) progress_status_code
11231 , to_number(null) incremental_work_quantity
11232 , to_number(null) cumulative_work_quantity
11233 -- 4533112 : Added N only
11234 , 'N' base_progress_status_code
11235 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
11236 , to_number(null) percent_complete_id
11237 , to_char(null) TASK_WT_BASIS_CODE
11238 , to_number(null) structure_version_id
11239 ,'N' create_required
11240 ,'N' update_required
11241 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11242 FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
11243 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11244 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11245 element_version_id = temp.object_id
11246 AND temp.process_number = l_process_number_temp
11247 AND ppev.object_type = 'PA_STRUCTURES'
11248 AND pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
11249 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
11250 IS NULL
11251 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
11252 UNION
11253 -- select tasks
11254 SELECT pobj.object_id_from1
11255 , ppev1.object_type parent_object_type
11256 , pobj.object_id_to1
11257 , ppev2.object_type object_type
11258 , ppev2.wbs_level wbs_level
11259 , pobj.weighting_percentage
11260 , to_number(null) rollup_completed_percentage
11261 , to_number(null) override_percent_complete
11262 , to_date(null) as_of_date
11263 , to_date(null) actual_start_date
11264 , to_date(null) actual_finish_date
11265 , to_date(null) estimated_start_date
11266 , to_date(null) estimated_finish_date
11267 , to_number(null) rollup_weight1 ---rollup progress status code
11268 , to_number(null) override_weight2 ---override progress status code
11269 , to_number(null) base_weight3 --base prog status
11270 , to_number( null ) task_weight4 --task status
11271 , to_char(null) status_code
11272 , ppev2.proj_element_id object_id
11273 , ppev2.proj_element_id
11274 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
11275 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
11276 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
11277 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
11278 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
11279 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
11280 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
11281 , to_number( null ) ESTIMATED_REMAINING_EFFORT
11282 , to_number( null ) PPL_ETC_COST_TC
11283 , to_number( null ) PPL_ETC_COST_PC
11284 , to_number( null ) PPL_ETC_COST_FC
11285 , to_number( null ) PPL_ETC_RAWCOST_TC
11286 , to_number( null ) PPL_ETC_RAWCOST_PC
11287 , to_number( null ) PPL_ETC_RAWCOST_FC
11288 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
11289 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
11290 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
11291 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
11292 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
11293 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
11294 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
11295 , to_number( null ) EQPMT_ETC_EFFORT
11296 , to_number( null ) EQPMT_ETC_COST_TC
11297 , to_number( null ) EQPMT_ETC_COST_PC
11298 , to_number( null ) EQPMT_ETC_COST_FC
11299 , to_number( null ) EQPMT_ETC_RAWCOST_TC
11300 , to_number( null ) EQPMT_ETC_RAWCOST_PC
11301 , to_number( null ) EQPMT_ETC_RAWCOST_FC
11302 , to_number( null ) OTH_QUANTITY_TO_DATE
11303 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
11304 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
11305 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
11306 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
11307 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
11308 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
11309 , to_number( null ) OTH_ETC_QUANTITY
11310 , to_number( null ) OTH_ETC_COST_TC
11311 , to_number( null ) OTH_ETC_COST_PC
11312 , to_number( null ) OTH_ETC_COST_FC
11313 , to_number( null ) OTH_ETC_RAWCOST_TC
11314 , to_number( null ) OTH_ETC_RAWCOST_PC
11315 , to_number( null ) OTH_ETC_RAWCOST_FC
11316 , to_char(null) CURRENT_FLAG
11317 , to_char(null) PROJFUNC_COST_RATE_TYPE
11318 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
11319 , to_date(null) PROJFUNC_COST_RATE_DATE
11320 , to_char(null) PROJ_COST_RATE_TYPE
11321 , to_number( null ) PROJ_COST_EXCHANGE_RATE
11322 , to_date(null) PROJ_COST_RATE_DATE
11323 , to_char(null) TXN_CURRENCY_CODE
11324 , to_char(null) PROG_PA_PERIOD_NAME
11325 , to_char(null) PROG_GL_PERIOD_NAME
11326 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
11327 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11328 p_structure_type,p_working_wp_prog_flag) BAC_value
11329 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
11330 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11331 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
11332 , null earned_value
11333 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
11334 , to_number(null) progress_rollup_id
11335 , to_number(null) record_version_number
11336 , pobj.object_id_to1 object_version_id
11337 , to_char(null) progress_status_code
11338 , to_number(null) incremental_work_quantity
11339 , to_number(null) cumulative_work_quantity
11340 -- 4533112 : Added N only
11341 , 'N' base_progress_status_code
11342 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
11343 , to_number(null) percent_complete_id
11344 , to_char(null) TASK_WT_BASIS_CODE
11345 , to_number(null) structure_version_id
11346 ,'N' create_required
11347 ,'N' update_required
11348 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11349 FROM
11350 pa_object_relationships pobj,
11351 pa_proj_element_versions ppev1,
11352 pa_proj_element_versions ppev2,
11353 pa_proj_elements ppe,
11354 pa_project_statuses pps4,
11355 pa_task_types ttype ,
11356 pa_proj_rollup_temp temp
11357 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11358 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11359 pobj.object_id_from1 = temp.object_id
11360 AND temp.process_number = l_process_number_temp
11361 AND pobj.object_id_from1 = ppev1.element_version_id
11362 AND pobj.object_id_to1 = ppev2.element_version_id
11363 AND pobj.relationship_type = 'S'
11364 AND ppe.proj_element_id = ppev2.proj_element_id
11365 AND ppe.status_code = pps4.project_status_code(+)
11366 AND ppe.project_id = ppev2.project_id
11367 AND ppe.object_type = ppev2.object_type
11368 AND ppev2.object_type = 'PA_TASKS'
11369 AND ppe.object_type = 'PA_TASKS'
11370 AND ppe.link_task_flag <> 'Y' -- 4392189
11371 AND pobj.object_type_to = 'PA_TASKS'
11372 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
11373 AND ppe.type_id = ttype.task_type_id
11374 AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
11375 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */)
11376 IS NULL
11377 AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
11378 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
11379 ;
11380
11381 -- FPM Dev CR 6 : Added Union ALL
11382
11383 l_asgn_task_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11384 l_asgn_rate_based_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
11385 l_asgn_resource_class_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
11386 l_asgn_res_assignment_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11387 l_asgn_planned_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11388 l_asgn_plan_bur_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11389 l_asgn_res_list_member_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11390
11391 CURSOR cur_assgn_rec_bulk( c_task_ver_id NUMBER, c_task_id NUMBER ) IS
11392 SELECT a.wbs_element_version_id
11393 , a.rate_based_flag
11394 , a.resource_class_code
11395 , a.resource_assignment_id
11396 , a.total_plan_quantity planned_quantity
11397 , a.total_project_burdened_cost planned_bur_cost_proj_cur
11398 , a.resource_list_member_id
11399 from pa_resource_assignments a
11400 WHERE a.wbs_element_version_id = c_task_ver_id
11401 AND a.project_id = p_project_id
11402 AND a.task_id = c_task_id
11403 -- AND a.ta_display_flag = 'Y' --Bug 4323537
11404 ;
11405
11406 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER) IS
11407 SELECT ppr.*
11408 FROM pa_progress_rollup ppr
11409 WHERE ppr.project_id = p_project_id
11410 AND ppr.object_id = c_object_id
11411 AND ppr.proj_element_id = c_proj_element_id
11412 AND ppr.object_type = 'PA_ASSIGNMENTS'
11413 AND ppr.current_flag <> 'W'
11414 AND ppr.structure_type = p_structure_type
11415 AND ppr.as_of_date <= p_as_of_date
11416 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11417 AND rownum =1
11418 ORDER BY as_of_date desc
11419 ;
11420
11421 l_asgn_progress_rec cur_get_asgn_progress%ROWTYPE;
11422 l_asgn_act_start_date DATE;
11423 l_asgn_act_finish_date DATE;
11424 l_asgn_est_start_date DATE;
11425 l_asgn_est_finish_date DATE;
11426 l_asgn_as_of_date DATE;
11427 l_asgn_ppl_act_eff NUMBER;
11428 l_asgn_eqp_act_eff NUMBER;
11429 l_asgn_ppl_act_cost NUMBER;
11430 l_asgn_eqp_act_cost NUMBER;
11431 l_asgn_oth_act_cost NUMBER;
11432 l_asgn_ppl_etc_eff NUMBER;
11433 l_asgn_eqp_etc_eff NUMBER;
11434 l_asgn_ppl_etc_cost NUMBER;
11435 l_asgn_eqp_etc_cost NUMBER;
11436 l_asgn_oth_etc_cost NUMBER;
11437 l_asgn_earned_value NUMBER;
11438 l_asgn_bac_value NUMBER;
11439
11440 -- FPM Dev CR 5 : Reverted back the outer join
11441 -- FPM Dev CR 4 : Removed Outer Join from rollup table. No need to select deliverables which do not have rollup records
11442 --This cursor selects the deliverables of a given task.
11443 CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
11444 IS
11445 SELECT obj.object_type_from
11446 , 'PA_TASKS' parent_object_type
11447 , obj.object_id_to2 object_id
11448 , obj.object_id_to1
11449 , obj.object_id_from1
11450 , 'PA_DELIVERABLES' object_type
11451 , ppr.actual_finish_date
11452 , ppr.as_of_date
11453 , ppr.completed_percentage
11454 , ppr.STRUCTURE_TYPE
11455 , ppr.PROJ_ELEMENT_ID
11456 , ppr.STRUCTURE_VERSION_ID
11457 , ppr.TASK_WT_BASIS_CODE
11458 , elem.progress_weight weighting_percentage
11459 , ppr.base_percent_complete
11460 , pps2.project_status_weight override_weight ---override progress status code
11461 , pps3.project_status_weight base_weight --base prog status
11462 FROM pa_proj_elements elem
11463 , pa_object_relationships obj
11464 , pa_progress_rollup ppr
11465 , pa_project_statuses pps2
11466 , pa_project_statuses pps3
11467 WHERE obj.object_id_from2= c_task_proj_elem_id
11468 AND obj.object_type_from = 'PA_TASKS'
11469 AND obj.object_type_to = 'PA_DELIVERABLES'
11470 AND obj.relationship_type = 'A'
11471 AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
11472 AND elem.proj_element_id = obj.object_id_to2
11473 AND elem.object_type = 'PA_DELIVERABLES'
11474 and elem.project_id = p_project_id
11475 -- AND obj.object_id_to1 = ppr.object_version_id(+)
11476 AND ppr.object_type(+) = 'PA_DELIVERABLES'
11477 AND ppr.project_id(+) = c_project_id
11478 AND ppr.object_id(+) = obj.object_id_to2
11479 AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
11480 obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug 3764224 */) -- FPM Dev CR 3
11481 AND ppr.structure_type(+) = p_structure_type
11482 AND ppr.structure_version_id is null -- deliverable progress for working version is not allowed
11483 AND ppr.base_progress_status_code = pps3.project_status_code(+)
11484 AND ppr.progress_status_code = pps2.project_status_code(+)
11485 AND ppr.current_flag(+) <> 'W'
11486 ;
11487
11488 CURSOR c_mass_rollup_tasks IS
11489 select distinct object_id_from1
11490 from pa_object_relationships
11491 start with object_id_to1 IN (select object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11492 and relationship_type = 'S'
11493 connect by prior object_id_from1 = object_id_to1
11494 and relationship_type = 'S'
11495 MINUS
11496 select object_id object_id_from1 from pa_proj_rollup_temp where process_number = l_process_number_temp
11497 ;
11498
11499 CURSOR c_mass_rollup_tasks_temp IS
11500 select object_id
11501 from pa_proj_rollup_temp where process_number = l_process_number_temp
11502 ;
11503
11504 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
11505 IS
11506 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
11507 FROM pa_proj_elem_ver_structure str
11508 , pa_project_statuses status
11509 where str.element_version_id = c_structure_version_id
11510 AND str.project_id = c_project_id
11511 AND str.status_code = status.project_status_code;
11512
11513 CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
11514 IS
11515 SELECT element_version_id
11516 FROM pa_proj_element_versions
11517 where project_id = c_project_id
11518 and object_type = 'PA_TASKS'
11519 AND parent_structure_version_id = c_structure_version_id
11520 AND wbs_level = (Select max(wbs_level)
11521 From pa_proj_element_versions
11522 where project_id = c_project_id
11523 and object_type = 'PA_TASKS'
11524 AND parent_structure_version_id = c_structure_version_id);
11525
11526 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; --bug 3830434
11527 l_assignment_exists VARCHAR2(1) ; -- Bug 3830673
11528 l_digit_number number; --BUG 3950574, rtarway
11529
11530 --bug 4045979, start
11531 l_base_struct_ver_id NUMBER;
11532
11533 CURSOR check_task_baselined(c_structure_ver_id NUMBER, c_task_version_id NUMBER)
11534 IS
11535 select 'Y' from pa_proj_element_versions ppev1
11536 where ppev1.parent_structure_version_id = c_structure_ver_id
11537 and ppev1.proj_element_id = (select proj_element_id from pa_proj_element_versions ppev2
11538 where ppev2.element_version_id = c_task_version_id
11539 and ppev2.project_id = p_project_id);
11540
11541 l_task_baselined VARCHAR2(1) := 'N';
11542 l_parent_task_baselined VARCHAR2(1) := 'N';
11543
11544 --bug 4045979, end
11545
11546 l_tsk_progress_exists VARCHAR2(1);
11547 l_mapping_tasks_to_rollup_tab PA_PLSQL_DATATYPES.NumTabTyp;
11548
11549 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
11550 CURSOR cur_tree_rollup_dates
11551 IS
11552 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
11553 from pa_object_relationships obj
11554 , pa_proj_element_versions ver
11555 , pa_progress_rollup ppr
11556 , pa_proj_rollup_temp rollup
11557 , pa_proj_element_versions ver2
11558 where rollup.object_id = obj.object_id_to1
11559 AND rollup.process_number = l_process_number_temp
11560 AND obj.relationship_type = 'S'
11561 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
11562 AND obj.object_type_to = 'PA_TASKS'
11563 AND obj.object_id_from1= ver.element_version_id
11564 AND ver.project_id = p_project_id
11565 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
11566 AND ver.project_id = ppr.project_id
11567 AND ppr.as_of_date > p_as_of_date
11568 AND ppr.object_id = ver.proj_element_id
11569 AND ppr.current_flag = 'Y'
11570 AND ppr.proj_element_id = ver.proj_element_id
11571 AND ppr.structure_type = p_structure_type
11572 AND ppr.structure_version_id is null
11573 AND obj.object_id_to1 = ver2.element_version_id
11574 AND ver2.project_id = p_project_id
11575 AND ver2.object_type = 'PA_TASKS'
11576 AND rollup.object_type = 'PA_TASKS' -- cklee bug: 6610612
11577 order by ppr.as_of_date;
11578
11579
11580 -- Bug 4392189 Begin
11581 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
11582 SELECT
11583 ppv2.project_id sub_project_id
11584 ,ppv2.element_version_id sub_structure_ver_id
11585 ,ppv2.proj_element_id sub_proj_element_id
11586 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method, ppv2.proj_element_id, ppv2.parent_structure_version_id,
11587 'WORKPLAN','N') sub_project_bac_value
11588 FROM
11589 pa_proj_element_versions ppv2
11590 ,pa_proj_elem_ver_structure ppevs2
11591 ,pa_object_relationships por1
11592 ,pa_object_relationships por2
11593 WHERE
11594 por1.object_id_from1 = c_task_version_id
11595 AND por1.object_id_to1 = por2.object_id_from1
11596 AND por2.object_id_to1 = ppv2.element_version_id
11597 AND ppv2.object_type = 'PA_STRUCTURES'
11598 -- AND por2.relationship_type in ( 'LW', 'LF' )
11599 AND por2.relationship_type = 'LW'
11600 AND ppevs2.element_version_id = ppv2.element_version_id
11601 AND ppevs2.project_id = ppv2.project_id
11602 AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
11603 AND ppevs2.latest_eff_published_flag = 'Y';
11604
11605 l_sub_project_id NUMBER;
11606 l_sub_structure_ver_id NUMBER;
11607 l_sub_proj_element_id NUMBER;
11608 l_sub_project_bac_value NUMBER;
11609
11610 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
11611 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
11612 SELECT
11613 ppr.progress_rollup_id
11614 ,ppr.actual_start_date
11615 ,ppr.actual_finish_date
11616 ,ppr.estimated_start_date
11617 ,ppr.estimated_finish_date
11618 ,pps1.project_status_weight rollup_weight1
11619 ,pps2.project_status_weight override_weight2
11620 ,pps3.project_status_weight base_weight3
11621 ,pps4.project_status_weight task_weight4
11622 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
11623 -- ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
11624 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0)
11625 , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
11626 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
11627 FROM
11628 pa_progress_rollup ppr
11629 ,pa_project_statuses pps1
11630 ,pa_project_statuses pps2
11631 ,pa_project_statuses pps3
11632 ,pa_project_statuses pps4
11633 ,pa_proj_elements ppe
11634 WHERE
11635 ppr.project_id = c_sub_project_id
11636 AND ppe.project_id = c_sub_project_id
11637 AND ppe.object_type = 'PA_STRUCTURES'
11638 AND ppe.proj_element_id = c_sub_proj_element_id
11639 AND ppr.object_id = c_sub_proj_element_id
11640 AND ppr.object_type = 'PA_STRUCTURES'
11641 AND ppr.structure_version_id is null
11642 AND ppr.structure_type = 'WORKPLAN'
11643 AND ppr.current_flag IN ('Y', 'N')
11644 AND ppr.as_of_date <= c_as_of_date
11645 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11646 AND ppr.progress_status_code = pps2.project_status_code(+)
11647 AND ppr.base_progress_status_code = pps3.project_status_code(+)
11648 AND ppe.status_code = pps4.project_status_code(+)
11649 order by as_of_date desc
11650 ;
11651
11652
11653 l_subproj_prog_rollup_id NUMBER;
11654 l_subproj_act_start_date DATE;
11655 l_subproj_act_finish_date DATE;
11656 l_subproj_est_start_date DATE;
11657 l_subproj_est_finish_date DATE;
11658 l_subproj_rollup_weight1 NUMBER;
11659 l_subproj_override_weight2 NUMBER;
11660 l_subproj_base_weight3 NUMBER;
11661 l_subproj_task_weight4 NUMBER;
11662 l_subproj_earned_value NUMBER;
11663 l_subproj_bac_value NUMBER;
11664 l_subproj_comp_percentage NUMBER; --Bug 4506009
11665 l_actual_lowest_task VARCHAR2(1) := 'N';
11666 -- Bug 4392189 End
11667
11668 l_summary_object_flag VARCHAR2(1); -- 4370746
11669 l_wp_version_enabled_flag VARCHAR2(1); -- Bug#12393400
11670
11671 -- Bug 4506461 Begin
11672 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
11673 SELECT 'Y'
11674 FROM pa_object_relationships
11675 WHERE --relationship_type in ( 'LW', 'LF' )
11676 relationship_type = 'LW'
11677 AND object_id_from1 IN
11678 (SELECT object_id_to1
11679 FROM pa_object_relationships
11680 START WITH object_id_from1 = c_task_version_id
11681 AND relationship_type = 'S'
11682 CONNECT BY PRIOR object_id_to1 = object_id_from1
11683 AND relationship_type = 'S')
11684 ;
11685 l_subproject_found VARCHAR2(1):='N';
11686 l_rederive_base_pc VARCHAR2(1):='N';
11687 -- Bug 4506461 End
11688
11689 l_last_as_of_date DATE;--4573257
11690 l_subproj_task_version_id NUMBER;--4582956
11691 l_org_id NUMBER; -- 4746476
11692
11693 CURSOR c1_rolldates(c_task_ver_id NUMBER, c_task_id NUMBER) IS
11694 select scheduled_start_date, scheduled_finish_date from pa_proj_elem_ver_schedule a
11695 where a.project_id = p_project_id
11696 AND a.proj_element_id = c_task_id and a.element_version_id = c_task_ver_id;
11697
11698 l_tsk_sch_start_date pa_proj_elem_ver_schedule.scheduled_start_date%TYPE;
11699 l_tsk_sch_finish_date pa_proj_elem_ver_schedule.scheduled_finish_date%TYPE;
11700 l_cnt number := 0;
11701
11702 cursor c_progress_parent(c_project_id number)
11703 IS
11704 SELECT object_id_from1
11705 FROM pa_object_relationships
11706 WHERE relationship_type = 'S'
11707 START WITH object_id_to1 in (select p.element_version_id
11708 from PA_PROJ_ELEMENT_VERSIONS p where p.project_id = c_project_id and defer_code in ( 'P','S'))
11709 AND relationship_type = 'S'
11710 CONNECT BY PRIOR object_id_from1 = object_id_to1
11711 AND relationship_type = 'S';
11712
11713 type NumberArray
11714 IS
11715 TABLE OF NUMBER INDEX BY binary_integer;
11716
11717 l_prog_obj NumberArray;
11718 l_tmp_prog NumberArray;
11719 BEGIN
11720 -- Rollup Cases
11721 -- 1. Workplan Publsihed Version Rollup.
11722 -- 2. Workplan Working Version Rollup.
11723 -- 3. Financial Structure Rollup.
11724 -- 4. Entire WBS using structure version id.
11725 -- 5. Program Rollup
11726
11727 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11728
11729 IF g1_debug_mode = 'Y' THEN
11730 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PVT');
11731 END IF;
11732
11733 IF g1_debug_mode = 'Y' THEN
11734 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
11735 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
11736 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
11737 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
11738 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
11739 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
11740 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
11741 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
11742 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
11743 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
11744 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
11745 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
11746 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
11747 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
11748 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
11749 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
11750 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
11751 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
11752 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
11753 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
11754 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
11755 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
11756 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
11757 END IF;
11758
11759 l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
11760
11761 -- 20 May : Amit : If Structure_version_id is null, then no rocessing shd be done
11762 -- Bug 3856161 : Added p_as_of_date check also
11763 IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
11764 return;
11765 END IF;
11766
11767 --bug 4045979
11768 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
11769
11770 --BUG 4355204, rtarway
11771 --IF (p_commit = FND_API.G_TRUE) THEN
11772 savepoint ROLLUP_PVT2;
11773 --END IF;
11774
11775 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
11776 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11777 END IF;
11778
11779 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11780 FND_MSG_PUB.initialize;
11781 END IF;
11782
11783 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
11784 p_calling_module => 'AMG'
11785 ,p_project_id => p_project_id
11786 ,p_structure_version_id => p_structure_version_id
11787 ,p_baselined_str_ver_id => pa_project_structure_utils.get_baseline_struct_ver(p_project_id)
11788 ,p_program_rollup_flag => 'Y'
11789 ,p_calling_context => 'SUMMARIZE'
11790 ,p_as_of_date => p_as_of_date -- Fix for Bug # 4251406.
11791 ,x_return_status => l_return_status
11792 ,x_msg_count => l_msg_count
11793 ,x_msg_data => l_msg_data
11794 );
11795
11796 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
11797 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --bug 3830434
11798 -- 4746476 : added org_id in below select
11799 SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
11800
11801 IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
11802 l_split_workplan := 'Y';
11803 ELSE
11804 l_split_workplan := 'N';
11805 END IF;
11806
11807 -- Bug 4938333
11808 -- In case of financial struture, no need to check for published version
11809 -- populate structure_version_id always null.
11810 IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
11811 -- This is to find out whether passed struture version id is published or not.
11812 -- bcoz progress for workplna workplan version also exists
11813 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
11814 FETCH cur_check_published_version INTO l_published_structure;
11815 CLOSE cur_check_published_version;
11816
11817 IF l_published_structure = 'Y' THEN
11818 l_structure_version_id := null;
11819 ELSE
11820 l_structure_version_id := p_structure_version_id;
11821 END IF;
11822 ELSE -- Bug 4938333
11823 l_published_structure := 'Y'; -- Bug 4938333
11824 l_structure_version_id := null; -- Bug 4938333
11825 END IF;
11826
11827 l_task_version_id := p_task_version_id;
11828
11829 IF p_structure_type = 'WORKPLAN' THEN
11830 l_rollup_method := p_wp_rollup_method;
11831 ELSE
11832 l_rollup_method := p_fin_rollup_method;
11833 END IF;
11834
11835 IF g1_debug_mode = 'Y' THEN
11836 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled, x_Log_Level=> 3);
11837 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
11838 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
11839 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_task_version_id='||l_task_version_id, x_Log_Level=> 3);
11840 END IF;
11841
11842 --l_lowest_task := p_lowest_task;
11843 -- Loop thru all the parents of the passed task
11844
11845 SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
11846 INTO l_process_number_temp FROM dual;
11847
11848 IF p_rollup_entire_wbs = 'N' THEN
11849 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11850 SELECT distinct l_process_number_temp, object_id_from1, 'PA_TASKS', 1
11851 FROM pa_object_relationships
11852 WHERE relationship_type = 'S'
11853 START WITH object_id_to1 = l_task_version_id
11854 AND relationship_type = 'S'
11855 CONNECT BY PRIOR object_id_from1 = object_id_to1
11856 AND relationship_type = 'S'
11857 UNION ALL -- 4563049 : Rollup Structure also if passed, so that it can populate ETC from PJI
11858 SELECT distinct l_process_number_temp, l_task_version_id object_id_from1, 'PA_TASKS', 1
11859 FROM dual
11860 WHERE l_task_version_id = p_structure_version_id;
11861 ELSE
11862 IF g1_debug_mode = 'Y' THEN
11863 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
11864 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
11865 FOR i in 1..p_task_version_id_tbl.count LOOP
11866 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
11867 END LOOP;
11868 END IF;
11869
11870 IF p_task_version_id_tbl.count > 0 THEN
11871 FORALL i in 1..p_task_version_id_tbl.count
11872 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11873 VALUES(l_process_number_temp,p_task_version_id_tbl(i), 'PA_TASKS',1 );
11874
11875 l_mass_rollup_prog_rec_tab.delete;
11876 OPEN c_mass_rollup_tasks;
11877 FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
11878 CLOSE c_mass_rollup_tasks;
11879
11880 FORALL i IN 1..l_mass_rollup_prog_rec_tab.COUNT
11881 INSERT INTO PA_PROJ_ROLLUP_TEMP(
11882 PROCESS_NUMBER,
11883 OBJECT_TYPE,
11884 OBJECT_ID,
11885 wbs_level)
11886 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_rec_tab(i), 1);
11887
11888 l_mass_rollup_prog_rec_tab.delete;
11889 ELSE
11890 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11891 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
11892 FROM pa_proj_element_versions
11893 WHERE project_id = p_project_id
11894 AND parent_structure_version_id = p_structure_version_id
11895 AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
11896 AND object_type = 'PA_TASKS'
11897 UNION
11898 SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
11899 FROM dual;
11900
11901
11902 l_tmp_prog.delete;
11903 OPEN c_progress_parent(p_project_id);
11904 FETCH c_progress_parent BULK COLLECT INTO l_tmp_prog;
11905 CLOSE c_progress_parent;
11906
11907 l_prog_obj.delete;
11908 FOR i in 1..l_tmp_prog.count loop
11909 l_prog_obj(l_tmp_prog(i) ) := l_tmp_prog(i);
11910 end loop;
11911
11912
11913 END IF;
11914 END IF;
11915
11916 IF g1_debug_mode = 'Y' THEN
11917 l_mass_rollup_prog_rec_tab.delete;
11918 OPEN c_mass_rollup_tasks_temp;
11919 FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
11920 CLOSE c_mass_rollup_tasks_temp;
11921 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
11922 FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
11923 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
11924 END LOOP;
11925 l_mass_rollup_prog_rec_tab.delete;
11926 END IF;
11927
11928 OPEN cur_tasks(1);
11929 FETCH cur_tasks BULK COLLECT INTO
11930 l_tsk_object_id_from1_tab
11931 ,l_tsk_parent_object_type_tab
11932 ,l_tsk_object_id_to1_tab
11933 ,l_tsk_object_type_tab
11934 ,l_tsk_wbs_level_tab
11935 ,l_tsk_weighting_percent_tab
11936 ,l_tsk_roll_comp_percent_tab
11937 ,l_tsk_over_percent_comp_tab
11938 ,l_tsk_as_of_date_tab
11939 ,l_tsk_actual_start_date_tab
11940 ,l_tsk_actual_finish_date_tab
11941 ,l_tsk_est_start_date_tab
11942 ,l_tsk_est_finish_date_tab
11943 ,l_tsk_rollup_weight1_tab
11944 ,l_tsk_override_weight2_tab
11945 ,l_tsk_base_weight3_tab
11946 ,l_tsk_task_weight4_tab
11947 ,l_tsk_status_code_tab
11948 ,l_tsk_object_id_tab
11949 ,l_tsk_proj_element_id_tab
11950 ,l_tsk_PPL_ACT_EFF_tab
11951 ,l_tsk_PPL_ACT_COST_TC_tab
11952 ,l_tsk_PPL_ACT_COST_PC_tab
11953 ,l_tsk_PPL_ACT_COST_FC_tab
11954 ,l_tsk_PPL_ACT_RAWCOST_TC_tab
11955 ,l_tsk_PPL_ACT_RAWCOST_PC_tab
11956 ,l_tsk_PPL_ACT_RAWCOST_FC_tab
11957 ,l_tsk_EST_REM_EFFORT_tab
11958 ,l_tsk_PPL_ETC_COST_TC_tab
11959 ,l_tsk_PPL_ETC_COST_PC_tab
11960 ,l_tsk_PPL_ETC_COST_FC_tab
11961 ,l_tsk_PPL_ETC_RAWCOST_TC_tab
11962 ,l_tsk_PPL_ETC_RAWCOST_PC_tab
11963 ,l_tsk_PPL_ETC_RAWCOST_FC_tab
11964 ,l_tsk_EQPMT_ACT_EFFORT_tab
11965 ,l_tsk_EQPMT_ACT_COST_TC_tab
11966 ,l_tsk_EQPMT_ACT_COST_PC_tab
11967 ,l_tsk_EQPMT_ACT_COST_FC_tab
11968 ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
11969 ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
11970 ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
11971 ,l_tsk_EQPMT_ETC_EFFORT_tab
11972 ,l_tsk_EQPMT_ETC_COST_TC_tab
11973 ,l_tsk_EQPMT_ETC_COST_PC_tab
11974 ,l_tsk_EQPMT_ETC_COST_FC_tab
11975 ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
11976 ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
11977 ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
11978 ,l_tsk_OTH_QUANTITY_tab
11979 ,l_tsk_OTH_ACT_COST_TC_tab
11980 ,l_tsk_OTH_ACT_COST_PC_tab
11981 ,l_tsk_OTH_ACT_COST_FC_tab
11982 ,l_tsk_OTH_ACT_RAWCOST_TC_tab
11983 ,l_tsk_OTH_ACT_RAWCOST_PC_tab
11984 ,l_tsk_OTH_ACT_RAWCOST_FC_tab
11985 ,l_tsk_OTH_ETC_QUANTITY_tab
11986 ,l_tsk_OTH_ETC_COST_TC_tab
11987 ,l_tsk_OTH_ETC_COST_PC_tab
11988 ,l_tsk_OTH_ETC_COST_FC_tab
11989 ,l_tsk_OTH_ETC_RAWCOST_TC_tab
11990 ,l_tsk_OTH_ETC_RAWCOST_PC_tab
11991 ,l_tsk_OTH_ETC_RAWCOST_FC_tab
11992 ,l_tsk_CURRENT_FLAG_tab
11993 ,l_tsk_PF_COST_RATE_TYPE_tab
11994 ,l_tsk_PF_COST_EXC_RATE_tab
11995 ,l_tsk_PF_COST_RATE_DATE_tab
11996 ,l_tsk_P_COST_RATE_TYPE_tab
11997 ,l_tsk_P_COST_EXC_RATE_tab
11998 ,l_tsk_P_COST_RATE_DATE_tab
11999 ,l_tsk_TXN_CURRENCY_CODE_tab
12000 ,l_tsk_PROG_PA_PERIOD_NAME_tab
12001 ,l_tsk_PROG_GL_PERIOD_NAME_tab
12002 ,l_tsk_bac_value_tab
12003 ,l_tsk_bac_self_value_tab -- Bug 4493105
12004 ,l_tsk_earned_value_tab
12005 ,l_tsk_deriv_method_tab
12006 ,l_tsk_progress_rollup_id_tab
12007 ,l_tsk_rollup_rec_ver_num_tab
12008 ,l_tsk_object_version_id_tab
12009 ,l_tsk_progress_stat_code_tab
12010 ,l_tsk_incremental_wq_tab
12011 ,l_tsk_cumulative_wq_tab
12012 ,l_tsk_base_prog_stat_code_tab
12013 ,l_tsk_eff_roll_prg_st_code_tab
12014 ,l_tsk_percent_complete_id_tab
12015 ,l_tsk_task_wt_basis_code_tab
12016 ,l_tsk_structure_version_id_tab
12017 ,l_tsk_create_required
12018 ,l_tsk_update_required
12019 ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
12020 ;
12021 CLOSE cur_tasks;
12022
12023
12024 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
12025
12026 IF g1_debug_mode = 'Y' THEN
12027 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
12028 END IF;
12029
12030 FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
12031 -- Bug 4636100 Issue 2 : Added following if
12032 -- The intention of this IF is to just pass the structure level record
12033 -- to scheduling API. Note that in structure case, we just pass one level
12034 -- records below say task A, and if that below task A has an assignment, it will calculate
12035 -- wrong % complete because we are not sending A's childs
12036 IF ((nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
12037 OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
12038 OR (p_rollup_entire_wbs = 'Y'))
12039 THEN
12040 IF g1_debug_mode = 'Y' THEN
12041 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
12042 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
12043 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
12044 END IF;
12045 l_tsk_progress_exists := 'N';
12046 l_parent_count := l_parent_count + 1;
12047 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12048 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
12049
12050 IF g1_debug_mode = 'Y' THEN
12051 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12052 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
12053 END IF;
12054
12055 -- Bug 4392189 : Program Changes Begin
12056 IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
12057 l_sub_project_id := null;
12058 l_subproj_prog_rollup_id := null;
12059 l_subproj_act_start_date := null;
12060 l_subproj_act_finish_date := null;
12061 l_subproj_est_start_date := null;
12062 l_subproj_est_finish_date := null;
12063 l_subproj_rollup_weight1 := null;
12064 l_subproj_override_weight2 := null;
12065 l_subproj_base_weight3 := null;
12066 l_subproj_task_weight4 := null;
12067 l_subproj_earned_value := null;
12068 l_subproj_bac_value := null;
12069
12070 -- 4587527 : It was not supporting multiple sub projects at link task
12071 -- So converted it into FOR LOOP
12072 FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
12073 --IF l_sub_project_id IS NOT NULL THEN
12074 IF g1_debug_mode = 'Y' THEN
12075 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
12076 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
12077 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
12078 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
12079 END IF;
12080 l_subproject_found := 'Y'; -- Bug 4506461
12081 l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
12082 IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
12083 l_actual_lowest_task := 'Y';
12084 END IF;
12085
12086 l_subproj_prog_rollup_id := null;
12087 l_subproj_act_start_date := null;
12088 l_subproj_act_finish_date := null;
12089 l_subproj_est_start_date := null;
12090 l_subproj_est_finish_date := null;
12091 l_subproj_rollup_weight1 := null;
12092 l_subproj_override_weight2 := null;
12093 l_subproj_base_weight3 := null;
12094 l_subproj_task_weight4 := null;
12095 l_subproj_bac_value := null;
12096 l_subproj_comp_percentage := null;
12097
12098 OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
12099 FETCH c_get_sub_project_progress INTO
12100 l_subproj_prog_rollup_id
12101 , l_subproj_act_start_date
12102 , l_subproj_act_finish_date
12103 , l_subproj_est_start_date
12104 , l_subproj_est_finish_date
12105 , l_subproj_rollup_weight1
12106 , l_subproj_override_weight2
12107 , l_subproj_base_weight3
12108 , l_subproj_task_weight4
12109 --, l_subproj_earned_value Bug 4506009
12110 , l_subproj_bac_value
12111 , l_subproj_comp_percentage -- Bug 4506009
12112 ;
12113 CLOSE c_get_sub_project_progress;
12114
12115 IF g1_debug_mode = 'Y' THEN
12116 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
12117 END IF;
12118
12119 l_index := l_index + 1;
12120
12121 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_SUBPROJECTS';
12122 l_rollup_table1(l_index).OBJECT_ID := (-1 * l_index);
12123 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
12124 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);
12125 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
12126 l_rollup_table1(l_index).CALENDAR_ID := l_index;
12127
12128 -- 4533112 : Added following check
12129 IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
12130 l_rollup_table1(l_index).START_DATE1 := l_subproj_act_start_date;
12131 l_rollup_table1(l_index).FINISH_DATE1 := l_subproj_act_finish_date;
12132 l_rollup_table1(l_index).START_DATE2 := l_subproj_est_start_date;
12133 l_rollup_table1(l_index).FINISH_DATE2 := l_subproj_est_finish_date;
12134 END IF;
12135 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl(l_subproj_comp_percentage, 0);
12136 l_rollup_table1(l_index).BAC_VALUE1 := NVL(rec_subproj.sub_project_bac_value, 0);
12137 -- 4582956 End
12138
12139 -- Rollup Progress Status Rollup
12140 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_subproj_rollup_weight1,0); --rollup prog status
12141 l_rollup_table1(l_index).PROGRESS_override1 := l_subproj_override_weight2; --override prg status
12142
12143 -- Base Progress Status Rollup
12144 -- 4533112 : Base progress status is not used
12145 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_subproj_base_weight3, 0 ); --base prog status
12146 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
12147
12148 -- Task Status Rollup
12149 l_rollup_table1(l_index).task_status1 := nvl( l_subproj_task_weight4, 0 ); -- task status
12150 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
12151 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
12152 l_action_allowed := 'Y';
12153 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
12154 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
12155
12156 IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
12157 -- This means Progress exists for the corresponding task
12158 l_tsk_progress_exists := 'Y';
12159 END IF;
12160 --END IF; -- l_sub_project_id IS NOT NULL THEN
12161 END LOOP;
12162 END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
12163 -- Bug 4392189 : Program Changes End
12164
12165 -- Loop thru all task assignments of a passed parent
12166 IF p_structure_type = 'WORKPLAN'
12167 THEN
12168 l_asgn_task_version_id_tab.delete;
12169 l_asgn_rate_based_flag_tab.delete;
12170 l_asgn_resource_class_code_tab.delete;
12171 l_asgn_res_assignment_id_tab.delete;
12172 l_asgn_planned_quantity_tab.delete;
12173 l_asgn_plan_bur_cost_pc_tab.delete;
12174 l_asgn_res_list_member_id_tab.delete;
12175
12176 OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
12177 FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
12178 , l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
12179 , l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
12180 CLOSE cur_assgn_rec_bulk;
12181
12182 IF g1_debug_mode = 'Y' THEN
12183 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
12184 END IF;
12185
12186 FOR i in 1..l_asgn_task_version_id_tab.count LOOP
12187 IF g1_debug_mode = 'Y' THEN
12188 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
12189 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
12190 END IF;
12191
12192 l_asgn_progress_rec := null;
12193 l_asgn_act_start_date := null;
12194 l_asgn_act_finish_date := null;
12195 l_asgn_est_start_date := null;
12196 l_asgn_est_finish_date := null;
12197 l_asgn_as_of_date := null;
12198 l_asgn_ppl_act_eff := null;
12199 l_asgn_eqp_act_eff := null;
12200 l_asgn_ppl_act_cost := null;
12201 l_asgn_eqp_act_cost := null;
12202 l_asgn_oth_act_cost := null;
12203 l_asgn_ppl_etc_eff := null;
12204 l_asgn_eqp_etc_eff := null;
12205 l_asgn_ppl_etc_cost := null;
12206 l_asgn_eqp_etc_cost := null;
12207 l_asgn_oth_etc_cost := null;
12208
12209 OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
12210 FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
12211 CLOSE cur_get_asgn_progress;
12212
12213 IF g1_debug_mode = 'Y' THEN
12214 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
12215 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
12216 END IF;
12217
12218 IF l_asgn_progress_rec.object_id is not null THEN
12219 l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
12220 l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
12221 l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
12222 l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
12223 l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
12224
12225 l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
12226 l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
12227 l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
12228 l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
12229 l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
12230
12231 l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
12232 l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
12233 l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
12234 l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
12235 l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
12236
12237 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
12238 l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_eqp_act_eff,0);
12239 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
12240 IF l_asgn_ppl_etc_eff IS NULL THEN
12241 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12242 ELSE
12243 l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
12244 END IF;
12245 ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
12246 IF l_asgn_eqp_etc_eff IS NULL THEN
12247 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12248 ELSE
12249 l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
12250 END IF;
12251 ELSE
12252 l_asgn_bac_value := 0;
12253 END IF;
12254 ELSE
12255 l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
12256 IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
12257 IF l_asgn_ppl_etc_cost IS NULL THEN
12258 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12259 ELSE
12260 l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
12261 END IF;
12262 ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
12263 IF l_asgn_eqp_etc_cost IS NULL THEN
12264 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12265 ELSE
12266 l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
12267 END IF;
12268 ELSE
12269 IF l_asgn_oth_etc_cost IS NULL THEN
12270 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12271 ELSE
12272 l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
12273 END IF;
12274 END IF;
12275 END IF;
12276 ELSE
12277 l_asgn_earned_value := 0;
12278 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
12279 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
12280 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12281 ELSE
12282 l_asgn_bac_value := 0;
12283 END IF;
12284 ELSE
12285 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12286 END IF;
12287 END IF;
12288
12289 l_index := l_index + 1;
12290
12291 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_ASSIGNMENTS';
12292 l_rollup_table1(l_index).OBJECT_ID := l_asgn_res_assignment_id_tab(i);
12293 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
12294 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_asgn_task_version_id_tab(i);
12295 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
12296 l_rollup_table1(l_index).CALENDAR_ID := l_index;
12297
12298 -- Percent Complete needs to be derived using Earned Value and BAC Value
12299
12300 -- Percent Complete at Assignment level does not get calculated
12301 -- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
12302
12303 --Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
12304 -- and child task actual dates, regardless of the PPC Method.
12305 -- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
12306 IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
12307 -- Actual Date Rollup : Only Start Date gets rolls up.
12308 l_rollup_table1(l_index).START_DATE1 := l_asgn_act_start_date;
12309 l_rollup_table1(l_index).FINISH_DATE1 := l_asgn_act_finish_date;
12310
12311 -- Estimated Date Rollup : Only Start Date gets rolls up.
12312 l_rollup_table1(l_index).START_DATE2 := l_asgn_est_start_date;
12313 l_rollup_table1(l_index).FINISH_DATE2 := l_asgn_est_finish_date;
12314 END IF;
12315
12316 -- Progress Status entry is not there at assignment level
12317 -- Assignment Status entry is not there at assignment level
12318 -- Earned Value and BAC Rollup
12319 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
12320 l_rollup_table1(l_index).EARNED_VALUE1 := 0;
12321 l_rollup_table1(l_index).BAC_VALUE1 := 1;
12322 -- 4392189 : Program Reporting Changes - Phase 2
12323 -- Having Set2 columns to get Project level % complete
12324 l_rollup_table1(l_index).EARNED_VALUE2 := 0;
12325 l_rollup_table1(l_index).BAC_VALUE2 := 1;
12326 ELSE
12327 l_rollup_table1(l_index).EARNED_VALUE1 := NVL( l_asgn_earned_value, 0 );
12328 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_asgn_bac_value, 0 );
12329 -- 4392189 : Program Reporting Changes - Phase 2
12330 -- Having Set2 columns to get Project level % complete
12331 l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_asgn_earned_value, 0 );
12332 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_asgn_bac_value, 0 );
12333 END IF;
12334
12335 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
12336 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
12337 l_action_allowed := 'Y';
12338 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
12339 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
12340
12341 IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS NOT NULL THEN
12342 -- This means Progress exists for the corresponding task
12343 l_tsk_progress_exists := 'Y';
12344 END IF;
12345
12346 --Bug#12393400 - Added - Begin
12347 -- For resource assignments in working version,
12348 -- the actual_finish_date should be NULL in case actual effort is not same as planned
12349
12350 IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
12351 AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
12352 AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
12353 -- Update to happen only version is disabled or on a working version when version enabled
12354 IF (l_wp_version_enabled_flag = 'N'
12355 OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
12356 UPDATE PA_PROGRESS_ROLLUP
12357 SET ACTUAL_FINISH_DATE = NULL
12358 WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
12359 END IF;
12360 END IF; -- end check for
12361 --Bug#12393400 - Added - End
12362
12363 END LOOP; -- Assignments Loop
12364 END IF;
12365
12366 -- Bug 3957792 : Added check for Cancelled tasks
12367 IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k) = 'DELIVERABLE'
12368 AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
12369 THEN
12370 FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id) LOOP -- FPM Change
12371 IF g1_debug_mode = 'Y' THEN
12372 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
12373 END IF;
12374
12375 l_index := l_index + 1;
12376
12377 l_rollup_table1(l_index).OBJECT_TYPE := cur_del_rec.object_type;
12378 l_rollup_table1(l_index).OBJECT_ID := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
12379 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_del_rec.parent_object_type;
12380 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);--Object Version Id of Task
12381 l_rollup_table1(l_index).WBS_LEVEL := 9999999;
12382 l_rollup_table1(l_index).CALENDAR_ID := l_index;
12383
12384 -- Rollup Percent Complete Rollup
12385 l_rollup_table1(l_index).task_weight1 := nvl( cur_del_rec.weighting_percentage, 0 );
12386 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_del_rec.completed_percentage, 0 );
12387 -- 4392189 : Program Reporting Changes - Phase 2
12388 -- Having Set2 columns to get Project level % complete
12389 l_rollup_table1(l_index).task_weight2 := nvl( cur_del_rec.weighting_percentage, 0 );
12390 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.completed_percentage, 0 );
12391
12392 --l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0; -- FPM Dev CR 2
12393
12394 -- Base Percent Complete Rollup
12395
12396 -- Dates will not get rolled up for deliverable
12397
12398 -- Rollup Progress Status Rollup
12399
12400 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0; --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
12401 l_rollup_table1(l_index).PROGRESS_override1 := cur_del_rec.override_weight; --override prg status
12402
12403 -- Base Progress Status Rollup
12404 -- 4533112 : Now base progress status is not used
12405 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
12406 -- l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
12407
12408 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
12409 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
12410
12411 -- Deliverable Status will not get rolled up for deliverable
12412
12413 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12414
12415 IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
12416 l_action_allowed := 'N';
12417 END IF;
12418
12419 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
12420 l_action_allowed := 'N';
12421 END IF;
12422
12423 IF g1_debug_mode = 'Y' THEN
12424 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12425 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
12426 END IF;
12427
12428 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
12429 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
12430
12431 --maansari4/10 temporarily passing 'Y' to rollup node.
12432 -- need to investigate why l_action_allowed is coming always as 'N'
12433
12434 l_rollup_table1(l_index).rollup_node1 := 'Y';
12435 l_rollup_table1(l_index).rollup_node2 := 'Y';
12436
12437 IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL THEN
12438 -- This means Progress exists for the corresponding task
12439 l_tsk_progress_exists := 'Y';
12440 END IF;
12441 END LOOP; -- Delivertables Loop
12442 END IF; -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES' THEN
12443
12444 l_index := l_index + 1;
12445
12446 l_rollup_table1(l_index).OBJECT_TYPE := l_tsk_object_type_tab(k);
12447 l_rollup_table1(l_index).OBJECT_ID := l_tsk_object_id_to1_tab(k);--Task Version Id
12448 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := l_tsk_parent_object_type_tab(k);
12449 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_from1_tab(k); --Parent Task Version Id
12450 l_rollup_table1(l_index).WBS_LEVEL := NVL( l_tsk_wbs_level_tab(k), 0 );
12451 l_rollup_table1(l_index).CALENDAR_ID := l_index;
12452 -- 4582956 Begin
12453 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag; -- 4370746
12454 IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
12455 -- 4586449 : Passing L for link tasks
12456 --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; --Link task shd be treated as summary task
12457 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'L'; --Link task shd be treated as summary task
12458 ELSE
12459 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag;
12460 END IF;
12461 -- 4582956 end
12462
12463 -- Rollup Percent Complete Rollup
12464 l_rollup_table1(l_index).task_weight1 := nvl( l_tsk_weighting_percent_tab(k), 0 );
12465 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( l_tsk_roll_comp_percent_tab(k), 0 );
12466 -- 4392189 : Program Reporting Changes - Phase 2
12467 -- Having Set2 columns to get Project level % complete
12468 l_rollup_table1(l_index).task_weight2 := nvl( l_tsk_weighting_percent_tab(k), 0 );
12469 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( l_tsk_base_percent_comp_tab(k), 0 );
12470
12471 --bug 4045979, start
12472 l_task_baselined := 'N';
12473 l_parent_task_baselined := 'N';
12474 -- added if condition for bug 13923366 Huawei by skkoppul
12475 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
12476 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
12477 l_task_baselined := 'Y';
12478 l_parent_task_baselined := 'Y';
12479 ELSE
12480 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
12481 FETCH check_task_baselined INTO l_task_baselined;
12482 CLOSE check_task_baselined;
12483
12484 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
12485 FETCH check_task_baselined INTO l_parent_task_baselined;
12486 CLOSE check_task_baselined;
12487 END IF;
12488
12489 OPEN c1_rolldates(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
12490 FETCH c1_rolldates INTO l_tsk_sch_start_date, l_tsk_sch_finish_date;
12491 CLOSE c1_rolldates;
12492
12493 -- 4392189 : Program Reporting Changes - Phase 2
12494 -- Having Set2 columns to get Project level % complete
12495
12496 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
12497 THEN
12498 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
12499 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
12500 ELSE
12501 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := l_tsk_over_percent_comp_tab(k);
12502 --4557541 : For self % complete Override at tasks level would not be considered
12503 --l_rollup_table1(l_index).PERCENT_OVERRIDE2 := l_tsk_over_percent_comp_tab(k);
12504 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
12505 END IF;
12506
12507 -- Bug 4284353 : Added below code
12508 IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
12509 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
12510 l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
12511 END IF;
12512
12513 -- Actual Date Rollup
12514 l_rollup_table1(l_index).START_DATE1 := l_tsk_actual_start_date_tab(k);
12515 l_rollup_table1(l_index).FINISH_DATE1 := l_tsk_actual_finish_date_tab(k);
12516
12517 -- Estimated Date Rollup
12518 l_rollup_table1(l_index).START_DATE2 := l_tsk_est_start_date_tab(k);
12519 l_rollup_table1(l_index).FINISH_DATE2 := l_tsk_est_finish_date_tab(k);
12520
12521 -- Rollup Progress Status Rollup
12522 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_tsk_rollup_weight1_tab(k),0); --rollup prog status
12523 l_rollup_table1(l_index).PROGRESS_override1 := l_tsk_override_weight2_tab(k); --override prg status
12524
12525 -- Base Progress Status Rollup
12526 -- 4533112 : base progress status is not used
12527 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 ); --base prog status
12528 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
12529
12530 -- Task Status Rollup
12531 l_rollup_table1(l_index).task_status1 := nvl( l_tsk_task_weight4_tab(k), 0 ); -- task status
12532 -- 4392189 : Program Reporting Changes - Phase 2
12533 -- Having Set2 columns to get Project level % complete
12534 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12535 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12536
12537 --END IF;
12538
12539 -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
12540 -- in earned_value1 set
12541 IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
12542
12543 l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
12544 , l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k), p_structure_version_id,
12545 'WORKPLAN','N','Y');
12546 -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
12547 --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
12548 l_rollup_table1(l_index).EARNED_VALUE2 := 1;
12549 END IF;
12550
12551 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_tsk_bac_value_tab(k), 0 );
12552
12553 IF g1_debug_mode = 'Y' THEN
12554 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1, x_Log_Level=> 3);
12555 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
12556 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
12557 END IF;
12558
12559 -- 4586449 End
12560
12561 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k), 0 );
12562
12563 -- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
12564 -- Otheriwse it will look for deliverables and will result in 0 % complete
12565 IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
12566 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
12567 ELSE
12568 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
12569 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
12570 END IF;
12571
12572 -- Bug 4207995 : Passing Dirty_flags always Y
12573 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
12574 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
12575 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
12576 -- ELSE
12577 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
12578 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
12579 -- END IF;
12580
12581 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12582
12583 IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
12584 l_action_allowed := 'N';
12585 END IF;
12586
12587 IF g1_debug_mode = 'Y' THEN
12588 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12589 END IF;
12590
12591 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
12592 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
12593
12594 --maansari4/10 temporarily passing 'Y' to rollup node.
12595 -- need to investigate why l_action_allowed is coming always as 'N'
12596 l_rollup_table1(l_index).rollup_node1 := 'Y';
12597 l_rollup_table1(l_index).rollup_node2 := 'Y';
12598
12599 l_rollup_table1(l_index).START_DATE3 := l_tsk_sch_start_date;
12600 l_rollup_table1(l_index).FINISH_DATE3 := l_tsk_sch_finish_date;
12601
12602 IF p_rollup_entire_wbs = 'Y' THEN
12603 -- This means Progress exists for the corresponding task
12604 IF l_tsk_progress_exists = 'Y' THEN
12605 l_mass_rollup_prog_exists_tab.extend(1);
12606 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12607 ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
12608 l_mass_rollup_prog_exists_tab.extend(1);
12609 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12610 ELSE --Amit Added on 20-Sep
12611 l_mass_rollup_prog_exists_tab.extend(1);
12612 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12613 END IF;
12614 END IF;
12615 l_mapping_tasks_to_rollup_tab(l_index):= k;
12616 --IF (p_process_whole_tree = 'N' and l_parent_count = 2) THEN
12617 -- exit;
12618 --END IF;
12619 END IF; -- Bug 4636100 Issue 2 : Added Endif
12620 END LOOP; -- End Tasks Loop
12621
12622 --begin bug 3951982
12623 IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
12624 AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
12625 AND l_actual_lowest_task = 'N' -- Bug 4392189
12626 THEN
12627 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
12628 SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS', 1
12629 FROM dual;
12630
12631 FOR cur_tasks_rec in cur_tasks(1) LOOP
12632 IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
12633 IF g1_debug_mode = 'Y' THEN
12634 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second task cursor for summary task with assignments', x_Log_Level=> 3);
12635 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1, x_Log_Level=> 3);
12636 END IF;
12637 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
12638
12639 l_index := l_index + 1;
12640
12641 l_rollup_table1(l_index).OBJECT_TYPE := cur_tasks_rec.object_type;
12642 l_rollup_table1(l_index).OBJECT_ID := cur_tasks_rec.object_id_to1;--Task Version Id
12643 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_tasks_rec.parent_object_type;
12644 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_tasks_rec.object_id_from1; --Parent Task Version Id
12645 l_rollup_table1(l_index).WBS_LEVEL := NVL( cur_tasks_rec.wbs_level, 0 );
12646 l_rollup_table1(l_index).CALENDAR_ID := l_index;
12647 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; -- 4370746
12648
12649 -- Rollup Percent Complete Rollup
12650 l_rollup_table1(l_index).task_weight1 := nvl( cur_tasks_rec.weighting_percentage, 0 );
12651 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
12652 -- 4392189 : Program Reporting Changes - Phase 2
12653 -- Having Set2 columns to get Project level % complete
12654 l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
12655 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
12656
12657 --bug 4045979, start
12658 l_task_baselined := 'N';
12659 l_parent_task_baselined := 'N';
12660 -- added if condition for bug 13923366 by skkoppul
12661 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
12662 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
12663 l_task_baselined := 'Y';
12664 l_parent_task_baselined := 'Y';
12665 ELSE
12666 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
12667 FETCH check_task_baselined INTO l_task_baselined;
12668 CLOSE check_task_baselined;
12669
12670 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
12671 FETCH check_task_baselined INTO l_parent_task_baselined;
12672 CLOSE check_task_baselined;
12673 END IF;
12674
12675 -- 4392189 : Program Reporting Changes - Phase 2
12676 -- Having Set2 columns to get Project level % complete
12677
12678 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
12679 THEN
12680 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
12681 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
12682 ELSE
12683 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := cur_tasks_rec.override_percent_complete;
12684 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
12685 END IF;
12686 --bug 4045979, end
12687 -- Actual Date Rollup
12688 l_rollup_table1(l_index).START_DATE1 := cur_tasks_rec.actual_start_date;
12689 l_rollup_table1(l_index).FINISH_DATE1 := cur_tasks_rec.actual_finish_date;
12690
12691 -- Estimated Date Rollup
12692 l_rollup_table1(l_index).START_DATE2 := cur_tasks_rec.estimated_start_date;
12693 l_rollup_table1(l_index).FINISH_DATE2 := cur_tasks_rec.estimated_finish_date;
12694
12695 -- Rollup Progress Status Rollup
12696 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(cur_tasks_rec.rollup_weight1,0); --rollup prog status
12697 l_rollup_table1(l_index).PROGRESS_override1 := cur_tasks_rec.override_weight2; --override prg status
12698
12699 -- Base Progress Status Rollup
12700 -- 4533112 : Base Progress Status is not used
12701 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 ); --base prog status
12702 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
12703
12704 -- Task Status Rollup
12705 l_rollup_table1(l_index).task_status1 := nvl( cur_tasks_rec.task_weight4, 0 ); -- task status
12706
12707 -- ETC Effort Rollup
12708 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
12709 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
12710
12711 -- ETC Cost in Project Currency Rollup
12712 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
12713 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
12714 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
12715
12716 -- ETC Cost in Project Functional Currency Rollup
12717 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
12718 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
12719 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
12720
12721 -- Sub Project ETC Effort Rollup
12722 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
12723 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
12724
12725 -- Sub Project ETC Cost in Project Currency Rollup
12726 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
12727 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
12728 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
12729
12730 -- Sub Project ETC Cost in Project Functional Currency Rollup
12731 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
12732 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
12733 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
12734
12735 -- 4392189 : Program Reporting Changes - Phase 2
12736 -- Having Set2 columns to get Project level % complete
12737
12738 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12739 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_tasks_rec.BAC_VALUE, 0 );
12740
12741 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12742 l_rollup_table1(l_index).BAC_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
12743
12744 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
12745 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
12746 -- Bug 4207995 : Passing Dirty_flags always Y
12747 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
12748 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
12749 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
12750 -- ELSE
12751 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
12752 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
12753 -- END IF;
12754
12755 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
12756
12757 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
12758 l_action_allowed := 'N';
12759 END IF;
12760
12761 IF g1_debug_mode = 'Y' THEN
12762 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12763 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
12764 END IF;
12765
12766 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
12767 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
12768
12769 --maansari4/10 temporarily passing 'Y' to rollup node.
12770 -- need to investigate why l_action_allowed is coming always as 'N'
12771 l_rollup_table1(l_index).rollup_node1 := 'Y';
12772 l_rollup_table1(l_index).rollup_node2 := 'Y';
12773 END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
12774 END LOOP;
12775 END IF; -- p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
12776 --end bug 3951982
12777
12778 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
12779
12780 IF g1_debug_mode = 'Y' THEN
12781 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
12782 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
12783 END LOOP;
12784 END IF;
12785
12786 IF p_rollup_entire_wbs = 'Y' THEN
12787 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
12788 INSERT INTO PA_PROJ_ROLLUP_TEMP(
12789 PROCESS_NUMBER,
12790 OBJECT_TYPE,
12791 OBJECT_ID,
12792 wbs_level)
12793 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
12794
12795 l_mass_rollup_prog_exists_tab.delete;
12796
12797 OPEN c_mass_rollup_tasks;
12798 FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
12799 CLOSE c_mass_rollup_tasks;
12800
12801 IF g1_debug_mode = 'Y' THEN
12802 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
12803 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
12804 END LOOP;
12805 END IF;
12806
12807 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
12808 INSERT INTO PA_PROJ_ROLLUP_TEMP(
12809 PROCESS_NUMBER,
12810 OBJECT_TYPE,
12811 OBJECT_ID,
12812 wbs_level)
12813 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
12814
12815 END IF;
12816
12817 -- FPM Dev CR 2 : Printing the Rollup Table before calling Generate Schedule
12818 IF g1_debug_mode = 'Y' THEN
12819 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
12820 FOR i IN 1..l_rollup_table1.count LOOP
12821 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
12822 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
12823 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
12824 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
12825 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
12826 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
12827 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
12828 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
12829 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
12830 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
12831 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
12832 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
12833 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
12834 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
12835 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
12836 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
12837 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
12838 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
12839 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
12840 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
12841 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
12842 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
12843 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
12844 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
12845 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
12846 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
12847 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
12848 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12849 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
12850 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
12851 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
12852 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
12853 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12854 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
12855 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
12856 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
12857 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
12858 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
12859 END LOOP;
12860 END IF;
12861
12862 IF l_rollup_table1.count <= 0 THEN
12863 return;
12864 END IF;
12865
12866 --Added by rtarway for bug 3950574
12867 IF p_structure_type = 'WORKPLAN' THEN
12868 l_digit_number := 8; --Bug 6854114
12869 ELSE
12870 l_digit_number := 8; --Bug 6854114
12871 END IF;
12872
12873 -- Bug 4207995 : Commented partial_flags in the below call
12874
12875 PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
12876 p_commit => p_commit
12877 ,p_debug_mode => 'Y'
12878 ,x_return_status => l_return_status
12879 ,x_msg_count => l_msg_count
12880 ,x_msg_data => l_msg_data
12881 ,x_process_number => l_process_number
12882 ,p_data_structure => l_rollup_table1
12883 ,p_number_digit => l_digit_number
12884 ,p_process_flag1 => 'Y'
12885 ,p_process_rollup_flag1 => 'Y'
12886 ,p_process_progress_flag1 => 'Y'
12887 ,p_process_percent_flag1 => 'Y'
12888 ,p_process_effort_flag1 => 'Y'
12889 ,p_process_task_status_flag1 => 'Y'
12890 ,p_process_flag2 => 'Y'
12891 ,p_process_rollup_flag2 => 'Y'
12892 ,p_process_progress_flag2 => 'Y'
12893 ,p_process_percent_flag2 => 'Y'
12894 ,p_process_ETC_Flag1 => 'Y'
12895 ,p_process_ETC_Flag2 => 'Y'
12896 ,p_partial_process_flag3 => 'Y'
12897 ,p_partial_dates_flag3 => 'Y'
12898 ,p_process_flag3 => 'Y'
12899 ,p_partial_effort_flag3 => 'Y'
12900 ,p_process_rollup_flag3 => 'Y'
12901 ,p_process_effort_flag3 => 'Y'
12902 ,p_Rollup_Method => l_Rollup_Method
12903 ,p_calling_module => 'ROLLUP_API'
12904 );
12905
12906 IF g1_debug_mode = 'Y' THEN
12907 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After GENERATE_SCHEDULE', x_Log_Level=> 3);
12908 END IF;
12909
12910 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12911 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
12912 p_msg_name => l_msg_data);
12913 x_msg_data := l_msg_data;
12914 x_return_status := 'E';
12915 RAISE FND_API.G_EXC_ERROR;
12916 END IF;
12917
12918 IF g1_debug_mode = 'Y' THEN
12919 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Doing UPDATE_ROLLUP_PVT', x_Log_Level=> 3);
12920 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
12921 END IF;
12922
12923 ---- ************** Updation Starts ****************** ----------
12924
12925 IF g1_debug_mode = 'Y' THEN
12926 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
12927 FOR i IN 1..l_rollup_table1.count LOOP
12928 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
12929 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
12930 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
12931 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
12932 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
12933 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
12934 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
12935 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
12936 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
12937 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
12938 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
12939 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
12940 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
12941 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
12942 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
12943 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
12944 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
12945 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
12946 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
12947 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
12948 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
12949 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
12950 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
12951 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
12952 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
12953 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
12954 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
12955 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12956 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
12957 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
12958 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
12959 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
12960 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12961 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
12962 ||l_rollup_table1(i).EARNED_VALUE2||
12963 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
12964 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
12965 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
12966 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
12967 END LOOP;
12968 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
12969 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
12970 END IF;
12971
12972 BEGIN
12973 -- 4746476 : Added org_id in functions call below
12974 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
12975 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
12976 EXCEPTION
12977 WHEN OTHERS THEN
12978 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
12979 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
12980 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
12981 x_return_status := 'E';
12982 x_msg_count := fnd_msg_pub.count_msg;
12983 RAISE FND_API.G_EXC_ERROR;
12984 END ;
12985
12986 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
12987
12988
12989 FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
12990 IF g1_debug_mode = 'Y' THEN
12991 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1, x_Log_Level=> 3);
12992 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
12993 END IF;
12994
12995 FOR i in 1..l_rollup_table1.count LOOP
12996 IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
12997 (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
12998 THEN
12999 -- Find the corresponding task rollup record data position
13000 task_index := l_mapping_tasks_to_rollup_tab(i);
13001
13002 IF g1_debug_mode = 'Y' THEN
13003 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
13004 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=> 3);
13005 END IF;
13006 -- Bug 3919211 Begin
13007 IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
13008 l_task_id := 0;
13009 ELSE
13010 l_task_id := cur_reverse_tree_rec.proj_element_id;
13011 END IF;
13012 -- Bug 3919211 End
13013
13014 l_child_rollup_rec_exists := 'N';
13015 IF p_rollup_entire_wbs='Y' THEN
13016 BEGIN
13017 SELECT 'Y' into l_child_rollup_rec_exists
13018 FROM dual
13019 WHERE exists
13020 (
13021 SELECT 'xyz'
13022 from pa_proj_rollup_temp
13023 WHERE object_id = cur_reverse_tree_rec.object_id_to1
13024 and process_number = l_process_number_temp
13025 );
13026 EXCEPTION
13027 WHEN OTHERS THEN
13028 l_child_rollup_rec_exists := 'N';
13029 END;
13030 END IF;
13031
13032 IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
13033
13034
13035 l_eff_rollup_status_code := null;
13036 l_progress_status_code := null;
13037
13038 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
13039 FETCH cur_status INTO l_eff_rollup_status_code;
13040 CLOSE cur_status;
13041
13042 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) ); --get the base prog status
13043 FETCH cur_status INTO l_progress_status_code;
13044 CLOSE cur_status;
13045
13046 IF g1_debug_mode = 'Y' THEN
13047 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
13048 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
13049 END IF;
13050
13051
13052 -- FPM dev CR 4 : Initialized the values to null
13053 l_rolled_up_per_comp := null;
13054 l_rolled_up_prog_stat := null;
13055 l_rolled_up_base_prog_stat := null;
13056 l_rolled_up_prog_stat := null;
13057 l_remaining_effort1 := null;
13058 l_percent_complete1 := null;
13059 l_ETC_Cost_PC := null;
13060 l_PPL_ETC_COST_PC := null;
13061 l_EQPMT_ETC_COST_PC := null;
13062 l_ETC_Cost_FC := null;
13063 l_PPL_ETC_COST_FC := null;
13064 l_EQPMT_ETC_COST_FC := null;
13065 l_EQPMT_ETC_EFFORT := null;
13066 l_BAC_VALUE1 := null;
13067 l_EARNED_VALUE1 := null;
13068 l_remaining_effort1 := null;
13069 l_EQPMT_ETC_EFFORT := null;
13070 l_OTH_ACT_COST_TO_DATE_PC := null;
13071 l_PPL_ACT_COST_TO_DATE_PC := null;
13072 l_EQPMT_ACT_COST_TO_DATE_PC := null;
13073 l_OTH_ACT_COST_TO_DATE_FC := null;
13074 l_PPL_ACT_COST_TO_DATE_FC := null;
13075 l_EQPMT_ACT_COST_TO_DATE_FC := null;
13076 l_PPL_ACT_EFFORT_TO_DATE := null;
13077 l_EQPMT_ACT_EFFORT_TO_DATE := null;
13078 -- Bug 3621404 : Raw Cost Changes
13079 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
13080 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
13081 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
13082 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
13083 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
13084 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
13085 l_ETC_RAWCost_PC := null;
13086 l_PPL_ETC_RAWCOST_PC := null;
13087 l_EQPMT_ETC_RAWCOST_PC := null;
13088 l_ETC_RAWCost_FC := null;
13089 l_PPL_ETC_RAWCOST_FC := null;
13090 l_EQPMT_ETC_RAWCOST_FC := null;
13091 l_actual_start_date := l_rollup_table1(i).start_date1;
13092 l_actual_finish_date := l_rollup_table1(i).finish_date1;
13093 l_estimated_start_date := l_rollup_table1(i).start_date2;
13094 l_estimated_finish_date := l_rollup_table1(i).finish_date2;
13095
13096 l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
13097 l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
13098
13099
13100 IF g1_debug_mode = 'Y' THEN
13101 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
13102 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat, x_Log_Level=> 3);
13103 END IF;
13104
13105 IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task value, we shd get it for each task
13106 THEN
13107 -- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
13108 l_rolled_up_base_prog_stat := l_progress_status_code;
13109 ELSE
13110 -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
13111 l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
13112 END IF;
13113
13114 l_PROGRESS_ROLLUP_ID := null;
13115 l_rollup_rec_ver_number := null;
13116 l_percent_complete_id := null;
13117 IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
13118 l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
13119 l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
13120 END IF;
13121
13122 IF g1_debug_mode = 'Y' THEN
13123 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
13124 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
13125 END IF;
13126
13127 -- 4392189 : Program Reporting Changes - Phase 2
13128 -- Having Set2 columns to get Project level % complete
13129
13130 IF p_structure_type = 'WORKPLAN' THEN
13131 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
13132 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
13133 ELSE
13134 l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
13135 l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
13136 END IF;
13137
13138 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
13139 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
13140
13141 IF g1_debug_mode = 'Y' THEN
13142 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
13143 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
13144 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
13145 END IF;
13146
13147 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
13148
13149 IF p_wp_rollup_method = 'EFFORT' THEN
13150 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
13151 ELSE
13152 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
13153 END IF;
13154
13155 --bug 4317491, added a check of WORKPLAN
13156 IF p_structure_type = 'WORKPLAN' THEN
13157 BEGIN
13158 SELECT
13159
13160 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
13161 PERIOD_NAME
13162 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
13163 , ACT_PRJ_LABOR_BRDN_COST
13164 , ACT_PRJ_EQUIP_BRDN_COST
13165 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
13166 , ACT_POU_LABOR_BRDN_COST
13167 , ACT_POU_EQUIP_BRDN_COST
13168 , ACT_LABOR_HRS
13169 , ACT_EQUIP_HRS
13170 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
13171 , ETC_PRJ_LABOR_BRDN_COST
13172 , ETC_PRJ_EQUIP_BRDN_COST
13173 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
13174 , ETC_POU_LABOR_BRDN_COST
13175 , ETC_POU_EQUIP_BRDN_COST
13176 , ETC_LABOR_HRS
13177 , ETC_EQUIP_HRS
13178 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
13179 , ACT_PRJ_LABOR_RAW_COST
13180 , ACT_PRJ_EQUIP_RAW_COST
13181 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
13182 , ACT_POU_LABOR_RAW_COST
13183 , ACT_POU_EQUIP_RAW_COST
13184 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
13185 , ETC_PRJ_LABOR_RAW_COST
13186 , ETC_PRJ_EQUIP_RAW_COST
13187 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
13188 , ETC_POU_LABOR_RAW_COST
13189 , ETC_POU_EQUIP_RAW_COST
13190 , LABOR_HOURS
13191 , EQUIPMENT_HOURS
13192 , POU_LABOR_BRDN_COST
13193 , PRJ_LABOR_BRDN_COST
13194 , POU_EQUIP_BRDN_COST
13195 , PRJ_EQUIP_BRDN_COST
13196 , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
13197 , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
13198 , POU_LABOR_RAW_COST
13199 , PRJ_LABOR_RAW_COST
13200 , POU_EQUIP_RAW_COST
13201 , PRJ_EQUIP_RAW_COST
13202 , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
13203 , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
13204 INTO
13205 l_PERIOD_NAME
13206 , l_OTH_ACT_COST_TO_DATE_PC
13207 , l_PPL_ACT_COST_TO_DATE_PC
13208 , l_EQPMT_ACT_COST_TO_DATE_PC
13209 , l_OTH_ACT_COST_TO_DATE_FC
13210 , l_PPL_ACT_COST_TO_DATE_FC
13211 , l_EQPMT_ACT_COST_TO_DATE_FC
13212 , l_PPL_ACT_EFFORT_TO_DATE
13213 , l_EQPMT_ACT_EFFORT_TO_DATE
13214 , l_ETC_Cost_PC
13215 , l_PPL_ETC_COST_PC
13216 , l_EQPMT_ETC_COST_PC
13217 , l_ETC_Cost_FC
13218 , l_PPL_ETC_COST_FC
13219 , l_EQPMT_ETC_COST_FC
13220 , l_remaining_effort1
13221 , l_EQPMT_ETC_EFFORT
13222 , l_OTH_ACT_RAWCOST_TO_DATE_PC
13223 , l_PPL_ACT_RAWCOST_TO_DATE_PC
13224 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
13225 , l_OTH_ACT_RAWCOST_TO_DATE_FC
13226 , l_PPL_ACT_RAWCOST_TO_DATE_FC
13227 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
13228 , l_ETC_RAWCost_PC
13229 , l_PPL_ETC_RAWCOST_PC
13230 , l_EQPMT_ETC_RAWCOST_PC
13231 , l_ETC_RAWCost_FC
13232 , l_PPL_ETC_RAWCOST_FC
13233 , l_EQPMT_ETC_RAWCOST_FC
13234 , l_LABOR_HOURS
13235 , l_EQUIPMENT_HOURS
13236 , l_POU_LABOR_BRDN_COST
13237 , l_PRJ_LABOR_BRDN_COST
13238 , l_POU_EQUIP_BRDN_COST
13239 , l_PRJ_EQUIP_BRDN_COST
13240 , l_POU_OTH_BRDN_COST
13241 , l_PRJ_OTH_BRDN_COST
13242 , l_POU_LABOR_RAW_COST
13243 , l_PRJ_LABOR_RAW_COST
13244 , l_POU_EQUIP_RAW_COST
13245 , l_PRJ_EQUIP_RAW_COST
13246 , l_POU_OTH_RAW_COST
13247 , l_PRJ_OTH_RAW_COST
13248 FROM PJI_FM_XBS_ACCUM_TMP1
13249 WHERE project_id = p_project_id
13250 AND struct_version_id = p_structure_version_id
13251 AND project_element_id = cur_reverse_tree_rec.proj_element_id
13252 AND plan_version_id > 0
13253 AND txn_currency_code is null
13254 AND calendar_type = 'A'
13255 AND res_list_member_id is null;
13256 EXCEPTION
13257 WHEN NO_DATA_FOUND THEN
13258 null;
13259 WHEN OTHERS THEN
13260 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
13261 p_procedure_name => 'ROLLUP_PVT',
13262 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
13263 RAISE FND_API.G_EXC_ERROR;
13264 END;
13265
13266 IF g1_debug_mode = 'Y' THEN
13267 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
13268 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
13269 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
13270 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
13271 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
13272 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
13273 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
13274 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
13275 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
13276 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_PC: '||l_ETC_Cost_PC, x_Log_Level=> 3);
13277 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=> 3);
13278 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC, x_Log_Level=> 3);
13279 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_FC: '||l_ETC_Cost_FC, x_Log_Level=> 3);
13280 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=> 3);
13281 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC, x_Log_Level=> 3);
13282 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1, x_Log_Level=> 3);
13283 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT: '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
13284 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13285 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13286 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13287 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13288 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13289 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13290 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
13291 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC, x_Log_Level=> 3);
13292 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=> 3);
13293 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
13294 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC, x_Log_Level=> 3);
13295 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=> 3);
13296 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_LABOR_HOURS: '||l_LABOR_HOURS, x_Log_Level=> 3);
13297 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=> 3);
13298 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
13299 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
13300 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
13301 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
13302 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST, x_Log_Level=> 3);
13303 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST, x_Log_Level=> 3);
13304 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST, x_Log_Level=> 3);
13305 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST, x_Log_Level=> 3);
13306 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST, x_Log_Level=> 3);
13307 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST, x_Log_Level=> 3);
13308 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_RAW_COST: '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
13309 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST: '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
13310 END IF;
13311
13312 IF p_working_wp_prog_flag = 'Y' OR l_published_structure = 'N'
13313 --for working version p_working_wp_prog_flag may not be 'Y' because of bug 3846353
13314 THEN
13315 l_EQPMT_ETC_EFFORT := null;
13316 l_remaining_effort1:= null;
13317 l_ETC_Cost_FC:= null;
13318 l_ETC_Cost_PC:= null;
13319 l_PPL_ETC_COST_FC:= null;
13320 l_PPL_ETC_COST_PC := null;
13321 l_EQPMT_ETC_COST_FC:= null;
13322 l_EQPMT_ETC_COST_PC:= null;
13323 l_ETC_RAWCost_FC:= null;
13324 l_ETC_RAWCost_PC := null;
13325 l_PPL_ETC_RAWCOST_FC:= null;
13326 l_PPL_ETC_RAWCOST_PC:= null;
13327 l_EQPMT_ETC_RAWCOST_FC:= null;
13328 l_EQPMT_ETC_RAWCOST_PC:= null;
13329 END IF;
13330
13331 -- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
13332 IF g1_debug_mode = 'Y' THEN
13333 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
13334 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
13335 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
13336 END IF;
13337
13338 IF cur_reverse_tree_rec.object_type = 'PA_TASKS'
13339 THEN
13340 --do not rollup on-hold task status. We dont need to worry about
13341 --cancelled bcoz they are not selected.
13342
13343 -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
13344 l_actual_exists := 'N';
13345 ---5726773 changed '>0' to '<>0'
13346 IF (l_PPL_ACT_EFFORT_TO_DATE <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
13347 IF g1_debug_mode = 'Y' THEN
13348 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
13349 END IF;
13350 l_actual_exists := 'Y';
13351 END IF;
13352
13353 IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
13354 -- 14-Feb-2005 Patched thru Bug 4180026
13355 OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id);
13356 FETCH c_get_dlv_status INTO l_actual_exists;
13357 CLOSE c_get_dlv_status;
13358 END IF;
13359
13360 IF g1_debug_mode = 'Y' THEN
13361 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
13362 END IF;
13363
13364 IF(( nvl(l_rollup_table1(i).task_status1,0) <> 0)
13365 OR
13366 ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
13367 OR l_actual_exists = 'Y')
13368 THEN
13369 -- Bug 3842084 : Initilaized l_status_code with l_existing_object_status
13370 --get the existing status
13371 OPEN c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);
13372 FETCH c_get_object_status INTO l_existing_object_status;
13373 CLOSE c_get_object_status;
13374
13375 l_status_code := l_existing_object_status;
13376 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
13377 l_status_code_temp := l_status_code; --Bug#5374114
13378 l_system_status_code_temp := l_system_status_code; --Bug#5374114
13379
13380 IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0)
13381 THEN
13382 OPEN cur_task_status (to_char(l_rollup_table1(i).task_status1));
13383 FETCH cur_task_status INTO l_status_code;
13384 CLOSE cur_task_status;
13385 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
13386 END IF;
13387 -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
13388
13389 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
13390 IF g1_debug_mode = 'Y' THEN
13391 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
13392 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
13393 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
13394 END IF;
13395
13396 IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
13397 THEN
13398 l_status_code := '127';
13399 l_system_status_code := 'COMPLETED';
13400 ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100)) AND l_system_status_code IN ('NOT_STARTED','COMPLETED'))
13401 THEN
13402 l_status_code := '125';
13403 l_system_status_code := 'IN_PROGRESS';
13404 l_actual_finish_date := null;
13405 -- This is done to first time make task In Progress if any sub-objects are in Progress
13406 ELSIF (l_actual_exists ='Y' AND l_system_status_code = 'NOT_STARTED')
13407 THEN
13408 l_status_code := '125';
13409 l_system_status_code := 'IN_PROGRESS';
13410 l_actual_finish_date := null;
13411 END IF;
13412
13413 /* Changes by shanif for bug#5374114 - START */
13414
13415 IF (l_system_status_code = l_system_status_code_temp) THEN
13416 l_system_status_code := l_system_status_code_temp;
13417 l_status_code := l_status_code_temp;
13418 END IF;
13419
13420 /* Changes by shanif for bug#5374114 - END */
13421
13422 IF g1_debug_mode = 'Y' THEN
13423 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
13424 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
13425 END IF;
13426
13427 IF l_structure_version_id IS NULL THEN -- Bug 3922325 : This does not make sense for working wp version rollup
13428 UPDATE pa_proj_elements
13429 SET status_code = l_status_code
13430 WHERE project_id = p_project_id
13431 AND proj_element_id = cur_reverse_tree_rec.proj_element_id;
13432 END IF;
13433
13434
13435 IF p_structure_type = 'WORKPLAN' THEN
13436 OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1);
13437 FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
13438 CLOSE c_get_dates;
13439 IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
13440 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
13441 l_actual_finish_date := to_date(null);
13442 END IF;
13443 -- Bug 4232099 : added folling IF
13444 IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
13445 l_actual_finish_date := to_date(null);
13446 END IF;
13447 IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
13448 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
13449 END IF;
13450 IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
13451 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
13452 END IF;
13453
13454 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
13455 IF l_actual_finish_date < l_actual_start_date THEN
13456 IF TRUNC(SYSDATE) < l_actual_start_date THEN
13457 l_actual_finish_date := l_actual_start_date;
13458 ELSE
13459 l_actual_finish_date := TRUNC(SYSDATE);
13460 END IF;
13461 END IF;
13462 END IF;
13463 END IF;
13464
13465 UPDATE pa_percent_completes
13466 SET status_code = l_status_code
13467 , actual_start_date = l_actual_start_date -- Bug 3956299
13468 , actual_finish_date = l_actual_finish_date -- Bug 3956299
13469 WHERE object_id = cur_reverse_tree_rec.proj_element_id
13470 AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
13471 AND project_id = p_project_id
13472 --AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED', 'COMPLETED' )
13473 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
13474 AND structure_type = p_structure_type -- FPM Dev CR 3
13475 AND current_flag = 'N' and published_flag = 'N';
13476
13477 -- 14-Feb-2005 : Added Patched thru Bug 4180026
13478 UPDATE pa_percent_completes
13479 SET status_code = l_status_code
13480 , actual_start_date = l_actual_start_date -- Bug 3956299
13481 , actual_finish_date = l_actual_finish_date -- Bug 3956299
13482 WHERE object_id = cur_reverse_tree_rec.proj_element_id
13483 AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
13484 AND project_id = p_project_id
13485 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
13486 AND structure_type = p_structure_type -- FPM Dev CR 3
13487 AND published_flag = 'Y' ---4743866
13488 AND current_flag = 'Y'
13489 AND trunc(date_computed) = trunc(p_as_of_date);
13490 END IF;
13491 END IF;
13492
13493 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
13494 l_ETC_Cost_FC:= null;
13495 l_ETC_Cost_PC:= null;
13496 l_PPL_ETC_COST_FC:= null;
13497 l_PPL_ETC_COST_PC := null;
13498 l_EQPMT_ETC_COST_FC:= null;
13499 l_EQPMT_ETC_COST_PC:= null;
13500 l_ETC_RAWCost_FC:= null;
13501 l_ETC_RAWCost_PC := null;
13502 l_PPL_ETC_RAWCOST_FC:= null;
13503 l_PPL_ETC_RAWCOST_PC:= null;
13504 l_EQPMT_ETC_RAWCOST_FC:= null;
13505 l_EQPMT_ETC_RAWCOST_PC:= null;
13506 l_OTH_ACT_COST_TO_DATE_PC:= null;
13507 l_OTH_ACT_COST_TO_DATE_FC:= null;
13508 l_PPL_ACT_COST_TO_DATE_PC:= null;
13509 l_PPL_ACT_COST_TO_DATE_FC:= null;
13510 l_EQPMT_ACT_COST_TO_DATE_PC:= null;
13511 l_EQPMT_ACT_COST_TO_DATE_FC:= null;
13512 l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
13513 l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
13514 l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
13515 l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
13516 l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
13517 l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
13518 END IF;
13519 END IF; -- IF p_structure_type = 'WORKPLAN' --bug 4317491
13520
13521
13522 -- Bug 4651304 Begin
13523 -- One solution for this issue could be to pass
13524 -- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
13525 -- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
13526 -- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
13527 -- Best way is to always retain the existing object_version_id in pa_progress_rollup
13528 -- table in case of update, in case of insert, use the new object version id
13529
13530 -- Commented below code and added new condition
13531
13532
13533 --IF p_upd_new_elem_ver_id_flag = 'Y' THEN
13534 -- l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
13535 --END IF;
13536
13537 IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
13538 null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
13539 ELSE
13540 l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
13541 END IF;
13542 -- Bug 4651304 End
13543
13544 l_tsk_proj_element_id_tab(task_index) := l_task_id;
13545 l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
13546 -- 4392189 : Program Reporting Changes - Phase 2
13547 -- Having Set2 columns to get Project level % complete
13548 -- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
13549 -- Bug 4506461 Begin
13550 l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
13551 -- 4540890 : Removed l_subproject_found check from below
13552 IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
13553 l_rederive_base_pc := 'N';
13554 OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
13555 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
13556 CLOSE c_get_any_childs_have_subprj;
13557 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
13558 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
13559 END IF;
13560 END IF;
13561 -- Bug 4506461 End
13562
13563 l_tsk_earned_value_tab(task_index) := l_earned_value1;
13564 l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
13565 l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
13566
13567
13568 IF p_structure_type = 'WORKPLAN' THEN
13569 l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
13570 l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
13571 l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
13572 l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
13573 -- 4533112 : Base Progress Status is not used
13574 --l_tsk_base_prog_stat_code_tab(task_index) := l_rolled_up_base_prog_stat;
13575 l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
13576
13577 IF p_progress_mode <> 'BACKDATED' THEN
13578 l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
13579 l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
13580 l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
13581 l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
13582 l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
13583 l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
13584 l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
13585 l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
13586 l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
13587 l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
13588
13589 l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
13590 l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
13591 l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
13592 l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
13593 l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
13594 l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
13595 l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
13596 l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
13597 l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
13598 l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
13599
13600 l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
13601 l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
13602 l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
13603 l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
13604 l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
13605 l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
13606 l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
13607 l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
13608 END IF; -- p_progress_mode <> 'BACKDATED'
13609
13610 -- 5119716 Begin
13611 -- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
13612 -- For performance changes, it was removed and replaced with direct update statement
13613 -- The follwoing portion for dirty schedule was missing out.
13614 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y'
13615 THEN
13616 PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
13617 p_structure_version_id => p_structure_version_id
13618 ,p_dirty_flag => 'Y'
13619 ,x_return_status => x_return_status
13620 ,x_msg_count => x_msg_count
13621 ,x_msg_data => x_msg_data);
13622 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13623 raise FND_API.G_EXC_ERROR;
13624 END IF;
13625 END IF;
13626 -- 5119716 End
13627
13628 UPDATE pa_proj_elem_ver_schedule
13629 SET ACTUAL_START_DATE = l_actual_start_date
13630 , ACTUAL_FINISH_DATE = l_actual_finish_date
13631 , ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
13632 , ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
13633 , record_version_number = record_version_number+1
13634 , scheduled_start_date = l_rollup_table1(i).start_date3
13635 , scheduled_finish_date = l_rollup_table1(i).finish_date3
13636 -- 5119716 Begin
13637 , estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
13638 , actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
13639 -- 5119716 End
13640 , last_updated_by = l_user_id
13641 , last_update_date= sysdate
13642 , last_update_login = l_login_id
13643 WHERE project_id = p_project_id
13644 AND element_version_id = l_rollup_table1(i).object_id;
13645
13646
13647 IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
13648 UPDATE pa_projects_all
13649 SET actual_start_date = l_rollup_table1(i).start_date1,
13650 actual_finish_date = l_rollup_table1(i).finish_date1
13651 WHERE project_id = p_project_id;
13652 END IF;
13653 END IF; -- p_structure_type = 'WORKPLAN'
13654
13655 IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
13656 l_tsk_update_required(task_index):='Y';
13657 ELSE
13658 -- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
13659 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13660 l_tsk_create_required(task_index):='Y';
13661 BEGIN
13662 SELECT percent_complete_id
13663 INTO l_percent_complete_id
13664 FROM pa_percent_completes
13665 WHERE project_id = p_project_id
13666 AND object_id = cur_reverse_tree_rec.proj_element_id
13667 AND object_Type = l_rollup_table1(i).object_Type
13668 AND structure_type = p_structure_type
13669 AND date_computed = ( SELECT max(date_computed)
13670 FROM pa_percent_completes
13671 WHERE project_id = p_project_id
13672 AND object_id = cur_reverse_tree_rec.proj_element_id
13673 AND object_Type = l_rollup_table1(i).object_Type
13674 AND structure_type = p_structure_type
13675 AND date_computed <= p_as_of_date);
13676 EXCEPTION WHEN OTHERS THEN
13677 l_percent_complete_id := null;
13678 END;
13679 l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
13680 (p_project_id => p_project_id,
13681 p_object_id => cur_reverse_tree_rec.proj_element_id,
13682 p_object_type => l_rollup_table1(i).object_type,
13683 p_structure_type => p_structure_type,
13684 p_structure_version_id => l_structure_version_id,
13685 p_proj_element_id => cur_reverse_tree_rec.proj_element_id
13686 );
13687
13688 IF l_max_rollup_as_of_date2 > p_as_of_date THEN
13689 l_current_flag := 'N';
13690 ELSE
13691 l_current_flag := 'Y';
13692 END IF;
13693 l_tsk_current_flag_tab(task_index) := l_current_flag;
13694 l_tsk_prog_pa_period_name_tab(task_index) := l_prog_pa_period_name;
13695 l_tsk_prog_gl_period_name_tab(task_index) := l_prog_gl_period_name;
13696
13697 IF l_max_rollup_as_of_date2 < p_as_of_date THEN
13698 UPDATE pa_progress_rollup
13699 SET current_flag = 'N'
13700 WHERE project_id = p_project_id
13701 AND object_id = cur_reverse_tree_rec.proj_element_id
13702 AND object_type = l_rollup_table1(i).object_type
13703 AND current_flag <> 'W'
13704 AND structure_type = p_structure_type
13705 AND ((l_published_structure = 'Y' AND structure_version_id is null) OR (l_published_structure = 'N' AND structure_version_id = p_structure_version_id));
13706 END IF;
13707 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13708 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
13709 END IF;-- p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y'
13710 exit;
13711 END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
13712 END LOOP;
13713 END LOOP;
13714
13715 FORALL i in 1..l_tsk_object_version_id_tab.count
13716 UPDATE pa_progress_rollup
13717 SET
13718 object_version_id = l_tsk_object_version_id_tab(i)
13719 , last_update_date = sysdate
13720 , last_updated_by = l_user_id
13721 , last_update_login = l_login_id
13722 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
13723 , completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
13724 -- Bug 4284353 : Used decode above
13725 , estimated_start_date = l_tsk_est_start_date_tab(i)
13726 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
13727 , actual_start_date = l_tsk_actual_start_date_tab(i)
13728 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
13729 , record_version_number = record_version_number +1
13730 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
13731 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
13732 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
13733 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
13734 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
13735 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
13736 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
13737 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
13738 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
13739 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
13740 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
13741 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
13742 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
13743 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
13744 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
13745 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
13746 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
13747 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
13748 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
13749 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
13750 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
13751 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
13752 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13753 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13754 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
13755 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
13756 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
13757 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
13758 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
13759 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
13760 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
13761 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
13762 , earned_value = l_tsk_earned_value_tab(i)
13763 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
13764 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13765 WHERE l_tsk_update_required(i) = 'Y'
13766 AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i);
13767
13768
13769 IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED' THEN
13770 FORALL i in 1..l_tsk_object_version_id_tab.count
13771 UPDATE pa_progress_rollup
13772 SET
13773 object_version_id = l_tsk_object_version_id_tab(i)
13774 , last_update_date = sysdate
13775 , last_updated_by = l_user_id
13776 , last_update_login = l_login_id
13777 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
13778 , estimated_start_date = l_tsk_est_start_date_tab(i)
13779 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
13780 , actual_start_date = l_tsk_actual_start_date_tab(i)
13781 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
13782 , record_version_number = record_version_number +1
13783 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
13784 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
13785 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
13786 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
13787 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
13788 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
13789 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
13790 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
13791 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
13792 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
13793 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
13794 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
13795 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
13796 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
13797 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
13798 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
13799 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
13800 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
13801 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
13802 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
13803 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
13804 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
13805 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13806 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13807 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
13808 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
13809 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
13810 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
13811 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
13812 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
13813 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
13814 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
13815 , earned_value = l_tsk_earned_value_tab(i)
13816 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
13817 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13818 WHERE l_tsk_update_required(i) = 'Y'
13819 AND project_id = p_project_id
13820 AND object_id = l_tsk_object_id_tab(i)
13821 AND proj_element_id = l_tsk_proj_element_id_tab(i)
13822 AND object_type = l_tsk_object_type_tab(i)
13823 AND as_of_date >= p_as_of_date
13824 AND current_flag = 'W'
13825 AND structure_type = 'WORKPLAN'
13826 AND structure_version_id is null;
13827 END IF;
13828
13829 -- Bug 4242787 : This is effective solution for the bug 4097710
13830 -- We should not create new records if the rollup is called from Future Rollup API
13831 -- It should just update.
13832 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13833 for i in 1..l_tsk_object_version_id_tab.count
13834 loop
13835 --IF l_tsk_object_version_id_tab(i) member of l_prog_obj
13836 if l_prog_obj.exists(l_tsk_object_version_id_tab(i))
13837 then
13838 l_tsk_create_required(i) := 'Y';
13839 else
13840 l_tsk_create_required(i) := 'N';
13841 end if;
13842 end loop;
13843
13844 FORALL i in 1..l_tsk_object_version_id_tab.count
13845 INSERT INTO pa_progress_rollup
13846 (
13847 progress_rollup_id
13848 ,project_id
13849 ,object_id
13850 ,object_type
13851 ,as_of_date
13852 ,object_version_id
13853 ,last_update_date
13854 ,last_updated_by
13855 ,creation_date
13856 ,created_by
13857 ,progress_status_code
13858 ,last_update_login
13859 ,eff_rollup_percent_comp
13860 ,completed_percentage
13861 ,estimated_start_date
13862 ,estimated_finish_date
13863 ,actual_start_date
13864 ,actual_finish_date
13865 ,record_version_number
13866 ,base_percent_comp_deriv_code
13867 ,base_progress_status_code
13868 ,eff_rollup_prog_stat_code
13869 ,percent_complete_id
13870 ,structure_type
13871 ,proj_element_id
13872 ,structure_version_id
13873 ,ppl_act_effort_to_date
13874 ,ppl_act_cost_to_date_pc
13875 ,ppl_act_cost_to_date_fc
13876 ,ppl_act_rawcost_to_date_pc
13877 ,ppl_act_rawcost_to_date_fc
13878 ,estimated_remaining_effort
13879 ,ppl_etc_cost_pc
13880 ,ppl_etc_cost_fc
13881 ,ppl_etc_rawcost_pc
13882 ,ppl_etc_rawcost_fc
13883 ,eqpmt_act_effort_to_date
13884 ,eqpmt_act_cost_to_date_pc
13885 ,eqpmt_act_cost_to_date_fc
13886 ,eqpmt_act_rawcost_to_date_pc
13887 ,eqpmt_act_rawcost_to_date_fc
13888 ,eqpmt_etc_effort
13889 ,eqpmt_etc_cost_pc
13890 ,eqpmt_etc_cost_fc
13891 ,eqpmt_etc_rawcost_pc
13892 ,eqpmt_etc_rawcost_fc
13893 ,oth_quantity_to_date
13894 ,oth_act_cost_to_date_pc
13895 ,oth_act_cost_to_date_fc
13896 ,oth_act_rawcost_to_date_pc
13897 ,oth_act_rawcost_to_date_fc
13898 ,oth_etc_quantity
13899 ,oth_etc_cost_pc
13900 ,oth_etc_cost_fc
13901 ,oth_etc_rawcost_pc
13902 ,oth_etc_rawcost_fc
13903 ,earned_value
13904 ,task_wt_basis_code
13905 ,current_flag
13906 ,projfunc_cost_rate_type
13907 ,projfunc_cost_exchange_rate
13908 ,projfunc_cost_rate_date
13909 ,proj_cost_rate_type
13910 ,proj_cost_exchange_rate
13911 ,proj_cost_rate_date
13912 ,txn_currency_code
13913 ,prog_pa_period_name
13914 ,prog_gl_period_name
13915 ,base_percent_complete
13916 )
13917 SELECT
13918 PA_PROGRESS_ROLLUP_S.nextval
13919 , p_project_id
13920 , l_tsk_object_id_tab(i)
13921 , l_tsk_object_type_tab(i)
13922 , p_as_of_date
13923 , l_tsk_object_version_id_tab(i)
13924 , sysdate
13925 , l_user_id
13926 , sysdate
13927 , l_user_id
13928 , l_tsk_progress_stat_code_tab(i)
13929 , l_login_id
13930 , l_tsk_roll_comp_percent_tab(i)
13931 , decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
13932 -- Bug 4284353 : Used decode above
13933 , l_tsk_est_start_date_tab(i)
13934 , l_tsk_est_finish_date_tab(i)
13935 , l_tsk_actual_start_date_tab(i)
13936 , l_tsk_actual_finish_date_tab(i)
13937 , 1
13938 , l_tsk_deriv_method_tab(i)
13939 , l_tsk_base_prog_stat_code_tab(i)
13940 , l_tsk_eff_roll_prg_st_code_tab(i)
13941 , l_tsk_percent_complete_id_tab(i)
13942 , p_structure_type
13943 , l_tsk_proj_element_id_tab(i)
13944 , l_structure_version_id
13945 , l_tsk_ppl_act_eff_tab(i)
13946 , l_tsk_ppl_act_cost_pc_tab(i)
13947 , l_tsk_ppl_act_cost_fc_tab(i)
13948 , l_tsk_ppl_act_rawcost_pc_tab(i)
13949 , l_tsk_ppl_act_rawcost_fc_tab(i)
13950 , l_tsk_est_rem_effort_tab(i)
13951 , l_tsk_ppl_etc_cost_pc_tab(i)
13952 , l_tsk_ppl_etc_cost_fc_tab(i)
13953 , l_tsk_ppl_etc_rawcost_pc_tab(i)
13954 , l_tsk_ppl_etc_rawcost_fc_tab(i)
13955 , l_tsk_eqpmt_act_effort_tab(i)
13956 , l_tsk_eqpmt_act_cost_pc_tab(i)
13957 , l_tsk_eqpmt_act_cost_fc_tab(i)
13958 , l_tsk_eqpmt_act_rawcost_pc_tab(i)
13959 , l_tsk_eqpmt_act_rawcost_fc_tab(i)
13960 , l_tsk_eqpmt_etc_effort_tab(i)
13961 , l_tsk_eqpmt_etc_cost_pc_tab(i)
13962 , l_tsk_eqpmt_etc_cost_fc_tab(i)
13963 , l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13964 , l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13965 , l_tsk_oth_quantity_tab(i)
13966 , l_tsk_oth_act_cost_pc_tab(i)
13967 , l_tsk_oth_act_cost_fc_tab(i)
13968 , l_tsk_oth_act_rawcost_pc_tab(i)
13969 , l_tsk_oth_act_rawcost_fc_tab(i)
13970 , l_tsk_oth_etc_quantity_tab(i)
13971 , l_tsk_oth_etc_cost_pc_tab(i)
13972 , l_tsk_oth_etc_cost_fc_tab(i)
13973 , l_tsk_oth_etc_rawcost_pc_tab(i)
13974 , l_tsk_oth_etc_rawcost_fc_tab(i)
13975 , l_tsk_earned_value_tab(i)
13976 , l_tsk_task_wt_basis_code_tab(i)
13977 , l_tsk_current_flag_tab(i)
13978 , l_tsk_pf_cost_rate_type_tab(i)
13979 , l_tsk_pf_cost_exc_rate_tab(i)
13980 , l_tsk_pf_cost_rate_date_tab(i)
13981 , l_tsk_p_cost_rate_type_tab(i)
13982 , l_tsk_p_cost_exc_rate_tab(i)
13983 , l_tsk_p_cost_rate_date_tab(i)
13984 , l_tsk_txn_currency_code_tab(i)
13985 , l_tsk_prog_pa_period_name_tab(i)
13986 , l_tsk_prog_gl_period_name_tab(i)
13987 , l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13988 FROM
13989 DUAL
13990 WHERE l_tsk_create_required(i) = 'Y';
13991 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13992
13993 -- Bug 4242787
13994 -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
13995 -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
13996
13997 ---- ************** Updation Ends ****************** ----------
13998
13999 -- Bug 4242787
14000 -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
14001 -- Future rollup seprately if they are calling Mass Rollup
14002 IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
14003 IF g1_debug_mode = 'Y' THEN
14004 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
14005 END IF;
14006
14007 FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
14008 IF g1_debug_mode = 'Y' THEN
14009 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
14010 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
14011 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
14012 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
14013 END IF;
14014 -- Bug 4573257 Begin
14015 -- We need to call PJI tmp table population
14016 -- otherwise we will get incorrect actual and etc for future dates records
14017 IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
14018 IF (l_base_struct_ver_id = -1) THEN
14019 l_base_struct_ver_id := p_structure_version_id;
14020 END IF;
14021
14022 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
14023 p_calling_module => p_calling_module
14024 ,p_project_id => p_project_id
14025 ,p_structure_version_id => p_structure_version_id
14026 ,p_baselined_str_ver_id => l_base_struct_ver_id
14027 ,p_program_rollup_flag => 'Y'
14028 ,p_calling_context => 'ROLLUP'
14029 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
14030 ,x_return_status => x_return_status
14031 ,x_msg_count => x_msg_count
14032 ,x_msg_data => x_msg_data
14033 );
14034 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14035 RAISE FND_API.G_EXC_ERROR;
14036 END IF;
14037 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
14038 END IF;
14039 -- Bug 4573257 End
14040
14041 PA_PROGRESS_PVT.ROLLUP_PVT(
14042 p_init_msg_list => 'F'
14043 ,p_calling_module => p_calling_module
14044 ,p_calling_mode => 'FUTURE_ROLLUP'
14045 ,p_commit => 'F'
14046 ,p_validate_only => 'F'
14047 ,p_project_id => p_project_id
14048 ,P_OBJECT_TYPE => 'PA_TASKS'
14049 ,P_OBJECT_ID => cur_tree_rollup_rec.child_task_id
14050 ,p_object_version_id => cur_tree_rollup_rec.child_task_ver_id
14051 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
14052 ,p_lowest_level_task => p_lowest_level_task
14053 ,p_process_whole_tree => 'N'
14054 ,p_structure_type => p_structure_type
14055 ,p_structure_version_id => p_structure_version_id
14056 ,p_rollup_entire_wbs => 'N'
14057 ,p_fin_rollup_method => p_fin_rollup_method
14058 ,p_wp_rollup_method => p_wp_rollup_method
14059 ,p_task_version_id => cur_tree_rollup_rec.child_task_ver_id
14060 ,x_return_status => x_return_status
14061 ,x_msg_count => x_msg_count
14062 ,x_msg_data => x_msg_data);
14063
14064 IF g1_debug_mode = 'Y' THEN
14065 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
14066 END IF;
14067
14068 IF x_return_status <> 'S' THEN
14069 raise FND_API.G_EXC_ERROR;
14070 END IF;
14071 END LOOP;
14072 END IF; -- p_rollup_entire_wbs = 'Y'
14073
14074 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
14075
14076 x_return_status := FND_API.G_RET_STS_SUCCESS;
14077
14078 IF (p_commit = FND_API.G_TRUE) THEN
14079 COMMIT;
14080 END IF;
14081
14082 IF g1_debug_mode = 'Y' THEN
14083 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT END', x_Log_Level=> 3);
14084 END IF;
14085
14086 EXCEPTION
14087 WHEN FND_API.G_EXC_ERROR THEN
14088 rollback to ROLLUP_PVT2;
14089 x_return_status := FND_API.G_RET_STS_ERROR;
14090 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14091 rollback to ROLLUP_PVT2;
14092 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
14093 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
14094 p_procedure_name => 'ROLLUP_PVT',
14095 p_error_text => SUBSTRB(SQLERRM,1,120));
14096 WHEN OTHERS THEN
14097 rollback to ROLLUP_PVT2;
14098 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
14099 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
14100 p_procedure_name => 'ROLLUP_PVT',
14101 p_error_text => SUBSTRB(SQLERRM,1,120));
14102 raise;
14103 END ROLLUP_PVT;
14104
14105 PROCEDURE DEFER_ROLLUP_PVT(
14106 p_api_version IN NUMBER :=1.0
14107 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
14108 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
14109 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
14110 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
14111 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
14112 ,p_calling_mode IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
14113 ,p_debug_mode IN VARCHAR2 :='N'
14114 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14115 ,p_progress_mode IN VARCHAR2 := 'FUTURE'
14116 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14117 ,p_object_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
14118 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14119 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14120 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14121 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
14122 ,p_lowest_level_task IN VARCHAR2 := 'N'
14123 ,p_process_whole_tree IN VARCHAR2 := 'Y'
14124 ,p_structure_version_id IN NUMBER
14125 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
14126 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
14127 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
14128 ,p_rollup_entire_wbs IN VARCHAR2 := 'N'
14129 ,p_task_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
14130 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --maansari7/18 to be passed form apply lp progress to select regular planned amounts to send to schduling api for percent comnplete and earned value calculations.
14131 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, 3951024
14132 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
14133 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
14134 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
14135 )
14136 IS
14137
14138 l_api_name CONSTANT VARCHAR(30) := 'ROLLUP_PVT';
14139 l_api_version CONSTANT NUMBER := 1.0 ;
14140 l_return_status VARCHAR2(1) ;
14141 l_msg_count NUMBER ;
14142 l_msg_data VARCHAR2(250) ;
14143 l_data VARCHAR2(250) ;
14144 l_msg_index_out NUMBER ;
14145 l_error_msg_code VARCHAR2(250) ;
14146 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
14147 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
14148 l_lowest_task VARCHAR2(1) ;
14149 l_published_structure VARCHAR2(1) ;
14150 l_task_version_id NUMBER ;
14151 l_rollup_table1 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
14152 l_rollup_table2 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
14153 l_index NUMBER := 0;
14154 l_parent_count NUMBER := 0;
14155 l_process_number NUMBER;
14156 l_wbs_level NUMBER ;
14157 l_action_allowed VARCHAR2(1) ;
14158 l_sharing_Enabled VARCHAR2(1) ;
14159 l_split_workplan VARCHAR2(1) ;
14160 l_structure_version_id NUMBER ;
14161 g1_debug_mode VARCHAR2(1) ;
14162 l_Rollup_Method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
14163
14164
14165 -- sridhar_rollup
14166
14167 l_defer_arr_task_id PA_PLSQL_DATATYPES.NumTabTyp;
14168
14169 -- Rollup Cases
14170 -- 1. Workplan Publsihed Version Rollup.
14171 -- 2. Workplan Working Version Rollup.
14172 -- 3. Financial Structure Rollup.
14173 -- 4. Entire WBS using structure version id.
14174 -- 5. Program Rollup
14175
14176 --This cursor selects the parents of a given task.
14177
14178
14179 CURSOR cur_reverse_tree_update IS
14180 SELECT proj_element_id, object_id_to1, object_type
14181 FROM
14182 ( select object_id_from1, object_id_to1
14183 from pa_object_relationships
14184 where relationship_type ='S'
14185 and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
14186 and object_type_to = 'PA_TASKS'
14187 and p_rollup_entire_wbs='N'
14188 start with object_id_to1 = p_task_version_id
14189 and relationship_type = 'S'
14190 connect by prior object_id_from1 = object_id_to1
14191 and relationship_type = 'S'
14192 ) pobj
14193 , pa_proj_element_versions ppev
14194 WHERE element_version_id = object_id_to1
14195 and p_rollup_entire_wbs='N'
14196 --select structure
14197 UNION
14198 SELECT proj_element_id, element_version_id, object_type
14199 FROM pa_proj_element_versions
14200 WHERE element_version_id = p_structure_version_id
14201 and project_id = p_project_id
14202 and object_type = 'PA_STRUCTURES'
14203 and p_rollup_entire_wbs='N'
14204 UNION
14205 SELECT proj_element_id, element_version_id, object_type
14206 FROM pa_proj_element_versions
14207 WHERE project_id = p_project_id
14208 and parent_structure_version_id = p_structure_version_id
14209 and object_type IN ('PA_TASKS','PA_STRUCTURES')
14210 and p_rollup_entire_wbs='Y'
14211 ;
14212
14213
14214 l_mass_rollup_prog_exists_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14215 l_mass_rollup_prog_rec_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14216
14217 l_tsk_object_id_from1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14218 l_tsk_parent_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14219 l_tsk_object_id_to1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14220 l_tsk_object_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14221 l_tsk_wbs_level_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14222 l_tsk_weighting_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14223 l_tsk_roll_comp_percent_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14224 l_tsk_over_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14225 l_tsk_as_of_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14226 l_tsk_actual_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14227 l_tsk_actual_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14228 l_tsk_est_start_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14229 l_tsk_est_finish_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14230 l_tsk_rollup_weight1_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14231 l_tsk_override_weight2_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14232 l_tsk_base_weight3_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14233 l_tsk_task_weight4_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14234 l_tsk_status_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14235 l_tsk_object_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14236 l_tsk_proj_element_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14237 l_tsk_ppl_act_eff_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14238 l_tsk_ppl_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14239 l_tsk_ppl_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14240 l_tsk_ppl_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14241 l_tsk_ppl_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14242 l_tsk_ppl_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14243 l_tsk_ppl_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14244 l_tsk_est_rem_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14245 l_tsk_ppl_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14246 l_tsk_ppl_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14247 l_tsk_ppl_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14248 l_tsk_ppl_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14249 l_tsk_ppl_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14250 l_tsk_ppl_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14251 l_tsk_eqpmt_act_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14252 l_tsk_eqpmt_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14253 l_tsk_eqpmt_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14254 l_tsk_eqpmt_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14255 l_tsk_eqpmt_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14256 l_tsk_eqpmt_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14257 l_tsk_eqpmt_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14258 l_tsk_eqpmt_etc_effort_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14259 l_tsk_eqpmt_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14260 l_tsk_eqpmt_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14261 l_tsk_eqpmt_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14262 l_tsk_eqpmt_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14263 l_tsk_eqpmt_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14264 l_tsk_eqpmt_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14265 l_tsk_oth_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14266 l_tsk_oth_act_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14267 l_tsk_oth_act_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14268 l_tsk_oth_act_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14269 l_tsk_oth_act_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14270 l_tsk_oth_act_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14271 l_tsk_oth_act_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14272 l_tsk_oth_etc_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14273 l_tsk_oth_etc_cost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14274 l_tsk_oth_etc_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14275 l_tsk_oth_etc_cost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14276 l_tsk_oth_etc_rawcost_tc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14277 l_tsk_oth_etc_rawcost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14278 l_tsk_oth_etc_rawcost_fc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14279 l_tsk_current_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14280 l_tsk_pf_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14281 l_tsk_pf_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14282 l_tsk_pf_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14283 l_tsk_p_cost_rate_type_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14284 l_tsk_p_cost_exc_rate_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14285 l_tsk_p_cost_rate_date_tab SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
14286 l_tsk_txn_currency_code_tab SYSTEM.PA_VARCHAR2_15_TBL_TYPE := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
14287 l_tsk_prog_pa_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14288 l_tsk_prog_gl_period_name_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14289 l_tsk_bac_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14290 l_tsk_bac_self_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
14291 l_tsk_earned_value_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14292 l_tsk_deriv_method_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14293 l_tsk_progress_rollup_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14294 l_tsk_rollup_rec_ver_num_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14295 l_tsk_object_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14296 l_tsk_progress_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14297 l_tsk_incremental_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14298 l_tsk_cumulative_wq_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14299 l_tsk_base_prog_stat_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14300 l_tsk_eff_roll_prg_st_code_tab SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14301 l_tsk_percent_complete_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14302 l_tsk_task_wt_basis_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14303 l_tsk_base_percent_comp_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14304 l_tsk_structure_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14305
14306 l_tsk_create_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14307 l_tsk_update_required SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14308
14309
14310 l_prj_currency_code VARCHAR2(15);
14311 l_total_tasks NUMBER;
14312 l_prog_pa_period_name VARCHAR2(30);
14313 l_prog_gl_period_name VARCHAR2(30);
14314 task_index NUMBER;
14315 l_task_id NUMBER;
14316 l_child_rollup_rec_exists VARCHAR2(1);
14317 l_sch_rec_ver_number NUMBER;
14318
14319 l_equipment_hours NUMBER;
14320 l_pou_labor_brdn_cost NUMBER;
14321 l_prj_labor_brdn_cost NUMBER;
14322 l_pou_equip_brdn_cost NUMBER;
14323 l_prj_equip_brdn_cost NUMBER;
14324 l_pou_labor_raw_cost NUMBER;
14325 l_prj_labor_raw_cost NUMBER;
14326 l_pou_equip_raw_cost NUMBER;
14327 l_prj_equip_raw_cost NUMBER;
14328 l_labor_hours NUMBER;
14329 l_pou_oth_brdn_cost NUMBER;
14330 l_prj_oth_brdn_cost NUMBER;
14331 l_pou_oth_raw_cost NUMBER;
14332 l_prj_oth_raw_cost NUMBER;
14333 l_remaining_effort1 NUMBER;
14334 l_percent_complete1 NUMBER;
14335 l_percent_complete2 NUMBER;
14336 l_etc_cost_pc NUMBER;
14337 l_ppl_etc_cost_pc NUMBER;
14338 l_eqpmt_etc_cost_pc NUMBER;
14339 l_etc_cost_fc NUMBER;
14340 l_ppl_etc_cost_fc NUMBER;
14341 l_eqpmt_etc_cost_fc NUMBER;
14342 l_bac_value1 NUMBER;
14343 l_ppl_act_cost_to_date_pc NUMBER;
14344 l_eqpmt_act_cost_to_date_pc NUMBER;
14345 l_oth_act_cost_to_date_fc NUMBER;
14346 l_ppl_act_cost_to_date_fc NUMBER;
14347 l_eqpmt_act_cost_to_date_fc NUMBER;
14348 l_ppl_act_effort_to_date NUMBER;
14349 l_oth_act_rawcost_to_date_pc NUMBER;
14350 l_ppl_act_rawcost_to_date_pc NUMBER;
14351 l_eqpmt_act_rawcost_to_date_pc NUMBER;
14352 l_etc_rawcost_pc NUMBER;
14353 l_ppl_etc_rawcost_pc NUMBER;
14354 l_eqpmt_act_rawcost_to_date_fc NUMBER;
14355 l_ppl_act_rawcost_to_date_fc NUMBER;
14356 l_oth_act_rawcost_to_date_fc NUMBER;
14357 l_eqpmt_act_effort_to_date NUMBER;
14358 l_eqpmt_etc_effort NUMBER;
14359 l_earned_value1 NUMBER;
14360 l_oth_act_cost_to_date_pc NUMBER;
14361 l_percent_complete_id NUMBER;
14362 l_progress_rollup_id NUMBER;
14363 l_rollup_rec_ver_number NUMBER;
14364 l_eqpmt_etc_rawcost_fc NUMBER;
14365 l_ppl_etc_rawcost_fc NUMBER;
14366 l_etc_rawcost_fc NUMBER;
14367 l_eqpmt_etc_rawcost_pc NUMBER;
14368 l_period_name VARCHAR2(30);
14369 l_existing_object_status VARCHAR2(150);
14370 l_status_code VARCHAR2(150);
14371 l_system_status_code VARCHAR2(150);
14372 l_status_code_temp VARCHAR2(150); --Bug#5374114
14373 l_system_status_code_temp VARCHAR2(150); --Bug#5374114
14374 l_max_rollup_as_of_date2 DATE;
14375 l_current_flag VARCHAR2(1);
14376 l_pev_schedule_id NUMBER;
14377 l_actual_exists VARCHAR2(1):='N';
14378 l_tsk_scheduled_start_date Date;
14379 l_tsk_scheduled_finish_date Date;
14380 l_actual_start_date Date;
14381 l_actual_finish_date Date;
14382 l_estimated_start_date Date;
14383 l_estimated_finish_date Date;
14384 l_eff_rollup_status_code VARCHAR2(150);
14385 l_progress_status_code VARCHAR2(150);
14386 l_rolled_up_base_per_comp NUMBER;
14387 l_rolled_up_base_prog_stat VARCHAR2(150);
14388 l_rolled_up_per_comp NUMBER;
14389 l_rolled_up_prog_stat VARCHAR2(150);
14390
14391
14392 CURSOR cur_sch_id( c_object_version_id NUMBER )
14393 IS
14394 SELECT pev_schedule_id, record_version_number
14395 FROM pa_proj_elem_ver_schedule
14396 WHERE project_id = p_project_id
14397 AND element_version_id = c_object_version_id;
14398
14399
14400 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
14401 IS
14402 SELECT scheduled_start_date, scheduled_finish_date
14403 FROM pa_proj_elem_ver_schedule
14404 WHERE PROJECT_ID = c_project_id
14405 AND element_version_id = c_element_version_id;
14406
14407 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
14408 SELECT 'Y' FROM DUAL
14409 WHERE EXISTS
14410 (SELECT 'xyz'
14411 FROM pa_percent_completes
14412 WHERE project_id = p_project_id
14413 AND task_id = c_task_id
14414 AND object_type = 'PA_DELIVERABLES'
14415 AND trunc(date_computed)<= trunc(p_as_of_date)
14416 AND structure_type = 'WORKPLAN'
14417 AND published_flag = 'Y'
14418 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
14419 );
14420
14421
14422 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
14423 IS
14424 SELECT STATUS_CODE
14425 FROM PA_PROJ_ELEMENTS
14426 WHERE PROJ_ELEMENT_ID = l_proj_element_id
14427 AND PROJECT_ID = l_project_id;
14428
14429 CURSOR cur_status( c_status_weight VARCHAR2 )
14430 IS
14431 select lookup_code
14432 from fnd_lookup_values
14433 where attribute4 = c_status_weight
14434 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
14435 and language = 'US'
14436 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
14437
14438 CURSOR cur_task_status( c_status_weight VARCHAR2 )
14439 IS
14440 select project_status_code
14441 from pa_project_statuses
14442 where project_status_weight = c_status_weight
14443 and status_type = 'TASK'
14444 and predefined_flag = 'Y';
14445
14446 l_process_number_temp NUMBER;
14447
14448 --This cursor selects the immediate child taks of a given task.
14449 CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
14450 IS
14451 --select structure
14452 SELECT to_number(null) object_id_from1
14453 , ppev.object_type parent_object_type
14454 , element_version_id object_id_to1
14455 , ppev.object_type object_type
14456 , nvl(ppev.wbs_level,0) wbs_level -- sridhar_rollup
14457 , to_number( null ) weighting_percentage
14458 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
14459 , ppr.completed_percentage override_percent_complete
14460 , ppr.as_of_date
14461 , ppr.actual_start_date
14462 , ppr.actual_finish_date
14463 , ppr.estimated_start_date
14464 , ppr.estimated_finish_date
14465 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
14466 , pps2.project_status_weight override_weight2 ---override progress status code
14467 , pps3.project_status_weight base_weight3 --base prog status
14468 , to_number( null ) task_weight4 --task status
14469 , to_char(null) status_code
14470 , ppev.proj_element_id object_id
14471 , ppev.proj_element_id
14472 , ppr.PPL_ACT_EFFORT_TO_DATE
14473 , ppr.PPL_ACT_COST_TO_DATE_TC
14474 , ppr.PPL_ACT_COST_TO_DATE_PC
14475 , ppr.PPL_ACT_COST_TO_DATE_FC
14476 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
14477 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
14478 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
14479 , ppr.ESTIMATED_REMAINING_EFFORT
14480 , ppr.PPL_ETC_COST_TC
14481 , ppr.PPL_ETC_COST_PC
14482 , ppr.PPL_ETC_COST_FC
14483 , ppr.PPL_ETC_RAWCOST_TC
14484 , ppr.PPL_ETC_RAWCOST_PC
14485 , ppr.PPL_ETC_RAWCOST_FC
14486 , ppr.EQPMT_ACT_EFFORT_TO_DATE
14487 , ppr.EQPMT_ACT_COST_TO_DATE_TC
14488 , ppr.EQPMT_ACT_COST_TO_DATE_PC
14489 , ppr.EQPMT_ACT_COST_TO_DATE_FC
14490 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
14491 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
14492 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
14493 , ppr.EQPMT_ETC_EFFORT
14494 , ppr.EQPMT_ETC_COST_TC
14495 , ppr.EQPMT_ETC_COST_PC
14496 , ppr.EQPMT_ETC_COST_FC
14497 , ppr.EQPMT_ETC_RAWCOST_TC
14498 , ppr.EQPMT_ETC_RAWCOST_PC
14499 , ppr.EQPMT_ETC_RAWCOST_FC
14500 , ppr.OTH_QUANTITY_TO_DATE
14501 , ppr.OTH_ACT_COST_TO_DATE_TC
14502 , ppr.OTH_ACT_COST_TO_DATE_PC
14503 , ppr.OTH_ACT_COST_TO_DATE_FC
14504 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
14505 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
14506 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
14507 , ppr.OTH_ETC_QUANTITY
14508 , ppr.OTH_ETC_COST_TC
14509 , ppr.OTH_ETC_COST_PC
14510 , ppr.OTH_ETC_COST_FC
14511 , ppr.OTH_ETC_RAWCOST_TC
14512 , ppr.OTH_ETC_RAWCOST_PC
14513 , ppr.OTH_ETC_RAWCOST_FC
14514 , ppr.CURRENT_FLAG
14515 , ppr.PROJFUNC_COST_RATE_TYPE
14516 , ppr.PROJFUNC_COST_EXCHANGE_RATE
14517 , ppr.PROJFUNC_COST_RATE_DATE
14518 , ppr.PROJ_COST_RATE_TYPE
14519 , ppr.PROJ_COST_EXCHANGE_RATE
14520 , ppr.PROJ_COST_RATE_DATE
14521 , ppr.TXN_CURRENCY_CODE
14522 , ppr.PROG_PA_PERIOD_NAME
14523 , ppr.PROG_GL_PERIOD_NAME
14524 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
14525 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
14526 BAC_value_self -- bug 4493105
14527 , null earned_value
14528 , to_char(null) task_derivation_method
14529 , ppr.progress_rollup_id
14530 , ppr.record_version_number
14531 -- , element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
14532 , ppr.object_version_id -- Bug 4651304
14533 , ppr.progress_status_code
14534 , ppr.incremental_work_quantity
14535 , ppr.cumulative_work_quantity
14536 -- 4533112 : Added decode to select N and Y only
14537 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
14538 , ppr.EFF_ROLLUP_PROG_STAT_CODE
14539 , ppr.percent_complete_id
14540 , ppr.TASK_WT_BASIS_CODE
14541 , ppr.structure_version_id
14542 ,'N' create_required
14543 ,'N' update_required
14544 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14545 FROM pa_proj_element_versions ppev,
14546 pa_progress_rollup ppr,
14547 pa_project_statuses pps1,
14548 pa_project_statuses pps2,
14549 pa_project_statuses pps3 ,
14550 pa_proj_rollup_temp temp
14551 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14552 --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14553 temp.object_id = ppev.element_version_id
14554 AND temp.process_number = l_process_number_temp
14555 AND ppev.object_type = 'PA_STRUCTURES'
14556 AND ppr.project_id = ppev.project_id
14557 AND ppr.object_id = ppev.proj_element_id
14558 AND ppr.object_type = 'PA_STRUCTURES'
14559 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
14560 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
14561 AND ppr.current_flag <> 'W'
14562 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
14563 AND ppr.progress_status_code = pps2.project_status_code(+)
14564 AND ppr.base_progress_status_code = pps3.project_status_code(+)
14565 AND ppr.structure_type = p_structure_type
14566 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14567 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
14568 UNION
14569 -- select tasks
14570 SELECT pobj.object_id_from1
14571 , ppev1.object_type parent_object_type
14572 , pobj.object_id_to1
14573 , ppev2.object_type object_type
14574 , nvl(ppev2.wbs_level,0) wbs_level -- sridhar_rollup
14575 , pobj.weighting_percentage
14576 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
14577 , ppr.completed_percentage override_percent_complete
14578 , ppr.as_of_date
14579 , ppr.actual_start_date
14580 , ppr.actual_finish_date
14581 , ppr.estimated_start_date
14582 , ppr.estimated_finish_date
14583 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
14584 , pps2.project_status_weight override_weight2 ---override progress status code
14585 , pps3.project_status_weight base_weight3 ---base prog status
14586 , pps4.project_status_weight task_weight4
14587 , ppe.status_code
14588 , ppev2.proj_element_id object_id
14589 , ppev2.proj_element_id
14590 , ppr.PPL_ACT_EFFORT_TO_DATE
14591 , ppr.PPL_ACT_COST_TO_DATE_TC
14592 , ppr.PPL_ACT_COST_TO_DATE_PC
14593 , ppr.PPL_ACT_COST_TO_DATE_FC
14594 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
14595 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
14596 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
14597 , ppr.ESTIMATED_REMAINING_EFFORT
14598 , ppr.PPL_ETC_COST_TC
14599 , ppr.PPL_ETC_COST_PC
14600 , ppr.PPL_ETC_COST_FC
14601 , ppr.PPL_ETC_RAWCOST_TC
14602 , ppr.PPL_ETC_RAWCOST_PC
14603 , ppr.PPL_ETC_RAWCOST_FC
14604 , ppr.EQPMT_ACT_EFFORT_TO_DATE
14605 , ppr.EQPMT_ACT_COST_TO_DATE_TC
14606 , ppr.EQPMT_ACT_COST_TO_DATE_PC
14607 , ppr.EQPMT_ACT_COST_TO_DATE_FC
14608 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
14609 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
14610 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
14611 , ppr.EQPMT_ETC_EFFORT
14612 , ppr.EQPMT_ETC_COST_TC
14613 , ppr.EQPMT_ETC_COST_PC
14614 , ppr.EQPMT_ETC_COST_FC
14615 , ppr.EQPMT_ETC_RAWCOST_TC
14616 , ppr.EQPMT_ETC_RAWCOST_PC
14617 , ppr.EQPMT_ETC_RAWCOST_FC
14618 , ppr.OTH_QUANTITY_TO_DATE
14619 , ppr.OTH_ACT_COST_TO_DATE_TC
14620 , ppr.OTH_ACT_COST_TO_DATE_PC
14621 , ppr.OTH_ACT_COST_TO_DATE_FC
14622 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
14623 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
14624 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
14625 , ppr.OTH_ETC_QUANTITY
14626 , ppr.OTH_ETC_COST_TC
14627 , ppr.OTH_ETC_COST_PC
14628 , ppr.OTH_ETC_COST_FC
14629 , ppr.OTH_ETC_RAWCOST_TC
14630 , ppr.OTH_ETC_RAWCOST_PC
14631 , ppr.OTH_ETC_RAWCOST_FC
14632 , ppr.CURRENT_FLAG
14633 , ppr.PROJFUNC_COST_RATE_TYPE
14634 , ppr.PROJFUNC_COST_EXCHANGE_RATE
14635 , ppr.PROJFUNC_COST_RATE_DATE
14636 , ppr.PROJ_COST_RATE_TYPE
14637 , ppr.PROJ_COST_EXCHANGE_RATE
14638 , ppr.PROJ_COST_RATE_DATE
14639 , ppr.TXN_CURRENCY_CODE
14640 , ppr.PROG_PA_PERIOD_NAME
14641 , ppr.PROG_GL_PERIOD_NAME
14642 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
14643 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14644 p_structure_type,p_working_wp_prog_flag) BAC_value
14645 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
14646 'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14647 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
14648 , null earned_value
14649 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
14650 , ppr.progress_rollup_id
14651 , ppr.record_version_number
14652 -- , pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
14653 , ppr.object_version_id -- Bug 4651304
14654 , ppr.progress_status_code
14655 , ppr.incremental_work_quantity
14656 , ppr.cumulative_work_quantity
14657 -- 4533112 : Added decode to select N and Y only
14658 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
14659 , ppr.EFF_ROLLUP_PROG_STAT_CODE
14660 , ppr.percent_complete_id
14661 , ppr.TASK_WT_BASIS_CODE
14662 , ppr.structure_version_id
14663 ,'N' create_required
14664 ,'N' update_required
14665 , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14666 FROM
14667 pa_object_relationships pobj,
14668 pa_proj_element_versions ppev1,
14669 pa_proj_element_versions ppev2,
14670 pa_progress_rollup ppr,
14671 pa_proj_elements ppe,
14672 pa_project_statuses pps1,
14673 pa_project_statuses pps2,
14674 pa_project_statuses pps3,
14675 pa_project_statuses pps4,
14676 pa_task_types ttype ,
14677 pa_proj_rollup_temp temp
14678 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14679 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14680 temp.object_id = pobj.object_id_from1
14681 AND temp.process_number = l_process_number_temp
14682 AND pobj.object_id_from1 = ppev1.element_version_id
14683 AND pobj.object_id_to1 = ppev2.element_version_id
14684 AND pobj.relationship_type = 'S'
14685 AND ppr.project_id = ppev2.project_id
14686 AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
14687 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
14688 AND ppr.current_flag <> 'W'
14689 AND ppr.object_id = ppev2.proj_element_id
14690 AND ppr.project_id = ppev2.project_id
14691 AND ppr.object_type = 'PA_TASKS'
14692 AND ppe.proj_element_id = ppev2.proj_element_id
14693 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
14694 AND ppr.progress_status_code = pps2.project_status_code(+)
14695 AND ppr.base_progress_status_code = pps3.project_status_code(+)
14696 AND ppe.status_code = pps4.project_status_code(+)
14697 AND ppe.project_id = ppev2.project_id
14698 AND ppe.object_type = ppev2.object_type
14699 AND ppev2.object_type = 'PA_TASKS'
14700 AND ppe.object_type = 'PA_TASKS'
14701 AND ppe.link_task_flag <> 'Y' -- 4392189
14702 AND pobj.object_type_to = 'PA_TASKS'
14703 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
14704 AND ppe.type_id = ttype.task_type_id
14705 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14706 AND ppr.structure_type = p_structure_type
14707 AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
14708 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
14709 UNION ALL
14710 SELECT to_number(null) object_id_from1
14711 , ppev.object_type parent_object_type
14712 , element_version_id object_id_to1
14713 , ppev.object_type object_type
14714 , nvl(ppev.wbs_level,0) wbs_level -- sridhar_rollup
14715 , to_number( null ) weighting_percentage
14716 , to_number(null) rollup_completed_percentage
14717 , to_number(null) override_percent_complete
14718 , to_date(null) as_of_date
14719 , to_date(null) actual_start_date
14720 , to_date(null) actual_finish_date
14721 , to_date(null) estimated_start_date
14722 , to_date(null) estimated_finish_date
14723 , to_number(null) rollup_weight1 ---rollup progress status code
14724 , to_number(null) override_weight2 ---override progress status code
14725 , to_number(null) base_weight3 --base prog status
14726 , to_number( null ) task_weight4 --task status
14727 , to_char(null) status_code
14728 , ppev.proj_element_id object_id
14729 , ppev.proj_element_id
14730 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
14731 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
14732 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
14733 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
14734 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
14735 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
14736 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
14737 , to_number( null ) ESTIMATED_REMAINING_EFFORT
14738 , to_number( null ) PPL_ETC_COST_TC
14739 , to_number( null ) PPL_ETC_COST_PC
14740 , to_number( null ) PPL_ETC_COST_FC
14741 , to_number( null ) PPL_ETC_RAWCOST_TC
14742 , to_number( null ) PPL_ETC_RAWCOST_PC
14743 , to_number( null ) PPL_ETC_RAWCOST_FC
14744 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
14745 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
14746 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
14747 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
14748 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
14749 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
14750 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
14751 , to_number( null ) EQPMT_ETC_EFFORT
14752 , to_number( null ) EQPMT_ETC_COST_TC
14753 , to_number( null ) EQPMT_ETC_COST_PC
14754 , to_number( null ) EQPMT_ETC_COST_FC
14755 , to_number( null ) EQPMT_ETC_RAWCOST_TC
14756 , to_number( null ) EQPMT_ETC_RAWCOST_PC
14757 , to_number( null ) EQPMT_ETC_RAWCOST_FC
14758 , to_number( null ) OTH_QUANTITY_TO_DATE
14759 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
14760 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
14761 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
14762 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
14763 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
14764 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
14765 , to_number( null ) OTH_ETC_QUANTITY
14766 , to_number( null ) OTH_ETC_COST_TC
14767 , to_number( null ) OTH_ETC_COST_PC
14768 , to_number( null ) OTH_ETC_COST_FC
14769 , to_number( null ) OTH_ETC_RAWCOST_TC
14770 , to_number( null ) OTH_ETC_RAWCOST_PC
14771 , to_number( null ) OTH_ETC_RAWCOST_FC
14772 , to_char(null) CURRENT_FLAG
14773 , to_char(null) PROJFUNC_COST_RATE_TYPE
14774 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
14775 , to_date(null) PROJFUNC_COST_RATE_DATE
14776 , to_char(null) PROJ_COST_RATE_TYPE
14777 , to_number( null ) PROJ_COST_EXCHANGE_RATE
14778 , to_date(null) PROJ_COST_RATE_DATE
14779 , to_char(null) TXN_CURRENCY_CODE
14780 , to_char(null) PROG_PA_PERIOD_NAME
14781 , to_char(null) PROG_GL_PERIOD_NAME
14782 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
14783 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
14784 BAC_value_self -- bug 4493105
14785 , null earned_value
14786 , to_char(null) task_derivation_method
14787 , to_number(null) progress_rollup_id
14788 , to_number(null) record_version_number
14789 , element_version_id object_version_id
14790 , to_char(null) progress_status_code
14791 , to_number(null) incremental_work_quantity
14792 , to_number(null) cumulative_work_quantity
14793 -- 4533112 : Added N only
14794 , 'N' base_progress_status_code
14795 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
14796 , to_number(null) percent_complete_id
14797 , to_char(null) TASK_WT_BASIS_CODE
14798 , to_number(null) structure_version_id
14799 ,'N' create_required
14800 ,'N' update_required
14801 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14802 FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
14803 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14804 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14805 element_version_id = temp.object_id
14806 AND temp.process_number = l_process_number_temp
14807 AND ppev.object_type = 'PA_STRUCTURES'
14808 AND pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
14809 ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
14810 IS NULL
14811 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
14812 UNION
14813 -- select tasks
14814 SELECT pobj.object_id_from1
14815 , ppev1.object_type parent_object_type
14816 , pobj.object_id_to1
14817 , ppev2.object_type object_type
14818 , nvl(ppev2.wbs_level,0) wbs_level -- sridhar_rollup
14819 , pobj.weighting_percentage
14820 , to_number(null) rollup_completed_percentage
14821 , to_number(null) override_percent_complete
14822 , to_date(null) as_of_date
14823 , to_date(null) actual_start_date
14824 , to_date(null) actual_finish_date
14825 , to_date(null) estimated_start_date
14826 , to_date(null) estimated_finish_date
14827 , to_number(null) rollup_weight1 ---rollup progress status code
14828 , to_number(null) override_weight2 ---override progress status code
14829 , to_number(null) base_weight3 --base prog status
14830 , to_number( null ) task_weight4 --task status
14831 , to_char(null) status_code
14832 , ppev2.proj_element_id object_id
14833 , ppev2.proj_element_id
14834 , to_number( null ) PPL_ACT_EFFORT_TO_DATE
14835 , to_number( null ) PPL_ACT_COST_TO_DATE_TC
14836 , to_number( null ) PPL_ACT_COST_TO_DATE_PC
14837 , to_number( null ) PPL_ACT_COST_TO_DATE_FC
14838 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_TC
14839 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_PC
14840 , to_number( null ) PPL_ACT_RAWCOST_TO_DATE_FC
14841 , to_number( null ) ESTIMATED_REMAINING_EFFORT
14842 , to_number( null ) PPL_ETC_COST_TC
14843 , to_number( null ) PPL_ETC_COST_PC
14844 , to_number( null ) PPL_ETC_COST_FC
14845 , to_number( null ) PPL_ETC_RAWCOST_TC
14846 , to_number( null ) PPL_ETC_RAWCOST_PC
14847 , to_number( null ) PPL_ETC_RAWCOST_FC
14848 , to_number( null ) EQPMT_ACT_EFFORT_TO_DATE
14849 , to_number( null ) EQPMT_ACT_COST_TO_DATE_TC
14850 , to_number( null ) EQPMT_ACT_COST_TO_DATE_PC
14851 , to_number( null ) EQPMT_ACT_COST_TO_DATE_FC
14852 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_TC
14853 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_PC
14854 , to_number( null ) EQPMT_ACT_RAWCOST_TO_DATE_FC
14855 , to_number( null ) EQPMT_ETC_EFFORT
14856 , to_number( null ) EQPMT_ETC_COST_TC
14857 , to_number( null ) EQPMT_ETC_COST_PC
14858 , to_number( null ) EQPMT_ETC_COST_FC
14859 , to_number( null ) EQPMT_ETC_RAWCOST_TC
14860 , to_number( null ) EQPMT_ETC_RAWCOST_PC
14861 , to_number( null ) EQPMT_ETC_RAWCOST_FC
14862 , to_number( null ) OTH_QUANTITY_TO_DATE
14863 , to_number( null ) OTH_ACT_COST_TO_DATE_TC
14864 , to_number( null ) OTH_ACT_COST_TO_DATE_PC
14865 , to_number( null ) OTH_ACT_COST_TO_DATE_FC
14866 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_TC
14867 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_PC
14868 , to_number( null ) OTH_ACT_RAWCOST_TO_DATE_FC
14869 , to_number( null ) OTH_ETC_QUANTITY
14870 , to_number( null ) OTH_ETC_COST_TC
14871 , to_number( null ) OTH_ETC_COST_PC
14872 , to_number( null ) OTH_ETC_COST_FC
14873 , to_number( null ) OTH_ETC_RAWCOST_TC
14874 , to_number( null ) OTH_ETC_RAWCOST_PC
14875 , to_number( null ) OTH_ETC_RAWCOST_FC
14876 , to_char(null) CURRENT_FLAG
14877 , to_char(null) PROJFUNC_COST_RATE_TYPE
14878 , to_number( null ) PROJFUNC_COST_EXCHANGE_RATE
14879 , to_date(null) PROJFUNC_COST_RATE_DATE
14880 , to_char(null) PROJ_COST_RATE_TYPE
14881 , to_number( null ) PROJ_COST_EXCHANGE_RATE
14882 , to_date(null) PROJ_COST_RATE_DATE
14883 , to_char(null) TXN_CURRENCY_CODE
14884 , to_char(null) PROG_PA_PERIOD_NAME
14885 , to_char(null) PROG_GL_PERIOD_NAME
14886 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
14887 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14888 p_structure_type,p_working_wp_prog_flag) BAC_value
14889 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
14890 p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14891 p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
14892 , null earned_value
14893 , decode(ppe.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
14894 , to_number(null) progress_rollup_id
14895 , to_number(null) record_version_number
14896 , pobj.object_id_to1 object_version_id
14897 , to_char(null) progress_status_code
14898 , to_number(null) incremental_work_quantity
14899 , to_number(null) cumulative_work_quantity
14900 -- 4533112 : Added N only
14901 , 'N' base_progress_status_code
14902 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
14903 , to_number(null) percent_complete_id
14904 , to_char(null) TASK_WT_BASIS_CODE
14905 , to_number(null) structure_version_id
14906 ,'N' create_required
14907 ,'N' update_required
14908 , to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14909 FROM
14910 pa_object_relationships pobj,
14911 pa_proj_element_versions ppev1,
14912 pa_proj_element_versions ppev2,
14913 pa_proj_elements ppe,
14914 pa_project_statuses pps4,
14915 pa_task_types ttype ,
14916 pa_proj_rollup_temp temp
14917 WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14918 --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14919 pobj.object_id_from1 = temp.object_id
14920 AND temp.process_number = l_process_number_temp
14921 AND pobj.object_id_from1 = ppev1.element_version_id
14922 AND pobj.object_id_to1 = ppev2.element_version_id
14923 AND pobj.relationship_type = 'S'
14924 AND ppe.proj_element_id = ppev2.proj_element_id
14925 AND ppe.status_code = pps4.project_status_code(+)
14926 AND ppe.project_id = ppev2.project_id
14927 AND ppe.object_type = ppev2.object_type
14928 AND ppev2.object_type = 'PA_TASKS'
14929 AND ppe.object_type = 'PA_TASKS'
14930 AND ppe.link_task_flag <> 'Y' -- 4392189
14931 AND pobj.object_type_to = 'PA_TASKS'
14932 AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
14933 AND ppe.type_id = ttype.task_type_id
14934 AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
14935 ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */)
14936 IS NULL
14937 AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
14938 AND temp.object_type = 'PA_TASKS' -- cklee bug: 6610612
14939 order by 5 desc ; --sridhar_rollup
14940
14941 -- FPM Dev CR 6 : Added Union ALL
14942
14943 l_asgn_task_version_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14944 l_asgn_rate_based_flag_tab SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14945 l_asgn_resource_class_code_tab SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14946 l_asgn_res_assignment_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14947 l_asgn_planned_quantity_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14948 l_asgn_plan_bur_cost_pc_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14949 l_asgn_res_list_member_id_tab SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14950
14951 CURSOR cur_assgn_rec_bulk( c_task_ver_id NUMBER, c_task_id NUMBER ) IS
14952 SELECT a.wbs_element_version_id
14953 , a.rate_based_flag
14954 , a.resource_class_code
14955 , a.resource_assignment_id
14956 , a.total_plan_quantity planned_quantity
14957 , a.total_project_burdened_cost planned_bur_cost_proj_cur
14958 , a.resource_list_member_id
14959 from pa_resource_assignments a
14960 WHERE a.wbs_element_version_id = c_task_ver_id
14961 AND 1 = 2 -- sridhar_rollup
14962 AND a.project_id = p_project_id
14963 AND a.task_id = c_task_id
14964 -- AND a.ta_display_flag = 'Y' --Bug 4323537
14965 ;
14966
14967 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER) IS
14968 SELECT ppr.*
14969 FROM pa_progress_rollup ppr
14970 WHERE ppr.project_id = p_project_id
14971 AND ppr.object_id = c_object_id
14972 AND ppr.proj_element_id = c_proj_element_id
14973 AND ppr.object_type = 'PA_ASSIGNMENTS'
14974 AND ppr.current_flag <> 'W'
14975 AND ppr.structure_type = p_structure_type
14976 AND ppr.as_of_date <= p_as_of_date
14977 AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14978 AND rownum =1
14979 ORDER BY as_of_date desc
14980 ;
14981
14982 l_asgn_progress_rec cur_get_asgn_progress%ROWTYPE;
14983 l_asgn_act_start_date DATE;
14984 l_asgn_act_finish_date DATE;
14985 l_asgn_est_start_date DATE;
14986 l_asgn_est_finish_date DATE;
14987 l_asgn_as_of_date DATE;
14988 l_asgn_ppl_act_eff NUMBER;
14989 l_asgn_eqp_act_eff NUMBER;
14990 l_asgn_ppl_act_cost NUMBER;
14991 l_asgn_eqp_act_cost NUMBER;
14992 l_asgn_oth_act_cost NUMBER;
14993 l_asgn_ppl_etc_eff NUMBER;
14994 l_asgn_eqp_etc_eff NUMBER;
14995 l_asgn_ppl_etc_cost NUMBER;
14996 l_asgn_eqp_etc_cost NUMBER;
14997 l_asgn_oth_etc_cost NUMBER;
14998 l_asgn_earned_value NUMBER;
14999 l_asgn_bac_value NUMBER;
15000
15001 -- FPM Dev CR 5 : Reverted back the outer join
15002 -- FPM Dev CR 4 : Removed Outer Join from rollup table. No need to select deliverables which do not have rollup records
15003 --This cursor selects the deliverables of a given task.
15004 CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
15005 IS
15006 SELECT obj.object_type_from
15007 , 'PA_TASKS' parent_object_type
15008 , obj.object_id_to2 object_id
15009 , obj.object_id_to1
15010 , obj.object_id_from1
15011 , 'PA_DELIVERABLES' object_type
15012 , ppr.actual_finish_date
15013 , ppr.as_of_date
15014 , ppr.completed_percentage
15015 , ppr.STRUCTURE_TYPE
15016 , ppr.PROJ_ELEMENT_ID
15017 , ppr.STRUCTURE_VERSION_ID
15018 , ppr.TASK_WT_BASIS_CODE
15019 , elem.progress_weight weighting_percentage
15020 , ppr.base_percent_complete
15021 , pps2.project_status_weight override_weight ---override progress status code
15022 , pps3.project_status_weight base_weight --base prog status
15023 FROM pa_proj_elements elem
15024 , pa_object_relationships obj
15025 , pa_progress_rollup ppr
15026 , pa_project_statuses pps2
15027 , pa_project_statuses pps3
15028 WHERE obj.object_id_from2= c_task_proj_elem_id
15029 AND obj.object_type_from = 'PA_TASKS'
15030 AND obj.object_type_to = 'PA_DELIVERABLES'
15031 AND obj.relationship_type = 'A'
15032 AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
15033 AND elem.proj_element_id = obj.object_id_to2
15034 AND elem.object_type = 'PA_DELIVERABLES'
15035 and elem.project_id = p_project_id
15036 -- AND obj.object_id_to1 = ppr.object_version_id(+)
15037 AND ppr.object_type(+) = 'PA_DELIVERABLES'
15038 AND ppr.project_id(+) = c_project_id
15039 AND ppr.object_id(+) = obj.object_id_to2
15040 AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
15041 obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug 3764224 */) -- FPM Dev CR 3
15042 AND ppr.structure_type(+) = p_structure_type
15043 AND ppr.structure_version_id is null -- deliverable progress for working version is not allowed
15044 AND ppr.base_progress_status_code = pps3.project_status_code(+)
15045 AND ppr.progress_status_code = pps2.project_status_code(+)
15046 AND ppr.current_flag(+) <> 'W'
15047 ;
15048
15049 CURSOR c_mass_rollup_tasks IS
15050 select distinct object_id_from1
15051 from pa_object_relationships
15052 start with object_id_to1 IN (select object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
15053 and relationship_type = 'S'
15054 connect by prior object_id_from1 = object_id_to1
15055 and relationship_type = 'S'
15056 MINUS
15057 select object_id object_id_from1 from pa_proj_rollup_temp where process_number = l_process_number_temp
15058 ;
15059
15060 CURSOR c_mass_rollup_tasks_temp IS
15061 select object_id
15062 from pa_proj_rollup_temp where process_number = l_process_number_temp
15063 ;
15064
15065 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
15066 IS
15067 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
15068 FROM pa_proj_elem_ver_structure str
15069 , pa_project_statuses status
15070 where str.element_version_id = c_structure_version_id
15071 AND str.project_id = c_project_id
15072 AND str.status_code = status.project_status_code;
15073
15074 CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
15075 IS
15076 SELECT element_version_id
15077 FROM pa_proj_element_versions
15078 where project_id = c_project_id
15079 and object_type = 'PA_TASKS'
15080 AND parent_structure_version_id = c_structure_version_id
15081 AND wbs_level = (Select max(wbs_level)
15082 From pa_proj_element_versions
15083 where project_id = c_project_id
15084 and object_type = 'PA_TASKS'
15085 AND parent_structure_version_id = c_structure_version_id);
15086
15087 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; --bug 3830434
15088 l_assignment_exists VARCHAR2(1) ; -- Bug 3830673
15089 l_digit_number number; --BUG 3950574, rtarway
15090
15091 --bug 4045979, start
15092 l_base_struct_ver_id NUMBER;
15093
15094 CURSOR check_task_baselined(c_structure_ver_id NUMBER, c_task_version_id NUMBER)
15095 IS
15096 select 'Y' from pa_proj_element_versions ppev1
15097 where ppev1.parent_structure_version_id = c_structure_ver_id
15098 and ppev1.proj_element_id = (select proj_element_id from pa_proj_element_versions ppev2
15099 where ppev2.element_version_id = c_task_version_id
15100 and ppev2.project_id = p_project_id);
15101
15102 l_task_baselined VARCHAR2(1) := 'N';
15103 l_parent_task_baselined VARCHAR2(1) := 'N';
15104
15105 --bug 4045979, end
15106
15107 l_tsk_progress_exists VARCHAR2(1);
15108 l_mapping_tasks_to_rollup_tab PA_PLSQL_DATATYPES.NumTabTyp;
15109
15110 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
15111 CURSOR cur_tree_rollup_dates
15112 IS
15113 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
15114 from pa_object_relationships obj
15115 , pa_proj_element_versions ver
15116 , pa_progress_rollup ppr
15117 , pa_proj_rollup_temp rollup
15118 , pa_proj_element_versions ver2
15119 where rollup.object_id = obj.object_id_to1
15120 AND rollup.process_number = l_process_number_temp
15121 AND obj.relationship_type = 'S'
15122 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
15123 AND obj.object_type_to = 'PA_TASKS'
15124 AND obj.object_id_from1= ver.element_version_id
15125 AND ver.project_id = p_project_id
15126 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
15127 AND ver.project_id = ppr.project_id
15128 AND ppr.as_of_date > p_as_of_date
15129 AND ppr.object_id = ver.proj_element_id
15130 AND ppr.current_flag = 'Y'
15131 AND ppr.proj_element_id = ver.proj_element_id
15132 AND ppr.structure_type = p_structure_type
15133 AND ppr.structure_version_id is null
15134 AND obj.object_id_to1 = ver2.element_version_id
15135 AND ver2.project_id = p_project_id
15136 AND ver2.object_type = 'PA_TASKS'
15137 AND rollup.object_type = 'PA_TASKS' -- cklee bug: 6610612
15138 order by ppr.as_of_date;
15139
15140
15141 -- Bug 4392189 Begin
15142 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
15143 SELECT
15144 ppv2.project_id sub_project_id
15145 ,ppv2.element_version_id sub_structure_ver_id
15146 ,ppv2.proj_element_id sub_proj_element_id
15147 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method, ppv2.proj_element_id, ppv2.parent_structure_version_id,
15148 'WORKPLAN','N') sub_project_bac_value
15149 FROM
15150 pa_proj_element_versions ppv2
15151 ,pa_proj_elem_ver_structure ppevs2
15152 ,pa_object_relationships por1
15153 ,pa_object_relationships por2
15154 WHERE
15155 por1.object_id_from1 = c_task_version_id
15156 AND por1.object_id_to1 = por2.object_id_from1
15157 AND por2.object_id_to1 = ppv2.element_version_id
15158 AND ppv2.object_type = 'PA_STRUCTURES'
15159 -- AND por2.relationship_type in ( 'LW', 'LF' )
15160 AND por2.relationship_type = 'LW'
15161 AND ppevs2.element_version_id = ppv2.element_version_id
15162 AND ppevs2.project_id = ppv2.project_id
15163 AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
15164 AND ppevs2.latest_eff_published_flag = 'Y';
15165
15166 l_sub_project_id NUMBER;
15167 l_sub_structure_ver_id NUMBER;
15168 l_sub_proj_element_id NUMBER;
15169 l_sub_project_bac_value NUMBER;
15170
15171 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
15172 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
15173 SELECT
15174 ppr.progress_rollup_id
15175 ,ppr.actual_start_date
15176 ,ppr.actual_finish_date
15177 ,ppr.estimated_start_date
15178 ,ppr.estimated_finish_date
15179 ,pps1.project_status_weight rollup_weight1
15180 ,pps2.project_status_weight override_weight2
15181 ,pps3.project_status_weight base_weight3
15182 ,pps4.project_status_weight task_weight4
15183 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
15184 -- ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
15185 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0)
15186 , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
15187 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
15188 FROM
15189 pa_progress_rollup ppr
15190 ,pa_project_statuses pps1
15191 ,pa_project_statuses pps2
15192 ,pa_project_statuses pps3
15193 ,pa_project_statuses pps4
15194 ,pa_proj_elements ppe
15195 WHERE
15196 1 = 2 and --sridhar_rollup
15197 ppr.project_id = c_sub_project_id
15198 AND ppe.project_id = c_sub_project_id
15199 AND ppe.object_type = 'PA_STRUCTURES'
15200 AND ppe.proj_element_id = c_sub_proj_element_id
15201 AND ppr.object_id = c_sub_proj_element_id
15202 AND ppr.object_type = 'PA_STRUCTURES'
15203 AND ppr.structure_version_id is null
15204 AND ppr.structure_type = 'WORKPLAN'
15205 AND ppr.current_flag IN ('Y', 'N')
15206 AND ppr.as_of_date <= c_as_of_date
15207 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
15208 AND ppr.progress_status_code = pps2.project_status_code(+)
15209 AND ppr.base_progress_status_code = pps3.project_status_code(+)
15210 AND ppe.status_code = pps4.project_status_code(+)
15211 order by as_of_date desc
15212 ;
15213
15214
15215 l_subproj_prog_rollup_id NUMBER;
15216 l_subproj_act_start_date DATE;
15217 l_subproj_act_finish_date DATE;
15218 l_subproj_est_start_date DATE;
15219 l_subproj_est_finish_date DATE;
15220 l_subproj_rollup_weight1 NUMBER;
15221 l_subproj_override_weight2 NUMBER;
15222 l_subproj_base_weight3 NUMBER;
15223 l_subproj_task_weight4 NUMBER;
15224 l_subproj_earned_value NUMBER;
15225 l_subproj_bac_value NUMBER;
15226 l_subproj_comp_percentage NUMBER; --Bug 4506009
15227 l_actual_lowest_task VARCHAR2(1) := 'N';
15228 -- Bug 4392189 End
15229
15230 l_summary_object_flag VARCHAR2(1); -- 4370746
15231 l_wp_version_enabled_flag VARCHAR2(1); -- Bug#12393400
15232
15233 -- Bug 4506461 Begin
15234 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
15235 SELECT 'Y'
15236 FROM pa_object_relationships
15237 WHERE --relationship_type in ( 'LW', 'LF' )
15238 relationship_type = 'LW'
15239 AND object_id_from1 IN
15240 (SELECT object_id_to1
15241 FROM pa_object_relationships
15242 START WITH object_id_from1 = c_task_version_id
15243 AND relationship_type = 'S'
15244 CONNECT BY PRIOR object_id_to1 = object_id_from1
15245 AND relationship_type = 'S')
15246 ;
15247 l_subproject_found VARCHAR2(1):='N';
15248 l_rederive_base_pc VARCHAR2(1):='N';
15249 -- Bug 4506461 End
15250
15251 l_last_as_of_date DATE;--4573257
15252 l_subproj_task_version_id NUMBER;--4582956
15253 l_org_id NUMBER; -- 4746476
15254
15255 CURSOR c1_rolldates(c_task_ver_id NUMBER, c_task_id NUMBER) IS
15256 select scheduled_start_date, scheduled_finish_date from pa_proj_elem_ver_schedule a
15257 where a.project_id = p_project_id
15258 AND a.proj_element_id = c_task_id and a.element_version_id = c_task_ver_id;
15259
15260 l_tsk_sch_start_date pa_proj_elem_ver_schedule.scheduled_start_date%TYPE;
15261 l_tsk_sch_finish_date pa_proj_elem_ver_schedule.scheduled_finish_date%TYPE;
15262 l_cnt number := 0;
15263
15264 /*
15265 cursor c_progress_parent(c_project_id number)
15266 IS
15267 SELECT object_id_from1
15268 FROM pa_object_relationships
15269 WHERE relationship_type = 'S'
15270 START WITH object_id_to1 in (select p.element_version_id
15271 from PA_PROJ_ELEMENT_VERSIONS p where p.project_id = c_project_id and defer_code in ( 'P','S'))
15272 AND relationship_type = 'S'
15273 CONNECT BY PRIOR object_id_from1 = object_id_to1
15274 AND relationship_type = 'S';
15275 */
15276 cursor c_progress_parent(c_project_id number)
15277 IS
15278 SELECT /*+ CONNECT_BY_FILTERING */ element_version_id object_id_from1
15279 FROM PA_PROJ_ELEMENTS_TMP r
15280 START WITH r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'P' ) CONNECT BY
15281 r.TASK_ID = prior r.PARENT_TASK_ID;
15282
15283 type NumberArray
15284 IS
15285 TABLE OF NUMBER INDEX BY binary_integer;
15286
15287 l_prog_obj NumberArray;
15288 l_tmp_prog NumberArray;
15289 BEGIN
15290 -- Rollup Cases
15291 -- 1. Workplan Publsihed Version Rollup.
15292 -- 2. Workplan Working Version Rollup.
15293 -- 3. Financial Structure Rollup.
15294 -- 4. Entire WBS using structure version id.
15295 -- 5. Program Rollup
15296
15297 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
15298
15299 IF g1_debug_mode = 'Y' THEN
15300 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PVT');
15301 END IF;
15302
15303 IF g1_debug_mode = 'Y' THEN
15304 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
15305 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
15306 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
15307 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
15308 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
15309 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
15310 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
15311 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
15312 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
15313 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
15314 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
15315 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
15316 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
15317 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
15318 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
15319 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
15320 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
15321 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
15322 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
15323 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
15324 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
15325 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
15326 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
15327 END IF;
15328
15329 l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
15330
15331 -- 20 May : Amit : If Structure_version_id is null, then no rocessing shd be done
15332 -- Bug 3856161 : Added p_as_of_date check also
15333 IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
15334 return;
15335 END IF;
15336
15337 --bug 4045979
15338 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
15339
15340 --BUG 4355204, rtarway
15341 --IF (p_commit = FND_API.G_TRUE) THEN
15342 savepoint ROLLUP_PVT2;
15343 --END IF;
15344
15345 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
15346 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15347 END IF;
15348
15349 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
15350 FND_MSG_PUB.initialize;
15351 END IF;
15352
15353 /* sridhar_rollup
15354 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
15355 p_calling_module => 'AMG'
15356 ,p_project_id => p_project_id
15357 ,p_structure_version_id => p_structure_version_id
15358 ,p_baselined_str_ver_id => pa_project_structure_utils.get_baseline_struct_ver(p_project_id)
15359 ,p_program_rollup_flag => 'Y'
15360 ,p_calling_context => 'SUMMARIZE'
15361 ,p_as_of_date => p_as_of_date -- Fix for Bug # 4251406.
15362 ,x_return_status => l_return_status
15363 ,x_msg_count => l_msg_count
15364 ,x_msg_data => l_msg_data
15365 );
15366 */
15367 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
15368 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --bug 3830434
15369 -- 4746476 : added org_id in below select
15370 SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
15371
15372 IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
15373 l_split_workplan := 'Y';
15374 ELSE
15375 l_split_workplan := 'N';
15376 END IF;
15377
15378 -- Bug 4938333
15379 -- In case of financial struture, no need to check for published version
15380 -- populate structure_version_id always null.
15381 IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
15382 -- This is to find out whether passed struture version id is published or not.
15383 -- bcoz progress for workplna workplan version also exists
15384 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
15385 FETCH cur_check_published_version INTO l_published_structure;
15386 CLOSE cur_check_published_version;
15387
15388 IF l_published_structure = 'Y' THEN
15389 l_structure_version_id := null;
15390 ELSE
15391 l_structure_version_id := p_structure_version_id;
15392 END IF;
15393 ELSE -- Bug 4938333
15394 l_published_structure := 'Y'; -- Bug 4938333
15395 l_structure_version_id := null; -- Bug 4938333
15396 END IF;
15397
15398 l_task_version_id := p_task_version_id;
15399
15400 IF p_structure_type = 'WORKPLAN' THEN
15401 l_rollup_method := p_wp_rollup_method;
15402 ELSE
15403 l_rollup_method := p_fin_rollup_method;
15404 END IF;
15405
15406 IF g1_debug_mode = 'Y' THEN
15407 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled, x_Log_Level=> 3);
15408 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
15409 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
15410 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_task_version_id='||l_task_version_id, x_Log_Level=> 3);
15411 END IF;
15412
15413 --l_lowest_task := p_lowest_task;
15414 -- Loop thru all the parents of the passed task
15415
15416 SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
15417 INTO l_process_number_temp FROM dual;
15418
15419 IF p_rollup_entire_wbs = 'N' THEN
15420 -- sridhar_rollup
15421 null;
15422 ELSE
15423 IF g1_debug_mode = 'Y' THEN
15424 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
15425 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
15426 FOR i in 1..p_task_version_id_tbl.count LOOP
15427 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
15428 END LOOP;
15429 END IF;
15430
15431 IF p_task_version_id_tbl.count > 0 THEN
15432 -- sridhar_rollup
15433 null;
15434 ELSE
15435 /*INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15436 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15437 FROM pa_proj_element_versions
15438 WHERE project_id = p_project_id
15439 AND parent_structure_version_id = p_structure_version_id
15440 AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
15441 AND object_type = 'PA_TASKS'
15442 UNION
15443 SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15444 FROM dual;*/
15445 /*INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15446 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15447 FROM PA_PROJ_ELEMENTS_TMP r
15448 START WITH r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'P' ) CONNECT BY
15449 r.TASK_ID = prior r.PARENT_TASK_ID
15450 UNION
15451 SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15452 FROM dual
15453 UNION
15454 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15455 FROM PA_PROJ_ELEMENTS_TMP r where connect_by_isleaf = 0
15456 START WITH r.TASK_ID in ( select distinct task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'S' ) CONNECT BY
15457 prior r.TASK_ID = r.PARENT_TASK_ID
15458 UNION
15459 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15460 FROM PA_PROJ_ELEMENTS_TMP r where r.defer_code = 'S' ;*/
15461 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15462 SELECT /*+ CONNECT_BY_FILTERING */ l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15463 FROM PA_PROJ_ELEMENTS_TMP r
15464 START WITH r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code in ( 'P','C') ) CONNECT BY
15465 r.TASK_ID = prior r.PARENT_TASK_ID
15466 UNION
15467 SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15468 FROM dual
15469 UNION
15470 SELECT /*+ CONNECT_BY_FILTERING */ l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15471 FROM PA_PROJ_ELEMENTS_TMP r where connect_by_isleaf = 0
15472 START WITH r.TASK_ID in ( select distinct task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code in ('D', 'S' )) CONNECT BY
15473 r.TASK_ID = Prior r.PARENT_TASK_ID
15474 UNION
15475 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15476 FROM PA_PROJ_ELEMENTS_TMP r where r.defer_code in ('D','S')
15477 UNION
15478 SELECT l_process_number_temp, element_version_id object_id_from1, 'PA_TASKS', 1
15479 FROM PA_PROJ_ELEMENTS_TMP r where r.task_id in ( select distinct tt.top_task_id from PA_PROJ_ELEMENTS_TMP tt where tt.defer_code in ('D','S','C','P') ) ;
15480
15481
15482 l_tmp_prog.delete;
15483 OPEN c_progress_parent(p_project_id);
15484 FETCH c_progress_parent BULK COLLECT INTO l_tmp_prog;
15485 CLOSE c_progress_parent;
15486
15487 l_prog_obj.delete;
15488 FOR i in 1..l_tmp_prog.count loop
15489 l_prog_obj(l_tmp_prog(i) ) := l_tmp_prog(i);
15490 end loop;
15491 -- Added below code on Oct28 for structure level rollup
15492 l_prog_obj(p_structure_version_id ) := p_structure_version_id;
15493 END IF;
15494 END IF;
15495
15496 IF g1_debug_mode = 'Y' THEN
15497 l_mass_rollup_prog_rec_tab.delete;
15498 OPEN c_mass_rollup_tasks_temp;
15499 FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
15500 CLOSE c_mass_rollup_tasks_temp;
15501 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
15502 FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
15503 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
15504 END LOOP;
15505 l_mass_rollup_prog_rec_tab.delete;
15506 END IF;
15507
15508 OPEN cur_tasks(1);
15509 FETCH cur_tasks BULK COLLECT INTO
15510 l_tsk_object_id_from1_tab
15511 ,l_tsk_parent_object_type_tab
15512 ,l_tsk_object_id_to1_tab
15513 ,l_tsk_object_type_tab
15514 ,l_tsk_wbs_level_tab
15515 ,l_tsk_weighting_percent_tab
15516 ,l_tsk_roll_comp_percent_tab
15517 ,l_tsk_over_percent_comp_tab
15518 ,l_tsk_as_of_date_tab
15519 ,l_tsk_actual_start_date_tab
15520 ,l_tsk_actual_finish_date_tab
15521 ,l_tsk_est_start_date_tab
15522 ,l_tsk_est_finish_date_tab
15523 ,l_tsk_rollup_weight1_tab
15524 ,l_tsk_override_weight2_tab
15525 ,l_tsk_base_weight3_tab
15526 ,l_tsk_task_weight4_tab
15527 ,l_tsk_status_code_tab
15528 ,l_tsk_object_id_tab
15529 ,l_tsk_proj_element_id_tab
15530 ,l_tsk_PPL_ACT_EFF_tab
15531 ,l_tsk_PPL_ACT_COST_TC_tab
15532 ,l_tsk_PPL_ACT_COST_PC_tab
15533 ,l_tsk_PPL_ACT_COST_FC_tab
15534 ,l_tsk_PPL_ACT_RAWCOST_TC_tab
15535 ,l_tsk_PPL_ACT_RAWCOST_PC_tab
15536 ,l_tsk_PPL_ACT_RAWCOST_FC_tab
15537 ,l_tsk_EST_REM_EFFORT_tab
15538 ,l_tsk_PPL_ETC_COST_TC_tab
15539 ,l_tsk_PPL_ETC_COST_PC_tab
15540 ,l_tsk_PPL_ETC_COST_FC_tab
15541 ,l_tsk_PPL_ETC_RAWCOST_TC_tab
15542 ,l_tsk_PPL_ETC_RAWCOST_PC_tab
15543 ,l_tsk_PPL_ETC_RAWCOST_FC_tab
15544 ,l_tsk_EQPMT_ACT_EFFORT_tab
15545 ,l_tsk_EQPMT_ACT_COST_TC_tab
15546 ,l_tsk_EQPMT_ACT_COST_PC_tab
15547 ,l_tsk_EQPMT_ACT_COST_FC_tab
15548 ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
15549 ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
15550 ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
15551 ,l_tsk_EQPMT_ETC_EFFORT_tab
15552 ,l_tsk_EQPMT_ETC_COST_TC_tab
15553 ,l_tsk_EQPMT_ETC_COST_PC_tab
15554 ,l_tsk_EQPMT_ETC_COST_FC_tab
15555 ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
15556 ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
15557 ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
15558 ,l_tsk_OTH_QUANTITY_tab
15559 ,l_tsk_OTH_ACT_COST_TC_tab
15560 ,l_tsk_OTH_ACT_COST_PC_tab
15561 ,l_tsk_OTH_ACT_COST_FC_tab
15562 ,l_tsk_OTH_ACT_RAWCOST_TC_tab
15563 ,l_tsk_OTH_ACT_RAWCOST_PC_tab
15564 ,l_tsk_OTH_ACT_RAWCOST_FC_tab
15565 ,l_tsk_OTH_ETC_QUANTITY_tab
15566 ,l_tsk_OTH_ETC_COST_TC_tab
15567 ,l_tsk_OTH_ETC_COST_PC_tab
15568 ,l_tsk_OTH_ETC_COST_FC_tab
15569 ,l_tsk_OTH_ETC_RAWCOST_TC_tab
15570 ,l_tsk_OTH_ETC_RAWCOST_PC_tab
15571 ,l_tsk_OTH_ETC_RAWCOST_FC_tab
15572 ,l_tsk_CURRENT_FLAG_tab
15573 ,l_tsk_PF_COST_RATE_TYPE_tab
15574 ,l_tsk_PF_COST_EXC_RATE_tab
15575 ,l_tsk_PF_COST_RATE_DATE_tab
15576 ,l_tsk_P_COST_RATE_TYPE_tab
15577 ,l_tsk_P_COST_EXC_RATE_tab
15578 ,l_tsk_P_COST_RATE_DATE_tab
15579 ,l_tsk_TXN_CURRENCY_CODE_tab
15580 ,l_tsk_PROG_PA_PERIOD_NAME_tab
15581 ,l_tsk_PROG_GL_PERIOD_NAME_tab
15582 ,l_tsk_bac_value_tab
15583 ,l_tsk_bac_self_value_tab -- Bug 4493105
15584 ,l_tsk_earned_value_tab
15585 ,l_tsk_deriv_method_tab
15586 ,l_tsk_progress_rollup_id_tab
15587 ,l_tsk_rollup_rec_ver_num_tab
15588 ,l_tsk_object_version_id_tab
15589 ,l_tsk_progress_stat_code_tab
15590 ,l_tsk_incremental_wq_tab
15591 ,l_tsk_cumulative_wq_tab
15592 ,l_tsk_base_prog_stat_code_tab
15593 ,l_tsk_eff_roll_prg_st_code_tab
15594 ,l_tsk_percent_complete_id_tab
15595 ,l_tsk_task_wt_basis_code_tab
15596 ,l_tsk_structure_version_id_tab
15597 ,l_tsk_create_required
15598 ,l_tsk_update_required
15599 ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
15600 ;
15601 CLOSE cur_tasks;
15602
15603
15604 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
15605
15606 IF g1_debug_mode = 'Y' THEN
15607 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
15608 END IF;
15609
15610 -- sridhar_rollup
15611 l_defer_arr_task_id.delete;
15612
15613 FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
15614 -- sridhar_rollup
15615 l_defer_arr_task_id(l_tsk_object_id_to1_tab(k)) := l_tsk_object_id_tab(k);
15616
15617 -- Bug 4636100 Issue 2 : Added following if
15618 -- The intention of this IF is to just pass the structure level record
15619 -- to scheduling API. Note that in structure case, we just pass one level
15620 -- records below say task A, and if that below task A has an assignment, it will calculate
15621 -- wrong % complete because we are not sending A's childs
15622 IF ((nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
15623 OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
15624 OR (p_rollup_entire_wbs = 'Y'))
15625 THEN
15626 IF g1_debug_mode = 'Y' THEN
15627 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
15628 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
15629 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
15630 END IF;
15631 l_tsk_progress_exists := 'N';
15632 l_parent_count := l_parent_count + 1;
15633 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
15634 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
15635
15636 IF g1_debug_mode = 'Y' THEN
15637 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
15638 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
15639 END IF;
15640
15641 -- Bug 4392189 : Program Changes Begin
15642 IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
15643 l_sub_project_id := null;
15644 l_subproj_prog_rollup_id := null;
15645 l_subproj_act_start_date := null;
15646 l_subproj_act_finish_date := null;
15647 l_subproj_est_start_date := null;
15648 l_subproj_est_finish_date := null;
15649 l_subproj_rollup_weight1 := null;
15650 l_subproj_override_weight2 := null;
15651 l_subproj_base_weight3 := null;
15652 l_subproj_task_weight4 := null;
15653 l_subproj_earned_value := null;
15654 l_subproj_bac_value := null;
15655
15656 -- 4587527 : It was not supporting multiple sub projects at link task
15657 -- So converted it into FOR LOOP
15658 FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
15659 --IF l_sub_project_id IS NOT NULL THEN
15660 IF g1_debug_mode = 'Y' THEN
15661 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
15662 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
15663 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
15664 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
15665 END IF;
15666 l_subproject_found := 'Y'; -- Bug 4506461
15667 l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
15668 IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
15669 l_actual_lowest_task := 'Y';
15670 END IF;
15671
15672 l_subproj_prog_rollup_id := null;
15673 l_subproj_act_start_date := null;
15674 l_subproj_act_finish_date := null;
15675 l_subproj_est_start_date := null;
15676 l_subproj_est_finish_date := null;
15677 l_subproj_rollup_weight1 := null;
15678 l_subproj_override_weight2 := null;
15679 l_subproj_base_weight3 := null;
15680 l_subproj_task_weight4 := null;
15681 l_subproj_bac_value := null;
15682 l_subproj_comp_percentage := null;
15683
15684 OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
15685 FETCH c_get_sub_project_progress INTO
15686 l_subproj_prog_rollup_id
15687 , l_subproj_act_start_date
15688 , l_subproj_act_finish_date
15689 , l_subproj_est_start_date
15690 , l_subproj_est_finish_date
15691 , l_subproj_rollup_weight1
15692 , l_subproj_override_weight2
15693 , l_subproj_base_weight3
15694 , l_subproj_task_weight4
15695 --, l_subproj_earned_value Bug 4506009
15696 , l_subproj_bac_value
15697 , l_subproj_comp_percentage -- Bug 4506009
15698 ;
15699 CLOSE c_get_sub_project_progress;
15700
15701 IF g1_debug_mode = 'Y' THEN
15702 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
15703 END IF;
15704
15705 l_index := l_index + 1;
15706
15707 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_SUBPROJECTS';
15708 l_rollup_table1(l_index).OBJECT_ID := (-1 * l_index);
15709 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
15710 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);
15711 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
15712 l_rollup_table1(l_index).CALENDAR_ID := l_index;
15713
15714 -- 4533112 : Added following check
15715 IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
15716 l_rollup_table1(l_index).START_DATE1 := l_subproj_act_start_date;
15717 l_rollup_table1(l_index).FINISH_DATE1 := l_subproj_act_finish_date;
15718 l_rollup_table1(l_index).START_DATE2 := l_subproj_est_start_date;
15719 l_rollup_table1(l_index).FINISH_DATE2 := l_subproj_est_finish_date;
15720 END IF;
15721 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl(l_subproj_comp_percentage, 0);
15722 l_rollup_table1(l_index).BAC_VALUE1 := NVL(rec_subproj.sub_project_bac_value, 0);
15723 -- 4582956 End
15724
15725 -- Rollup Progress Status Rollup
15726 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_subproj_rollup_weight1,0); --rollup prog status
15727 l_rollup_table1(l_index).PROGRESS_override1 := l_subproj_override_weight2; --override prg status
15728
15729 -- Base Progress Status Rollup
15730 -- 4533112 : Base progress status is not used
15731 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_subproj_base_weight3, 0 ); --base prog status
15732 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
15733
15734 -- Task Status Rollup
15735 l_rollup_table1(l_index).task_status1 := nvl( l_subproj_task_weight4, 0 ); -- task status
15736 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
15737 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
15738 l_action_allowed := 'Y';
15739 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
15740 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
15741
15742 IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
15743 -- This means Progress exists for the corresponding task
15744 l_tsk_progress_exists := 'Y';
15745 END IF;
15746 --END IF; -- l_sub_project_id IS NOT NULL THEN
15747 END LOOP;
15748 END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
15749 -- Bug 4392189 : Program Changes End
15750
15751 -- Loop thru all task assignments of a passed parent
15752 IF p_structure_type = 'WORKPLAN'
15753 THEN
15754 l_asgn_task_version_id_tab.delete;
15755 l_asgn_rate_based_flag_tab.delete;
15756 l_asgn_resource_class_code_tab.delete;
15757 l_asgn_res_assignment_id_tab.delete;
15758 l_asgn_planned_quantity_tab.delete;
15759 l_asgn_plan_bur_cost_pc_tab.delete;
15760 l_asgn_res_list_member_id_tab.delete;
15761
15762 OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
15763 FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
15764 , l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
15765 , l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
15766 CLOSE cur_assgn_rec_bulk;
15767
15768 IF g1_debug_mode = 'Y' THEN
15769 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
15770 END IF;
15771
15772 FOR i in 1..l_asgn_task_version_id_tab.count LOOP
15773 IF g1_debug_mode = 'Y' THEN
15774 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
15775 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
15776 END IF;
15777
15778 l_asgn_progress_rec := null;
15779 l_asgn_act_start_date := null;
15780 l_asgn_act_finish_date := null;
15781 l_asgn_est_start_date := null;
15782 l_asgn_est_finish_date := null;
15783 l_asgn_as_of_date := null;
15784 l_asgn_ppl_act_eff := null;
15785 l_asgn_eqp_act_eff := null;
15786 l_asgn_ppl_act_cost := null;
15787 l_asgn_eqp_act_cost := null;
15788 l_asgn_oth_act_cost := null;
15789 l_asgn_ppl_etc_eff := null;
15790 l_asgn_eqp_etc_eff := null;
15791 l_asgn_ppl_etc_cost := null;
15792 l_asgn_eqp_etc_cost := null;
15793 l_asgn_oth_etc_cost := null;
15794
15795 OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
15796 FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
15797 CLOSE cur_get_asgn_progress;
15798
15799 IF g1_debug_mode = 'Y' THEN
15800 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
15801 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
15802 END IF;
15803
15804 IF l_asgn_progress_rec.object_id is not null THEN
15805 l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
15806 l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
15807 l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
15808 l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
15809 l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
15810
15811 l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
15812 l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
15813 l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
15814 l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
15815 l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
15816
15817 l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
15818 l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
15819 l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
15820 l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
15821 l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
15822
15823 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
15824 l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_eqp_act_eff,0);
15825 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
15826 IF l_asgn_ppl_etc_eff IS NULL THEN
15827 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15828 ELSE
15829 l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
15830 END IF;
15831 ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
15832 IF l_asgn_eqp_etc_eff IS NULL THEN
15833 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15834 ELSE
15835 l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
15836 END IF;
15837 ELSE
15838 l_asgn_bac_value := 0;
15839 END IF;
15840 ELSE
15841 l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
15842 IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
15843 IF l_asgn_ppl_etc_cost IS NULL THEN
15844 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15845 ELSE
15846 l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
15847 END IF;
15848 ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
15849 IF l_asgn_eqp_etc_cost IS NULL THEN
15850 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15851 ELSE
15852 l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
15853 END IF;
15854 ELSE
15855 IF l_asgn_oth_etc_cost IS NULL THEN
15856 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15857 ELSE
15858 l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
15859 END IF;
15860 END IF;
15861 END IF;
15862 ELSE
15863 l_asgn_earned_value := 0;
15864 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
15865 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
15866 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15867 ELSE
15868 l_asgn_bac_value := 0;
15869 END IF;
15870 ELSE
15871 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15872 END IF;
15873 END IF;
15874
15875 l_index := l_index + 1;
15876
15877 l_rollup_table1(l_index).OBJECT_TYPE := 'PA_ASSIGNMENTS';
15878 l_rollup_table1(l_index).OBJECT_ID := l_asgn_res_assignment_id_tab(i);
15879 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := 'PA_TASKS';
15880 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_asgn_task_version_id_tab(i);
15881 l_rollup_table1(l_index).WBS_LEVEL := 9999999; -- Assigning some value so that order by in scheduling API works
15882 l_rollup_table1(l_index).CALENDAR_ID := l_index;
15883
15884 -- Percent Complete needs to be derived using Earned Value and BAC Value
15885
15886 -- Percent Complete at Assignment level does not get calculated
15887 -- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
15888
15889 --Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
15890 -- and child task actual dates, regardless of the PPC Method.
15891 -- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
15892 IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE') AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
15893 -- Actual Date Rollup : Only Start Date gets rolls up.
15894 l_rollup_table1(l_index).START_DATE1 := l_asgn_act_start_date;
15895 l_rollup_table1(l_index).FINISH_DATE1 := l_asgn_act_finish_date;
15896
15897 -- Estimated Date Rollup : Only Start Date gets rolls up.
15898 l_rollup_table1(l_index).START_DATE2 := l_asgn_est_start_date;
15899 l_rollup_table1(l_index).FINISH_DATE2 := l_asgn_est_finish_date;
15900 END IF;
15901
15902 -- Progress Status entry is not there at assignment level
15903 -- Assignment Status entry is not there at assignment level
15904 -- Earned Value and BAC Rollup
15905 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
15906 l_rollup_table1(l_index).EARNED_VALUE1 := 0;
15907 l_rollup_table1(l_index).BAC_VALUE1 := 1;
15908 -- 4392189 : Program Reporting Changes - Phase 2
15909 -- Having Set2 columns to get Project level % complete
15910 l_rollup_table1(l_index).EARNED_VALUE2 := 0;
15911 l_rollup_table1(l_index).BAC_VALUE2 := 1;
15912 ELSE
15913 l_rollup_table1(l_index).EARNED_VALUE1 := NVL( l_asgn_earned_value, 0 );
15914 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_asgn_bac_value, 0 );
15915 -- 4392189 : Program Reporting Changes - Phase 2
15916 -- Having Set2 columns to get Project level % complete
15917 l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_asgn_earned_value, 0 );
15918 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_asgn_bac_value, 0 );
15919 END IF;
15920
15921 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
15922 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
15923 l_action_allowed := 'Y';
15924 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
15925 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
15926
15927 IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS NOT NULL THEN
15928 -- This means Progress exists for the corresponding task
15929 l_tsk_progress_exists := 'Y';
15930 END IF;
15931
15932 --Bug#12393400 - Added - Begin
15933 -- For resource assignments in working version,
15934 -- the actual_finish_date should be NULL in case actual effort is not same as planned
15935
15936 IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
15937 AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
15938 AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
15939 -- Update to happen only version is disabled or on a working version when version enabled
15940 IF (l_wp_version_enabled_flag = 'N'
15941 OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
15942 UPDATE PA_PROGRESS_ROLLUP
15943 SET ACTUAL_FINISH_DATE = NULL
15944 WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
15945 END IF;
15946 END IF; -- end check for
15947 --Bug#12393400 - Added - End
15948
15949 END LOOP; -- Assignments Loop
15950 END IF;
15951
15952 -- Bug 3957792 : Added check for Cancelled tasks
15953 IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k) = 'DELIVERABLE'
15954 AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
15955 THEN
15956 FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id) LOOP -- FPM Change
15957 IF g1_debug_mode = 'Y' THEN
15958 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
15959 END IF;
15960
15961 l_index := l_index + 1;
15962
15963 l_rollup_table1(l_index).OBJECT_TYPE := cur_del_rec.object_type;
15964 l_rollup_table1(l_index).OBJECT_ID := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
15965 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_del_rec.parent_object_type;
15966 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_to1_tab(k);--Object Version Id of Task
15967 l_rollup_table1(l_index).WBS_LEVEL := 9999999;
15968 l_rollup_table1(l_index).CALENDAR_ID := l_index;
15969
15970 -- Rollup Percent Complete Rollup
15971 l_rollup_table1(l_index).task_weight1 := nvl( cur_del_rec.weighting_percentage, 0 );
15972 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_del_rec.completed_percentage, 0 );
15973 -- 4392189 : Program Reporting Changes - Phase 2
15974 -- Having Set2 columns to get Project level % complete
15975 l_rollup_table1(l_index).task_weight2 := nvl( cur_del_rec.weighting_percentage, 0 );
15976 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.completed_percentage, 0 );
15977
15978 --l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0; -- FPM Dev CR 2
15979
15980 -- Base Percent Complete Rollup
15981
15982 -- Dates will not get rolled up for deliverable
15983
15984 -- Rollup Progress Status Rollup
15985
15986 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0; --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
15987 l_rollup_table1(l_index).PROGRESS_override1 := cur_del_rec.override_weight; --override prg status
15988
15989 -- Base Progress Status Rollup
15990 -- 4533112 : Now base progress status is not used
15991 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
15992 -- l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
15993
15994 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
15995 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
15996
15997 -- Deliverable Status will not get rolled up for deliverable
15998
15999 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
16000
16001 IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
16002 l_action_allowed := 'N';
16003 END IF;
16004
16005 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
16006 l_action_allowed := 'N';
16007 END IF;
16008
16009 IF g1_debug_mode = 'Y' THEN
16010 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
16011 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
16012 END IF;
16013
16014 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
16015 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
16016
16017 --maansari4/10 temporarily passing 'Y' to rollup node.
16018 -- need to investigate why l_action_allowed is coming always as 'N'
16019
16020 l_rollup_table1(l_index).rollup_node1 := 'Y';
16021 l_rollup_table1(l_index).rollup_node2 := 'Y';
16022
16023 IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL THEN
16024 -- This means Progress exists for the corresponding task
16025 l_tsk_progress_exists := 'Y';
16026 END IF;
16027 END LOOP; -- Delivertables Loop
16028 END IF; -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES' THEN
16029
16030 l_index := l_index + 1;
16031
16032 l_rollup_table1(l_index).OBJECT_TYPE := l_tsk_object_type_tab(k);
16033 l_rollup_table1(l_index).OBJECT_ID := l_tsk_object_id_to1_tab(k);--Task Version Id
16034 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := l_tsk_parent_object_type_tab(k);
16035 l_rollup_table1(l_index).PARENT_OBJECT_ID := l_tsk_object_id_from1_tab(k); --Parent Task Version Id
16036 l_rollup_table1(l_index).WBS_LEVEL := NVL( l_tsk_wbs_level_tab(k), 0 );
16037 l_rollup_table1(l_index).CALENDAR_ID := l_index;
16038 -- 4582956 Begin
16039 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag; -- 4370746
16040 IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
16041 -- 4586449 : Passing L for link tasks
16042 --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; --Link task shd be treated as summary task
16043 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'L'; --Link task shd be treated as summary task
16044 ELSE
16045 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := l_summary_object_flag;
16046 END IF;
16047 -- 4582956 end
16048
16049 -- Rollup Percent Complete Rollup
16050 l_rollup_table1(l_index).task_weight1 := nvl( l_tsk_weighting_percent_tab(k), 0 );
16051 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( l_tsk_roll_comp_percent_tab(k), 0 );
16052 -- 4392189 : Program Reporting Changes - Phase 2
16053 -- Having Set2 columns to get Project level % complete
16054 l_rollup_table1(l_index).task_weight2 := nvl( l_tsk_weighting_percent_tab(k), 0 );
16055 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( l_tsk_base_percent_comp_tab(k), 0 );
16056
16057 --bug 4045979, start
16058 l_task_baselined := 'N';
16059 l_parent_task_baselined := 'N';
16060 -- added if condition for bug 13923366 Huawei by skkoppul
16061 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
16062 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
16063 l_task_baselined := 'Y';
16064 l_parent_task_baselined := 'Y';
16065 ELSE
16066 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
16067 FETCH check_task_baselined INTO l_task_baselined;
16068 CLOSE check_task_baselined;
16069
16070 OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
16071 FETCH check_task_baselined INTO l_parent_task_baselined;
16072 CLOSE check_task_baselined;
16073 END IF;
16074
16075 OPEN c1_rolldates(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
16076 FETCH c1_rolldates INTO l_tsk_sch_start_date, l_tsk_sch_finish_date;
16077 CLOSE c1_rolldates;
16078
16079 -- 4392189 : Program Reporting Changes - Phase 2
16080 -- Having Set2 columns to get Project level % complete
16081
16082 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
16083 THEN
16084 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
16085 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
16086 ELSE
16087 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := l_tsk_over_percent_comp_tab(k);
16088 --4557541 : For self % complete Override at tasks level would not be considered
16089 --l_rollup_table1(l_index).PERCENT_OVERRIDE2 := l_tsk_over_percent_comp_tab(k);
16090 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
16091 END IF;
16092
16093 -- Bug 4284353 : Added below code
16094 IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
16095 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
16096 l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
16097 END IF;
16098
16099 -- Actual Date Rollup
16100 l_rollup_table1(l_index).START_DATE1 := l_tsk_actual_start_date_tab(k);
16101 l_rollup_table1(l_index).FINISH_DATE1 := l_tsk_actual_finish_date_tab(k);
16102
16103 -- Estimated Date Rollup
16104 l_rollup_table1(l_index).START_DATE2 := l_tsk_est_start_date_tab(k);
16105 l_rollup_table1(l_index).FINISH_DATE2 := l_tsk_est_finish_date_tab(k);
16106
16107 -- Rollup Progress Status Rollup
16108 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(l_tsk_rollup_weight1_tab(k),0); --rollup prog status
16109 l_rollup_table1(l_index).PROGRESS_override1 := l_tsk_override_weight2_tab(k); --override prg status
16110
16111 -- Base Progress Status Rollup
16112 -- 4533112 : base progress status is not used
16113 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 ); --base prog status
16114 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
16115
16116 -- Task Status Rollup
16117 l_rollup_table1(l_index).task_status1 := nvl( l_tsk_task_weight4_tab(k), 0 ); -- task status
16118 -- 4392189 : Program Reporting Changes - Phase 2
16119 -- Having Set2 columns to get Project level % complete
16120 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16121 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16122
16123 --END IF;
16124
16125 -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
16126 -- in earned_value1 set
16127 IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
16128
16129 l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
16130 , l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k), p_structure_version_id,
16131 'WORKPLAN','N','Y');
16132 -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
16133 --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
16134 l_rollup_table1(l_index).EARNED_VALUE2 := 1;
16135 END IF;
16136
16137 l_rollup_table1(l_index).BAC_VALUE1 := NVL( l_tsk_bac_value_tab(k), 0 );
16138
16139 IF g1_debug_mode = 'Y' THEN
16140 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1, x_Log_Level=> 3);
16141 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
16142 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
16143 END IF;
16144
16145 -- 4586449 End
16146
16147 l_rollup_table1(l_index).BAC_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k), 0 );
16148
16149 -- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
16150 -- Otheriwse it will look for deliverables and will result in 0 % complete
16151 IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
16152 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
16153 ELSE
16154 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
16155 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
16156 END IF;
16157
16158 -- Bug 4207995 : Passing Dirty_flags always Y
16159 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
16160 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
16161 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
16162 -- ELSE
16163 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
16164 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
16165 -- END IF;
16166
16167 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
16168
16169 IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
16170 l_action_allowed := 'N';
16171 END IF;
16172
16173 IF g1_debug_mode = 'Y' THEN
16174 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
16175 END IF;
16176
16177 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
16178 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
16179
16180 --maansari4/10 temporarily passing 'Y' to rollup node.
16181 -- need to investigate why l_action_allowed is coming always as 'N'
16182 l_rollup_table1(l_index).rollup_node1 := 'Y';
16183 l_rollup_table1(l_index).rollup_node2 := 'Y';
16184
16185 l_rollup_table1(l_index).START_DATE3 := l_tsk_sch_start_date;
16186 l_rollup_table1(l_index).FINISH_DATE3 := l_tsk_sch_finish_date;
16187
16188 IF p_rollup_entire_wbs = 'Y' THEN
16189 -- This means Progress exists for the corresponding task
16190 IF l_tsk_progress_exists = 'Y' THEN
16191 l_mass_rollup_prog_exists_tab.extend(1);
16192 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16193 ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
16194 l_mass_rollup_prog_exists_tab.extend(1);
16195 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16196 ELSE --Amit Added on 20-Sep
16197 l_mass_rollup_prog_exists_tab.extend(1);
16198 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16199 END IF;
16200 END IF;
16201 --l_mapping_tasks_to_rollup_tab(l_index):= k; -- sridhar_fix
16202 l_mapping_tasks_to_rollup_tab(l_rollup_table1(l_index).OBJECT_ID):= k;
16203 --IF (p_process_whole_tree = 'N' and l_parent_count = 2) THEN
16204 -- exit;
16205 --END IF;
16206 END IF; -- Bug 4636100 Issue 2 : Added Endif
16207 END LOOP; -- End Tasks Loop
16208
16209 --begin bug 3951982
16210 IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
16211 AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
16212 AND l_actual_lowest_task = 'N' -- Bug 4392189
16213 THEN
16214 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
16215 SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS', 1
16216 FROM dual;
16217
16218 FOR cur_tasks_rec in cur_tasks(1) LOOP
16219 IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
16220 IF g1_debug_mode = 'Y' THEN
16221 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second task cursor for summary task with assignments', x_Log_Level=> 3);
16222 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1, x_Log_Level=> 3);
16223 END IF;
16224 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
16225
16226 l_index := l_index + 1;
16227
16228 l_rollup_table1(l_index).OBJECT_TYPE := cur_tasks_rec.object_type;
16229 l_rollup_table1(l_index).OBJECT_ID := cur_tasks_rec.object_id_to1;--Task Version Id
16230 l_rollup_table1(l_index).PARENT_OBJECT_TYPE := cur_tasks_rec.parent_object_type;
16231 l_rollup_table1(l_index).PARENT_OBJECT_ID := cur_tasks_rec.object_id_from1; --Parent Task Version Id
16232 l_rollup_table1(l_index).WBS_LEVEL := NVL( cur_tasks_rec.wbs_level, 0 );
16233 l_rollup_table1(l_index).CALENDAR_ID := l_index;
16234 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG := 'Y'; -- 4370746
16235
16236 -- Rollup Percent Complete Rollup
16237 l_rollup_table1(l_index).task_weight1 := nvl( cur_tasks_rec.weighting_percentage, 0 );
16238 l_rollup_table1(l_index).PERCENT_COMPLETE1 := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
16239 -- 4392189 : Program Reporting Changes - Phase 2
16240 -- Having Set2 columns to get Project level % complete
16241 l_rollup_table1(l_index).task_weight2 := nvl( cur_tasks_rec.weighting_percentage, 0 );
16242 l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_tasks_rec.base_percent_complete, 0 );
16243
16244 --bug 4045979, start
16245 l_task_baselined := 'N';
16246 l_parent_task_baselined := 'N';
16247 -- added if condition for bug 13923366 by skkoppul
16248 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
16249 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
16250 l_task_baselined := 'Y';
16251 l_parent_task_baselined := 'Y';
16252 ELSE
16253 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
16254 FETCH check_task_baselined INTO l_task_baselined;
16255 CLOSE check_task_baselined;
16256
16257 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
16258 FETCH check_task_baselined INTO l_parent_task_baselined;
16259 CLOSE check_task_baselined;
16260 END IF;
16261
16262 -- 4392189 : Program Reporting Changes - Phase 2
16263 -- Having Set2 columns to get Project level % complete
16264
16265 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
16266 THEN
16267 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := 0;
16268 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
16269 ELSE
16270 l_rollup_table1(l_index).PERCENT_OVERRIDE1 := cur_tasks_rec.override_percent_complete;
16271 l_rollup_table1(l_index).PERCENT_OVERRIDE2 := null;
16272 END IF;
16273 --bug 4045979, end
16274 -- Actual Date Rollup
16275 l_rollup_table1(l_index).START_DATE1 := cur_tasks_rec.actual_start_date;
16276 l_rollup_table1(l_index).FINISH_DATE1 := cur_tasks_rec.actual_finish_date;
16277
16278 -- Estimated Date Rollup
16279 l_rollup_table1(l_index).START_DATE2 := cur_tasks_rec.estimated_start_date;
16280 l_rollup_table1(l_index).FINISH_DATE2 := cur_tasks_rec.estimated_finish_date;
16281
16282 -- Rollup Progress Status Rollup
16283 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := nvl(cur_tasks_rec.rollup_weight1,0); --rollup prog status
16284 l_rollup_table1(l_index).PROGRESS_override1 := cur_tasks_rec.override_weight2; --override prg status
16285
16286 -- Base Progress Status Rollup
16287 -- 4533112 : Base Progress Status is not used
16288 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 ); --base prog status
16289 --l_rollup_table1(l_index).PROGRESS_override2 := 0; -- FPM Dev CR 2
16290
16291 -- Task Status Rollup
16292 l_rollup_table1(l_index).task_status1 := nvl( cur_tasks_rec.task_weight4, 0 ); -- task status
16293
16294 -- ETC Effort Rollup
16295 l_rollup_table1(l_index).REMAINING_EFFORT1 := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
16296 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
16297
16298 -- ETC Cost in Project Currency Rollup
16299 l_rollup_table1(l_index).ETC_COST1 := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
16300 l_rollup_table1(l_index).PPL_ETC_COST1 := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
16301 l_rollup_table1(l_index).EQPMT_ETC_COST1 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
16302
16303 -- ETC Cost in Project Functional Currency Rollup
16304 l_rollup_table1(l_index).ETC_COST2 := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
16305 l_rollup_table1(l_index).PPL_ETC_COST2 := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
16306 l_rollup_table1(l_index).EQPMT_ETC_COST2 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
16307
16308 -- Sub Project ETC Effort Rollup
16309 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
16310 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
16311
16312 -- Sub Project ETC Cost in Project Currency Rollup
16313 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
16314 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
16315 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
16316
16317 -- Sub Project ETC Cost in Project Functional Currency Rollup
16318 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
16319 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
16320 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
16321
16322 -- 4392189 : Program Reporting Changes - Phase 2
16323 -- Having Set2 columns to get Project level % complete
16324
16325 l_rollup_table1(l_index).EARNED_VALUE1 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16326 l_rollup_table1(l_index).BAC_VALUE1 := NVL( cur_tasks_rec.BAC_VALUE, 0 );
16327
16328 l_rollup_table1(l_index).EARNED_VALUE2 := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16329 l_rollup_table1(l_index).BAC_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
16330
16331 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
16332 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
16333 -- Bug 4207995 : Passing Dirty_flags always Y
16334 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
16335 l_rollup_table1(l_index).DIRTY_FLAG1 := 'Y';
16336 l_rollup_table1(l_index).DIRTY_FLAG2 := 'Y';
16337 -- ELSE
16338 -- l_rollup_table1(l_index).DIRTY_FLAG1 := 'N';
16339 -- l_rollup_table1(l_index).DIRTY_FLAG2 := 'N';
16340 -- END IF;
16341
16342 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
16343
16344 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
16345 l_action_allowed := 'N';
16346 END IF;
16347
16348 IF g1_debug_mode = 'Y' THEN
16349 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
16350 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
16351 END IF;
16352
16353 l_rollup_table1(l_index).rollup_node1 := l_action_allowed;
16354 l_rollup_table1(l_index).rollup_node2 := l_action_allowed;
16355
16356 --maansari4/10 temporarily passing 'Y' to rollup node.
16357 -- need to investigate why l_action_allowed is coming always as 'N'
16358 l_rollup_table1(l_index).rollup_node1 := 'Y';
16359 l_rollup_table1(l_index).rollup_node2 := 'Y';
16360 END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
16361 END LOOP;
16362 END IF; -- p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
16363 --end bug 3951982
16364
16365 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
16366
16367 IF g1_debug_mode = 'Y' THEN
16368 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
16369 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
16370 END LOOP;
16371 END IF;
16372
16373 IF p_rollup_entire_wbs = 'Y' THEN
16374 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
16375 INSERT INTO PA_PROJ_ROLLUP_TEMP(
16376 PROCESS_NUMBER,
16377 OBJECT_TYPE,
16378 OBJECT_ID,
16379 wbs_level)
16380 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
16381
16382 l_mass_rollup_prog_exists_tab.delete;
16383
16384 OPEN c_mass_rollup_tasks;
16385 FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
16386 CLOSE c_mass_rollup_tasks;
16387
16388 IF g1_debug_mode = 'Y' THEN
16389 FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
16390 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
16391 END LOOP;
16392 END IF;
16393
16394 FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
16395 INSERT INTO PA_PROJ_ROLLUP_TEMP(
16396 PROCESS_NUMBER,
16397 OBJECT_TYPE,
16398 OBJECT_ID,
16399 wbs_level)
16400 VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
16401
16402 END IF;
16403
16404 -- FPM Dev CR 2 : Printing the Rollup Table before calling Generate Schedule
16405 IF g1_debug_mode = 'Y' THEN
16406 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
16407 FOR i IN 1..l_rollup_table1.count LOOP
16408 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
16409 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
16410 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
16411 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
16412 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
16413 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
16414 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
16415 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
16416 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
16417 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
16418 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
16419 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
16420 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
16421 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
16422 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
16423 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
16424 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
16425 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
16426 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
16427 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
16428 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
16429 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
16430 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
16431 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
16432 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
16433 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
16434 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
16435 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16436 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
16437 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
16438 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
16439 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
16440 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16441 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
16442 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
16443 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
16444 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
16445 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
16446 END LOOP;
16447 END IF;
16448
16449 IF l_rollup_table1.count <= 0 THEN
16450 return;
16451 END IF;
16452
16453 --Added by rtarway for bug 3950574
16454 IF p_structure_type = 'WORKPLAN' THEN
16455 l_digit_number := 8; --Bug 6854114
16456 ELSE
16457 l_digit_number := 8; --Bug 6854114
16458 END IF;
16459
16460 -- Bug 4207995 : Commented partial_flags in the below call
16461
16462 PA_SCHEDULE_OBJECTS_PVT.defer_generate_Schedule(
16463 p_commit => p_commit
16464 ,p_debug_mode => 'Y'
16465 ,x_return_status => l_return_status
16466 ,x_msg_count => l_msg_count
16467 ,x_msg_data => l_msg_data
16468 ,x_process_number => l_process_number
16469 ,p_data_structure => l_rollup_table1
16470 ,p_number_digit => l_digit_number
16471 ,p_process_flag1 => 'Y'
16472 ,p_process_rollup_flag1 => 'Y'
16473 ,p_process_progress_flag1 => 'Y'
16474 ,p_process_percent_flag1 => 'Y'
16475 ,p_process_effort_flag1 => 'Y'
16476 ,p_process_task_status_flag1 => 'Y'
16477 ,p_process_flag2 => 'Y'
16478 ,p_process_rollup_flag2 => 'Y'
16479 ,p_process_progress_flag2 => 'Y'
16480 ,p_process_percent_flag2 => 'Y'
16481 ,p_process_ETC_Flag1 => 'Y'
16482 ,p_process_ETC_Flag2 => 'Y'
16483 ,p_partial_process_flag3 => 'Y'
16484 ,p_partial_dates_flag3 => 'Y'
16485 ,p_process_flag3 => 'Y'
16486 ,p_partial_effort_flag3 => 'Y'
16487 ,p_process_rollup_flag3 => 'Y'
16488 ,p_process_effort_flag3 => 'Y'
16489 ,p_Rollup_Method => l_Rollup_Method
16490 ,p_calling_module => 'ROLLUP_API'
16491 );
16492
16493 IF g1_debug_mode = 'Y' THEN
16494 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After GENERATE_SCHEDULE', x_Log_Level=> 3);
16495 END IF;
16496
16497 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
16498 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
16499 p_msg_name => l_msg_data);
16500 x_msg_data := l_msg_data;
16501 x_return_status := 'E';
16502 RAISE FND_API.G_EXC_ERROR;
16503 END IF;
16504
16505 IF g1_debug_mode = 'Y' THEN
16506 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Doing UPDATE_ROLLUP_PVT', x_Log_Level=> 3);
16507 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
16508 END IF;
16509
16510 ---- ************** Updation Starts ****************** ----------
16511
16512 IF g1_debug_mode = 'Y' THEN
16513 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
16514 FOR i IN 1..l_rollup_table1.count LOOP
16515 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
16516 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
16517 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
16518 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
16519 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
16520 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
16521 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
16522 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
16523 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
16524 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
16525 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
16526 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
16527 ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
16528 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
16529 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
16530 ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
16531 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
16532 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
16533 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
16534 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
16535 ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
16536 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
16537 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
16538 ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
16539 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
16540 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
16541 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
16542 ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16543 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
16544 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
16545 ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
16546 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
16547 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16548 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
16549 ||l_rollup_table1(i).EARNED_VALUE2||
16550 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
16551 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
16552 x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
16553 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
16554 END LOOP;
16555 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
16556 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
16557 END IF;
16558
16559 BEGIN
16560 -- 4746476 : Added org_id in functions call below
16561 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
16562 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
16563 EXCEPTION
16564 WHEN OTHERS THEN
16565 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
16566 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
16567 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
16568 x_return_status := 'E';
16569 x_msg_count := fnd_msg_pub.count_msg;
16570 RAISE FND_API.G_EXC_ERROR;
16571 END ;
16572
16573 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
16574
16575
16576 /* -- sridhar_rollup
16577 FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
16578
16579
16580 IF g1_debug_mode = 'Y' THEN
16581 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1, x_Log_Level=> 3);
16582 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
16583 END IF;
16584 */
16585
16586 FOR i in 1..l_rollup_table1.count LOOP
16587 /* -- sridhar_rollup
16588 IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
16589 */
16590 -- sridhar_rollup new if
16591 IF (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
16592 THEN
16593 -- Find the corresponding task rollup record data position
16594 --task_index := l_mapping_tasks_to_rollup_tab(i); -- sridhar_fix
16595 task_index := l_mapping_tasks_to_rollup_tab(l_rollup_table1(i).object_id); -- sridhar_fix
16596
16597 IF g1_debug_mode = 'Y' THEN
16598 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
16599 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=> 3);
16600 END IF;
16601 -- Bug 3919211 Begin
16602
16603 -- sridhar_rollup start
16604 /*
16605 IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
16606 l_task_id := 0;
16607 ELSE
16608 l_task_id := cur_reverse_tree_rec.proj_element_id;
16609 END IF;
16610 -- Bug 3919211 End
16611 */
16612
16613 IF p_structure_type = 'FINANCIAL' AND l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
16614 l_task_id := 0;
16615 ELSE
16616 l_task_id := l_defer_arr_task_id(l_rollup_table1(i).object_id);
16617 END IF;
16618
16619 -- sridhar_rollup start
16620
16621 -- sridhar_rollup start
16622
16623 l_child_rollup_rec_exists := 'Y';
16624 /*
16625 IF p_rollup_entire_wbs='Y' THEN
16626 BEGIN
16627 SELECT 'Y' into l_child_rollup_rec_exists
16628 FROM dual
16629 WHERE exists
16630 (
16631 SELECT 'xyz'
16632 from pa_proj_rollup_temp
16633 WHERE object_id = cur_reverse_tree_rec.object_id_to1
16634 and process_number = l_process_number_temp
16635 );
16636 EXCEPTION
16637 WHEN OTHERS THEN
16638 l_child_rollup_rec_exists := 'N';
16639 END;
16640 END IF;
16641 */
16642 -- sridhar_rollup end
16643
16644 IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
16645
16646
16647 l_eff_rollup_status_code := null;
16648 l_progress_status_code := null;
16649
16650 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
16651 FETCH cur_status INTO l_eff_rollup_status_code;
16652 CLOSE cur_status;
16653
16654 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) ); --get the base prog status
16655 FETCH cur_status INTO l_progress_status_code;
16656 CLOSE cur_status;
16657
16658 IF g1_debug_mode = 'Y' THEN
16659 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
16660 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
16661 END IF;
16662
16663
16664 -- FPM dev CR 4 : Initialized the values to null
16665 l_rolled_up_per_comp := null;
16666 l_rolled_up_prog_stat := null;
16667 l_rolled_up_base_prog_stat := null;
16668 l_rolled_up_prog_stat := null;
16669 l_remaining_effort1 := null;
16670 l_percent_complete1 := null;
16671 l_ETC_Cost_PC := null;
16672 l_PPL_ETC_COST_PC := null;
16673 l_EQPMT_ETC_COST_PC := null;
16674 l_ETC_Cost_FC := null;
16675 l_PPL_ETC_COST_FC := null;
16676 l_EQPMT_ETC_COST_FC := null;
16677 l_EQPMT_ETC_EFFORT := null;
16678 l_BAC_VALUE1 := null;
16679 l_EARNED_VALUE1 := null;
16680 l_remaining_effort1 := null;
16681 l_EQPMT_ETC_EFFORT := null;
16682 l_OTH_ACT_COST_TO_DATE_PC := null;
16683 l_PPL_ACT_COST_TO_DATE_PC := null;
16684 l_EQPMT_ACT_COST_TO_DATE_PC := null;
16685 l_OTH_ACT_COST_TO_DATE_FC := null;
16686 l_PPL_ACT_COST_TO_DATE_FC := null;
16687 l_EQPMT_ACT_COST_TO_DATE_FC := null;
16688 l_PPL_ACT_EFFORT_TO_DATE := null;
16689 l_EQPMT_ACT_EFFORT_TO_DATE := null;
16690 -- Bug 3621404 : Raw Cost Changes
16691 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
16692 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
16693 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
16694 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
16695 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
16696 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
16697 l_ETC_RAWCost_PC := null;
16698 l_PPL_ETC_RAWCOST_PC := null;
16699 l_EQPMT_ETC_RAWCOST_PC := null;
16700 l_ETC_RAWCost_FC := null;
16701 l_PPL_ETC_RAWCOST_FC := null;
16702 l_EQPMT_ETC_RAWCOST_FC := null;
16703 l_actual_start_date := l_rollup_table1(i).start_date1;
16704 l_actual_finish_date := l_rollup_table1(i).finish_date1;
16705 l_estimated_start_date := l_rollup_table1(i).start_date2;
16706 l_estimated_finish_date := l_rollup_table1(i).finish_date2;
16707
16708 l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
16709 l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
16710
16711
16712 IF g1_debug_mode = 'Y' THEN
16713 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
16714 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat, x_Log_Level=> 3);
16715 END IF;
16716
16717 IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task value, we shd get it for each task
16718 THEN
16719 -- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
16720 l_rolled_up_base_prog_stat := l_progress_status_code;
16721 ELSE
16722 -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
16723 l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
16724 END IF;
16725
16726 l_PROGRESS_ROLLUP_ID := null;
16727 l_rollup_rec_ver_number := null;
16728 l_percent_complete_id := null;
16729 IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
16730 l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
16731 l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
16732 END IF;
16733
16734 IF g1_debug_mode = 'Y' THEN
16735 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
16736 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
16737 END IF;
16738
16739 -- 4392189 : Program Reporting Changes - Phase 2
16740 -- Having Set2 columns to get Project level % complete
16741
16742 IF p_structure_type = 'WORKPLAN' THEN
16743 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
16744 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
16745 ELSE
16746 l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
16747 l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
16748 END IF;
16749
16750 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
16751 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
16752
16753 IF g1_debug_mode = 'Y' THEN
16754 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
16755 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
16756 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
16757 END IF;
16758
16759 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
16760
16761 IF p_wp_rollup_method = 'EFFORT' THEN
16762 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
16763 ELSE
16764 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
16765 END IF;
16766
16767 --bug 4317491, added a check of WORKPLAN
16768 IF p_structure_type = 'WORKPLAN' THEN
16769 BEGIN
16770 SELECT
16771
16772 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
16773 PERIOD_NAME
16774 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
16775 , ACT_PRJ_LABOR_BRDN_COST
16776 , ACT_PRJ_EQUIP_BRDN_COST
16777 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
16778 , ACT_POU_LABOR_BRDN_COST
16779 , ACT_POU_EQUIP_BRDN_COST
16780 , ACT_LABOR_HRS
16781 , ACT_EQUIP_HRS
16782 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
16783 , ETC_PRJ_LABOR_BRDN_COST
16784 , ETC_PRJ_EQUIP_BRDN_COST
16785 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
16786 , ETC_POU_LABOR_BRDN_COST
16787 , ETC_POU_EQUIP_BRDN_COST
16788 , ETC_LABOR_HRS
16789 , ETC_EQUIP_HRS
16790 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
16791 , ACT_PRJ_LABOR_RAW_COST
16792 , ACT_PRJ_EQUIP_RAW_COST
16793 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
16794 , ACT_POU_LABOR_RAW_COST
16795 , ACT_POU_EQUIP_RAW_COST
16796 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
16797 , ETC_PRJ_LABOR_RAW_COST
16798 , ETC_PRJ_EQUIP_RAW_COST
16799 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
16800 , ETC_POU_LABOR_RAW_COST
16801 , ETC_POU_EQUIP_RAW_COST
16802 , LABOR_HOURS
16803 , EQUIPMENT_HOURS
16804 , POU_LABOR_BRDN_COST
16805 , PRJ_LABOR_BRDN_COST
16806 , POU_EQUIP_BRDN_COST
16807 , PRJ_EQUIP_BRDN_COST
16808 , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
16809 , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
16810 , POU_LABOR_RAW_COST
16811 , PRJ_LABOR_RAW_COST
16812 , POU_EQUIP_RAW_COST
16813 , PRJ_EQUIP_RAW_COST
16814 , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
16815 , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
16816 INTO
16817 l_PERIOD_NAME
16818 , l_OTH_ACT_COST_TO_DATE_PC
16819 , l_PPL_ACT_COST_TO_DATE_PC
16820 , l_EQPMT_ACT_COST_TO_DATE_PC
16821 , l_OTH_ACT_COST_TO_DATE_FC
16822 , l_PPL_ACT_COST_TO_DATE_FC
16823 , l_EQPMT_ACT_COST_TO_DATE_FC
16824 , l_PPL_ACT_EFFORT_TO_DATE
16825 , l_EQPMT_ACT_EFFORT_TO_DATE
16826 , l_ETC_Cost_PC
16827 , l_PPL_ETC_COST_PC
16828 , l_EQPMT_ETC_COST_PC
16829 , l_ETC_Cost_FC
16830 , l_PPL_ETC_COST_FC
16831 , l_EQPMT_ETC_COST_FC
16832 , l_remaining_effort1
16833 , l_EQPMT_ETC_EFFORT
16834 , l_OTH_ACT_RAWCOST_TO_DATE_PC
16835 , l_PPL_ACT_RAWCOST_TO_DATE_PC
16836 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
16837 , l_OTH_ACT_RAWCOST_TO_DATE_FC
16838 , l_PPL_ACT_RAWCOST_TO_DATE_FC
16839 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
16840 , l_ETC_RAWCost_PC
16841 , l_PPL_ETC_RAWCOST_PC
16842 , l_EQPMT_ETC_RAWCOST_PC
16843 , l_ETC_RAWCost_FC
16844 , l_PPL_ETC_RAWCOST_FC
16845 , l_EQPMT_ETC_RAWCOST_FC
16846 , l_LABOR_HOURS
16847 , l_EQUIPMENT_HOURS
16848 , l_POU_LABOR_BRDN_COST
16849 , l_PRJ_LABOR_BRDN_COST
16850 , l_POU_EQUIP_BRDN_COST
16851 , l_PRJ_EQUIP_BRDN_COST
16852 , l_POU_OTH_BRDN_COST
16853 , l_PRJ_OTH_BRDN_COST
16854 , l_POU_LABOR_RAW_COST
16855 , l_PRJ_LABOR_RAW_COST
16856 , l_POU_EQUIP_RAW_COST
16857 , l_PRJ_EQUIP_RAW_COST
16858 , l_POU_OTH_RAW_COST
16859 , l_PRJ_OTH_RAW_COST
16860 FROM PJI_FM_XBS_ACCUM_TMP1
16861 WHERE project_id = p_project_id
16862 AND struct_version_id = p_structure_version_id
16863 AND project_element_id = l_task_id -- sridhar_rollup cur_reverse_tree_rec.proj_element_id
16864 AND plan_version_id > 0
16865 AND txn_currency_code is null
16866 AND calendar_type = 'A'
16867 AND res_list_member_id is null;
16868 EXCEPTION
16869 WHEN NO_DATA_FOUND THEN
16870 null;
16871 WHEN OTHERS THEN
16872 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
16873 p_procedure_name => 'ROLLUP_PVT',
16874 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
16875 RAISE FND_API.G_EXC_ERROR;
16876 END;
16877
16878 IF g1_debug_mode = 'Y' THEN
16879 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
16880 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
16881 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
16882 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
16883 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
16884 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
16885 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
16886 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
16887 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
16888 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_PC: '||l_ETC_Cost_PC, x_Log_Level=> 3);
16889 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=> 3);
16890 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC, x_Log_Level=> 3);
16891 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_FC: '||l_ETC_Cost_FC, x_Log_Level=> 3);
16892 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=> 3);
16893 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC, x_Log_Level=> 3);
16894 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1, x_Log_Level=> 3);
16895 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT: '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
16896 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16897 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16898 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16899 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16900 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16901 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16902 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
16903 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC, x_Log_Level=> 3);
16904 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=> 3);
16905 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
16906 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC, x_Log_Level=> 3);
16907 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=> 3);
16908 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_LABOR_HOURS: '||l_LABOR_HOURS, x_Log_Level=> 3);
16909 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=> 3);
16910 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
16911 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
16912 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
16913 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
16914 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST, x_Log_Level=> 3);
16915 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST, x_Log_Level=> 3);
16916 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST, x_Log_Level=> 3);
16917 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST, x_Log_Level=> 3);
16918 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST, x_Log_Level=> 3);
16919 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST, x_Log_Level=> 3);
16920 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_RAW_COST: '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
16921 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST: '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
16922 END IF;
16923
16924 IF p_working_wp_prog_flag = 'Y' OR l_published_structure = 'N'
16925 --for working version p_working_wp_prog_flag may not be 'Y' because of bug 3846353
16926 THEN
16927 l_EQPMT_ETC_EFFORT := null;
16928 l_remaining_effort1:= null;
16929 l_ETC_Cost_FC:= null;
16930 l_ETC_Cost_PC:= null;
16931 l_PPL_ETC_COST_FC:= null;
16932 l_PPL_ETC_COST_PC := null;
16933 l_EQPMT_ETC_COST_FC:= null;
16934 l_EQPMT_ETC_COST_PC:= null;
16935 l_ETC_RAWCost_FC:= null;
16936 l_ETC_RAWCost_PC := null;
16937 l_PPL_ETC_RAWCOST_FC:= null;
16938 l_PPL_ETC_RAWCOST_PC:= null;
16939 l_EQPMT_ETC_RAWCOST_FC:= null;
16940 l_EQPMT_ETC_RAWCOST_PC:= null;
16941 END IF;
16942
16943 -- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
16944 IF g1_debug_mode = 'Y' THEN
16945 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
16946 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
16947 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
16948 END IF;
16949
16950 /* IF cur_reverse_tree_rec.object_type = 'PA_TASKS' */ -- sridhar_rollup
16951 IF l_rollup_table1(i).object_type = 'PA_TASKS'
16952 THEN
16953 --do not rollup on-hold task status. We dont need to worry about
16954 --cancelled bcoz they are not selected.
16955
16956 -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
16957 l_actual_exists := 'N';
16958 ---5726773 changed '>0' to '<>0'
16959 IF (l_PPL_ACT_EFFORT_TO_DATE <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
16960 IF g1_debug_mode = 'Y' THEN
16961 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
16962 END IF;
16963 l_actual_exists := 'Y';
16964 END IF;
16965
16966 IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
16967 -- 14-Feb-2005 Patched thru Bug 4180026
16968 /* OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id); */ -- sridhar_rollup
16969 OPEN c_get_dlv_status(l_task_id);
16970 FETCH c_get_dlv_status INTO l_actual_exists;
16971 CLOSE c_get_dlv_status;
16972 END IF;
16973
16974 IF g1_debug_mode = 'Y' THEN
16975 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
16976 END IF;
16977
16978 IF(( nvl(l_rollup_table1(i).task_status1,0) <> 0)
16979 OR
16980 ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
16981 OR l_actual_exists = 'Y')
16982 THEN
16983 -- Bug 3842084 : Initilaized l_status_code with l_existing_object_status
16984 --get the existing status
16985 /* OPEN c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id); */ -- sridhar_rollup
16986 OPEN c_get_object_status ( p_project_id, l_task_id);
16987 FETCH c_get_object_status INTO l_existing_object_status;
16988 CLOSE c_get_object_status;
16989
16990 l_status_code := l_existing_object_status;
16991 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
16992 l_status_code_temp := l_status_code; --Bug#5374114
16993 l_system_status_code_temp := l_system_status_code; --Bug#5374114
16994
16995 IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0)
16996 THEN
16997 OPEN cur_task_status (to_char(l_rollup_table1(i).task_status1));
16998 FETCH cur_task_status INTO l_status_code;
16999 CLOSE cur_task_status;
17000 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
17001 END IF;
17002 -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
17003
17004 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
17005 IF g1_debug_mode = 'Y' THEN
17006 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
17007 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
17008 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
17009 END IF;
17010
17011 IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
17012 THEN
17013 l_status_code := '127';
17014 l_system_status_code := 'COMPLETED';
17015 ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100)) AND l_system_status_code IN ('NOT_STARTED','COMPLETED'))
17016 THEN
17017 l_status_code := '125';
17018 l_system_status_code := 'IN_PROGRESS';
17019 l_actual_finish_date := null;
17020 -- This is done to first time make task In Progress if any sub-objects are in Progress
17021 ELSIF (l_actual_exists ='Y' AND l_system_status_code = 'NOT_STARTED')
17022 THEN
17023 l_status_code := '125';
17024 l_system_status_code := 'IN_PROGRESS';
17025 l_actual_finish_date := null;
17026 END IF;
17027
17028 /* Changes by shanif for bug#5374114 - START */
17029
17030 IF (l_system_status_code = l_system_status_code_temp) THEN
17031 l_system_status_code := l_system_status_code_temp;
17032 l_status_code := l_status_code_temp;
17033 END IF;
17034
17035 /* Changes by shanif for bug#5374114 - END */
17036
17037 IF g1_debug_mode = 'Y' THEN
17038 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
17039 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
17040 END IF;
17041
17042 IF l_structure_version_id IS NULL THEN -- Bug 3922325 : This does not make sense for working wp version rollup
17043 UPDATE pa_proj_elements
17044 SET status_code = l_status_code
17045 WHERE project_id = p_project_id
17046 /* AND proj_element_id = cur_reverse_tree_rec.proj_element_id; */ -- sridhar_rollup
17047 AND proj_element_id = l_task_id;
17048 END IF;
17049
17050
17051 IF p_structure_type = 'WORKPLAN' THEN
17052 /* OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1); */ -- sridhar_rollup
17053 OPEN c_get_dates (p_project_id, l_rollup_table1(i).object_id);
17054 FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
17055 CLOSE c_get_dates;
17056 IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
17057 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
17058 l_actual_finish_date := to_date(null);
17059 END IF;
17060 -- Bug 4232099 : added folling IF
17061 IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
17062 l_actual_finish_date := to_date(null);
17063 END IF;
17064 IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
17065 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
17066 END IF;
17067 IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
17068 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
17069 END IF;
17070
17071 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
17072 IF l_actual_finish_date < l_actual_start_date THEN
17073 IF TRUNC(SYSDATE) < l_actual_start_date THEN
17074 l_actual_finish_date := l_actual_start_date;
17075 ELSE
17076 l_actual_finish_date := TRUNC(SYSDATE);
17077 END IF;
17078 END IF;
17079 END IF;
17080 END IF;
17081
17082 UPDATE pa_percent_completes
17083 SET status_code = l_status_code
17084 , actual_start_date = l_actual_start_date -- Bug 3956299
17085 , actual_finish_date = l_actual_finish_date -- Bug 3956299
17086 /* -- sridhar_rollup
17087 WHERE object_id = cur_reverse_tree_rec.proj_element_id
17088 AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
17089 */
17090 WHERE object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17091 AND object_Type = l_rollup_table1(i).object_Type -- sridhar_rollup
17092 AND project_id = p_project_id
17093 --AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED', 'COMPLETED' )
17094 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
17095 AND structure_type = p_structure_type -- FPM Dev CR 3
17096 AND current_flag = 'N' and published_flag = 'N';
17097
17098 -- 14-Feb-2005 : Added Patched thru Bug 4180026
17099 UPDATE pa_percent_completes
17100 SET status_code = l_status_code
17101 , actual_start_date = l_actual_start_date -- Bug 3956299
17102 , actual_finish_date = l_actual_finish_date -- Bug 3956299
17103 WHERE object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17104 AND object_Type = l_rollup_table1(i).object_Type ---4743866 -- sridhar_rollup
17105 AND project_id = p_project_id
17106 AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' ) -- 02/06/04 Satish
17107 AND structure_type = p_structure_type -- FPM Dev CR 3
17108 AND published_flag = 'Y' ---4743866
17109 AND current_flag = 'Y'
17110 AND trunc(date_computed) = trunc(p_as_of_date);
17111 END IF;
17112 END IF;
17113
17114 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
17115 l_ETC_Cost_FC:= null;
17116 l_ETC_Cost_PC:= null;
17117 l_PPL_ETC_COST_FC:= null;
17118 l_PPL_ETC_COST_PC := null;
17119 l_EQPMT_ETC_COST_FC:= null;
17120 l_EQPMT_ETC_COST_PC:= null;
17121 l_ETC_RAWCost_FC:= null;
17122 l_ETC_RAWCost_PC := null;
17123 l_PPL_ETC_RAWCOST_FC:= null;
17124 l_PPL_ETC_RAWCOST_PC:= null;
17125 l_EQPMT_ETC_RAWCOST_FC:= null;
17126 l_EQPMT_ETC_RAWCOST_PC:= null;
17127 l_OTH_ACT_COST_TO_DATE_PC:= null;
17128 l_OTH_ACT_COST_TO_DATE_FC:= null;
17129 l_PPL_ACT_COST_TO_DATE_PC:= null;
17130 l_PPL_ACT_COST_TO_DATE_FC:= null;
17131 l_EQPMT_ACT_COST_TO_DATE_PC:= null;
17132 l_EQPMT_ACT_COST_TO_DATE_FC:= null;
17133 l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
17134 l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
17135 l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
17136 l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
17137 l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
17138 l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
17139 END IF;
17140 END IF; -- IF p_structure_type = 'WORKPLAN' --bug 4317491
17141
17142
17143 -- Bug 4651304 Begin
17144 -- One solution for this issue could be to pass
17145 -- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
17146 -- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
17147 -- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
17148 -- Best way is to always retain the existing object_version_id in pa_progress_rollup
17149 -- table in case of update, in case of insert, use the new object version id
17150
17151 -- Commented below code and added new condition
17152
17153
17154 --IF p_upd_new_elem_ver_id_flag = 'Y' THEN
17155 -- l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
17156 --END IF;
17157
17158 IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
17159 null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
17160 ELSE
17161 l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
17162 END IF;
17163 -- Bug 4651304 End
17164
17165 l_tsk_proj_element_id_tab(task_index) := l_task_id;
17166 l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
17167 -- 4392189 : Program Reporting Changes - Phase 2
17168 -- Having Set2 columns to get Project level % complete
17169 -- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
17170 -- Bug 4506461 Begin
17171 l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
17172 -- 4540890 : Removed l_subproject_found check from below
17173 IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
17174 l_rederive_base_pc := 'N';
17175 OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
17176 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
17177 CLOSE c_get_any_childs_have_subprj;
17178 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
17179 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
17180 END IF;
17181 END IF;
17182 -- Bug 4506461 End
17183
17184 l_tsk_earned_value_tab(task_index) := l_earned_value1;
17185 l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
17186 l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
17187
17188
17189 IF p_structure_type = 'WORKPLAN' THEN
17190 l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
17191 l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
17192 l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
17193 l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
17194 -- 4533112 : Base Progress Status is not used
17195 --l_tsk_base_prog_stat_code_tab(task_index) := l_rolled_up_base_prog_stat;
17196 l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
17197
17198 IF p_progress_mode <> 'BACKDATED' THEN
17199 l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
17200 l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
17201 l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
17202 l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
17203 l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
17204 l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
17205 l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
17206 l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
17207 l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
17208 l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
17209
17210 l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
17211 l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
17212 l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
17213 l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
17214 l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
17215 l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
17216 l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
17217 l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
17218 l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
17219 l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
17220
17221 l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
17222 l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
17223 l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
17224 l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
17225 l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
17226 l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
17227 l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
17228 l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
17229 END IF; -- p_progress_mode <> 'BACKDATED'
17230
17231 -- 5119716 Begin
17232 -- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
17233 -- For performance changes, it was removed and replaced with direct update statement
17234 -- The follwoing portion for dirty schedule was missing out.
17235 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y'
17236 THEN
17237 PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
17238 p_structure_version_id => p_structure_version_id
17239 ,p_dirty_flag => 'Y'
17240 ,x_return_status => x_return_status
17241 ,x_msg_count => x_msg_count
17242 ,x_msg_data => x_msg_data);
17243 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
17244 raise FND_API.G_EXC_ERROR;
17245 END IF;
17246 END IF;
17247 -- 5119716 End
17248
17249 UPDATE pa_proj_elem_ver_schedule
17250 SET ACTUAL_START_DATE = l_actual_start_date
17251 , ACTUAL_FINISH_DATE = l_actual_finish_date
17252 , ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
17253 , ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
17254 , record_version_number = record_version_number+1
17255 , scheduled_start_date = l_rollup_table1(i).start_date3
17256 , scheduled_finish_date = l_rollup_table1(i).finish_date3
17257 -- 5119716 Begin
17258 , estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
17259 , actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
17260 -- 5119716 End
17261 , last_updated_by = l_user_id
17262 , last_update_date= sysdate
17263 , last_update_login = l_login_id
17264 WHERE project_id = p_project_id
17265 AND element_version_id = l_rollup_table1(i).object_id;
17266
17267
17268 IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
17269 UPDATE pa_projects_all
17270 SET actual_start_date = l_rollup_table1(i).start_date1,
17271 actual_finish_date = l_rollup_table1(i).finish_date1
17272 WHERE project_id = p_project_id;
17273 END IF;
17274 END IF; -- p_structure_type = 'WORKPLAN'
17275
17276 IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
17277 l_tsk_update_required(task_index):='Y';
17278 ELSE
17279 -- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
17280 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17281 l_tsk_create_required(task_index):='Y';
17282 BEGIN
17283 SELECT percent_complete_id
17284 INTO l_percent_complete_id
17285 FROM pa_percent_completes
17286 WHERE project_id = p_project_id
17287 AND object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17288 AND object_Type = l_rollup_table1(i).object_Type
17289 AND structure_type = p_structure_type
17290 AND date_computed = ( SELECT max(date_computed)
17291 FROM pa_percent_completes
17292 WHERE project_id = p_project_id
17293 AND object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17294 AND object_Type = l_rollup_table1(i).object_Type
17295 AND structure_type = p_structure_type
17296 AND date_computed <= p_as_of_date);
17297 EXCEPTION WHEN OTHERS THEN
17298 l_percent_complete_id := null;
17299 END;
17300 l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
17301 (p_project_id => p_project_id,
17302 p_object_id => l_defer_arr_task_id(l_rollup_table1(i).object_id), -- sridhar_rollup
17303 p_object_type => l_rollup_table1(i).object_type,
17304 p_structure_type => p_structure_type,
17305 p_structure_version_id => l_structure_version_id,
17306 p_proj_element_id => l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17307 );
17308
17309 IF l_max_rollup_as_of_date2 > p_as_of_date THEN
17310 l_current_flag := 'N';
17311 ELSE
17312 l_current_flag := 'Y';
17313 END IF;
17314 l_tsk_current_flag_tab(task_index) := l_current_flag;
17315 l_tsk_prog_pa_period_name_tab(task_index) := l_prog_pa_period_name;
17316 l_tsk_prog_gl_period_name_tab(task_index) := l_prog_gl_period_name;
17317
17318 IF l_max_rollup_as_of_date2 < p_as_of_date THEN
17319 UPDATE pa_progress_rollup
17320 SET current_flag = 'N'
17321 WHERE project_id = p_project_id
17322 /* -- sridhar_rollup
17323 AND object_id = cur_reverse_tree_rec.proj_element_id
17324 */
17325 AND object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17326 AND object_type = l_rollup_table1(i).object_type
17327 AND current_flag <> 'W'
17328 AND structure_type = p_structure_type
17329 AND ((l_published_structure = 'Y' AND structure_version_id is null) OR (l_published_structure = 'N' AND structure_version_id = p_structure_version_id));
17330 END IF;
17331 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17332 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
17333 END IF;-- p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y'
17334 --exit; -- sridhar_fix
17335 END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
17336 END LOOP;
17337
17338 /* -- sridhar_rollup
17339
17340 END LOOP;
17341
17342 */
17343
17344 FORALL i in 1..l_tsk_object_version_id_tab.count
17345 UPDATE pa_progress_rollup
17346 SET
17347 object_version_id = l_tsk_object_version_id_tab(i)
17348 , last_update_date = sysdate
17349 , last_updated_by = l_user_id
17350 , last_update_login = l_login_id
17351 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
17352 , completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
17353 -- Bug 4284353 : Used decode above
17354 , estimated_start_date = l_tsk_est_start_date_tab(i)
17355 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
17356 , actual_start_date = l_tsk_actual_start_date_tab(i)
17357 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
17358 , record_version_number = record_version_number +1
17359 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
17360 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
17361 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
17362 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
17363 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
17364 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
17365 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
17366 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
17367 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
17368 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
17369 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
17370 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
17371 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
17372 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
17373 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
17374 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
17375 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
17376 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
17377 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
17378 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
17379 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
17380 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
17381 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17382 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17383 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
17384 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
17385 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
17386 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
17387 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
17388 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
17389 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
17390 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
17391 , earned_value = l_tsk_earned_value_tab(i)
17392 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
17393 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17394 WHERE l_tsk_update_required(i) = 'Y'
17395 AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i);
17396
17397
17398 IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED' THEN
17399 FORALL i in 1..l_tsk_object_version_id_tab.count
17400 UPDATE pa_progress_rollup
17401 SET
17402 object_version_id = l_tsk_object_version_id_tab(i)
17403 , last_update_date = sysdate
17404 , last_updated_by = l_user_id
17405 , last_update_login = l_login_id
17406 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
17407 , estimated_start_date = l_tsk_est_start_date_tab(i)
17408 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
17409 , actual_start_date = l_tsk_actual_start_date_tab(i)
17410 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
17411 , record_version_number = record_version_number +1
17412 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
17413 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
17414 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
17415 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
17416 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
17417 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
17418 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
17419 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
17420 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
17421 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
17422 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
17423 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
17424 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
17425 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
17426 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
17427 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
17428 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
17429 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
17430 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
17431 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
17432 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
17433 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
17434 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17435 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17436 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
17437 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
17438 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
17439 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
17440 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
17441 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
17442 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
17443 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
17444 , earned_value = l_tsk_earned_value_tab(i)
17445 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
17446 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17447 WHERE l_tsk_update_required(i) = 'Y'
17448 AND project_id = p_project_id
17449 AND object_id = l_tsk_object_id_tab(i)
17450 AND proj_element_id = l_tsk_proj_element_id_tab(i)
17451 AND object_type = l_tsk_object_type_tab(i)
17452 AND as_of_date >= p_as_of_date
17453 AND current_flag = 'W'
17454 AND structure_type = 'WORKPLAN'
17455 AND structure_version_id is null;
17456 END IF;
17457
17458 -- Bug 4242787 : This is effective solution for the bug 4097710
17459 -- We should not create new records if the rollup is called from Future Rollup API
17460 -- It should just update.
17461 IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17462 for i in 1..l_tsk_object_version_id_tab.count
17463 loop
17464 -- sridhar_fix - new if statement below
17465 if (l_tsk_create_required(i) = 'Y') then
17466 --IF l_tsk_object_version_id_tab(i) member of l_prog_obj
17467 if l_prog_obj.exists(l_tsk_object_version_id_tab(i))
17468 then
17469 l_tsk_create_required(i) := 'Y';
17470 else
17471 l_tsk_create_required(i) := 'N';
17472 end if;
17473 end if; -- sridhar_fix
17474 end loop;
17475
17476 FORALL i in 1..l_tsk_object_version_id_tab.count
17477 INSERT INTO pa_progress_rollup
17478 (
17479 progress_rollup_id
17480 ,project_id
17481 ,object_id
17482 ,object_type
17483 ,as_of_date
17484 ,object_version_id
17485 ,last_update_date
17486 ,last_updated_by
17487 ,creation_date
17488 ,created_by
17489 ,progress_status_code
17490 ,last_update_login
17491 ,eff_rollup_percent_comp
17492 ,completed_percentage
17493 ,estimated_start_date
17494 ,estimated_finish_date
17495 ,actual_start_date
17496 ,actual_finish_date
17497 ,record_version_number
17498 ,base_percent_comp_deriv_code
17499 ,base_progress_status_code
17500 ,eff_rollup_prog_stat_code
17501 ,percent_complete_id
17502 ,structure_type
17503 ,proj_element_id
17504 ,structure_version_id
17505 ,ppl_act_effort_to_date
17506 ,ppl_act_cost_to_date_pc
17507 ,ppl_act_cost_to_date_fc
17508 ,ppl_act_rawcost_to_date_pc
17509 ,ppl_act_rawcost_to_date_fc
17510 ,estimated_remaining_effort
17511 ,ppl_etc_cost_pc
17512 ,ppl_etc_cost_fc
17513 ,ppl_etc_rawcost_pc
17514 ,ppl_etc_rawcost_fc
17515 ,eqpmt_act_effort_to_date
17516 ,eqpmt_act_cost_to_date_pc
17517 ,eqpmt_act_cost_to_date_fc
17518 ,eqpmt_act_rawcost_to_date_pc
17519 ,eqpmt_act_rawcost_to_date_fc
17520 ,eqpmt_etc_effort
17521 ,eqpmt_etc_cost_pc
17522 ,eqpmt_etc_cost_fc
17523 ,eqpmt_etc_rawcost_pc
17524 ,eqpmt_etc_rawcost_fc
17525 ,oth_quantity_to_date
17526 ,oth_act_cost_to_date_pc
17527 ,oth_act_cost_to_date_fc
17528 ,oth_act_rawcost_to_date_pc
17529 ,oth_act_rawcost_to_date_fc
17530 ,oth_etc_quantity
17531 ,oth_etc_cost_pc
17532 ,oth_etc_cost_fc
17533 ,oth_etc_rawcost_pc
17534 ,oth_etc_rawcost_fc
17535 ,earned_value
17536 ,task_wt_basis_code
17537 ,current_flag
17538 ,projfunc_cost_rate_type
17539 ,projfunc_cost_exchange_rate
17540 ,projfunc_cost_rate_date
17541 ,proj_cost_rate_type
17542 ,proj_cost_exchange_rate
17543 ,proj_cost_rate_date
17544 ,txn_currency_code
17545 ,prog_pa_period_name
17546 ,prog_gl_period_name
17547 ,base_percent_complete
17548 )
17549 SELECT
17550 PA_PROGRESS_ROLLUP_S.nextval
17551 , p_project_id
17552 , l_tsk_object_id_tab(i)
17553 , l_tsk_object_type_tab(i)
17554 , p_as_of_date
17555 , l_tsk_object_version_id_tab(i)
17556 , sysdate
17557 , l_user_id
17558 , sysdate
17559 , l_user_id
17560 , l_tsk_progress_stat_code_tab(i)
17561 , l_login_id
17562 , l_tsk_roll_comp_percent_tab(i)
17563 , decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
17564 -- Bug 4284353 : Used decode above
17565 , l_tsk_est_start_date_tab(i)
17566 , l_tsk_est_finish_date_tab(i)
17567 , l_tsk_actual_start_date_tab(i)
17568 , l_tsk_actual_finish_date_tab(i)
17569 , 1
17570 , l_tsk_deriv_method_tab(i)
17571 , l_tsk_base_prog_stat_code_tab(i)
17572 , l_tsk_eff_roll_prg_st_code_tab(i)
17573 , l_tsk_percent_complete_id_tab(i)
17574 , p_structure_type
17575 , l_tsk_proj_element_id_tab(i)
17576 , l_structure_version_id
17577 , l_tsk_ppl_act_eff_tab(i)
17578 , l_tsk_ppl_act_cost_pc_tab(i)
17579 , l_tsk_ppl_act_cost_fc_tab(i)
17580 , l_tsk_ppl_act_rawcost_pc_tab(i)
17581 , l_tsk_ppl_act_rawcost_fc_tab(i)
17582 , l_tsk_est_rem_effort_tab(i)
17583 , l_tsk_ppl_etc_cost_pc_tab(i)
17584 , l_tsk_ppl_etc_cost_fc_tab(i)
17585 , l_tsk_ppl_etc_rawcost_pc_tab(i)
17586 , l_tsk_ppl_etc_rawcost_fc_tab(i)
17587 , l_tsk_eqpmt_act_effort_tab(i)
17588 , l_tsk_eqpmt_act_cost_pc_tab(i)
17589 , l_tsk_eqpmt_act_cost_fc_tab(i)
17590 , l_tsk_eqpmt_act_rawcost_pc_tab(i)
17591 , l_tsk_eqpmt_act_rawcost_fc_tab(i)
17592 , l_tsk_eqpmt_etc_effort_tab(i)
17593 , l_tsk_eqpmt_etc_cost_pc_tab(i)
17594 , l_tsk_eqpmt_etc_cost_fc_tab(i)
17595 , l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17596 , l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17597 , l_tsk_oth_quantity_tab(i)
17598 , l_tsk_oth_act_cost_pc_tab(i)
17599 , l_tsk_oth_act_cost_fc_tab(i)
17600 , l_tsk_oth_act_rawcost_pc_tab(i)
17601 , l_tsk_oth_act_rawcost_fc_tab(i)
17602 , l_tsk_oth_etc_quantity_tab(i)
17603 , l_tsk_oth_etc_cost_pc_tab(i)
17604 , l_tsk_oth_etc_cost_fc_tab(i)
17605 , l_tsk_oth_etc_rawcost_pc_tab(i)
17606 , l_tsk_oth_etc_rawcost_fc_tab(i)
17607 , l_tsk_earned_value_tab(i)
17608 , l_tsk_task_wt_basis_code_tab(i)
17609 , l_tsk_current_flag_tab(i)
17610 , l_tsk_pf_cost_rate_type_tab(i)
17611 , l_tsk_pf_cost_exc_rate_tab(i)
17612 , l_tsk_pf_cost_rate_date_tab(i)
17613 , l_tsk_p_cost_rate_type_tab(i)
17614 , l_tsk_p_cost_exc_rate_tab(i)
17615 , l_tsk_p_cost_rate_date_tab(i)
17616 , l_tsk_txn_currency_code_tab(i)
17617 , l_tsk_prog_pa_period_name_tab(i)
17618 , l_tsk_prog_gl_period_name_tab(i)
17619 , l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17620 FROM
17621 DUAL
17622 WHERE l_tsk_create_required(i) = 'Y';
17623 END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17624
17625 -- Bug 4242787
17626 -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
17627 -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
17628
17629 ---- ************** Updation Ends ****************** ----------
17630
17631 -- Bug 4242787
17632 -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
17633 -- Future rollup seprately if they are calling Mass Rollup
17634 IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
17635 IF g1_debug_mode = 'Y' THEN
17636 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
17637 END IF;
17638
17639 FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
17640 IF g1_debug_mode = 'Y' THEN
17641 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
17642 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
17643 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
17644 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
17645 END IF;
17646 -- Bug 4573257 Begin
17647 -- We need to call PJI tmp table population
17648 -- otherwise we will get incorrect actual and etc for future dates records
17649 IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
17650 IF (l_base_struct_ver_id = -1) THEN
17651 l_base_struct_ver_id := p_structure_version_id;
17652 END IF;
17653
17654 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
17655 p_calling_module => p_calling_module
17656 ,p_project_id => p_project_id
17657 ,p_structure_version_id => p_structure_version_id
17658 ,p_baselined_str_ver_id => l_base_struct_ver_id
17659 ,p_program_rollup_flag => 'Y'
17660 ,p_calling_context => 'ROLLUP'
17661 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
17662 ,x_return_status => x_return_status
17663 ,x_msg_count => x_msg_count
17664 ,x_msg_data => x_msg_data
17665 );
17666 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
17667 RAISE FND_API.G_EXC_ERROR;
17668 END IF;
17669 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
17670 END IF;
17671 -- Bug 4573257 End
17672
17673 PA_PROGRESS_PVT.DEFER_ROLLUP_PVT(
17674 p_init_msg_list => 'F'
17675 ,p_calling_module => p_calling_module
17676 ,p_calling_mode => 'FUTURE_ROLLUP'
17677 ,p_commit => 'F'
17678 ,p_validate_only => 'F'
17679 ,p_project_id => p_project_id
17680 ,P_OBJECT_TYPE => 'PA_TASKS'
17681 ,P_OBJECT_ID => cur_tree_rollup_rec.child_task_id
17682 ,p_object_version_id => cur_tree_rollup_rec.child_task_ver_id
17683 ,p_as_of_date => cur_tree_rollup_rec.as_of_date
17684 ,p_lowest_level_task => p_lowest_level_task
17685 ,p_process_whole_tree => 'N'
17686 ,p_structure_type => p_structure_type
17687 ,p_structure_version_id => p_structure_version_id
17688 ,p_rollup_entire_wbs => 'N'
17689 ,p_fin_rollup_method => p_fin_rollup_method
17690 ,p_wp_rollup_method => p_wp_rollup_method
17691 ,p_task_version_id => cur_tree_rollup_rec.child_task_ver_id
17692 ,x_return_status => x_return_status
17693 ,x_msg_count => x_msg_count
17694 ,x_msg_data => x_msg_data);
17695
17696 IF g1_debug_mode = 'Y' THEN
17697 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
17698 END IF;
17699
17700 IF x_return_status <> 'S' THEN
17701 raise FND_API.G_EXC_ERROR;
17702 END IF;
17703 END LOOP;
17704 END IF; -- p_rollup_entire_wbs = 'Y'
17705
17706 DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
17707
17708 x_return_status := FND_API.G_RET_STS_SUCCESS;
17709
17710 IF (p_commit = FND_API.G_TRUE) THEN
17711 COMMIT;
17712 END IF;
17713
17714 IF g1_debug_mode = 'Y' THEN
17715 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT END', x_Log_Level=> 3);
17716 END IF;
17717
17718 EXCEPTION
17719 WHEN FND_API.G_EXC_ERROR THEN
17720 rollback to ROLLUP_PVT2;
17721 x_return_status := FND_API.G_RET_STS_ERROR;
17722 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
17723 rollback to ROLLUP_PVT2;
17724 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
17725 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
17726 p_procedure_name => 'ROLLUP_PVT',
17727 p_error_text => SUBSTRB(SQLERRM,1,120));
17728 WHEN OTHERS THEN
17729 rollback to ROLLUP_PVT2;
17730 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
17731 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
17732 p_procedure_name => 'ROLLUP_PVT',
17733 p_error_text => SUBSTRB(SQLERRM,1,120));
17734 raise;
17735 END DEFER_ROLLUP_PVT;
17736
17737 end PA_PROGRESS_PVT;