[Home] [Help]
PACKAGE BODY: APPS.PA_PROGRESS_PUB
Source
1 package body PA_PROGRESS_PUB as
2 /* $Header: PAPCPUBB.pls 120.85.12020000.14 2013/06/06 09:39:26 djambhek ship $ */
3
4
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'PA_PROGRESS_PUB';
6
7 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');
8
9 PROCEDURE UPDATE_TASK_PROGRESS(
10 p_api_version IN NUMBER :=1.0,
11 p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE,
12 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
13 p_validate_only IN VARCHAR2 :=FND_API.G_TRUE,
14 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
15 p_calling_module IN VARCHAR2 :='SELF_SERVICE',
16 p_calling_mode IN VARCHAR2 := null,-- bug 4287638
17 p_debug_mode IN VARCHAR2 :='N',
18 p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
19 p_action IN VARCHAR2 default 'SAVE',
20 p_bulk_load_flag IN VARCHAR2 default 'N',
21 p_progress_mode IN VARCHAR2 default 'FUTURE',
22 p_percent_complete_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
23 p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
24 p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
25 p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
26 p_object_type IN Varchar2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
27 p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
28 p_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
29 p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
30 p_progress_comment IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
31 p_brief_overview IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
32 p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
33 p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
34 p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
35 p_estimated_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
36 p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
37 p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
38 p_record_version_number IN NUMBER,
39 p_task_status IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
40 p_est_remaining_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
41 p_actual_work_quantity IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
42 p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
43 p_structure_type IN VARCHAR2 := 'WORKPLAN',
44 p_actual_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
45 p_actual_effort_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
46 p_prog_fom_wp_flag IN VARCHAR2 := 'N',
47 p_planned_cost IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
48 p_planned_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
49 p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
50 p_eff_rollup_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM, -- 3910193
51 x_resource_list_member_id OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
52 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
53 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
54 x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
55 )
56 IS
57
58 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_TASK_PROGRESS';
59 l_api_version CONSTANT NUMBER := 1.0;
60 l_return_status VARCHAR2(1);
61 l_msg_count NUMBER;
62 l_msg_data VARCHAR2(250);
63 l_data VARCHAR2(250);
64 l_msg_index_out NUMBER;
65 l_error_msg_code VARCHAR2(250);
66 l_user_id NUMBER := FND_GLOBAL.USER_ID;
67 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
68
69 l_task_id NUMBER;
70 l_project_id NUMBER;
71 l_att_pc_id NUMBER;
72 l_percent_complete_id NUMBER;
73 l_PROGRESS_ROLLUP_ID NUMBER;
74 l_structure_id NUMBER;
75 l_process VARCHAR2(8) := 'NORMAL';
76 l_last_progress_date DATE;
77 l_progress_exists_on_aod VARCHAR2(15);
78 l_rollup_required VARCHAR2(1);
79 l_db_action VARCHAR2(10);
80 l_actual_wq_entry_code VARCHAR2(30);
81 l_incremental_work_qty NUMBER;
82 l_cumulative_work_qty NUMBER;
83 l_base_percent_complete NUMBER;
84 l_published_flag VARCHAR2(1);
85 l_current_flag VARCHAR2(1);
86 l_actual_start_date DATE;
87 l_actual_finish_date DATE;
88 l_base_percent_comp_deriv_code VARCHAR2(30);
89 l_base_progress_status_code VARCHAR2(30);
90 l_proj_element_id NUMBER;
91 l_estimated_start_date DATE;
92 l_estimated_finish_date DATE;
93 l_actual_work_quantity NUMBER;
94 l_last_cumulative_wrk_qty NUMBER;
95 l_est_remaining_effort NUMBER;
96 l_actual_effort NUMBER; --maansari: fpm changes 3420093
97 l_percent_complete NUMBER;
98 l_wq_enabled_flag VARCHAR2(1);
99 l_est_remaining_eff_flag VARCHAR2(1);
100 l_percent_complete_flag VARCHAR2(1);
101 l_error_message_code VARCHAR2(250);
102 l_rollup_rec_ver_number NUMBER;
103 l_published_by_party_id NUMBER := PA_UTILS.get_party_id(l_user_id);
104 l_task_status VARCHAR2(150);
105 l_task_status2 VARCHAR2(150);
106 l_task_status_temp VARCHAR2(150); -- Bug#5374114
107 l_task_status2_temp VARCHAR2(150); -- Bug#5374114
108 l_working_aod DATE;
109 l_aod DATE;
110 l_scheduled_start_date DATE;
111 l_scheduled_finish_date DATE;
112 l_lowest_level_task VARCHAR2(1);
113 l_progress_entry_enable_flag VARCHAR2(1);
114 l_msg VARCHAR2(30);
115 l_eff_rollup_percent_comp NUMBER;
116 l_eff_rollup_prog_stat_code VARCHAR2(150);
117 l_rollup_progress_status VARCHAR2(150);
118 l_rollup_completed_percentage NUMBER;
119 l_tp_pcc_est_disabl VARCHAR2(1) := 'N'; -- Bug 2747143
120 l_allow_collab_prog_entry VARCHAR2(1); -- FPM Development Bug 3420093
121 l_allw_phy_prcnt_cmp_overrides VARCHAR2(1); -- FPM Development Bug 3420093
122 l_structure_version_id NUMBER; -- FPM Development Bug 3420093
123 l_conv_etc_cost_pc NUMBER;
124 l_conv_etc_cost_pfc NUMBER;
125 l_conv_actual_cost_pc NUMBER;
126 l_conv_actual_cost_pfc NUMBER;
127 l_rollup_current_flag VARCHAR2(1) := 'Y';
128 l_task_weight_basis_code VARCHAR2(30); -- FPM Development Bug 3420093
129 l_earned_value NUMBER;
130 l_planned_effort NUMBER;
131 l_planned_effort_push NUMBER;
132 l_planned_cost NUMBER;
133 l_last_submitted_effort NUMBER;
134 l_actual_effort_this_period NUMBER;
135 l_pa_period_name VARCHAR2(30);
136 l_gl_period_name VARCHAR2(30);
137 l_pm_product_code VARCHAR2(150);
138
139 /* Begin fix for Bug # 4050324. */
140 l_base_planned_effort NUMBER := null;
141 l_base_planned_cost NUMBER := null;
142 /* End fix for Bug # 4050324. */
143
144 --variables added for effort to cost conversion start
145 l_rate_based_flag_x VARCHAR2(1);
146 l_resource_list_member_id NUMBER;
147 l_resource_assignment_id NUMBER;
148 l_txn_currency_code VARCHAR2(30) ;
149 l_res_raw_rate NUMBER;
150 l_res_burden_rate NUMBER;
151 l_burden_multiplier NUMBER;
152 l_res_cur_code VARCHAR2(15);
153
154 l_plan_res_cur_code VARCHAR2(15);
155 l_plan_res_raw_rate NUMBER;
156 l_plan_res_burden_rate NUMBER;
157 l_plan_burden_multiplier NUMBER;
158
159 l_act_txn_raw_cost NUMBER;
160 l_act_txn_bur_cost NUMBER;
161 l_etc_txn_raw_cost NUMBER;
162 l_etc_txn_bur_cost NUMBER;
163
164 l_project_curr_code VARCHAR2(30);
165 l_project_rate_type VARCHAR2(30);
166 l_project_rate_date DATE;
167 l_project_exch_rate NUMBER;
168 l_act_project_raw_cost NUMBER;
169 l_act_project_bur_cost NUMBER;
170 l_projfunc_curr_code VARCHAR2(30);
171 l_projfunc_cost_rate_type VARCHAR2(30);
172 l_projfunc_cost_rate_date DATE;
173 l_projfunc_cost_exch_rate NUMBER;
174 l_act_projfunc_raw_cost NUMBER;
175 l_act_projfunc_bur_cost NUMBER;
176
177 l_etc_project_raw_cost NUMBER;
178 l_etc_projfunc_raw_cost NUMBER;
179 l_etc_project_bur_cost NUMBER;
180 l_etc_projfunc_bur_cost NUMBER;
181
182 l_planned_quantity NUMBER;
183 l_planned_bur_cost_txn_cur NUMBER;
184 l_planned_bur_cost_projfunc NUMBER;
185 l_planned_bur_cost_proj_cur NUMBER;
186 l_planned_raw_cost_txn_cur NUMBER;
187 l_planned_raw_cost_proj_cur NUMBER;
188 l_planned_raw_cost_projfunc NUMBER;
189 l_assignment_id NUMBER;
190
191 l_act_raw_cost_to_date_tc NUMBER;
192 l_act_raw_cost_to_date_fc NUMBER;
193 l_act_raw_cost_to_date_pc NUMBER;
194 l_act_bur_cost_to_date_tc NUMBER;
195 l_act_bur_cost_to_date_fc NUMBER;
196 l_act_bur_cost_to_date_pc NUMBER;
197
198 l_act_raw_cost_last_subm_tc NUMBER;
199 l_act_raw_cost_last_subm_pc NUMBER;
200 l_act_raw_cost_last_subm_fc NUMBER;
201 l_act_bur_cost_last_subm_tc NUMBER;
202 l_act_bur_cost_last_subm_pc NUMBER;
203 l_act_bur_cost_last_subm_fc NUMBER;
204
205 l_etc_raw_cost_tc NUMBER;
206 l_etc_raw_cost_fc NUMBER;
207 l_etc_raw_cost_pc NUMBER;
208 l_etc_bur_cost_tc NUMBER;
209 l_etc_bur_cost_fc NUMBER;
210 l_etc_bur_cost_pc NUMBER;
211
212 l_etc_txn_raw_cost_last NUMBER;
213 l_etc_prj_raw_cost_last NUMBER;
214 l_etc_pfc_raw_cost_last NUMBER;
215 l_etc_txn_bur_cost_last NUMBER;
216 l_etc_prj_bur_cost_last NUMBER;
217 l_etc_pfc_bur_cost_last NUMBER;
218 l_etc_effort_last NUMBER;
219
220 l_etc_txn_raw_cost_this_period NUMBER;
221 l_etc_prj_raw_cost_this_period NUMBER;
222 l_etc_pfc_raw_cost_this_period NUMBER;
223 l_etc_txn_bur_cost_this_period NUMBER;
224 l_etc_prj_bur_cost_this_period NUMBER;
225 l_etc_pfc_bur_cost_this_period NUMBER;
226
227 l_published_structure VARCHAR2(1);
228
229 l_proj_res_raw_rate NUMBER;
230 l_projfunc_res_raw_rate NUMBER;
231 l_proj_res_burden_rate NUMBER;
232 l_projfunc_res_burden_rate NUMBER;
233
234 l_rate_based_flag VARCHAR2(1);
235 l_rbs_element_id NUMBER;
236 l_resource_class_code PA_TASK_ASSIGNMENTS_V.RESOURCE_CLASS_CODE%TYPE;
237 l_budget_version_id NUMBER;
238
239 l_progress_exists VARCHAR2(1) :='N';
240
241 --This cursor returns planned values also
242 CURSOR c_get_resource_list_member_id
243 ( l_project_id NUMBER
244 , l_task_id NUMBER
245 , l_structure_version_id NUMBER
246 , l_task_version_id NUMBER
247 ) IS
248 SELECT
249 resource_assignment_id,
250 resource_list_member_id,
251 txn_currency_code,
252 planned_quantity,
253 planned_bur_cost_txn_cur,
254 planned_bur_cost_projfunc,
255 planned_bur_cost_proj_cur,
256 planned_raw_cost_txn_cur,
257 planned_raw_cost_proj_cur,
258 planned_raw_cost_projfunc,
259 rbs_element_id,
260 rate_based_flag,
261 resource_class_code,
262 budget_version_id ---4372462
263 FROM
264 pa_task_asgmts_v
265 WHERE
266 project_id = l_project_id
267 AND task_id = l_task_id
268 AND structure_version_id = l_structure_version_id
269 AND task_version_id = l_task_version_id
270 AND ta_display_flag = 'N';
271
272 CURSOR cur_pa_proj_sch
273 IS
274 SELECT
275 scheduled_start_date
276 , scheduled_finish_date
277 FROM pa_proj_elem_ver_schedule
278 WHERE project_id = p_project_id
279 AND element_version_id = p_object_version_id
280 AND proj_element_id = p_object_id;
281
282
283 -- Bug 3764224 : No need to have proj element id join in these cursors as it is used only in tasks context
284 CURSOR cur_pa_rollup1
285 IS
286 SELECT *
287 FROM pa_progress_rollup
288 WHERE project_id = p_project_id
289 AND object_id = p_object_id
290 AND structure_type = p_structure_type -- FPM Dev CR 3
291 AND structure_version_id IS NULL -- Bug 3764224
292 AND as_of_date = ( SELECT max( as_of_date )
293 FROM pa_progress_rollup
294 WHERE project_id = p_project_id
295 AND object_id = p_object_id
296 AND object_type = p_object_type
297 AND structure_type = p_structure_type -- FPM Dev CR 3
298 AND structure_version_id IS NULL -- Bug 3764224
299 AND as_of_date <= p_as_of_date ); -- Fix for Bug # 3944297.
300
301
302 CURSOR cur_pa_rollup2
303 IS
304 SELECT *
305 FROM pa_progress_rollup
306 WHERE project_id = p_project_id
307 AND object_id = p_object_id
308 AND object_type = p_object_type
309 AND as_of_date = p_as_of_date
310 AND structure_type = p_structure_type
311 AND structure_version_id IS NULL -- Bug 3764224
312 AND ( (p_action = 'SAVE' AND current_flag = 'W')
313 OR(p_action = 'PUBLISH' AND current_flag IN ('Y','N'))-- Bug 3879461
314 )
315 ;
316
317 l_rollup_rec1 cur_pa_rollup1%ROWTYPE;
318 l_rollup_rec2 cur_pa_rollup2%ROWTYPE;
319 l_element_struc_type VARCHAR2(30);
320
321
322 /* Bug2756007 Begin */
323 CURSOR cur_sch_id(c_object_version_id NUMBER)
324 IS
325 SELECT
326 pev_schedule_id
327 , record_version_number
328 FROM pa_proj_elem_ver_schedule
329 WHERE project_id = p_project_id
330 AND element_version_id = c_object_version_id;
331
332 l_pev_schedule_id NUMBER;
333 l_sch_rec_ver_number NUMBER;
334 /* Bug2756007 End */
335
336 -- FPM Dev CR 3
337 l_record_version_number NUMBER;
338 l_task_ver_ids2 SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() ;
339 l_planned_effort2 SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() ;
340 l_start_dates SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
341 l_end_dates SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
342
343 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
344 l_etc_effort_this_period NUMBER;--Bug 3595585
345 l_last_submitted_etc_effort NUMBER;--Bug 3595585
346
347 -- Bug 3608422 : Added the cusrosr below
348 CURSOR cur_check_published_version
349 ( c_structure_version_id number
350 , c_project_id number
351 )IS
352 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
353 FROM pa_proj_elem_ver_structure str, pa_project_statuses status
354 where str.element_version_id = c_structure_version_id
355 AND str.project_id = c_project_id
356 AND str.status_code = status.project_status_code;
357
358
359 l_assignment_exists VARCHAR2(1);
360
361 -- Bug 3796357 Begin
362 l_eqpmt_act_effort_to_date NUMBER;
363 l_eqpmt_etc_effort NUMBER;
364 l_oth_act_cost_to_date_tc NUMBER;
365 l_oth_act_cost_to_date_fc NUMBER;
366 l_oth_act_cost_to_date_pc NUMBER;
367 l_oth_etc_cost_tc NUMBER;
368 l_oth_etc_cost_fc NUMBER;
369 l_oth_etc_cost_pc NUMBER;
370 l_ppl_act_cost_to_date_tc NUMBER;
371 l_ppl_act_cost_to_date_fc NUMBER;
372 l_ppl_act_cost_to_date_pc NUMBER;
373 l_ppl_etc_cost_tc NUMBER;
374 l_ppl_etc_cost_fc NUMBER;
375 l_ppl_etc_cost_pc NUMBER;
376 l_eqpmt_act_cost_to_date_tc NUMBER;
377 l_eqpmt_act_cost_to_date_fc NUMBER;
378 l_eqpmt_act_cost_to_date_pc NUMBER;
379 l_eqpmt_etc_cost_tc NUMBER;
380 l_eqpmt_etc_cost_fc NUMBER;
381 l_eqpmt_etc_cost_pc NUMBER;
382 l_oth_quantity_to_date NUMBER;
383 l_oth_etc_quantity NUMBER;
384 l_oth_act_rawcost_to_date_tc NUMBER;
385 l_oth_act_rawcost_to_date_fc NUMBER;
386 l_oth_act_rawcost_to_date_pc NUMBER;
387 l_oth_etc_rawcost_tc NUMBER;
388 l_oth_etc_rawcost_fc NUMBER;
389 l_oth_etc_rawcost_pc NUMBER;
390 l_eqpmt_act_rawcost_to_date_tc NUMBER;
391 l_eqpmt_act_rawcost_to_date_fc NUMBER;
392 l_eqpmt_act_rawcost_to_date_pc NUMBER;
393 l_eqpmt_etc_rawcost_tc NUMBER;
394 l_eqpmt_etc_rawcost_fc NUMBER;
395 l_eqpmt_etc_rawcost_pc NUMBER;
396 --Rtarway, 3819619
397 l_dummy VARCHAR2(1);
398
399 l_task_version_id_out NUMBER := null; -- Added to fix Bug # 3815741.
400 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
401 -- Bug 3796357 End
402
403 --bug 3824042
404 l_prj_currency_code VARCHAR2(15) := null;
405 l_prjfunc_currency_code VARCHAR2(15) := null;
406
407 --bug 3879461 --maansari
408 CURSOR check_prog_after_aod
409 IS
410 SELECT 'Y'
411 FROM pa_progress_rollup
412 WHERE current_flag = 'Y'
413 AND project_id = p_project_id
414 AND structure_type = p_structure_type
415 AND structure_version_id is null
416 AND object_id = p_object_id
417 AND as_of_date > p_as_of_date
418 ;
419 l_prog_exist_after_aod VARCHAR2(1) := 'N';
420 --bug 3879461 --maansari
421 --rtarway, 4085882
422 -- Following cursor is written with assumption that underlying view will return one row per assignment for as_of_date set in the
423 -- API.
424
425 -- 4136113 : Written new cursosr instead of old bulky one
426 CURSOR c_assgn_working_prog (l_project_id NUMBER, l_task_id NUMBER, l_task_version_id NUMBER )
427 IS
428 SELECT
429 ppc.percent_complete_id,
430 asgn.resource_list_member_id,
431 ppr.actual_start_date ,
432 ppr.actual_finish_date ,
433 ppr.estimated_start_date,
434 ppr.estimated_finish_date,
435 ppc.record_version_number ,
436 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_rawcost_to_date_tc,
437 'EQUIPMENT', ppr.eqpmt_act_rawcost_to_date_tc,ppr.oth_act_rawcost_to_date_tc)
438 - nvl(pa_progress_utils.get_act_for_prev_asofdate(ppr.as_of_date,ppr.project_id,ppr.object_id,ppr.object_version_id,ppr.proj_element_id,'C','R','T'),0)
439 actual_rawcost_this_period,
440 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_effort_to_date,
441 'EQUIPMENT', ppr.eqpmt_act_effort_to_date, ppr.oth_quantity_to_date)
442 - nvl(pa_progress_utils.get_act_for_prev_asofdate(ppr.as_of_date,ppr.project_id,ppr.object_id,ppr.object_version_id,ppr.proj_element_id,'E',null,null),0)
443 actual_effort_this_period,
444 asgn.rate_based_flag,
445 asgn.resource_class_code,
446 nvl(ppr.ppl_act_rawcost_to_date_tc,0)+ nvl(ppr.eqpmt_act_rawcost_to_date_tc,0)+ nvl(ppr.oth_act_rawcost_to_date_tc,0) actual_rawcost,
447 -- In Self Service it is last submitted actual raw cost in TC. But this value is not used by the API.
448 -- Only case it is used by the API is from AMG where we need to pass the value as to_date. So we can sefly
449 -- always pass to_date value without calling the function get_act_for_prev_asofdate
450 nvl(ppr.ppl_act_effort_to_date,0)+ nvl(ppr.eqpmt_act_effort_to_date,0)+ nvl(ppr.oth_quantity_to_date,0) actual_effort,
451 -- In Self Service it is last submitted actual effort. But this value is not used by the API.
452 -- Only case it is used by the API is from AMG where we need to pass the value as to_date. So we can sefly
453 -- always pass to_date value without calling the function get_act_for_prev_asofdate
454 --bug 4303344
455 nvl(ppr.ppl_etc_rawcost_tc,0)+nvl(ppr.eqpmt_etc_rawcost_tc,0)+ nvl(ppr.oth_etc_rawcost_tc,0)
456 etc_rawcost_tc ,
457 nvl(ppr.estimated_remaining_effort,0)+nvl(ppr.eqpmt_etc_effort,0)+ nvl(ppr.oth_etc_quantity,0)
458 etc_effort ,
459 asgn.txn_currency_code ,
460 asgn.rbs_element_id,
461 asgn.resource_assignment_id,
462 asgn.assignment_start_date scheduled_start_date ,
463 asgn.assignment_end_date scheduled_finish_date,
464 ppc.progress_comment,
465 ppc.description progress_overview
466 from pa_task_asgmts_v asgn
467 , pa_percent_completes ppc
468 , pa_progress_rollup ppr
469 where
470 ppc.PROJECT_ID = l_project_id
471 AND ppr.project_id = ppc.project_id
472 AND ppc.project_id = asgn.project_id
473 AND ppc.task_id = l_task_id
474 AND ppc.task_id = ppr.proj_element_id
475 AND ppc.task_id = asgn.task_id
476 AND asgn.task_version_id = l_task_version_id
477 AND ppc.object_type = 'PA_ASSIGNMENTS'
478 AND ppc.object_type = ppr.object_type
479 AND asgn.ta_display_flag = 'Y'
480 AND ppc.object_id = asgn.resource_list_member_id
481 AND ppc.object_id = ppr.object_id
482 AND ppr.current_flag='W'
483 AND ppc.published_flag = 'N'
484 AND ppc.date_computed <= p_as_of_date
485 AND ppr.as_of_date <= p_as_of_date
486 AND ppr.structure_type = 'WORKPLAN'
487 and ppc.date_computed = ppr.as_of_date
488 AND ppr.structure_version_id is null;
489
490
491 l_working_assgn_rec c_assgn_working_prog%ROWTYPE;
492 -- Following cursor is written with assumption that underlying view will return one row per deliverable for as_of_date set in the
493 -- API. PA_TASK_DELVRS_PROGRESS_V has joins for as_of_date, so no as_of_date join is needed here
494
495 -- 4136113 : Written new cursosr instead of old bulky one
496 CURSOR c_dlvr_working_prog (l_project_id NUMBER, l_task_id NUMBER , l_task_version_id NUMBER)
497 IS
498 SELECT
499 ppc.percent_complete_id,
500 ppc.object_id del_id,
501 ppc.object_version_id del_element_version_id,
502 ppr.completed_percentage,
503 ppr.progress_status_code,
504 ppc.progress_comment,
505 ppc.description progress_description,
506 ppr.actual_start_date,
507 ppr.actual_finish_date,
508 ppc.record_version_number percomp_record_version_number,
509 ppc.status_code del_status_code
510 FROM pa_percent_completes ppc
511 , pa_progress_rollup ppr
512 WHERE
513 ppc.project_id=l_project_id
514 AND ppc.project_id = ppr.project_id
515 AND ppc.object_type = 'PA_DELIVERABLES'
516 AND ppc.object_type = ppr.object_type
517 AND ppc.task_id = l_task_id
518 AND ppc.task_id = ppr.proj_element_id
519 AND ppc.object_id = ppr.object_id
520 AND ppr.current_flag='W'
521 AND ppc.published_flag = 'N'
522 AND ppc.date_computed <= p_as_of_date
523 AND ppr.as_of_date <= p_as_of_date
524 and ppc.date_computed = ppr.as_of_date
525 AND ppr.structure_type = 'WORKPLAN'
526 AND ppr.structure_version_id is null;
527
528
529 l_working_dlvr_rec c_dlvr_working_prog%ROWTYPE;
530 --end add by rtarway, 4085882
531
532 -- Bug 3922325 Begin
533 CURSOR c_previous_task_status IS
534 SELECT /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N6)*/ status_code -- added hint for bug 16325523
535 FROM pa_percent_completes
536 WHERE project_id = p_project_id
537 AND object_id = p_object_id
538 AND object_type = 'PA_TASKS'
539 AND structure_type = 'WORKPLAN'
540 AND trunc(date_computed) <= trunc(p_as_of_date)
541 ORDER BY date_computed desc, published_flag asc; -- This is to make sure that top most record in this cursor is maximum as of date and working record first then published record
542
543 l_previous_status_code VARCHAR2(150);
544 l_prev_sys_status_code VARCHAR2(150);
545 -- Bug 3922325 End
546
547 -- Bug 4506461 Begin
548 -- 4651069 : Removed LF relationship here
549 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
550 SELECT 'Y'
551 FROM pa_object_relationships
552 WHERE --relationship_type in ( 'LW', 'LF' )
553 relationship_type = 'LW'
554 AND object_id_from1 IN
555 (SELECT object_id_to1
556 FROM pa_object_relationships
557 START WITH object_id_from1 = c_task_version_id
558 AND relationship_type = 'S'
559 CONNECT BY PRIOR object_id_to1 = object_id_from1
560 AND relationship_type = 'S')
561 ;
562 l_rederive_base_pc VARCHAR2(1):='N';
563 l_temp_base_pc NUMBER;
564 -- Bug 4506461 End
565
566 -- 4533112 Begin
567 CURSOR c_get_dates_overrides IS
568 SELECT decode(base_progress_status_code,'Y','Y','N') date_override_flag
569 , estimated_start_date
570 , estimated_finish_date
571 , actual_start_date
572 , actual_finish_date
573 FROM pa_progress_rollup
574 WHERE project_id = p_project_id
575 AND object_id = p_object_id
576 AND object_type = 'PA_TASKS'
577 AND structure_type = 'WORKPLAN'
578 AND structure_version_id is null
579 AND trunc(as_of_date) <= trunc(p_as_of_date)
580 AND current_flag IN ('Y', 'N')
581 ORDER by as_of_date desc;
582
583 l_date_override_flag VARCHAR2(1):='N';
584 l_db_date_override_flag VARCHAR2(1):='N';
585 l_db_estimated_start_date DATE;
586 l_db_estimated_finish_date DATE;
587 l_db_actual_start_date DATE;
588 l_db_actual_finish_date DATE;
589 l_clex_estimated_start_date DATE;
590 l_clex_estimated_finish_date DATE;
591 l_clex_actual_start_date DATE;
592 l_clex_actual_finish_date DATE;
593
594 -- 4533112 End
595
596 -- Bug 4632744
597 -- Added cursor c_get_last_ppl_effort_fr_assgn
598 CURSOR c_get_last_ppl_effort_fr_assgn(c_res_list_mem_id NUMBER)
599 IS
600 SELECT NVL( PPL_ACT_EFFORT_TO_DATE, 0 )
601 FROM pa_progress_rollup
602 WHERE project_id = p_project_id
603 AND object_id = c_res_list_mem_id
604 AND as_of_date =
605 (SELECT max(as_of_date)
606 FROM pa_progress_rollup ppr2
607 WHERE ppr2.as_of_date <= p_as_of_date
608 AND ppr2.project_id = p_project_id
609 AND ppr2.object_id = c_res_list_mem_id
610 AND ppr2.object_type = 'PA_ASSIGNMENTS'
611 AND ppr2.structure_type = p_structure_type
612 AND ppr2.current_flag <> 'W'
613 AND ppr2.structure_version_id is null
614 AND ppr2.proj_element_id = p_object_id
615 )
616 AND object_type = 'PA_ASSIGNMENTS'
617 AND structure_type = p_structure_type
618 AND current_flag <> 'W'
619 AND structure_version_id is null
620 and proj_element_id = p_object_id
621 ;
622
623 l_calling_module varchar2(30);
624 BEGIN
625 g1_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
626
627 IF g1_debug_mode = 'Y' THEN
628 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS');
629 END IF;
630
631 IF g1_debug_mode = 'Y' THEN
632 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS Start : Passed Parameters :', x_Log_Level=> 3);
633 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
634 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
635 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
636 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
637 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
638 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
639 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
640 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
641 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_bulk_load_flag='||p_bulk_load_flag, x_Log_Level=> 3);
642 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
643 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete_id='||p_percent_complete_id, x_Log_Level=> 3);
644 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
645 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
646 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
647 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
648 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
649 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
650 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
651 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_status_code='||p_progress_status_code, x_Log_Level=> 3);
652 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
653 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
654 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_start_date='||p_actual_start_date, x_Log_Level=> 3);
655 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
656 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_estimated_start_date='||p_estimated_start_date, x_Log_Level=> 3);
657 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_estimated_finish_date='||p_estimated_finish_date, x_Log_Level=> 3);
658 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_scheduled_start_date='||p_scheduled_start_date, x_Log_Level=> 3);
659 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_scheduled_finish_date='||p_scheduled_finish_date, x_Log_Level=> 3);
660 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_record_version_number='||p_record_version_number, x_Log_Level=> 3);
661 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
662 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_est_remaining_effort='||p_est_remaining_effort, x_Log_Level=> 3);
663 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_work_quantity='||p_actual_work_quantity, x_Log_Level=> 3);
664 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_pm_product_code='||p_pm_product_code, x_Log_Level=> 3);
665 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
666 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
667 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_effort_this_period='||p_actual_effort_this_period, x_Log_Level=> 3);
668 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
669 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_prog_fom_wp_flag='||p_prog_fom_wp_flag, x_Log_Level=> 3);
670 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
671 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
672 END IF;
673
674 IF (p_commit = FND_API.G_TRUE) THEN
675 savepoint UPDATE_TASK_PROGRESS;
676 END IF;
677
678 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
679 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
680 END IF;
681
682 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
683 FND_MSG_PUB.initialize;
684 END IF;
685
686 x_return_status := FND_API.G_RET_STS_SUCCESS;
687
688 --BUG 4085882, added by rtarway
689 --bug 4320365, changed to p_calling_mode from p_calling_module
690 --the code to set prog_as_of_date is needed.
691 IF (p_calling_mode = 'TEAM_MEM_HOME' AND p_action='PUBLISH' )
692 THEN
693 pa_progress_utils.set_prog_as_of_Date(
694 p_project_id =>p_project_id,
695 p_task_id =>p_object_id,
696 p_as_of_date => p_as_of_date
697 );
698 FOR l_working_assgn_rec in c_assgn_working_prog(p_project_id, p_object_id, p_object_version_id) LOOP
699
700 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
701 p_api_version => l_api_version
702 ,p_init_msg_list => p_init_msg_list
703 ,p_commit => p_commit
704 ,p_validate_only => p_validate_only
705 ,p_validation_level => p_validation_level
706 ,p_calling_module => p_calling_module
707 ,p_action => 'PUBLISH'
708 ,p_progress_mode => 'FUTURE'
709 ,p_percent_complete_id => l_working_assgn_rec.PERCENT_COMPLETE_ID
710 ,p_project_id => p_project_id
711 ,p_object_id => l_working_assgn_rec.RESOURCE_LIST_MEMBER_ID
712 ,p_object_version_id => p_object_version_id
713 ,p_task_id => p_object_id
714 ,p_as_of_date => p_as_of_date
715 ,p_progress_comment => l_working_assgn_rec.progress_comment
716 ,p_brief_overview => l_working_assgn_rec.progress_overview
717 ,p_actual_start_date => l_working_assgn_rec.ACTUAL_START_DATE
718 ,p_actual_finish_date => l_working_assgn_rec.ACTUAL_FINISH_DATE
719 ,p_estimated_start_date => l_working_assgn_rec.estimated_start_date
720 ,p_estimated_finish_date => l_working_assgn_rec.estimated_finish_date
721 ,p_record_version_number => l_working_assgn_rec.RECORD_VERSION_NUMBER
722 ,p_pm_product_code => p_pm_product_code
723 ,p_structure_type => 'WORKPLAN'
724 ,p_structure_version_id => p_structure_version_id
725 ,p_actual_cost_this_period => l_working_assgn_rec.actual_rawcost_this_period
726 ,p_actual_effort_this_period => l_working_assgn_rec.ACTUAL_EFFORT_THIS_PERIOD
727 ,p_rate_based_flag => l_working_assgn_rec.RATE_BASED_FLAG
728 ,p_resource_class_code => l_working_assgn_rec.RESOURCE_CLASS_CODE
729 ,p_actual_cost => l_working_assgn_rec.actual_rawcost
730 ,p_actual_effort => l_working_assgn_rec.ACTUAL_EFFORT
731 ,p_etc_cost_this_period => l_working_assgn_rec.etc_rawcost_tc
732 ,p_etc_effort_this_period => l_working_assgn_rec.ETC_EFFORT
733 ,p_txn_currency_code => l_working_assgn_rec.TXN_CURRENCY_CODE
734 ,p_rbs_element_id => l_working_assgn_rec.RBS_ELEMENT_ID
735 ,p_resource_assignment_id => l_working_assgn_rec.resource_assignment_id
736 ,p_scheduled_start_date => l_working_assgn_rec.scheduled_start_date
737 ,p_scheduled_finish_date => l_working_assgn_rec.scheduled_finish_date
738 ,x_return_status => l_return_status
739 ,x_msg_count => l_msg_count
740 ,x_msg_data => l_msg_data
741 );
742 -- Bug 4632744 : Added Return Status check
743 IF l_return_status <> 'S' THEN
744 raise FND_API.G_EXC_ERROR;
745 END IF;
746 END LOOP;
747 -- if there are working deliverable records associated with this task, we need to puyblish those deliverable progress
748 FOR l_working_dlvr_rec in c_dlvr_working_prog (p_project_id , p_object_id, p_object_version_id ) LOOP
749 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
750 p_api_version => l_api_version
751 ,p_init_msg_list => p_init_msg_list
752 ,p_commit => p_commit
753 ,p_validate_only => p_validate_only
754 ,p_validation_level => p_validation_level
755 ,p_calling_module => p_calling_module
756 ,p_action => 'PUBLISH' -- Code to fix Bug # 3821106.
757 ,p_progress_mode => 'FUTURE'
758 ,p_percent_complete_id => l_working_dlvr_rec.percent_complete_id ------percent_complete_id
759 ,p_project_id => p_project_id
760 ,p_object_id => l_working_dlvr_rec.del_id
761 ,p_object_type => 'PA_DELIVERABLES'
762 ,p_object_version_id => l_working_dlvr_rec.del_element_version_id
763 ,p_del_status => l_working_dlvr_rec.del_status_code
764 ,p_task_id => p_object_id
765 ,p_as_of_date => p_as_of_date
766 ,p_percent_complete => l_working_dlvr_rec.completed_percentage
767 ,p_progress_status_code => l_working_dlvr_rec.progress_status_code
768 ,p_progress_comment => l_working_dlvr_rec.progress_comment
769 ,p_brief_overview => l_working_dlvr_rec.progress_description
770 ,p_actual_finish_date => l_working_dlvr_rec.actual_finish_date
771 ,p_record_version_number => l_working_dlvr_rec.percomp_record_version_number
772 ,p_pm_product_code => p_pm_product_code
773 ,p_structure_type => 'WORKPLAN'
774 ,x_return_status => l_return_status
775 ,x_msg_count => l_msg_count
776 ,x_msg_data => l_msg_data
777 );
778 -- Bug 4632744 : Added Return Status check
779 IF l_return_status <> 'S' THEN
780 raise FND_API.G_EXC_ERROR;
781 END IF;
782 END LOOP;
783 END IF ; -- p_calling_module='TEAM_MEM_HOME'
784 --end add by rtarway for BUG 4085882
785
786 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
787 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,p_object_version_id,p_object_type); -- Bug 3784904
788 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
789
790 --bug 3824042
791 SELECT project_currency_code, projfunc_currency_code
792 INTO l_prj_currency_code, l_prjfunc_currency_code
793 FROM pa_projects_all WHERE project_id = p_project_id;
794
795 IF g1_debug_mode = 'Y' THEN
796 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_structure_sharing_code='||l_structure_sharing_code, x_Log_Level=> 3);
797 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_assignment_exists='||l_assignment_exists, x_Log_Level=> 3);
798 END IF;
799
800
801 l_element_struc_type := p_structure_type;
802
803 IF p_structure_type = 'FINANCIAL' --maansari: fpm changes
804 THEN
805 IF ( p_est_remaining_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
806 and p_est_remaining_effort IS NOT NULL
807 ) OR
808 ( p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM --BUG 4368945, rtarway p_actual_work_quantity should be checked
809 and --p_est_remaining_effort is not null ) OR
810 p_actual_work_quantity IS NOT NULL
811 ) OR
812 ( p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
813 and p_actual_effort IS NOT NULL
814 )
815 THEN
816 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
817 ,p_msg_name => 'PA_TP_CANT_NTER_ACT_4FN_STR');
818 x_msg_data := 'PA_TP_CANT_NTER_ACT_4FN_STR';
819 x_return_status := 'E';
820 RAISE FND_API.G_EXC_ERROR;
821 END IF;
822 END IF;
823 /* reverted 14602604
824 -- Bug14602604 Begin
825 -- If Calling module is AMG and workplan is version disabled, then throw a error
826 -- message.
827 IF ( PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'N'
828 AND p_calling_module = 'AMG'
829 AND NVL(PA_FP_CALC_PLAN_PKG.g_is_wp_quantity_changed,'N') = 'N' AND p_structure_type = 'WORKPLAN')
830 THEN
831 IF ( p_est_remaining_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
832 and p_est_remaining_effort IS NOT NULL)
833 THEN
834 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
835 ,p_msg_name => 'PA_WP_VD_CANT_UPDATE_ETC');
836 x_msg_data := 'PA_WP_VD_CANT_UPDATE_ETC';
837 x_return_status := 'E';
838 RAISE FND_API.G_EXC_ERROR;
839 END IF;
840 END IF;
841 -- Bug14602604 End
842 */
843 IF p_object_type = 'PA_TASKS'
844 THEN
845 -- 4490532 : Changed from IS_LOWEST_TASK to is_summary_task_or_structure
846 --l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_object_version_id );
847 --ELSE
848 --l_lowest_level_task := 'N';
849 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_object_version_id) = 'Y' THEN
850 l_lowest_level_task := 'N';
851 ELSE
852 l_lowest_level_task := 'Y';
853 END IF;
854 END IF;
855
856 l_task_status2 := PA_PROGRESS_UTILS.get_system_task_status( p_task_status );
857 l_task_status2_temp := l_task_status2; -- Bug#5374114
858 l_task_status_temp := p_task_status; -- Bug#5374114
859
860 ---4457403, added begin/end block to handle no_data_found exception
861 BEGIN
862 l_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
863 l_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
864 EXCEPTION
865 WHEN OTHERS THEN
866 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
867 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
868 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
869 x_return_status := 'E';
870 x_msg_count := fnd_msg_pub.count_msg;
871 RAISE FND_API.G_EXC_ERROR;
872 END;
873
874 IF g1_debug_mode = 'Y' THEN
875 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
876 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After deriving PA/GL Date l_pa_period_name='||l_pa_period_name||' l_gl_period_name='||l_gl_period_name, x_Log_Level=> 3);
877 END IF;
878
879 --bug 3879461 --maansari
880 --check and delete for any other working version record.
881 -- Amit : This code is not required as l_db_action will switch mode to update and the existing working record will be updated
882 IF p_action = 'SAVE' AND p_structure_type = 'WORKPLAN'
883 THEN
884 DELETE FROM pa_percent_completes
885 WHERE project_id= p_project_id
886 AND object_id = p_object_id
887 AND published_flag = 'N'
888 --AND date_computed <> p_as_of_date --bug 4185364, delete all the working records
889 AND structure_type = p_structure_type
890 ;
891
892 DELETE FROM pa_progress_rollup
893 WHERE project_id= p_project_id
894 AND object_id = p_object_id
895 AND current_flag = 'W'
896 --AND as_of_date <> p_as_of_date --bug 4185364, delete all the working records
897 AND structure_type = p_structure_type
898 AND structure_version_id is null
899 ;
900 END IF;
901
902 --This code is required is PUBLISH mode to delete working progress records on previous dates.
903 IF p_action = 'PUBLISH' AND p_structure_type = 'WORKPLAN'
904 THEN
905 DELETE /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N6)*/ FROM pa_percent_completes -- added hint for bug 16325523
906 WHERE project_id= p_project_id
907 AND object_id = p_object_id
908 AND published_flag = 'N'
909 AND date_computed <= p_as_of_date --- 4245168
910 AND structure_type = p_structure_type
911 ;
912
913 DELETE FROM pa_progress_rollup
914 WHERE project_id= p_project_id
915 AND object_id = p_object_id
916 AND current_flag = 'W'
917 AND as_of_date < p_as_of_date
918 AND structure_type = p_structure_type
919 AND structure_version_id is null
920 ;
921 END IF;
922
923 --bug 3879461
924
925 IF p_object_type = 'PA_STRUCTURES' AND p_structure_type = 'FINANCIAL'
926 --bug 3944208. l_task_id will never be equal to 0 bcoz we there is a different api for financial progress.
927 THEN
928 l_task_id := 0;
929 ELSE
930 l_task_id := p_object_id;
931 END IF;
932
933 ---- if status is CANCELLED
934 IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_object_id)) = 'CANCELLED'
935 AND p_progress_mode <> 'BACKDATED'
936 AND l_element_struc_type = 'WORKPLAN'
937 THEN
938 IF p_pm_product_code = 'MSPROJECT' OR p_calling_module <> 'AMG' --Bug:14537482
939 THEN
940 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
941 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL_MSP'
942 ,p_token1 => 'TASK_NAME'
943 ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
944 ,p_token2 => 'TASK_NUMBER'
945 ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
946 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
947 x_return_status := 'E';
948 RAISE FND_API.G_EXC_ERROR;
949 ELSE
950 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
951 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL_AMG'
952 ,p_token1 => 'TASK_ID'
953 ,p_value1 => p_object_id
954 );
955 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
956 x_return_status := 'E';
957 RAISE FND_API.G_EXC_ERROR;
958 END IF;
959 END IF;
960 ---- if status is CANCELLED
961
962
963 ---- call a procedure to get all the DEFAULTS
964 IF l_element_struc_type = 'WORKPLAN'
965 THEN
966 IF g1_debug_mode = 'Y' THEN
967 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling get_progress_defaults', x_Log_Level=> 3);
968 END IF;
969
970 PA_PROGRESS_UTILS.get_progress_defaults(
971 p_project_id => p_project_id
972 ,p_object_version_id => p_object_version_id
973 ,p_object_type => p_object_type
974 ,p_object_id => p_object_id
975 ,p_as_of_date => p_as_of_date
976 ,x_wq_actual_entry_code => l_actual_wq_entry_code
977 ,x_wq_enabled_flag => l_wq_enabled_flag
978 ,x_effort_enabled_flag => l_est_remaining_eff_flag
979 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
980 ,x_percent_comp_enabled_flag => l_percent_complete_flag
981 ,x_progress_entry_enable_flag => l_progress_entry_enable_flag
982 ,x_allow_collab_prog_entry => l_allow_collab_prog_entry -- FPM Development Bug 3420093
983 ,x_allw_phy_prcnt_cmp_overrides => l_allw_phy_prcnt_cmp_overrides -- FPM Development Bug 3420093
984 ,x_task_weight_basis_code => l_task_weight_basis_code
985 );
986
987 IF g1_debug_mode = 'Y' THEN
988 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_actual_wq_entry_code='||l_actual_wq_entry_code, x_Log_Level=> 3);
989 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_wq_enabled_flag='||l_wq_enabled_flag, x_Log_Level=> 3);
990 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_est_remaining_eff_flag='||l_est_remaining_eff_flag, x_Log_Level=> 3);
991 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_base_percent_comp_deriv_code='||l_base_percent_comp_deriv_code, x_Log_Level=> 3);
992 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
993 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_progress_entry_enable_flag='||l_progress_entry_enable_flag, x_Log_Level=> 3);
994 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_allow_collab_prog_entry='||l_allow_collab_prog_entry, x_Log_Level=> 3);
995 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_allw_phy_prcnt_cmp_overrides='||l_allw_phy_prcnt_cmp_overrides, x_Log_Level=> 3);
996 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_task_weight_basis_code='||l_task_weight_basis_code, x_Log_Level=> 3);
997 END IF;
998
999 ----- No PRPGRESS
1000 IF NVL( l_progress_entry_enable_flag, 'N' ) = 'N' and p_object_type = 'PA_TASKS'
1001 THEN
1002 IF p_pm_product_code = 'MSPROJECT'
1003 THEN
1004 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1005 ,p_msg_name => 'PA_TP_CANT_ENTER_PROG_MSP'
1006 ,p_token1 => 'TASK_NAME'
1007 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1008 ,p_token2 => 'TASK_NUMBER'
1009 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1010 ,p_token3 => 'PROJECT_NAME'
1011 ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1012 ,p_token4 => 'PROJECT_NUMBER'
1013 ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id));
1014 x_msg_data := 'PA_TP_CANT_ENTER_PROG';
1015 x_return_status := 'E';
1016 RAISE FND_API.G_EXC_ERROR;
1017 ELSE
1018 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1019 ,p_msg_name => 'PA_TP_CANT_ENTER_PROG_AMG'
1020 ,p_token1 => 'TASK_ID'
1021 ,p_value1 => p_object_id
1022 ,p_token2 => 'PROJECT_ID'
1023 ,p_value2 => p_project_id);
1024 x_msg_data := 'PA_TP_CANT_ENTER_PROG';
1025 x_return_status := 'E';
1026 RAISE FND_API.G_EXC_ERROR;
1027 END IF;
1028 END IF;
1029 ----- No PRPGRESS
1030
1031 ----- Wrong MODE
1032 IF p_progress_mode not in ( 'BACKDATED','FUTURE' )
1033 THEN
1034 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1035 ,p_msg_name => 'PA_TP_WRONG_PRG_MODE4');
1036 x_msg_data := 'PA_TP_WRONG_PRG_MODE4';
1037 x_return_status := 'E';
1038 RAISE FND_API.G_EXC_ERROR;
1039 END IF;
1040 ----- Wrong MODE
1041
1042 ----- Wrong DATE
1043 IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
1044 THEN
1045 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1046 ,p_msg_name => 'PA_TP_INV_AOD'
1047 ,p_token1 => 'AS_OF_DATE'
1048 ,p_value1 => p_as_of_date);
1049 x_msg_data := 'PA_TP_INV_AOD';
1050 x_return_status := 'E';
1051 RAISE FND_API.G_EXC_ERROR;
1052 END IF;
1053 ----- Wrong DATE
1054
1055 ----- Wrong PROGRESS STATUS
1056 IF p_progress_status_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_progress_status_code IS NULL
1057 THEN
1058 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1059 ,p_msg_name => 'PA_TP_INV_PRG_STAT');
1060 x_msg_data := 'PA_TP_INV_PRG_STAT';
1061 x_return_status := 'E';
1062 RAISE FND_API.G_EXC_ERROR;
1063 END IF;
1064 ----- Wrong PROGRESS STATUS
1065 --Added by rtarway, for BUG 3819619
1066
1067 IF (p_calling_module = 'AMG')
1068 THEN
1069 BEGIN
1070 SELECT 'x' INTO l_dummy
1071 FROM pa_project_statuses
1072 WHERE status_type = 'PROGRESS'
1073 AND project_status_code = p_progress_status_code;
1074 EXCEPTION
1075 WHEN NO_DATA_FOUND THEN
1076 IF p_pm_product_code = 'MSPROJECT'
1077 THEN
1078 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1079 ,p_msg_name => 'PA_TP_INV_PRG_STAT_MSP'
1080 ,p_token1 => 'PROG_STATUS'
1081 ,p_value1 => p_progress_status_code
1082 ,p_token2 => 'TASK_NAME'
1083 ,p_value2 => PA_TASK_UTILS.get_task_name(l_task_id)
1084 ,p_token3 => 'TASK_NUMBER'
1085 ,p_value3 => PA_TASK_UTILS.get_task_number(l_task_id)
1086 ,p_token4 => 'PROJECT_NAME'
1087 ,p_value4 => PA_TASK_UTILS.get_project_name(p_project_id)
1088 ,p_token5 => 'PROJECT_NUMBER'
1089 ,p_value5 => PA_TASK_UTILS.get_project_number(p_project_id));
1090 x_msg_data := 'PA_TP_INV_PRG_STAT';
1091 x_return_status := 'E';
1092 RAISE FND_API.G_EXC_ERROR;
1093 ELSE
1094 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1095 p_msg_name => 'PA_TP_INV_PRG_STAT_AMG'
1096 ,p_token1 => 'PROG_STATUS'
1097 ,p_value1 => p_progress_status_code
1098 ,p_token2 => 'TASK_ID'
1099 ,p_value2 => l_task_id
1100 ,p_token3 => 'PROJECT_ID'
1101 ,p_value3 => p_project_id
1102 );
1103 x_msg_data := 'PA_TP_INV_PRG_STAT';
1104 x_return_status := FND_API.G_RET_STS_ERROR;
1105 RAISE FND_API.G_EXC_ERROR;
1106 END IF;
1107 END;
1108 END IF;
1109 --End Add for BUG 3819619
1110
1111 ----- Wrong STATUS
1112 -- Bug 4429929 : Added OR condition below
1113 IF ((p_task_status = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_status IS NULL)OR(PA_PROGRESS_UTILS.get_system_task_status(p_task_status)= 'CANCELLED'))
1114 THEN
1115 IF p_object_type = 'PA_TASKS'
1116 THEN
1117 IF p_pm_product_code = 'MSPROJECT'
1118 THEN
1119 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1120 ,p_msg_name => 'PA_TP_INV_TSK_STAT_MSP'
1121 ,p_token1 => 'TASK_NAME'
1122 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1123 ,p_token2 => 'TASK_NUMBER'
1124 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1125 x_msg_data := 'PA_TP_INV_TSK_STAT';
1126 x_return_status := 'E';
1127 RAISE FND_API.G_EXC_ERROR;
1128 ELSE
1129 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1130 ,p_msg_name => 'PA_TP_INV_TSK_STAT_AMG'
1131 ,p_token1 => 'TASK_ID'
1132 ,p_value1 => p_object_id
1133 );
1134 x_msg_data := 'PA_TP_INV_TSK_STAT';
1135 x_return_status := 'E';
1136 RAISE FND_API.G_EXC_ERROR;
1137 END IF;
1138 END IF;
1139 END IF;
1140 ----- Wrong STATUS
1141 END IF; --<< l_element_struc_type >>
1142
1143
1144 IF (p_actual_work_quantity = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1145 --BUG 4368945, rtarway, should also be checked for null as AMG can pass it as null
1146 OR p_actual_work_quantity is null)
1147 THEN
1148 l_actual_work_quantity := 0;
1149 ELSE
1150 --bug 4368945 , rtarway, added check for -ve WQ
1151 IF (p_actual_work_quantity < 0) THEN
1152 IF p_pm_product_code = 'MSPROJECT'
1153 THEN
1154 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1155 ,p_msg_name => 'PA_TP_NO_NEG_WQ_MSP'
1156 ,p_token1 => 'TASK_NAME'
1157 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1158 ,p_token2 => 'TASK_NUMBER'
1159 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1160 x_msg_data := 'PA_TP_NO_NEG_WQ';
1161 x_return_status := 'E';
1162 RAISE FND_API.G_EXC_ERROR;
1163 ELSE
1164 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1165 ,p_msg_name => 'PA_TP_NO_NEG_WQ_AMG'
1166 ,p_token1 => 'TASK_ID'
1167 ,p_value1 => p_object_id);
1168 x_msg_data := 'PA_TP_NO_NEG_WQ';
1169 x_return_status := 'E';
1170 RAISE FND_API.G_EXC_ERROR;
1171 END IF;
1172 ELSE
1173 --bug 3824042, round wq upto 2 decimal places
1174 --l_actual_work_quantity := nvl(p_actual_work_quantity,0);
1175 l_actual_work_quantity := nvl(round(p_actual_work_quantity,2),0);
1176 END IF;
1177 END IF;
1178
1179 IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1180 ----- OR p_est_remaining_effort < 0 ---4378391 (5726773 allow neg ETC)
1181 THEN
1182 l_est_remaining_effort := 0;
1183 ELSE
1184 --bug 3824042
1185 --l_est_remaining_effort := nvl(p_est_remaining_effort,0);
1186 l_est_remaining_effort := nvl(round(p_est_remaining_effort,5),0);
1187 END IF;
1188
1189 /* 5726773
1190 --3779387
1191 IF l_est_remaining_effort < 0
1192 THEN
1193 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1194 ,p_msg_name => 'PA_TP_NO_NEG_ETC');
1195 x_msg_data := 'PA_TP_NO_NEG_ETC';
1196 x_return_status := 'E';
1197 RAISE FND_API.G_EXC_ERROR;
1198 END IF;
1199 --3779387
1200 */
1201
1202 --maansari: fpm changes 3420093
1203 IF p_actual_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1204 THEN
1205 l_actual_effort := 0;
1206 ELSE
1207 --bug 3824042
1208 --l_actual_effort := nvl(p_actual_effort,0);
1209 l_actual_effort := nvl(round(p_actual_effort,5),0);
1210 END IF;
1211
1212 /*3970229 --3779387 negative actuals are allowed */
1213
1214 --maansari4/5
1215 IF ( p_planned_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM or
1216 p_planned_effort IS NULL or
1217 p_planned_effort = 0 )
1218 THEN
1219 l_planned_effort := 1;
1220 ELSE
1221 l_planned_effort := nvl(p_planned_effort,0);
1222 END IF;
1223 --maansari4/5
1224
1225 IF p_planned_cost = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1226 THEN
1227 l_planned_cost := 0;
1228 ELSE
1229 l_planned_cost := nvl(p_planned_cost,0);
1230 END IF;
1231 --End maansari:
1232
1233
1234 IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1235 OR p_percent_complete is null
1236 THEN
1237 l_percent_complete := 0;
1238 ELSE
1239 l_percent_complete := round(p_percent_complete,8); --Bug 6854114
1240 END IF;
1241
1242 IF p_scheduled_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1243 THEN
1244 l_scheduled_start_date := null;
1245 ELSE
1246 l_scheduled_start_date := p_scheduled_start_date;
1247 END IF;
1248
1249 IF p_scheduled_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1250 THEN
1251 l_scheduled_finish_date := null;
1252 ELSE
1253 l_scheduled_finish_date := p_scheduled_finish_date;
1254 END IF;
1255
1256 IF p_actual_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1257 THEN
1258 l_actual_start_date := null;
1259 ELSE
1260 l_actual_start_date := p_actual_start_date;
1261 END IF;
1262
1263 IF p_actual_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1264 THEN
1265 l_actual_finish_date := null;
1266 ELSE
1267 l_actual_finish_date := p_actual_finish_date;
1268 END IF;
1269
1270 IF p_estimated_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1271 THEN
1272 l_estimated_start_date := null;
1273 ELSE
1274 l_estimated_start_date := p_estimated_start_date;
1275 END IF;
1276
1277 IF p_estimated_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1278 THEN
1279 l_estimated_finish_date := null;
1280 ELSE
1281 l_estimated_finish_date := p_estimated_finish_date;
1282 END IF;
1283
1284 IF p_task_status = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1285 THEN
1286 l_task_status := null;
1287 ELSE
1288 l_task_status := p_task_status;
1289 END IF;
1290
1291 IF (p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ) THEN
1292 l_pm_product_code := NULL;
1293 ELSE
1294 l_pm_product_code := p_pm_product_code;
1295 END IF;
1296
1297 -- Bug 3608422 : Changes Begin
1298 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
1299 FETCH cur_check_published_version INTO l_published_structure;
1300 CLOSE cur_check_published_version;
1301
1302 IF l_published_structure = 'Y'
1303 OR p_structure_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1304 OR p_prog_fom_wp_flag = 'N' --Not a working workplan progress.
1305 THEN
1306 l_structure_version_id := null;
1307 ELSE
1308 l_structure_version_id := p_structure_version_id;
1309 END IF;
1310
1311 -- Bug 3608422 : Changes End
1312
1313 IF g1_debug_mode = 'Y' THEN
1314 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1315 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
1316 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
1317 END IF;
1318
1319
1320 IF L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'N'
1321 AND l_element_struc_type = 'WORKPLAN'
1322 AND p_calling_module = 'AMG' -- Bug 3807745
1323 THEN
1324 IF l_percent_complete > 0
1325 THEN
1326 --You cannot override percent_complete
1327 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1328 p_msg_name => 'PA_TP_NO_PC_OVRIDE');
1329 x_msg_data := 'PA_TP_NO_PC_OVRIDE';
1330 x_return_status := 'E';
1331 -- RAISE FND_API.G_EXC_ERROR;
1332 l_tp_pcc_est_disabl := 'Y';
1333 END IF;
1334 END IF;
1335
1336 IF (l_percent_complete < 0 or l_percent_complete > 100) THEN
1337 IF p_pm_product_code = 'MSPROJECT'
1338 THEN
1339 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1340 ,p_msg_name => 'PA_PERC_COMP_INV_MSP'
1341 ,p_token1 => 'TASK_NAME'
1342 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1343 ,p_token2 => 'TASK_NUMBER'
1344 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1345 x_msg_data := 'PA_PERC_COMP_INV';
1346 x_return_status := 'E';
1347 RAISE FND_API.G_EXC_ERROR;
1348 ELSE
1349 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1350 ,p_msg_name => 'PA_PERC_COMP_INV_AMG'
1351 ,p_token1 => 'TASK_ID'
1352 ,p_value1 => p_object_id
1353 );
1354 x_msg_data := 'PA_PERC_COMP_INV';
1355 x_return_status := 'E';
1356 RAISE FND_API.G_EXC_ERROR;
1357 END IF;
1358 END IF;
1359
1360 --Get the SCHEDULE DATES for lowest level task.
1361 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1362 AND l_element_struc_type = 'WORKPLAN'
1363 THEN
1364 OPEN cur_pa_proj_sch;
1365 FETCH cur_pa_proj_sch INTO l_scheduled_start_date, l_scheduled_finish_date;
1366 CLOSE cur_pa_proj_sch;
1367 END IF;
1368 --Get the SCHEDULE DATES for lowest level task.
1369
1370 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1371 THEN
1372 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1373 ,p_msg_name => l_error_message_code);
1374 x_msg_data := l_error_message_code;
1375 x_return_status := 'E';
1376 RAISE FND_API.G_EXC_ERROR;
1377 END IF;
1378
1379 IF p_progress_mode <> 'BACKDATED'
1380 AND l_element_struc_type = 'WORKPLAN'
1381 THEN
1382 ---- this will do for summary tasks also ???????????
1383 IF l_percent_complete = 100
1384 THEN
1385 l_est_remaining_effort := 0;
1386 END IF;
1387 END IF;
1388
1389 IF (l_percent_complete < 100 AND l_percent_complete_flag = 'Y')
1390 THEN
1391 l_actual_finish_date := to_date(null);
1392 END IF;
1393
1394 IF g1_debug_mode = 'Y' THEN
1395 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Going to check status and start date, finish dates combination', x_Log_Level=> 3);
1396 END IF;
1397
1398
1399 --Added by rtarway for BUG 3819619, This will be executed in case user passed invalid project_status_code as task_status
1400 IF ( p_calling_module = 'AMG' AND (l_task_status2 IS NULL or l_task_status2 = '') )
1401 THEN
1402 IF p_object_type = 'PA_TASKS'
1403 THEN
1404 IF p_pm_product_code = 'MSPROJECT'
1405 THEN
1406 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1407 ,p_msg_name => 'PA_TP_INV_TSK_STAT_MSP'
1408 ,p_token1 => 'TASK_NAME'
1409 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1410 ,p_token2 => 'TASK_NUMBER'
1411 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1412 x_msg_data := 'PA_TP_INV_TSK_STAT';
1413 x_return_status := 'E';
1414 RAISE FND_API.G_EXC_ERROR;
1415 ELSE
1416 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1417 ,p_msg_name => 'PA_TP_INV_TSK_STAT_AMG'
1418 ,p_token1 => 'TASK_ID'
1419 ,p_value1 => p_object_id
1420 );
1421 x_msg_data := 'PA_TP_INV_TSK_STAT';
1422 x_return_status := 'E';
1423 RAISE FND_API.G_EXC_ERROR;
1424 END IF;
1425 END IF;
1426 END IF;
1427
1428 IF l_element_struc_type = 'WORKPLAN'
1429 THEN
1430 IF l_est_remaining_eff_flag = 'N'
1431 THEN
1432
1433 /* Begin fix for Bug # 4068245. */
1434 IF ((l_actual_effort > 0) and (l_structure_sharing_code in ('SPLIT_MAPPING', 'SPLIT_NO_MAPPING') or l_structure_sharing_code is null))-- Added OR condition for Bug 4767821
1435 THEN
1436 --You cannot enter actual effort.
1437 IF p_pm_product_code = 'MSPROJECT'
1438 THEN
1439 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1440 ,p_msg_name => 'PA_TP_ACT_EFF_DISABL_MSP'
1441 ,p_token1 => 'TASK_NAME'
1442 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1443 ,p_token2 => 'TASK_NUMBER'
1444 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1445 ,p_token3 => 'PROJECT_NAME'
1446 ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1447 ,p_token4 => 'PROJECT_NUMBER'
1448 ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1449 );
1450 x_msg_data := 'PA_TP_ACT_EFF_DISABL';
1451 x_return_status := 'E';
1452 l_tp_pcc_est_disabl := 'Y';
1453 ELSE
1454 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1455 ,p_msg_name => 'PA_TP_ACT_EFF_DISABL_AMG'
1456 ,p_token2 => 'TASK_ID'
1457 ,p_value2 => p_object_id
1458 ,p_token3 => 'PROJECT_ID'
1459 ,p_value4 => p_project_id);
1460 x_msg_data := 'PA_TP_ACT_EFF_DISABL';
1461 x_return_status := 'E';
1462 l_tp_pcc_est_disabl := 'Y';
1463 END IF;
1464 END IF;
1465
1466 /* Begin commenting out code to fix Bug # 4086574.
1467
1468 The following validataion has been commented out because of the following reasons:
1469 1). This validataion is redundant as there is no way a user can enter an etc effort value
1470 from self service when etc effort collection is disabled, since the etc effort will be
1471 displayed on non-editable fields.
1472 2). This validation throws an unnecessary error when there exists a non-zero value of etc effort
1473 for a task with etc effort collection disabled as a result of etc effort being defaulted as
1474 (planned effort - actual effort) or as a result of etc effort being rolled-up from sub-tasks
1475 or assignments.
1476
1477 IF (( l_est_remaining_effort > 0) and (l_structure_sharing_code in ('SHARE_FULL', 'SHARE_PARTIAL')))
1478 THEN
1479 --You cannot enter etc effort.
1480 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1481 p_msg_name => 'PA_TP_EST_REM_EFF_DISABL');
1482 x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1483 x_return_status := 'E';
1484 l_tp_pcc_est_disabl := 'Y';
1485 END IF;
1486
1487 End commenting out code to fix Bug # 4086574. */
1488
1489 /* End fix for Bug # 4068245. */
1490
1491 ELSE
1492 --perform the following only if its not called from Self Service
1493 --IF p_calling_module <> 'SELF_SERVICE' --maansari4/4
1494 IF p_calling_module = 'AMG' --4085882, rtarway
1495 THEN
1496 IF NVL( l_lowest_level_task, 'N' ) = 'N' AND (l_structure_sharing_code = 'SHARE_FULL') AND --Added for Bug# 6944034
1497 ( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1498 THEN
1499 --You cannot enter actual or ETC effort at summary level.
1500 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1501 p_msg_name => 'PA_TP_CANT_NTR_EFF_SUMMRY');
1502 x_msg_data := 'PA_TP_CANT_NTR_EFF_SUMMRY';
1503 x_return_status := 'E';
1504 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1505 l_tp_pcc_est_disabl := 'Y';
1506 ELSIF ( l_assignment_exists = 'Y' ) -- Bug 3784904 : Changed from N to Y
1507 AND ( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1508 THEN
1509 --You cannot effort when assignments exists for the task.
1510 IF p_pm_product_code = 'MSPROJECT'
1511 THEN
1512 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1513 ,p_msg_name => 'PA_TP_NO_EFF_WITH_ASSN_MSP'
1514 ,p_token1 => 'TASK_NAME'
1515 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1516 ,p_token2 => 'TASK_NUMBER'
1517 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1518 );
1519 x_msg_data := 'PA_TP_NO_EFF_WITH_ASSN';
1520 x_return_status := 'E';
1521 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1522 l_tp_pcc_est_disabl := 'Y';
1523 ELSE
1524 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1525 ,p_msg_name => 'PA_TP_NO_EFF_WITH_ASSN_AMG'
1526 ,p_token1 => 'TASK_ID'
1527 ,p_value1 => p_object_id);
1528 x_msg_data := 'PA_TP_NO_EFF_WITH_ASSN';
1529 x_return_status := 'E';
1530 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1531 l_tp_pcc_est_disabl := 'Y';
1532 END IF;
1533 ELSIF NVL( l_lowest_level_task, 'N' ) = 'N'
1534 AND l_structure_sharing_code = 'SHARE_FULL' --Bug 3586648
1535 AND ( l_actual_effort > 0 )
1536 THEN
1537 --You cannot enter actual effort for shared structures.
1538 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1539 p_msg_name => 'PA_TP_NO_ACT_EFF_4SH_STR');
1540 x_msg_data := 'PA_TP_NO_ACT_EFF_4SH_STR';
1541 x_return_status := 'E';
1542 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1543 l_tp_pcc_est_disabl := 'Y';
1544 END IF;
1545 END IF; -- IF p_calling_module <> 'SELF_SERVICE' --maansari4/4
1546 END IF; --l_est_remaining_eff_flag = 'N'
1547 END IF; --l_element_struc_type
1548
1549 IF x_return_status = 'E' THEN -- Bug 3784904
1550 RAISE FND_API.G_EXC_ERROR;
1551 END IF;
1552 --End maansari: fpm changes
1553 ----- End of validation
1554
1555 /* Bug 2747143: Display PA_TP_EST_REM_EFF_DISABL and PA_TP_PCC_DISABL together
1556 if both are disabled while uploading from MSP */
1557 IF l_est_remaining_eff_flag = 'N'
1558 AND l_element_struc_type = 'WORKPLAN'
1559 AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1560 AND p_calling_module = 'AMG' -- Bug 3807745
1561 THEN
1562 IF l_est_remaining_effort > 0
1563 THEN
1564 --You cannot enter estimated remaing effort.
1565 IF p_pm_product_code = 'MSPROJECT'
1566 THEN
1567 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1568 ,p_msg_name => 'PA_TP_EST_REM_EFF_DISABL_MSP'
1569 ,p_token1 => 'TASK_NAME'
1570 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1571 ,p_token2 => 'TASK_NUMBER'
1572 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1573 ,p_token3 => 'PROJECT_NAME'
1574 ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1575 ,p_token4 => 'PROJECT_NUMBER'
1576 ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1577 );
1578 x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1579 x_return_status := 'E';
1580 --RAISE FND_API.G_EXC_ERROR;
1581 l_tp_pcc_est_disabl := 'Y';
1582 ELSE
1583 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1584 ,p_msg_name => 'PA_TP_EST_REM_EFF_DISABL_AMG'
1585 ,p_token1 => 'TASK_ID'
1586 ,p_value1 => p_object_id
1587 ,p_token2 => 'PROJECT_ID'
1588 ,p_value2 => p_project_id);
1589 x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1590 x_return_status := 'E';
1591 --RAISE FND_API.G_EXC_ERROR;
1592 l_tp_pcc_est_disabl := 'Y';
1593 END IF;
1594 END IF;
1595 END IF;
1596
1597 IF l_percent_complete_flag = 'N'
1598 AND l_element_struc_type = 'WORKPLAN'
1599 AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1600 AND p_calling_module = 'AMG' -- Bug 3807745
1601 THEN
1602 IF l_percent_complete > 0
1603 THEN
1604 --You cannot enter percent_complete
1605 IF p_pm_product_code = 'MSPROJECT'
1606 THEN
1607 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1608 ,p_msg_name => 'PA_TP_PCC_DISABL_MSP'
1609 ,p_token1 => 'TASK_NAME'
1610 ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1611 ,p_token2 => 'TASK_NUMBER'
1612 ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1613 ,p_token3 => 'PROJECT_NAME'
1614 ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1615 ,p_token4 => 'PROJECT_NUMBER'
1616 ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1617 );
1618 x_msg_data := 'PA_TP_PCC_DISABL';
1619 x_return_status := 'E';
1620 -- RAISE FND_API.G_EXC_ERROR;
1621 l_tp_pcc_est_disabl := 'Y';
1622 ELSE
1623 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1624 ,p_msg_name => 'PA_TP_PCC_DISABL_AMG'
1625 ,p_token1 => 'TASK_ID'
1626 ,p_value1 => p_object_id
1627 ,p_token2 => 'PROJECT_ID'
1628 ,p_value2 => p_project_id);
1629 x_msg_data := 'PA_TP_PCC_DISABL';
1630 x_return_status := 'E';
1631 -- RAISE FND_API.G_EXC_ERROR;
1632 l_tp_pcc_est_disabl := 'Y';
1633 END IF;
1634 END IF;
1635 END IF;
1636
1637 -- Raise in case of any of the above two errors
1638 IF l_tp_pcc_est_disabl = 'Y'
1639 THEN
1640 RAISE FND_API.G_EXC_ERROR;
1641 END IF;
1642
1643 -- Bug 3606627 : AMG Changes, Getting planned values
1644 IF p_calling_module = 'AMG' THEN
1645 BEGIN
1646 --bug 3824042
1647 SELECT
1648 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
1649 nvl(pfxat.prj_brdn_cost,0) planned_cost, nvl(pfxat.labor_hours,0)+nvl(pfxat.equipment_hours,0) planned_effort
1650 INTO l_planned_cost, l_planned_effort
1651 FROM pji_fm_xbs_accum_tmp1 pfxat
1652 WHERE pfxat.project_id = p_project_id
1653 AND pfxat.struct_version_id = p_structure_version_id
1654 AND pfxat.project_element_id = p_object_id
1655 AND pfxat.calendar_type = 'A'
1656 AND pfxat.plan_version_id > 0
1657 AND pfxat.txn_currency_code is null;
1658 EXCEPTION
1659 WHEN OTHERS THEN
1660 null;
1661 END;
1662 END IF;
1663
1664
1665 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1666 AND l_element_struc_type = 'WORKPLAN'
1667 THEN
1668 IF l_wq_enabled_flag = 'Y'
1669 THEN
1670 l_last_cumulative_wrk_qty := PA_PROGRESS_UTILS.get_last_cumulative(
1671 p_project_id => p_project_id
1672 ,p_object_id => p_object_id
1673 ,p_object_type => p_object_type
1674 ,p_as_of_date => p_as_of_date );
1675 IF l_actual_wq_entry_code = 'INCREMENTAL'
1676 THEN
1677 --calculate cumulative;
1678 l_cumulative_work_qty := l_actual_work_quantity + NVL( l_last_cumulative_wrk_qty, 0 );
1679 l_incremental_work_qty := l_actual_work_quantity;
1680
1681 IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 3614860
1682 THEN
1683 l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1684 p_task_id => p_object_id
1685 ,p_incr_work_qty => l_incremental_work_qty
1686 ,p_cuml_work_qty => l_last_cumulative_wrk_qty
1687 ,p_est_remaining_effort => l_est_remaining_effort
1688 );
1689 END IF;
1690 ELSIF l_actual_wq_entry_code = 'CUMULATIVE'
1691 THEN
1692 --calculate incremental;
1693 l_incremental_work_qty := l_actual_work_quantity - NVL( l_last_cumulative_wrk_qty, 0 );
1694 l_cumulative_work_qty := l_actual_work_quantity;
1695 IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 bug 3614860
1696 THEN
1697 l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1698 p_task_id => p_object_id
1699 ,p_incr_work_qty => l_incremental_work_qty
1700 ,p_cuml_work_qty => l_cumulative_work_qty
1701 ,p_est_remaining_effort => l_est_remaining_effort
1702 );
1703 END IF;
1704 END IF;
1705 END IF;
1706
1707 IF l_est_remaining_eff_flag = 'Y'
1708 -- Bug 4632744 : Added COST also here. We just need to derive some % complete
1709 -- here to populate variable l_base_percent_complete.
1710 -- So that we can do status and % complete check further
1711 -- Actual and correct % compete will be calculated in partial rollup and rollup API's
1712 AND l_base_percent_comp_deriv_code in( 'EFFORT','COST') --maansari: fpm changes --bug 3784733
1713 AND p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1714 AND p_actual_effort IS NOT NULL
1715 THEN
1716 --maansari7/27 bug 3784733
1717 l_planned_effort := l_actual_effort+l_est_remaining_effort;
1718 IF l_planned_effort = 0
1719 THEN
1720 l_planned_effort := 1;
1721 END IF;
1722 l_base_percent_complete := (l_actual_effort/l_planned_effort)*100; --bug 3781922
1723 --maansari7/27 bug 3784733
1724 /* 5726773
1725 IF l_actual_effort < 0 THEN-- 4632744
1726 l_base_percent_complete := 0;
1727 END IF;
1728 */
1729 --5726773
1730 if l_base_percent_complete < 0 then
1731 l_base_percent_complete := 0;
1732 elsif l_base_percent_complete > 100 then
1733 l_base_percent_complete := 100;
1734 end if;
1735 END IF;
1736
1737 --bug 3824042, round base percent upto 2 decimal places
1738 l_base_percent_complete := round(l_base_percent_complete, 8); --Bug 6854114
1739 END IF;
1740
1741 --maansari5/6 bug3614860
1742
1743 --do not copy base pc to override pc. maansari5/21
1744 IF ( p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
1745 p_percent_complete IS NULL)
1746 AND l_percent_complete = 0
1747 THEN
1748 l_percent_complete := null;
1749 END IF;
1750
1751 ---------Added by rtarway--------------------------
1752 -- Added For Bug 3630743
1753 --It is added here so that previous checks do not get affected by the changed value of l_est_remaining_effort
1754 IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1755 AND NVL( l_lowest_level_task, 'N' ) <> 'N'
1756 AND ( PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,p_object_version_id,p_object_type) <> 'N' ) -- Bug 3784904 Changed from object_id to object_version_id
1757 AND l_element_struc_type = 'WORKPLAN'
1758 AND l_est_remaining_eff_flag <> 'N'
1759 THEN
1760 ----5726773 l_est_remaining_effort := l_planned_effort - l_actual_effort;
1761 l_est_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_planned_effort,l_actual_effort); --5726773
1762 END IF;
1763 ----------end added by rtarway for bug 3630743-----
1764
1765 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1766 THEN
1767 l_base_progress_status_code := p_progress_status_code;
1768 END IF;
1769
1770 --bug 3851528
1771 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1772 AND l_element_struc_type = 'WORKPLAN'
1773 AND l_assignment_exists = 'N'
1774 THEN
1775 --Update outdated flag back to 'Y'
1776 UPDATE pa_proj_elements
1777 SET progress_outdated_flag = 'Y'
1778 WHERE proj_element_id = p_object_id
1779 AND project_id = p_project_id
1780 AND object_type = p_object_type;
1781 END IF;
1782 --bug 3851528
1783
1784 IF l_element_struc_type = 'WORKPLAN'
1785 THEN
1786 -- Moved outside if block for bug 8277820
1787 /*l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1788 p_task_id => l_task_id
1789 ,p_project_id => p_project_id
1790 ,p_object_id => p_object_id
1791 ,p_object_type => p_object_type
1792 ,p_structure_type => p_structure_type); */
1793
1794 l_working_aod := PA_PROGRESS_UTILS.Working_version_exist(
1795 p_object_id => p_object_id -- Bug 3764224
1796 ,p_task_id => p_object_id
1797 ,p_project_id => p_project_id
1798 ,p_object_type => p_object_type
1799 ,p_as_of_date => p_as_of_date); --bug 4185364
1800 END IF;
1801
1802 -- Moved outside if block for bug 8277820
1803 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1804 p_task_id => l_task_id
1805 ,p_project_id => p_project_id
1806 ,p_object_id => p_object_id
1807 ,p_object_type => p_object_type
1808 ,p_structure_type => p_structure_type);
1809
1810
1811 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
1812 p_task_id => p_object_id
1813 ,p_object_id => p_object_id -- Bug 3764224
1814 ,p_as_of_date => p_as_of_date
1815 ,p_project_id => p_project_id
1816 ,p_object_version_id => p_object_version_id
1817 ,p_object_type => p_object_type
1818 );
1819
1820 IF g1_debug_mode = 'Y' THEN
1821 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
1822 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_last_progress_date='||l_last_progress_date, x_Log_Level=> 3);
1823 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_working_aod='||l_working_aod, x_Log_Level=> 3);
1824 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_progress_exists_on_aod='||l_progress_exists_on_aod, x_Log_Level=> 3);
1825 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
1826 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
1827 END IF;
1828
1829
1830 IF p_progress_mode = 'BACKDATED'
1831 THEN
1832 IF l_element_struc_type = 'WORKPLAN'
1833 THEN
1834 IF l_last_progress_date IS NULL
1835 THEN
1836 --Add message
1837 --You cannot create a backdated progress when there does not
1838 --exists any progress for this task.
1839 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1840 ,p_msg_name => 'PA_TP_WRONG_PRG_MODE1');
1841 x_msg_data := 'PA_TP_WRONG_PRG_MODE1';
1842 x_return_status := 'E';
1843 RAISE FND_API.G_EXC_ERROR;
1844 ELSIF p_as_of_date > l_last_progress_date -- progress exists before as of date
1845 THEN
1846 --You cannot create a backdated progress when there exists a progress
1847 --before AS_OF_DATE for this task.
1848 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1849 p_msg_name => 'PA_TP_WRONG_PRG_MODE2',
1850 p_token1 => 'AS_OF_DATE',
1851 p_value1 => l_last_progress_date );
1852 x_msg_data := 'PA_TP_WRONG_PRG_MODE2';
1853 x_return_status := 'E';
1854 RAISE FND_API.G_EXC_ERROR;
1855 ELSIF p_as_of_date < l_last_progress_date -- backdated
1856 THEN
1857 IF l_progress_exists_on_aod = 'WORKING'
1858 THEN
1859 --update the existing working progress record to publish and roll up
1860 l_db_action := 'UPDATE';
1861 ELSIF l_progress_exists_on_aod = 'N'
1862 THEN
1863 --Create a new published progress record and roll up. (if l_progress_exists_on_aod = 'PUBLISHED'
1864 --then update last progress current flag = 'N')
1865 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1866 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1867 l_db_action := 'CREATE';
1868 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1869 --You cannot create a backdated progress when there exists a progress
1870 -- on AS_OF_DATE for this task. can correct but no backdate.
1871 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1872 p_msg_name => 'PA_TP_WRONG_PRG_MODE5');
1873 x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1874 x_return_status := 'E';
1875 RAISE FND_API.G_EXC_ERROR;
1876 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is not null THEN
1877 l_db_action := 'CREATE';
1878 l_process := 'CORRECT';
1879 END IF;
1880
1881 --validate actuals
1882 IF ( l_actual_start_date IS NOT NULL AND l_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1883 -- 4533112 : It was start date again in below condition, changed it to shd be finish date here
1884 ( l_actual_finish_date IS NOT NULL AND l_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1885 ( p_actual_work_quantity IS NOT NULL AND p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM )
1886 THEN
1887 --Add message
1888 --You cannot pass actuals for backdated progress.
1889 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1890 ,p_msg_name => 'PA_TP_ACTUALS_NOT_ALLWD');
1891 x_msg_data := 'PA_TP_ACTUALS_NOT_ALLWD';
1892 x_return_status := 'E';
1893 RAISE FND_API.G_EXC_ERROR;
1894 END IF;
1895 ELSIF p_as_of_date = l_last_progress_date -- Current
1896 THEN
1897 IF l_progress_exists_on_aod = 'WORKING'
1898 THEN
1899 --update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1900 l_db_action := 'UPDATE';
1901 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1902 --You cannot create a backdated progress when there exists a progress
1903 -- on AS_OF_DATE for this task. can correct but no backdate.
1904 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1905 p_msg_name => 'PA_TP_WRONG_PRG_MODE5');
1906 x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1907 x_return_status := 'E';
1908 RAISE FND_API.G_EXC_ERROR;
1909 ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1910 THEN
1911 --Create a new working progress record. ( publish and roll it only when p_action = 'PUBLISH' )
1912 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1913 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1914 l_db_action := 'CREATE';
1915 l_process := 'CORRECT';
1916 END IF;
1917 END IF;
1918 -- Start. Added for bug 8277820
1919 ElsIf l_element_struc_type = 'FINANCIAL'
1920 THEN
1921 IF p_as_of_date < l_last_progress_date -- backdated
1922 THEN
1923
1924 IF l_progress_exists_on_aod = 'WORKING'
1925 THEN
1926 --update the existing working progress record to publish and roll up
1927 l_db_action := 'UPDATE';
1928 ELSIF l_progress_exists_on_aod = 'N'
1929 THEN
1930 --Create a new published progress record and roll up. (if l_progress_exists_on_aod = 'PUBLISHED'
1931 --then update last progress current flag = 'N')
1932 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1933 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1934 l_db_action := 'CREATE';
1935 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1936 --You cannot create a backdated progress when there exists a progress
1937 -- on AS_OF_DATE for this task. can correct but no backdate.
1938 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1939 p_msg_name => 'PA_TP_WRONG_PRG_MODE5');
1940 x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1941 x_return_status := 'E';
1942 RAISE FND_API.G_EXC_ERROR;
1943 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is not null THEN
1944 l_db_action := 'CREATE';
1945 l_process := 'CORRECT';
1946 END IF;
1947 END IF;
1948 -- End. Added for bug 8277820
1949
1950 END IF; --<< l_element_struc_type = 'WORKPLAN' >>
1951 ELSIF p_progress_mode = 'FUTURE'
1952 THEN
1953
1954 IF p_as_of_date < NVL( l_last_progress_date, p_as_of_date ) AND l_working_aod IS NULL -- progress exists after as of date
1955 AND l_element_struc_type = 'WORKPLAN' --maansari fpm changes
1956 THEN
1957 --You cannot create a future progress when there exists a progress
1958 --after AS_OF_DATE for this task.
1959 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1960 p_msg_name => 'PA_TP_WRONG_PRG_MODE3',
1961 p_token1 => 'AS_OF_DATE',
1962 p_value1 => p_as_of_date );
1963 x_msg_data := 'PA_TP_WRONG_PRG_MODE3';
1964 x_return_status := 'E';
1965 RAISE FND_API.G_EXC_ERROR;
1966 ELSE
1967 --Validate as of date
1968 -- Bug 3627315 : Check valid as of date should not be called from AMG or Task Progress Details page
1969 -- Beacuse from both the places we submit progress for all objects against one cycle date
1970 IF l_element_struc_type = 'WORKPLAN'
1971 AND p_calling_module <> 'AMG' -- Bug 3627315
1972 -- AND p_calling_module <> 'TASK_PROG_DET_PAGE' -- Bug 3627315 maansari this is not required here.
1973 AND PA_PROGRESS_UTILS.CHECK_VALID_AS_OF_DATE( p_as_of_date, p_project_id, p_object_id,p_object_type,p_object_id/*Bug 3764224 */) = 'N'
1974 AND nvl(l_last_progress_date,p_as_of_date + 1 ) <> p_as_of_date
1975 THEN
1976 --Add message
1977 --Invalid as of date
1978
1979 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1980 ,p_msg_name => 'PA_TP_INV_AOD2'
1981 ,p_token1 => 'AS_OF_DATE'
1982 ,p_value1 => p_as_of_date);
1983 x_msg_data := 'PA_TP_INV_AOD2';
1984 x_return_status := 'E';
1985 RAISE FND_API.G_EXC_ERROR;
1986 END IF;
1987
1988 IF l_progress_exists_on_aod = 'WORKING'
1989 THEN
1990 --update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1991 l_db_action := 'UPDATE';
1992 ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1993 THEN
1994 --Create a new working progress record. ( publish and roll it only when p_action = 'PUBLISH' )
1995 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1996 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1997 l_db_action := 'CREATE';
1998 IF l_working_aod IS NOT NULL --there is only one working version allowed
1999 --OR p_as_of_date = l_last_progress_date--Added by rtarway for BUG4091457
2000 OR (p_as_of_date = l_last_progress_date AND p_action = 'PUBLISH') -- BUG 4180026, for Recalc it should create new record.
2001 THEN
2002 l_db_action := 'UPDATE';
2003 END IF;
2004 END IF;
2005 END IF;
2006 END IF;
2007
2008 IF g1_debug_mode = 'Y' THEN
2009 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Validation is Over', x_Log_Level=> 3);
2010 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action='||l_db_action, x_Log_Level=> 3);
2011 END IF;
2012
2013 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2014 AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
2015 AND (l_actual_effort IS NOT NULL or l_est_remaining_effort IS NOT NULL) -- Bug 3957792
2016 AND l_assignment_exists = 'N' -- Bug 4632744
2017 THEN
2018
2019 OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
2020 FETCH c_get_resource_list_member_id
2021 INTO
2022 l_resource_assignment_id,
2023 l_resource_list_member_id,
2024 l_txn_currency_code,
2025 l_planned_quantity ,
2026 l_planned_bur_cost_txn_cur,
2027 l_planned_bur_cost_projfunc,
2028 l_planned_bur_cost_proj_cur,
2029 l_planned_raw_cost_txn_cur,
2030 l_planned_raw_cost_proj_cur,
2031 l_planned_raw_cost_projfunc,
2032 l_rbs_element_id,
2033 l_rate_based_flag,
2034 l_resource_class_code,
2035 l_budget_version_id --- 4372462
2036 ;
2037 CLOSE c_get_resource_list_member_id;
2038
2039
2040 IF g1_debug_mode = 'Y' THEN
2041 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id'||l_resource_assignment_id, x_Log_Level=> 3);
2042 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id'||l_resource_list_member_id, x_Log_Level=> 3);
2043 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code'||l_txn_currency_code, x_Log_Level=> 3);
2044 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
2045 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_txn_cur'||l_planned_bur_cost_txn_cur, x_Log_Level=> 3);
2046 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_projfunc'||l_planned_bur_cost_projfunc, x_Log_Level=> 3);
2047 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_proj_cur'||l_planned_bur_cost_proj_cur, x_Log_Level=> 3);
2048 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_txn_cur'||l_planned_raw_cost_txn_cur, x_Log_Level=> 3);
2049 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_proj_cur'||l_planned_raw_cost_proj_cur, x_Log_Level=> 3);
2050 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_projfunc'||l_planned_raw_cost_projfunc, x_Log_Level=> 3);
2051 END IF;
2052
2053 -- BEGIN: Adding code to fix Bug # 3815741.
2054
2055 --bug 4021315, call derive task assignments only if actual or etc is entered
2056 IF l_resource_list_member_id IS NULL AND l_assignment_exists = 'N'
2057 AND ( l_actual_effort <> 0 OR l_est_remaining_effort <> 0)
2058 THEN
2059 BEGIN
2060 IF g1_debug_mode = 'Y' THEN
2061 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'res list mem not found, calling derive_task_assignments', x_Log_Level=> 3);
2062 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
2063 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
2064 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_scheduled_start_date='||l_scheduled_start_date, x_Log_Level=> 3);
2065 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_scheduled_finish_date='||l_scheduled_finish_date, x_Log_Level=> 3);
2066 END IF;
2067
2068 pa_task_assignments_pvt.derive_task_assignments
2069 ( p_project_id => p_project_id
2070 ,p_task_version_id => p_object_version_id
2071 ,p_scheduled_start => l_scheduled_start_date
2072 ,p_scheduled_end => l_scheduled_finish_date
2073 ,p_resource_class_code => 'PEOPLE'
2074 ,p_resource_list_member_id => null
2075 --,p_unplanned_flag => 'N' --bug 3819694, rtarway
2076 ,p_unplanned_flag => 'Y'
2077 ,x_resource_assignment_id => l_resource_assignment_id
2078 ,x_task_version_id => l_task_version_id_out
2079 ,x_currency_code => l_txn_currency_code
2080 ,x_resource_list_member_id => l_resource_list_member_id
2081 ,x_rate_based_flag => l_rate_based_flag_x
2082 ,x_rbs_element_id => l_rbs_element_id
2083 ,x_msg_count => l_msg_count
2084 ,x_msg_data => l_msg_data
2085 ,x_return_status => l_return_status);
2086
2087 IF g1_debug_mode = 'Y' THEN
2088 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After call derive_task_assignments', x_Log_Level=> 3);
2089 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_return_status='||l_return_status, x_Log_Level=> 3);
2090 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id='||l_resource_assignment_id, x_Log_Level=> 3);
2091 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_version_id_out='||l_task_version_id_out, x_Log_Level=> 3);
2092 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code='||l_txn_currency_code, x_Log_Level=> 3);
2093 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id='||l_resource_list_member_id, x_Log_Level=> 3);
2094 END IF;
2095
2096 -- Bug 3834339 : We should get the planned value after assignment is created
2097 OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
2098 FETCH c_get_resource_list_member_id
2099 INTO
2100 l_resource_assignment_id,
2101 l_resource_list_member_id,
2102 l_txn_currency_code,
2103 l_planned_quantity ,
2104 l_planned_bur_cost_txn_cur,
2105 l_planned_bur_cost_projfunc,
2106 l_planned_bur_cost_proj_cur,
2107 l_planned_raw_cost_txn_cur,
2108 l_planned_raw_cost_proj_cur,
2109 l_planned_raw_cost_projfunc,
2110 l_rbs_element_id,
2111 l_rate_based_flag,
2112 l_resource_class_code,
2113 l_budget_version_id --- 4372462
2114 ;
2115 CLOSE c_get_resource_list_member_id;
2116
2117
2118 IF g1_debug_mode = 'Y' THEN
2119 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id'||l_resource_assignment_id, x_Log_Level=> 3);
2120 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id'||l_resource_list_member_id, x_Log_Level=> 3);
2121 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code'||l_txn_currency_code, x_Log_Level=> 3);
2122 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
2123 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_txn_cur'||l_planned_bur_cost_txn_cur, x_Log_Level=> 3);
2124 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_projfunc'||l_planned_bur_cost_projfunc, x_Log_Level=> 3);
2125 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_proj_cur'||l_planned_bur_cost_proj_cur, x_Log_Level=> 3);
2126 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_txn_cur'||l_planned_raw_cost_txn_cur, x_Log_Level=> 3);
2127 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_proj_cur'||l_planned_raw_cost_proj_cur, x_Log_Level=> 3);
2128 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_projfunc'||l_planned_raw_cost_projfunc, x_Log_Level=> 3);
2129 END IF;
2130
2131 EXCEPTION
2132 WHEN OTHERS THEN
2133 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
2134 p_procedure_name => 'UPDATE_TASK_PROGRESS',
2135 p_error_text => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
2136 RAISE fnd_api.g_exc_error;
2137 END;
2138
2139 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2140 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2141 p_msg_name => l_msg_data);
2142 x_msg_data := l_msg_data;
2143 x_return_status := 'E';
2144 x_msg_count := l_msg_count;
2145 RAISE FND_API.G_EXC_ERROR;
2146 END IF;
2147 END IF;
2148 END IF;
2149 -- END: Adding code to fix Bug # 3815741.
2150
2151
2152 -- Bug 3951531 Begin
2153
2154 IF g1_debug_mode = 'Y' THEN
2155 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Bug 3951531', x_Log_Level=> 3);
2156 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_lowest_level_task='||l_lowest_level_task, x_Log_Level=> 3);
2157 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
2158 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
2159 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_est_remaining_eff_flag='||l_est_remaining_eff_flag, x_Log_Level=> 3);
2160 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
2161 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_act_txn_bur_cost='||l_act_txn_bur_cost, x_Log_Level=> 3);
2162 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_etc_txn_bur_cost='||l_etc_txn_bur_cost, x_Log_Level=> 3);
2163 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
2164 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
2165 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2166 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2167 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2168 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2169 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2170 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2171 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2172 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2173 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
2174 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_cost='||l_planned_cost, x_Log_Level=> 3);
2175 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
2176 END IF;
2177
2178 -- Bug 3922325 : Moved date defaulting code below
2179 -- BEGIN: Fix for Bug # 3957607.
2180 IF p_eff_rollup_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2181 AND p_eff_rollup_percent_complete IS NOT NULL
2182 AND p_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2183 AND p_percent_complete IS NOT NULL
2184 THEN
2185 -- Do not consider overriden pc if its same as effective rollup percent complete.
2186 -- This has to be done before we calculate: l_earned_value.
2187 IF nvl(round(p_eff_rollup_percent_complete,8),0) = l_percent_complete --Bug 6854114
2188 THEN
2189 l_percent_complete := null;
2190 END IF;
2191 l_eff_rollup_percent_comp := p_eff_rollup_percent_complete; --bug 3969840
2192 END IF;
2193
2194 -- END: Fix for Bug # 3957607.
2195
2196 -- Bug 3922325 Begin
2197 IF g1_debug_mode = 'Y' THEN
2198 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Task Status and Dates Defaulting and Error', x_Log_Level=> 3);
2199 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
2200 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
2201 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
2202 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
2203 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
2204 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2205 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2206 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2207 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2208 END IF;
2209 -- Bug 3922325 End
2210
2211 -- Bug 3922325 Begin
2212 IF l_element_struc_type = 'WORKPLAN'
2213 THEN
2214 -- Previous System Status code is derived, if someone intentionally trying to change to
2215 -- an invalid combination, so raise error instead of defaulting
2216 OPEN c_previous_task_status;
2217 FETCH c_previous_task_status INTO l_previous_status_code;
2218 CLOSE c_previous_task_status;
2219
2220 l_prev_sys_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_previous_status_code );
2221 IF g1_debug_mode = 'Y' THEN
2222 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_previous_status_code='||l_previous_status_code, x_Log_Level=> 3);
2223 END IF;
2224 END IF;
2225 -- Bug 3922325 End
2226
2227 IF ( l_percent_complete_flag = 'Y') THEN
2228 -- Bug 3603636 Task Status Should be defaulted : As per Clint
2229 --Fixed for BUG 3762650 by rtarway, please see 3668168 for defaulting rules of status.
2230 -- 3922325 : Actual check should also be here
2231 -- Bug 4097710 : Used nvl in use of l_prev_sys_status_code
2232 IF ((nvl(l_percent_complete, l_base_percent_complete) > 0 AND nvl(l_percent_complete, l_base_percent_complete) < 100)
2233 AND (l_task_status2 IS NULL OR l_task_status2 IN ('NOT_STARTED','COMPLETED'))
2234 AND NVL(l_prev_sys_status_code, 'xyz') <> 'IN_PROGRESS')
2235 -- Bug 3922325 : Added Completed too. This is done so by changing just ETC, it should be able to make In Progress
2236 THEN
2237 l_task_status2 := 'IN_PROGRESS';
2238 l_task_status := '125';
2239 --User can put a task in cancelled or on hold even if % complete > 0
2240 ELSIF ( nvl(l_percent_complete, l_base_percent_complete) = 100 AND (l_task_status2 IS NULL OR l_task_status2 <> 'COMPLETED') AND NVL(l_prev_sys_status_code, 'xyz') <> 'COMPLETED' )
2241 THEN
2242 l_task_status2 := 'COMPLETED';
2243 l_task_status := '127';
2244 END IF;
2245 END IF;
2246 /* Changes by vvjoshi for bug#5374114 - START */
2247
2248 IF (l_task_status2 = l_task_status2_temp) THEN
2249 l_task_status2 := l_task_status2_temp;
2250 l_task_status := l_task_status_temp;
2251 END IF;
2252
2253 /* Changes by vvjoshi for bug#5374114 - END */
2254
2255 -- Bug 3922325 Begin
2256 IF g1_debug_mode = 'Y' THEN
2257 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After Default Status', x_Log_Level=> 3);
2258 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2259 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2260 END IF;
2261 -- Bug 3922325 End
2262
2263 -- Bug 3922325 : Moved date defaulting code here from above. It should be after l_percent_complete is derived and task_status is defaulted
2264 -- Begin
2265 IF p_progress_mode <> 'BACKDATED' AND l_element_struc_type = 'WORKPLAN'
2266 THEN
2267 IF NVL( l_lowest_level_task, 'N' ) = 'Y' --bug 2667432
2268 THEN
2269 -- 4533112 Begin
2270 IF g1_debug_mode = 'Y' THEN
2271 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Client Extension Logic Starts', x_Log_Level=> 3);
2272 END IF;
2273
2274 OPEN c_get_dates_overrides;
2275 FETCH c_get_dates_overrides INTO
2276 l_db_date_override_flag
2277 , l_db_estimated_start_date
2278 , l_db_estimated_finish_date
2279 , l_db_actual_start_date
2280 , l_db_actual_finish_date;
2281 CLOSE c_get_dates_overrides;
2282
2283 IF g1_debug_mode = 'Y' THEN
2284 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
2285 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
2286 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
2287 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
2288 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
2289 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
2290 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
2291 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
2292 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
2293 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
2294 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
2295 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2296 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'nvl(l_percent_complete, l_base_percent_complete)='||nvl(l_percent_complete, l_base_percent_complete), x_Log_Level=> 3);
2297 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2298 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2299 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2300 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2301 END IF;
2302
2303 l_date_override_flag := 'N';
2304
2305 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
2306 p_project_id => p_project_id,
2307 p_structure_type => 'WORKPLAN',
2308 p_structure_version_id => p_structure_version_id,
2309 p_object_type => p_object_type,
2310 p_object_id => p_object_id,
2311 p_object_version_id => p_object_version_id,
2312 p_proj_element_id => p_object_id,
2313 p_task_status => l_task_status,
2314 p_percent_complete => nvl(l_percent_complete, l_base_percent_complete),
2315 p_estimated_start_date => l_estimated_start_date,
2316 p_estimated_finish_date => l_estimated_finish_date,
2317 p_actual_start_date => l_actual_start_date,
2318 p_actual_finish_date => l_actual_finish_date,
2319 x_estimated_start_date => l_clex_estimated_start_date,
2320 x_estimated_finish_date => l_clex_estimated_finish_date,
2321 x_actual_start_date => l_clex_actual_start_date,
2322 x_actual_finish_date => l_clex_actual_finish_date,
2323 x_return_status => x_return_status,
2324 x_msg_count => x_msg_count,
2325 x_msg_data => x_msg_data
2326 );
2327
2328 IF g1_debug_mode = 'Y' THEN
2329 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
2330 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
2331 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
2332 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
2333 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
2334 END IF;
2335
2336 IF x_return_status <> 'S' THEN
2337 raise FND_API.G_EXC_ERROR;
2338 END IF;
2339
2340 IF nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
2341 OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
2342 OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
2343 OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
2344 THEN
2345 l_date_override_flag := 'Y';
2346 l_estimated_start_date := l_clex_estimated_start_date;
2347 l_estimated_finish_date := l_clex_estimated_finish_date;
2348 l_actual_start_date := l_clex_actual_start_date;
2349 l_actual_finish_date := l_clex_actual_finish_date;
2350 END IF;
2351
2352 IF l_date_override_flag = 'N' AND nvl(l_db_date_override_flag, 'N') = 'Y' THEN
2353 l_date_override_flag := 'Y';
2354 END IF;
2355
2356 IF l_date_override_flag = 'N' AND
2357 (nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_db_estimated_start_date,FND_API.g_miss_date)
2358 OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_db_estimated_finish_date,FND_API.g_miss_date)
2359 OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_db_actual_start_date,FND_API.g_miss_date)
2360 OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_db_actual_finish_date,FND_API.g_miss_date))
2361 THEN
2362 l_date_override_flag := 'Y';
2363 END IF;
2364
2365 IF g1_debug_mode = 'Y' THEN
2366 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
2367 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2368 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2369 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2370 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2371 END IF;
2372
2373 -- 4533112 End
2374
2375 IF (l_estimated_finish_date is not null and l_estimated_finish_date < nvl(l_estimated_start_date,l_estimated_finish_date)) THEN --removed +1 bug 5186825
2376 x_return_status := FND_API.G_RET_STS_ERROR;
2377 pa_utils.add_message(p_app_short_name => 'PA',
2378 p_msg_name => 'PA_EST_DATES_INV');
2379 raise fnd_api.g_exc_error;
2380 END IF;
2381 -- Bug 3922325 : Actual Start date and Finish date should efualt even if percent completete is not enabled
2382 -- It should be based on Task Status rather than % Complete
2383 --bug# 3823433 Satish
2384 --IF l_percent_complete_flag = 'Y'
2385 --THEN
2386 IF g1_debug_mode = 'Y' THEN
2387 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Deriving Dates', x_Log_Level=> 3);
2388 END IF;
2389 /* Date defaulting should be based on Status rather than % complete
2390 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0 and l_actual_start_date is null ) THEN
2391 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2392 END IF;
2393
2394 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2395 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2396 END IF;
2397
2398 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100 and l_actual_finish_date is not null ) THEN
2399 l_actual_finish_date := to_date(null);
2400 END IF;
2401 */
2402
2403 IF l_actual_start_date IS NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2404 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2405 if (l_estimated_start_date is null) then --5186825
2406 l_estimated_start_date := l_scheduled_start_date;
2407 end if;
2408 l_actual_finish_date := to_date(null);
2409 END IF;
2410 -- Bug 4232099 : added folling IF
2411 IF l_actual_finish_date IS NOT NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2412 l_actual_finish_date := to_date(null);
2413 END IF;
2414 IF l_actual_start_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2415 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2416 if (l_estimated_start_date is null) then --5186825
2417 l_estimated_start_date := l_scheduled_start_date;
2418 end if;
2419 END IF;
2420 IF l_actual_finish_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2421 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2422 END IF;
2423 --END IF;
2424
2425
2426 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL
2427 THEN
2428 IF l_actual_finish_date < l_actual_start_date
2429 THEN
2430 IF TRUNC(SYSDATE) < l_actual_start_date
2431 THEN
2432 l_actual_finish_date := l_actual_start_date;
2433 ELSE
2434 l_actual_finish_date := TRUNC(SYSDATE);
2435 END IF;
2436 END IF;
2437 END IF;
2438
2439 -- Bug 3922325 : Actual Start date and Finish date check should be based on Status
2440 -- Also it should happen irrespective of percent complete is enabled
2441 /*
2442 --bug# 3823433 Satish
2443 IF l_percent_complete_flag = 'Y'
2444 THEN
2445 IF g1_debug_mode = 'Y' THEN
2446 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Raising Errors on Conditions', x_Log_Level=> 3);
2447 END IF;
2448
2449 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0 and nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100
2450 and l_actual_start_date is null ) THEN
2451
2452 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2453 ,p_msg_name => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2454 x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2455 x_return_status := 'E';
2456 RAISE FND_API.G_EXC_ERROR;
2457 END IF;
2458
2459 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2460 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2461 ,p_msg_name => 'PA_TP_ACT_END_DT_NOT_NULL');
2462 x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2463 x_return_status := 'E';
2464 RAISE FND_API.G_EXC_ERROR;
2465 END IF;
2466 END IF;
2467 */
2468 IF ( l_task_status2 IN ('COMPLETED','IN_PROGRESS') and l_actual_start_date is null ) THEN
2469
2470 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2471 ,p_msg_name => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2472 x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2473 x_return_status := 'E';
2474 RAISE FND_API.G_EXC_ERROR;
2475 END IF;
2476
2477 IF (l_task_status2 = 'COMPLETED' and l_actual_finish_date is null ) THEN
2478 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2479 ,p_msg_name => 'PA_TP_ACT_END_DT_NOT_NULL');
2480 x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2481 x_return_status := 'E';
2482 RAISE FND_API.G_EXC_ERROR;
2483 END IF;
2484
2485 END IF; -- IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2486 END IF; -- IF p_progress_mode <> 'BACKDATED'
2487 -- Bug 3922325 End
2488
2489 -- Bug 4328141 : Making l_percent_complete 100 when L_ALLW_PHY_PRCNT_CMP_OVERRIDES is N
2490 IF l_percent_complete_flag = 'Y' AND l_allw_phy_prcnt_cmp_overrides = 'N' AND l_task_status2 = 'COMPLETED'
2491 AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) <> 100 THEN
2492 l_percent_complete := 100;
2493 END IF;
2494
2495 IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL
2496 AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) = 0)
2497 OR
2498 l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL
2499 AND l_actual_finish_date IS NULL
2500 AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) <> 100) -- Bug 3922325 : Added so that error comes if % complete is 100. % compl 100 and In Progress is not a valid combination
2501 /* Begin commenting out code to fix Bug # 4093350.
2502
2503 It has been decided that a task that 'IN_PROGRESS' only needs to have an actual start date, it
2504 need not have any actuals or percent complete.
2505
2506 AND ((nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0
2507 AND nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100))
2508 OR nvl(l_actual_effort,0) > 0 OR nvl(l_act_raw_cost_to_date_pc,0) > 0
2509 OR nvl(l_act_bur_cost_to_date_pc,0) > 0) -- Fix for Bug # 4093350.
2510
2511 End commenting out code to fix Bug # 4093350. */
2512
2513 OR
2514 l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL
2515 AND l_actual_finish_date IS NOT NULL
2516 AND nvl(l_percent_complete, l_base_percent_complete) = 100) -- Fix for Bug # 4093350.
2517 OR
2518 (l_task_status2 is NULL)
2519 OR
2520 (l_task_status2 = '')
2521 THEN
2522 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2523 AND l_element_struc_type = 'WORKPLAN'
2524 AND p_progress_mode <> 'BACKDATED'
2525 AND l_percent_complete_flag = 'Y'
2526 --AND L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'Y' --maansari: fpm changes
2527 THEN
2528 IF p_pm_product_code = 'MSPROJECT'
2529 THEN
2530 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2531 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB_MSP'
2532 ,p_token1 => 'TASK_NAME'
2533 ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
2534 ,p_token2 => 'TASK_NUMBER'
2535 ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
2536 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2537 x_return_status := 'E';
2538 RAISE FND_API.G_EXC_ERROR;
2539 ELSE
2540 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2541 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB_AMG'
2542 ,p_token1 => 'TASK_ID'
2543 ,p_value1 => l_task_id
2544 );
2545 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2546 x_return_status := 'E';
2547 RAISE FND_API.G_EXC_ERROR;
2548 END IF;
2549 END IF;
2550 END IF;
2551
2552 -- Bug 4632744
2553 -- l_earned_value can be derived as any thing here
2554 -- The correct value is derived in partial rollup or rollup API's
2555 -- So code below to get baseline plan and derive earned value, can be removed
2556
2557
2558 /* Begin fix for Bug # 4050324. */
2559 BEGIN
2560 SELECT
2561 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2562 nvl(pfxat.prj_base_brdn_cost,0)
2563 , (nvl(pfxat.base_labor_hours,0)+nvl(pfxat.base_equip_hours,0))
2564 INTO l_base_planned_cost
2565 , l_base_planned_effort
2566 FROM pji_fm_xbs_accum_tmp1 pfxat
2567 WHERE pfxat.project_id = p_project_id
2568 AND pfxat.struct_version_id = p_structure_version_id
2569 AND pfxat.project_element_id = p_object_id
2570 AND pfxat.calendar_type = 'A'
2571 AND pfxat.plan_version_id > 0
2572 AND pfxat.txn_currency_code is null;
2573 EXCEPTION
2574 WHEN OTHERS THEN
2575 null;
2576 END;
2577
2578 /* End fix for Bug # 4050324. */
2579
2580 IF l_element_struc_type = 'WORKPLAN'
2581 THEN
2582 IF l_task_weight_basis_code = 'EFFORT'
2583 THEN
2584 --bug 3824042, changed trunc to round
2585 /* Begin fix for Bug # 4050324. */
2586 l_earned_value := round(NVL(l_percent_complete,nvl(l_base_percent_complete,l_eff_rollup_percent_comp)) * nvl(l_base_planned_effort,0)/100,8); --Bug 6854114
2587 /* End fix for Bug # 4050324. */
2588
2589 ELSE
2590 --bug 3824042, changed trunc to round
2591 /* Begin fix for Bug # 4050324. */
2592 l_earned_value := pa_currency.round_trans_currency_amt(NVL(l_percent_complete,nvl(l_base_percent_complete,l_eff_rollup_percent_comp)) * nvl(l_base_planned_cost,0)/100, l_prj_currency_code);
2593 /* End fix for Bug # 4050324. */
2594 END IF;
2595 END IF;
2596
2597
2598 IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL) OR
2599 l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NULL) OR
2600 l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NOT NULL ) OR
2601 (l_task_status2 is NULL) OR
2602 (l_task_status2 = '')
2603 THEN
2604 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2605 AND l_element_struc_type = 'WORKPLAN'
2606 AND p_progress_mode <> 'BACKDATED'
2607 AND l_percent_complete_flag = 'N'
2608 THEN
2609 IF p_pm_product_code = 'MSPROJECT'
2610 THEN
2611 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2612 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB_MSP'
2613 ,p_token1 => 'TASK_NAME'
2614 ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
2615 ,p_token2 => 'TASK_NUMBER'
2616 ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
2617 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2618 x_return_status := 'E';
2619 RAISE FND_API.G_EXC_ERROR;
2620 ELSE
2621 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2622 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB_AMG'
2623 ,p_token1 => 'TASK_ID'
2624 ,p_value1 => l_task_id
2625 );
2626 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2627 x_return_status := 'E';
2628 RAISE FND_API.G_EXC_ERROR;
2629 END IF;
2630 END IF;
2631 END IF;
2632
2633 -- Bug 3951531 End
2634
2635
2636 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2637 x_return_status := 'E';
2638 x_msg_data := l_msg_data;
2639 x_msg_count := l_msg_count;
2640 RAISE FND_API.G_EXC_ERROR;
2641 END IF;
2642
2643 IF ( p_action = 'PUBLISH' or NVL( l_rollup_required, 'N') = 'Y' )
2644 THEN
2645 l_published_flag := 'Y';
2646 ----
2647 l_rollup_progress_status := p_progress_status_code;
2648 l_rollup_completed_percentage := l_percent_complete;
2649
2650 --bug 3879461 --maansari
2651 OPEN check_prog_after_aod;
2652 FETCH check_prog_after_aod INTO l_prog_exist_after_aod;
2653 IF check_prog_after_aod%NOTFOUND
2654 THEN
2655 l_rollup_current_flag := 'Y'; -- Bug 3879461
2656 ELSE
2657 l_rollup_current_flag := 'N';
2658 END IF;
2659 CLOSE check_prog_after_aod;
2660 --bug 3879461 --maansari
2661 ----
2662 IF p_progress_mode <> 'BACKDATED' OR
2663 ( p_progress_mode = 'BACKDATED'
2664 AND p_as_of_date = l_last_progress_date ) --bug 2646965
2665 THEN
2666 l_current_flag := 'Y';
2667 UPDATE /*+ INDEX(pa_percent_completes PA_PERCENT_COMPLETES_N3)*/ pa_percent_completes --Added hint for 15876400
2668 SET current_flag = 'N'
2669 WHERE project_id = p_project_id
2670 AND object_id = p_object_id
2671 AND current_flag = 'Y'
2672 AND object_type = p_object_type
2673 AND structure_type = p_structure_type; --Satish
2674
2675 -- Bug 3879461 Begin
2676 IF NVL(l_prog_exist_after_aod, 'N') = 'N' THEN
2677 UPDATE pa_progress_rollup
2678 SET current_flag = 'N'
2679 WHERE project_id = p_project_id
2680 AND object_id = p_object_id
2681 AND proj_element_id = p_object_id
2682 AND current_flag = 'Y'
2683 AND object_type = p_object_type
2684 AND structure_type = p_structure_type
2685 AND structure_version_id is null
2686 ;
2687 ELSE
2688 null;
2689 --l_current_flag := 'N'; : Commented this , PPC current_flag and PPR current_flag may not be in sync
2690 END IF;
2691 -- Bug 3879461 End
2692 ELSE
2693 l_current_flag := 'N';
2694 l_rollup_current_flag := 'N'; -- Bug 3879461
2695 END IF;
2696
2697 -- Bug 3879461 Begin
2698 -- Delete the published progress record on the same as of date
2699 --bug 4247839, removed the l_db_Action check as it should get deleted for CREATE also
2700 --IF l_db_action = 'UPDATE' AND p_progress_mode <> 'BACKDATED' THEN
2701 IF p_progress_mode <> 'BACKDATED' THEN
2702
2703 Delete from pa_progress_rollup
2704 where project_id = p_project_id
2705 and object_id = p_object_id
2706 and proj_element_id = p_object_id
2707 and object_type = p_object_type
2708 and structure_version_id is null
2709 and structure_type = 'WORKPLAN'
2710 and current_flag = 'W'
2711 and trunc(as_of_date) = trunc(p_as_of_date);
2712 END IF;
2713 -- Bug 3879461 End
2714 ELSE
2715 l_rollup_progress_status := null;
2716 l_rollup_completed_percentage := null;
2717 l_published_flag := 'N';
2718 l_current_flag := 'N';
2719 l_rollup_current_flag := 'W'; -- Bug 3879461
2720 END IF;
2721
2722 -- Bug 4506461 Begin
2723 -- It is only structure level records we need to set base percent complete here
2724 -- for tasks record, it will be taken care in Rollup and partial rollup API
2725 -- 4651069 : It should be executed even for tasks too
2726 --IF p_object_type = 'PA_STRUCTURES' THEN
2727
2728 -- Bug 4683406 : Adding condition so that if this task is deliverable or work quantity based
2729 -- then base % complete is same as Physical % complete
2730 IF l_base_percent_comp_deriv_code in( 'EFFORT','COST') THEN
2731 OPEN c_get_any_childs_have_subprj(p_object_version_id);
2732 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
2733 CLOSE c_get_any_childs_have_subprj;
2734 END IF;
2735 --END IF;
2736 -- Bug 4506461 End
2737
2738 IF l_db_action = 'CREATE'
2739 THEN
2740 IF g1_debug_mode = 'Y' THEN
2741 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Create', x_Log_Level=> 3);
2742 END IF;
2743
2744 --bug 4185364
2745 /*IF p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2746 OR (p_progress_mode = 'BACKDATED' AND l_process = 'CORRECT')
2747 THEN
2748 l_percent_complete_id := null;
2749 ELSE
2750 l_percent_complete_id := p_percent_complete_id;
2751 END IF;*/
2752
2753 l_percent_complete_id := null;
2754 l_att_pc_id := p_percent_complete_id;
2755 --Create record in PPC
2756
2757 PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
2758 p_task_id => l_task_id
2759 ,p_date_computed => p_as_of_date
2760 ,p_last_update_date => sysdate
2761 ,p_last_updated_by => l_user_id
2762 ,p_creation_date => sysdate
2763 ,p_created_by => l_user_id
2764 ,p_last_update_login => l_login_id
2765 ,p_completed_percentage => l_percent_complete
2766 ,p_description => p_brief_overview
2767 ,p_project_id => p_project_id
2768 ,p_pm_product_code => l_pm_product_code
2769 ,p_current_flag => l_current_flag
2770 ,p_object_type => p_object_type
2771 ,p_object_id => p_object_id
2772 ,p_object_version_id => p_object_version_id
2773 ,p_progress_status_code => p_progress_status_code
2774 ,p_actual_start_date => l_actual_start_date
2775 ,p_actual_finish_date => l_actual_finish_date
2776 ,p_estimated_start_date => p_estimated_start_date
2777 ,p_estimated_finish_date => p_estimated_finish_date
2778 ,p_published_flag => l_published_flag
2779 ,p_published_by_party_id => l_published_by_party_id
2780 ,p_progress_comment => p_progress_comment
2781 ,p_history_flag => 'N'
2782 ,p_status_code => l_task_status
2783 ,x_percent_complete_id => l_percent_complete_id
2784 ,p_attribute_category => null
2785 ,p_attribute1 => null
2786 ,p_attribute2 => null
2787 ,p_attribute3 => null
2788 ,p_attribute4 => null
2789 ,p_attribute5 => null
2790 ,p_attribute6 => null
2791 ,p_attribute7 => null
2792 ,p_attribute8 => null
2793 ,p_attribute9 => null
2794 ,p_attribute10 => null
2795 ,p_attribute11 => null
2796 ,p_attribute12 => null
2797 ,p_attribute13 => null
2798 ,p_attribute14 => null
2799 ,p_attribute15 => null
2800 ,p_structure_type => p_structure_type
2801 );
2802
2803 l_progress_rollup_id := null;
2804 --Create record in progress rollup
2805
2806 --check whether there already exists progress record for this task.
2807 l_progress_rollup_id := PA_PROGRESS_UTILS.get_prog_rollup_id(
2808 p_project_id => p_project_id
2809 ,p_object_id => p_object_id
2810 ,p_object_type => p_object_type
2811 ,p_object_version_id => p_object_version_id
2812 ,p_as_of_date => p_as_of_date
2813 ,p_proj_element_id => p_object_id -- Bug 3764224
2814 ,p_action => p_action -- Bug 3879461
2815 ,x_record_version_number => l_rollup_rec_ver_number
2816 );
2817
2818 IF g1_debug_mode = 'Y' THEN
2819 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Create l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
2820 END IF;
2821
2822 IF l_progress_rollup_id IS NULL
2823 THEN ----1
2824 OPEN cur_pa_rollup1;
2825 FETCH cur_pa_rollup1 INTO l_rollup_rec1;
2826 CLOSE cur_pa_rollup1;
2827
2828 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
2829 THEN
2830 l_eff_rollup_percent_comp := l_base_percent_complete ;
2831 ELSE
2832 l_eff_rollup_percent_comp := l_rollup_rec1.eff_rollup_percent_comp;
2833 END IF;
2834
2835 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check 2
2836 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
2837 THEN
2838 IF g1_debug_mode = 'Y' THEN
2839 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => ' LLT', x_Log_Level=> 3);
2840 END IF;
2841
2842 --- l_base_percent_complete := l_rollup_rec1.base_percent_complete;
2843 l_eff_rollup_prog_stat_code := l_rollup_rec1.eff_rollup_prog_stat_code;
2844 l_base_progress_status_code := l_rollup_rec1.base_progress_status_code;
2845
2846 -- Bug 3796357 Begin
2847 l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
2848 l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
2849 l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
2850 l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
2851 l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
2852 l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
2853 l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
2854 l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
2855 l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
2856 l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
2857 l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
2858 l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
2859 l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
2860 l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
2861 l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
2862 l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
2863 l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
2864 l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
2865 l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
2866 l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
2867 l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
2868 l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
2869 l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
2870 l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
2871 l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
2872 l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
2873 l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
2874 l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
2875 l_txn_currency_code := l_rollup_rec1.txn_currency_code;
2876 l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
2877 l_oth_etc_quantity := l_rollup_rec1.oth_etc_quantity;
2878 l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
2879 l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
2880 l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
2881 l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
2882 l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
2883 l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
2884 l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
2885 l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
2886 l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
2887 l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
2888 l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
2889 l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
2890 l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
2891 l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
2892 l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
2893 l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
2894 l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
2895 l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
2896 -- Bug 3796357 End
2897 ELSE
2898 l_eff_rollup_percent_comp := l_base_percent_complete ; -- null; As per Majid 21 May
2899 l_eff_rollup_prog_stat_code := null;
2900
2901 --maansari5/21 This is required otherwise redefault base pc api is not returning override pc if rollup.
2902 IF l_EFF_ROLLUP_PERCENT_COMP = 0
2903 THEN
2904 l_EFF_ROLLUP_PERCENT_COMP := null;
2905 END IF;
2906
2907 END IF; --2
2908
2909 l_rollup_completed_percentage := l_percent_complete; --maansari5/21
2910
2911 -- Bug 4506461 Begin
2912 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
2913 l_temp_base_pc := l_rollup_rec1.base_percent_complete;
2914 ELSE
2915 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
2916 END IF;
2917 -- Bug 4506461 End
2918
2919 IF g1_debug_mode = 'Y' THEN
2920 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserting in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
2921 END IF;
2922
2923
2924 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
2925 x_progress_rollup_id => l_progress_rollup_id
2926 ,x_project_id => p_project_id
2927 ,x_object_id => p_object_id
2928 ,x_object_type => p_object_type
2929 ,x_as_of_date => p_as_of_date
2930 ,x_object_version_id => p_object_version_id
2931 ,x_last_update_date => sysdate
2932 ,x_last_updated_by => l_user_id
2933 ,x_creation_date => sysdate
2934 ,x_created_by => l_user_id
2935 ,x_progress_status_code => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
2936 ,x_last_update_login => l_login_id
2937 ,x_incremental_work_qty => l_incremental_work_qty
2938 ,x_cumulative_work_qty => l_cumulative_work_qty
2939 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
2940 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
2941 ,x_base_percent_complete => l_temp_base_pc -- 4506461
2942 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
2943 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
2944 ,x_estimated_start_date => l_estimated_start_date
2945 ,x_estimated_finish_date => l_estimated_finish_date
2946 ,x_actual_start_date => l_actual_start_date
2947 ,x_actual_finish_date => l_actual_finish_date
2948 ,x_est_remaining_effort => l_est_remaining_effort
2949 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
2950 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
2951 ,x_eff_rollup_prog_stat_code => l_eff_rollup_prog_stat_code
2952 ,x_percent_complete_id => l_percent_complete_id
2953 ,x_structure_type => p_structure_type
2954 ,x_proj_element_id => l_task_id
2955 ,x_structure_version_id => l_structure_version_id -- null fpm dev cr 3
2956 ,x_ppl_act_effort_to_date => l_actual_effort
2957 ,x_eqpmt_act_effort_to_date => l_eqpmt_act_effort_to_date -- bug 3796357 null --since this is a task progress, there wont be eqpmt effort.
2958 ,x_eqpmt_etc_effort => l_eqpmt_etc_effort -- bug 3796357 null
2959 ,x_oth_act_cost_to_date_tc => l_oth_act_cost_to_date_tc-- bug 3796357 null --no transaction is avialbale at task.
2960 ,x_oth_act_cost_to_date_fc => l_oth_act_cost_to_date_fc-- bug 3796357
2961 ,x_oth_act_cost_to_date_pc => l_oth_act_cost_to_date_pc-- bug 3796357
2962 ,x_oth_etc_cost_tc => l_oth_etc_cost_tc -- bug 3796357 --no txn currency at task level.
2963 ,x_oth_etc_cost_fc => l_oth_etc_cost_fc -- bug 3796357
2964 ,x_oth_etc_cost_pc => l_oth_etc_cost_pc -- bug 3796357
2965 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc
2966 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
2967 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
2968 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
2969 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
2970 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
2971 ,x_eqpmt_act_cost_to_date_tc => l_eqpmt_act_cost_to_date_tc -- bug 3796357 null
2972 ,x_eqpmt_act_cost_to_date_fc => l_eqpmt_act_cost_to_date_fc -- bug 3796357 null
2973 ,x_eqpmt_act_cost_to_date_pc => l_eqpmt_act_cost_to_date_pc -- bug 3796357 null
2974 ,x_eqpmt_etc_cost_tc => l_eqpmt_etc_cost_tc -- bug 3796357 null
2975 ,x_eqpmt_etc_cost_fc => l_eqpmt_etc_cost_fc -- bug 3796357 null
2976 ,x_eqpmt_etc_cost_pc => l_eqpmt_etc_cost_pc -- bug 3796357 null
2977 ,x_earned_value => l_earned_value
2978 ,x_task_wt_basis_code => l_task_weight_basis_code
2979 ,x_subprj_ppl_act_effort => null
2980 ,x_subprj_eqpmt_act_effort => null
2981 ,x_subprj_ppl_etc_effort => null
2982 ,x_subprj_eqpmt_etc_effort => null
2983 ,x_sbpj_oth_act_cost_to_date_tc => null
2984 ,x_sbpj_oth_act_cost_to_date_fc => null
2985 ,x_sbpj_oth_act_cost_to_date_pc => null
2986 ,x_subprj_ppl_act_cost_tc => null
2987 ,x_subprj_ppl_act_cost_fc => null
2988 ,x_subprj_ppl_act_cost_pc => null
2989 ,x_subprj_eqpmt_act_cost_tc => null
2990 ,x_subprj_eqpmt_act_cost_fc => null
2991 ,x_subprj_eqpmt_act_cost_pc => null
2992 ,x_subprj_oth_etc_cost_tc => null
2993 ,x_subprj_oth_etc_cost_fc => null
2994 ,x_subprj_oth_etc_cost_pc => null
2995 ,x_subprj_ppl_etc_cost_tc => null
2996 ,x_subprj_ppl_etc_cost_fc => null
2997 ,x_subprj_ppl_etc_cost_pc => null
2998 ,x_subprj_eqpmt_etc_cost_tc => null
2999 ,x_subprj_eqpmt_etc_cost_fc => null
3000 ,x_subprj_eqpmt_etc_cost_pc => null
3001 ,x_subprj_earned_value => null
3002 ,x_current_flag => l_rollup_current_flag
3003 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3004 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3005 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3006 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3007 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3008 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3009 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3010 ,x_prog_pa_period_name => l_pa_period_name
3011 ,x_prog_gl_period_name => l_gl_period_name
3012 ,x_oth_quantity_to_date => l_oth_quantity_to_date -- bug 3796357 null
3013 ,x_oth_etc_quantity => l_oth_etc_quantity -- bug 3796357null
3014 ,x_oth_act_rawcost_to_date_tc => l_oth_act_rawcost_to_date_tc-- bug 3796357null
3015 ,x_oth_act_rawcost_to_date_fc => l_oth_act_rawcost_to_date_fc -- bug 3796357null
3016 ,x_oth_act_rawcost_to_date_pc => l_oth_act_rawcost_to_date_pc -- bug 3796357null
3017 ,x_oth_etc_rawcost_tc => l_oth_etc_rawcost_tc -- bug 3796357 null
3018 ,x_oth_etc_rawcost_fc => l_oth_etc_rawcost_fc -- bug 3796357null
3019 ,x_oth_etc_rawcost_pc => l_oth_etc_rawcost_pc -- bug 3796357null
3020 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
3021 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
3022 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
3023 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
3024 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
3025 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
3026 ,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
3027 ,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
3028 ,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
3029 ,x_eqpmt_etc_rawcost_tc => l_eqpmt_etc_rawcost_tc -- bug 3796357 null
3030 ,x_eqpmt_etc_rawcost_fc => l_eqpmt_etc_rawcost_fc -- bug 3796357 null
3031 ,x_eqpmt_etc_rawcost_pc => l_eqpmt_etc_rawcost_pc -- bug 3796357 null
3032 ,x_sp_oth_act_rawcost_todate_tc => null
3033 ,x_sp_oth_act_rawcost_todate_fc => null
3034 ,x_sp_oth_act_rawcost_todate_pc => null
3035 ,x_subprj_ppl_act_rawcost_tc => null
3036 ,x_subprj_ppl_act_rawcost_fc => null
3037 ,x_subprj_ppl_act_rawcost_pc => null
3038 ,x_subprj_eqpmt_act_rawcost_tc => null
3039 ,x_subprj_eqpmt_act_rawcost_fc => null
3040 ,x_subprj_eqpmt_act_rawcost_pc => null
3041 ,x_subprj_oth_etc_rawcost_tc => null
3042 ,x_subprj_oth_etc_rawcost_fc => null
3043 ,x_subprj_oth_etc_rawcost_pc => null
3044 ,x_subprj_ppl_etc_rawcost_tc => null
3045 ,x_subprj_ppl_etc_rawcost_fc => null
3046 ,x_subprj_ppl_etc_rawcost_pc => null
3047 ,x_subprj_eqpmt_etc_rawcost_tc => null
3048 ,x_subprj_eqpmt_etc_rawcost_fc => null
3049 ,x_subprj_eqpmt_etc_rawcost_pc => null
3050 );
3051
3052 -- Progress Management Changes. FP-M Bug # 3420093. Begin:Set CURRENT_FLAG of previous rollup records to 'N'.
3053
3054 IF g1_debug_mode = 'Y' THEN
3055 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3056 END IF;
3057
3058 ELSE --1
3059 --update progress rollup
3060
3061 OPEN cur_pa_rollup2;
3062 FETCH cur_pa_rollup2 INTO l_rollup_rec2;
3063 CLOSE cur_pa_rollup2;
3064
3065 -- BEGIN: Fix for Bug # 3926827.
3066 If (NVL( l_lowest_level_task, 'N' ) = 'Y' AND (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
3067 THEN
3068 l_eff_rollup_percent_comp := l_base_percent_complete ;
3069 ELSE
3070 l_eff_rollup_percent_comp := l_rollup_rec2.eff_rollup_percent_comp;
3071 END IF;
3072 -- END: Fix for Bug # 3926827.
3073
3074 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3075 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3076 THEN
3077 --- l_BASE_PERCENT_COMPLETE := l_rollup_rec2.BASE_PERCENT_COMPLETE;
3078 l_BASE_PROGRESS_STATUS_CODE := l_rollup_rec2.BASE_PROGRESS_STATUS_CODE;
3079 -- Bug 3796357 Begin
3080 l_actual_effort := l_rollup_rec2.PPL_ACT_EFFORT_TO_DATE;
3081 l_est_remaining_effort := l_rollup_rec2.ESTIMATED_REMAINING_EFFORT;
3082 l_act_bur_cost_to_date_tc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_TC;
3083 l_act_bur_cost_to_date_fc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_FC;
3084 l_act_bur_cost_to_date_pc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_PC;
3085 l_etc_bur_cost_tc := l_rollup_rec2.PPL_ETC_COST_TC;
3086 l_etc_bur_cost_fc := l_rollup_rec2.PPL_ETC_COST_FC;
3087 l_etc_bur_cost_pc := l_rollup_rec2.PPL_ETC_COST_PC;
3088 l_projfunc_cost_rate_type := l_rollup_rec2.PROJFUNC_COST_RATE_TYPE;
3089 l_projfunc_cost_exch_rate := l_rollup_rec2.PROJFUNC_COST_EXCHANGE_RATE;
3090 l_projfunc_cost_rate_date := l_rollup_rec2.PROJFUNC_COST_RATE_DATE;
3091 l_project_rate_type := l_rollup_rec2.PROJ_COST_RATE_TYPE;
3092 l_project_exch_rate := l_rollup_rec2.PROJ_COST_EXCHANGE_RATE;
3093 l_project_rate_date := l_rollup_rec2.PROJ_COST_RATE_DATE;
3094 l_txn_currency_code := l_rollup_rec2.TXN_CURRENCY_CODE;
3095 l_act_raw_cost_to_date_tc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_TC;
3096 l_act_raw_cost_to_date_fc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_FC;
3097 l_act_raw_cost_to_date_pc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_PC;
3098 l_etc_raw_cost_tc := l_rollup_rec2.PPL_ETC_RAWCOST_TC;
3099 l_etc_raw_cost_fc := l_rollup_rec2.PPL_ETC_RAWCOST_FC;
3100 l_etc_raw_cost_pc := l_rollup_rec2.PPL_ETC_RAWCOST_PC;
3101 -- Bug 3796357 End
3102 END IF;
3103
3104 IF (l_process = 'CORRECT')
3105 THEN
3106 l_INCREMENTAL_WORK_QTY := l_rollup_rec2.INCREMENTAL_WORK_QUANTITY;
3107 l_CUMULATIVE_WORK_QTY := l_rollup_rec2.CUMULATIVE_WORK_QUANTITY;
3108 l_BASE_PERCENT_COMPLETE := l_rollup_rec2.BASE_PERCENT_COMPLETE;
3109 END IF;
3110
3111 -- BEGIN: Fix for Bug # 3926827.
3112 -- Bug 4506461 Begin
3113 IF nvl(l_rederive_base_pc,'N') = 'Y'
3114 THEN
3115 l_temp_base_pc := l_rollup_rec2.base_percent_complete;
3116 ELSE
3117 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3118 END IF;
3119 -- Bug 4506461 End
3120
3121
3122 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
3123 x_progress_rollup_id => l_progress_rollup_id
3124 ,x_project_id => p_project_id
3125 ,x_object_id => p_object_id
3126 ,x_object_type => p_object_type
3127 ,x_as_of_date => p_as_of_date
3128 ,x_object_version_id => p_object_version_id
3129 ,x_last_update_date => sysdate
3130 ,x_last_updated_by => l_user_id
3131 ,x_progress_status_code => l_rollup_progress_status
3132 ,x_last_update_login => l_login_id
3133 ,x_incremental_work_qty => l_incremental_work_qty
3134 ,x_cumulative_work_qty => l_cumulative_work_qty
3135 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
3136 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
3137 ,x_base_percent_complete => l_temp_base_pc -- 4506461
3138 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
3139 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --maansari5/21
3140 ,x_estimated_start_date => l_estimated_start_date
3141 ,x_estimated_finish_date => l_estimated_finish_date
3142 ,x_actual_start_date => l_actual_start_date
3143 ,x_actual_finish_date => l_actual_finish_date
3144 ,x_est_remaining_effort => l_est_remaining_effort
3145 ,x_record_version_number => l_rollup_rec_ver_number
3146 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3147 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
3148 ,x_eff_rollup_prog_stat_code => l_rollup_rec2.eff_rollup_prog_stat_code
3149 ,x_percent_complete_id => l_percent_complete_id
3150 ,x_structure_type => p_structure_type -- l_rollup_rec2.structure_type fpm dev cr 3
3151 ,x_proj_element_id => p_object_id--l_rollup_rec2.proj_element_id fpm dev cr 3
3152 ,x_structure_version_id => l_structure_version_id--l_rollup_rec2.structure_version_id fpm dev cr 3
3153 ,x_ppl_act_effort_to_date => l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
3154 ,x_eqpmt_act_effort_to_date => l_rollup_rec2.eqpmt_act_effort_to_date
3155 ,x_eqpmt_etc_effort => l_rollup_rec2.eqpmt_etc_effort
3156 ,x_oth_act_cost_to_date_tc => l_rollup_rec2.oth_act_cost_to_date_tc
3157 ,x_oth_act_cost_to_date_fc => l_rollup_rec2.oth_act_cost_to_date_fc
3158 ,x_oth_act_cost_to_date_pc => l_rollup_rec2.oth_act_cost_to_date_pc
3159 ,x_oth_etc_cost_tc => l_rollup_rec2.oth_etc_cost_tc
3160 ,x_oth_etc_cost_fc => l_rollup_rec2.oth_etc_cost_fc
3161 ,x_oth_etc_cost_pc => l_rollup_rec2.oth_etc_cost_pc
3162 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc --3627315 issue 4
3163 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
3164 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
3165 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
3166 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
3167 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
3168 ,x_eqpmt_act_cost_to_date_tc => l_rollup_rec2.eqpmt_act_cost_to_date_tc
3169 ,x_eqpmt_act_cost_to_date_fc => l_rollup_rec2.eqpmt_act_cost_to_date_fc
3170 ,x_eqpmt_act_cost_to_date_pc => l_rollup_rec2.eqpmt_act_cost_to_date_pc
3171 ,x_eqpmt_etc_cost_tc => l_rollup_rec2.eqpmt_etc_cost_tc
3172 ,x_eqpmt_etc_cost_fc => l_rollup_rec2.eqpmt_etc_cost_fc
3173 ,x_eqpmt_etc_cost_pc => l_rollup_rec2.eqpmt_etc_cost_pc
3174 ,x_earned_value => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
3175 ,x_task_wt_basis_code => l_rollup_rec2.task_wt_basis_code
3176 ,x_subprj_ppl_act_effort => l_rollup_rec2.subprj_ppl_act_effort
3177 ,x_subprj_eqpmt_act_effort => l_rollup_rec2.subprj_eqpmt_act_effort
3178 ,x_subprj_ppl_etc_effort => l_rollup_rec2.subprj_ppl_etc_effort
3179 ,x_subprj_eqpmt_etc_effort => l_rollup_rec2.subprj_eqpmt_etc_effort
3180 ,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_TC
3181 ,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_FC
3182 ,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_PC
3183 ,x_subprj_ppl_act_cost_tc => l_rollup_rec2.subprj_ppl_act_cost_tc
3184 ,x_subprj_ppl_act_cost_fc => l_rollup_rec2.subprj_ppl_act_cost_fc
3185 ,x_subprj_ppl_act_cost_pc => l_rollup_rec2.subprj_ppl_act_cost_pc
3186 ,x_subprj_eqpmt_act_cost_tc => l_rollup_rec2.subprj_eqpmt_act_cost_tc
3187 ,x_subprj_eqpmt_act_cost_fc => l_rollup_rec2.subprj_eqpmt_act_cost_fc
3188 ,x_subprj_eqpmt_act_cost_pc => l_rollup_rec2.subprj_eqpmt_act_cost_pc
3189 ,x_subprj_oth_etc_cost_tc => l_rollup_rec2.subprj_oth_etc_cost_tc
3190 ,x_subprj_oth_etc_cost_fc => l_rollup_rec2.subprj_oth_etc_cost_fc
3191 ,x_subprj_oth_etc_cost_pc => l_rollup_rec2.subprj_oth_etc_cost_pc
3192 ,x_subprj_ppl_etc_cost_tc => l_rollup_rec2.subprj_ppl_etc_cost_tc
3193 ,x_subprj_ppl_etc_cost_fc => l_rollup_rec2.subprj_ppl_etc_cost_fc
3194 ,x_subprj_ppl_etc_cost_pc => l_rollup_rec2.subprj_ppl_etc_cost_pc
3195 ,x_subprj_eqpmt_etc_cost_tc => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
3196 ,x_subprj_eqpmt_etc_cost_fc => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
3197 ,x_subprj_eqpmt_etc_cost_pc => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
3198 ,x_subprj_earned_value => l_rollup_rec2.subprj_earned_value
3199 ,x_current_flag => l_rollup_current_flag --maansari7/21 --bug 3879461 --maansari
3200 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3201 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3202 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3203 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3204 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3205 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3206 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3207 ,x_prog_pa_period_name => l_rollup_rec2.prog_pa_period_name
3208 ,x_prog_gl_period_name => l_rollup_rec2.prog_gl_period_name
3209 ,x_oth_quantity_to_date => l_rollup_rec2.oth_quantity_to_date
3210 ,x_oth_etc_quantity => l_rollup_rec2.oth_etc_quantity
3211 ,x_oth_act_rawcost_to_date_tc => l_rollup_rec2.oth_act_rawcost_to_date_tc
3212 ,x_oth_act_rawcost_to_date_fc => l_rollup_rec2.oth_act_rawcost_to_date_fc
3213 ,x_oth_act_rawcost_to_date_pc => l_rollup_rec2.oth_act_rawcost_to_date_pc
3214 ,x_oth_etc_rawcost_tc => l_rollup_rec2.oth_etc_rawcost_tc
3215 ,x_oth_etc_rawcost_fc => l_rollup_rec2.oth_etc_rawcost_fc
3216 ,x_oth_etc_rawcost_pc => l_rollup_rec2.oth_etc_rawcost_pc
3217 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc
3218 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc
3219 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc
3220 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc
3221 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_tc
3222 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_tc
3223 ,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
3224 ,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
3225 ,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
3226 ,x_eqpmt_etc_rawcost_tc => l_rollup_rec2.eqpmt_etc_rawcost_tc
3227 ,x_eqpmt_etc_rawcost_fc => l_rollup_rec2.eqpmt_etc_rawcost_fc
3228 ,x_eqpmt_etc_rawcost_pc => l_rollup_rec2.eqpmt_etc_rawcost_pc
3229 ,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
3230 ,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
3231 ,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
3232 ,x_subprj_ppl_act_rawcost_tc => l_rollup_rec2.subprj_ppl_act_rawcost_tc
3233 ,x_subprj_ppl_act_rawcost_fc => l_rollup_rec2.subprj_ppl_act_rawcost_fc
3234 ,x_subprj_ppl_act_rawcost_pc => l_rollup_rec2.subprj_ppl_act_rawcost_pc
3235 ,x_subprj_eqpmt_act_rawcost_tc => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
3236 ,x_subprj_eqpmt_act_rawcost_fc => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
3237 ,x_subprj_eqpmt_act_rawcost_pc => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
3238 ,x_subprj_oth_etc_rawcost_tc => l_rollup_rec2.subprj_oth_etc_rawcost_tc
3239 ,x_subprj_oth_etc_rawcost_fc => l_rollup_rec2.subprj_oth_etc_rawcost_fc
3240 ,x_subprj_oth_etc_rawcost_pc => l_rollup_rec2.subprj_oth_etc_rawcost_pc
3241 ,x_subprj_ppl_etc_rawcost_tc => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
3242 ,x_subprj_ppl_etc_rawcost_fc => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
3243 ,x_subprj_ppl_etc_rawcost_pc => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
3244 ,x_subprj_eqpmt_etc_rawcost_tc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
3245 ,x_subprj_eqpmt_etc_rawcost_fc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
3246 ,x_subprj_eqpmt_etc_rawcost_pc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
3247 );
3248 -- FPM Dev CR 6
3249 IF Fnd_Msg_Pub.count_msg > 0 THEN
3250 RAISE FND_API.G_EXC_ERROR;
3251 END IF;
3252
3253 -----update percent_complete_id in pa_progress_rollup
3254 UPDATE pa_progress_rollup
3255 SET percent_complete_id = l_percent_complete_id
3256 WHERE object_id = p_object_id
3257 AND project_id = p_project_id
3258 AND as_of_date > p_as_of_date
3259 AND percent_complete_id is null
3260 AND structure_type = p_structure_type -- FPM Dev CR 3
3261 AND structure_version_id is null -- Bug 3879461
3262 AND current_flag <> 'W' -- Bug 3879461
3263 ;
3264
3265 ---- call api to copy attachments if any
3266 IF (l_process = 'CORRECT' and p_progress_mode = 'BACKDATED')
3267 THEN
3268 pa_progress_utils.copy_attachments (
3269 p_project_id => p_project_id,
3270 p_object_id => p_object_id,
3271 p_object_type => p_object_type,
3272 p_from_pc_id => l_att_pc_id,
3273 p_to_pc_id => l_percent_complete_id,
3274 x_return_status => x_return_status,
3275 x_msg_count => x_msg_count,
3276 x_msg_data => x_msg_data);
3277 END IF;
3278 END IF;
3279 ELSIF l_db_action = 'UPDATE'
3280 THEN
3281 IF g1_debug_mode = 'Y' THEN
3282 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Update'||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
3283 END IF;
3284
3285 IF l_working_aod IS NOT NULL
3286 THEN
3287 l_aod := l_working_aod;
3288 ELSE
3289 l_aod := p_as_of_date;
3290 END IF;
3291
3292 IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_working_aod IS NULL --- 4245168
3293 THEN
3294 l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
3295 p_project_id => p_project_id
3296 ,p_object_id => p_object_id
3297 ,p_object_type => p_object_type
3298 ,p_object_version_id => p_object_version_id
3299 ,p_as_of_date => l_aod
3300 ,p_task_id => p_object_id -- Bug 3764224
3301 );
3302 -- FPM Dev CR 3 Getting Record Version Number too
3303 BEGIN
3304 SELECT record_version_number into l_record_version_number
3305 FROM pa_percent_completes
3306 where percent_complete_id = l_percent_complete_id;
3307 END;
3308
3309 IF g1_debug_mode = 'Y' THEN
3310 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Percent_complete id is not passed', x_Log_Level=> 3);
3311 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_id='||l_percent_complete_id, x_Log_Level=> 3);
3312 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_record_version_number'||l_record_version_number, x_Log_Level=> 3);
3313 END IF;
3314 ELSE
3315 l_percent_complete_id := p_percent_complete_id;
3316 l_record_version_number := p_record_version_number;
3317 END IF;
3318
3319 PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
3320 p_task_id => l_task_id
3321 ,p_date_computed => p_as_of_date
3322 ,p_last_update_date => sysdate
3323 ,p_last_updated_by => l_user_id
3324 ,p_last_update_login => l_login_id
3325 ,p_completed_percentage => l_percent_complete
3326 ,p_description => p_brief_overview
3327 ,p_project_id => p_project_id
3328 ,p_pm_product_code => l_pm_product_code
3329 ,p_current_flag => l_current_flag
3330 ,p_object_type => p_object_type
3331 ,p_object_id => p_object_id
3332 ,p_object_version_id => p_object_version_id
3333 ,p_progress_status_code => p_progress_status_code
3334 ,p_actual_start_date => l_actual_start_date
3335 ,p_actual_finish_date => l_actual_finish_date
3336 ,p_estimated_start_date => l_estimated_start_date
3337 ,p_estimated_finish_date => l_estimated_finish_date
3338 ,p_published_flag => l_published_flag
3339 ,p_published_by_party_id => l_published_by_party_id
3340 ,p_progress_comment => p_progress_comment
3341 ,p_history_flag => 'n'
3342 ,p_status_code => l_task_status
3343 ,p_record_version_number => l_record_version_number
3344 ,p_percent_complete_id => l_percent_complete_id
3345 ,p_attribute_category => null
3346 ,p_attribute1 => null
3347 ,p_attribute2 => null
3348 ,p_attribute3 => null
3349 ,p_attribute4 => null
3350 ,p_attribute5 => null
3351 ,p_attribute6 => null
3352 ,p_attribute7 => null
3353 ,p_attribute8 => null
3354 ,p_attribute9 => null
3355 ,p_attribute10 => null
3356 ,p_attribute11 => null
3357 ,p_attribute12 => null
3358 ,p_attribute13 => null
3359 ,p_attribute14 => null
3360 ,p_attribute15 => null
3361 ,p_structure_type => p_structure_type
3362 );
3363 -- FPM Dev CR 6
3364 IF Fnd_Msg_Pub.count_msg > 0 THEN
3365 RAISE FND_API.G_EXC_ERROR;
3366 END IF;
3367
3368
3369 --update progress rollup
3370 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
3371 p_project_id => p_project_id
3372 ,p_object_id => p_object_id
3373 ,p_object_type => p_object_type
3374 ,p_object_version_id => p_object_version_id
3375 ,p_as_of_date => l_aod--p_as_of_date FPM Dev CR 3
3376 ,p_proj_element_id => p_object_id -- Bug 3764224
3377 ,p_action => p_action -- Bug 3879461
3378 ,x_record_version_number => l_rollup_rec_ver_number
3379 );
3380
3381
3382 IF g1_debug_mode = 'Y' THEN
3383 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
3384 END IF;
3385
3386 --maansari5/21
3387 OPEN cur_pa_rollup2;
3388 FETCH cur_pa_rollup2 INTO l_rollup_rec2;
3389 CLOSE cur_pa_rollup2;
3390
3391 -- BEGIN: Fix for Bug # 3926827.
3392
3393 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3394 THEN
3395 l_eff_rollup_percent_comp := l_base_percent_complete ;
3396 ELSE
3397 l_eff_rollup_percent_comp := l_rollup_rec2.eff_rollup_percent_comp;
3398 END IF;
3399
3400 -- END: Fix for Bug # 3926827.
3401
3402 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3403 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3404 THEN
3405 --- l_base_percent_complete := l_rollup_rec2.base_percent_complete;
3406 -- bug 3796357 begin
3407 l_actual_effort := l_rollup_rec2.ppl_act_effort_to_date;
3408 l_est_remaining_effort := l_rollup_rec2.estimated_remaining_effort;
3409 l_act_bur_cost_to_date_tc := l_rollup_rec2.ppl_act_cost_to_date_tc;
3410 l_act_bur_cost_to_date_fc := l_rollup_rec2.ppl_act_cost_to_date_fc;
3411 l_act_bur_cost_to_date_pc := l_rollup_rec2.ppl_act_cost_to_date_pc;
3412 l_etc_bur_cost_tc := l_rollup_rec2.ppl_etc_cost_tc;
3413 l_etc_bur_cost_fc := l_rollup_rec2.ppl_etc_cost_fc;
3414 l_etc_bur_cost_pc := l_rollup_rec2.ppl_etc_cost_pc;
3415 l_projfunc_cost_rate_type := l_rollup_rec2.projfunc_cost_rate_type;
3416 l_projfunc_cost_exch_rate := l_rollup_rec2.projfunc_cost_exchange_rate;
3417 l_projfunc_cost_rate_date := l_rollup_rec2.projfunc_cost_rate_date;
3418 l_project_rate_type := l_rollup_rec2.proj_cost_rate_type;
3419 l_project_exch_rate := l_rollup_rec2.proj_cost_exchange_rate;
3420 l_project_rate_date := l_rollup_rec2.proj_cost_rate_date;
3421 l_txn_currency_code := l_rollup_rec2.txn_currency_code;
3422 l_act_raw_cost_to_date_tc := l_rollup_rec2.ppl_act_rawcost_to_date_tc;
3423 l_act_raw_cost_to_date_fc := l_rollup_rec2.ppl_act_rawcost_to_date_fc;
3424 l_act_raw_cost_to_date_pc := l_rollup_rec2.ppl_act_rawcost_to_date_pc;
3425 l_etc_raw_cost_tc := l_rollup_rec2.ppl_etc_rawcost_tc;
3426 l_etc_raw_cost_fc := l_rollup_rec2.ppl_etc_rawcost_fc;
3427 l_etc_raw_cost_pc := l_rollup_rec2.ppl_etc_rawcost_pc;
3428 -- Bug 3796357 End
3429
3430 ELSE
3431 l_EFF_ROLLUP_PERCENT_COMP := l_BASE_PERCENT_COMPLETE;
3432 END IF;
3433
3434 IF l_PROGRESS_ROLLUP_ID IS NOT NULL
3435 THEN ---2
3436 --maansari5/21
3437 -- Bug 4506461 Begin
3438 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3439 l_temp_base_pc := l_rollup_rec2.base_percent_complete;
3440 ELSE
3441 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3442 END IF;
3443 -- Bug 4506461 End
3444
3445 IF g1_debug_mode = 'Y' THEN
3446 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updating PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3447 END IF;
3448
3449 pa_progress_rollup_pkg.update_row(
3450 x_progress_rollup_id => l_progress_rollup_id
3451 ,x_project_id => p_project_id
3452 ,x_object_id => p_object_id
3453 ,x_object_type => p_object_type
3454 ,x_as_of_date => p_as_of_date
3455 ,x_object_version_id => p_object_version_id
3456 ,x_last_update_date => sysdate
3457 ,x_last_updated_by => l_user_id
3458 ,x_progress_status_code => l_rollup_progress_status
3459 ,x_last_update_login => l_login_id
3460 ,x_incremental_work_qty => l_incremental_work_qty
3461 ,x_cumulative_work_qty => l_cumulative_work_qty
3462 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
3463 --bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
3464 ,x_base_percent_complete => l_temp_base_pc -- 4506461
3465 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp --maansari5/21
3466 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --maansari5/21
3467 ,x_estimated_start_date => l_estimated_start_date
3468 ,x_estimated_finish_date => l_estimated_finish_date
3469 ,x_actual_start_date => l_actual_start_date
3470 ,x_actual_finish_date => l_actual_finish_date
3471 ,x_est_remaining_effort => l_est_remaining_effort
3472 ,x_record_version_number => l_rollup_rec_ver_number
3473 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3474 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
3475 ,x_eff_rollup_prog_stat_code => l_rollup_rec2.eff_rollup_prog_stat_code
3476 ,x_percent_complete_id => l_percent_complete_id
3477 ,x_structure_type => p_structure_type -- l_rollup_rec2.structure_type fpm dev cr 3
3478 ,x_proj_element_id => l_rollup_rec2.proj_element_id
3479 ,x_structure_version_id => l_structure_version_id -- l_rollup_rec2.structure_version_id fpm dev cr 3
3480 ,x_ppl_act_effort_to_date => l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
3481 ,x_eqpmt_act_effort_to_date => l_rollup_rec2.eqpmt_act_effort_to_date
3482 ,x_eqpmt_etc_effort => l_rollup_rec2.eqpmt_etc_effort
3483 ,x_oth_act_cost_to_date_tc => l_rollup_rec2.oth_act_cost_to_date_tc
3484 ,x_oth_act_cost_to_date_fc => l_rollup_rec2.oth_act_cost_to_date_fc
3485 ,x_oth_act_cost_to_date_pc => l_rollup_rec2.oth_act_cost_to_date_pc
3486 ,x_oth_etc_cost_tc => l_rollup_rec2.oth_etc_cost_tc
3487 ,x_oth_etc_cost_fc => l_rollup_rec2.oth_etc_cost_fc
3488 ,x_oth_etc_cost_pc => l_rollup_rec2.oth_etc_cost_pc
3489 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc
3490 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc
3491 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc
3492 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc
3493 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc
3494 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc
3495 ,x_eqpmt_act_cost_to_date_tc => l_rollup_rec2.eqpmt_act_cost_to_date_tc
3496 ,x_eqpmt_act_cost_to_date_fc => l_rollup_rec2.eqpmt_act_cost_to_date_fc
3497 ,x_eqpmt_act_cost_to_date_pc => l_rollup_rec2.eqpmt_act_cost_to_date_pc
3498 ,x_eqpmt_etc_cost_tc => l_rollup_rec2.eqpmt_etc_cost_tc
3499 ,x_eqpmt_etc_cost_fc => l_rollup_rec2.eqpmt_etc_cost_fc
3500 ,x_eqpmt_etc_cost_pc => l_rollup_rec2.eqpmt_etc_cost_pc
3501 ,x_earned_value => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
3502 ,x_task_wt_basis_code => l_rollup_rec2.task_wt_basis_code
3503 ,x_subprj_ppl_act_effort => l_rollup_rec2.subprj_ppl_act_effort
3504 ,x_subprj_eqpmt_act_effort => l_rollup_rec2.subprj_eqpmt_act_effort
3505 ,x_subprj_ppl_etc_effort => l_rollup_rec2.subprj_ppl_etc_effort
3506 ,x_subprj_eqpmt_etc_effort => l_rollup_rec2.subprj_eqpmt_etc_effort
3507 ,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_TC
3508 ,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_FC
3509 ,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_PC
3510 ,x_subprj_ppl_act_cost_tc => l_rollup_rec2.subprj_ppl_act_cost_tc
3511 ,x_subprj_ppl_act_cost_fc => l_rollup_rec2.subprj_ppl_act_cost_fc
3512 ,x_subprj_ppl_act_cost_pc => l_rollup_rec2.subprj_ppl_act_cost_pc
3513 ,x_subprj_eqpmt_act_cost_tc => l_rollup_rec2.subprj_eqpmt_act_cost_tc
3514 ,x_subprj_eqpmt_act_cost_fc => l_rollup_rec2.subprj_eqpmt_act_cost_fc
3515 ,x_subprj_eqpmt_act_cost_pc => l_rollup_rec2.subprj_eqpmt_act_cost_pc
3516 ,x_subprj_oth_etc_cost_tc => l_rollup_rec2.subprj_oth_etc_cost_tc
3517 ,x_subprj_oth_etc_cost_fc => l_rollup_rec2.subprj_oth_etc_cost_fc
3518 ,x_subprj_oth_etc_cost_pc => l_rollup_rec2.subprj_oth_etc_cost_pc
3519 ,x_subprj_ppl_etc_cost_tc => l_rollup_rec2.subprj_ppl_etc_cost_tc
3520 ,x_subprj_ppl_etc_cost_fc => l_rollup_rec2.subprj_ppl_etc_cost_fc
3521 ,x_subprj_ppl_etc_cost_pc => l_rollup_rec2.subprj_ppl_etc_cost_pc
3522 ,x_subprj_eqpmt_etc_cost_tc => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
3523 ,x_subprj_eqpmt_etc_cost_fc => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
3524 ,x_subprj_eqpmt_etc_cost_pc => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
3525 ,x_subprj_earned_value => l_rollup_rec2.subprj_earned_value
3526 ,x_current_flag => l_rollup_current_flag -- bug 3879461 l_current_flag --maansari7/21
3527 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3528 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3529 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3530 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3531 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3532 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3533 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3534 ,x_prog_pa_period_name => l_pa_period_name
3535 ,x_prog_gl_period_name => l_gl_period_name
3536 ,x_oth_quantity_to_date => l_rollup_rec2.oth_quantity_to_date
3537 ,x_oth_etc_quantity => l_rollup_rec2.oth_etc_quantity
3538 ,x_oth_act_rawcost_to_date_tc => l_rollup_rec2.oth_act_rawcost_to_date_tc
3539 ,x_oth_act_rawcost_to_date_fc => l_rollup_rec2.oth_act_rawcost_to_date_fc
3540 ,x_oth_act_rawcost_to_date_pc => l_rollup_rec2.oth_act_rawcost_to_date_pc
3541 ,x_oth_etc_rawcost_tc => l_rollup_rec2.oth_etc_rawcost_tc
3542 ,x_oth_etc_rawcost_fc => l_rollup_rec2.oth_etc_rawcost_fc
3543 ,x_oth_etc_rawcost_pc => l_rollup_rec2.oth_etc_rawcost_pc
3544 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
3545 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
3546 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
3547 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
3548 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
3549 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
3550 ,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
3551 ,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
3552 ,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
3553 ,x_eqpmt_etc_rawcost_tc => l_rollup_rec2.eqpmt_etc_rawcost_tc
3554 ,x_eqpmt_etc_rawcost_fc => l_rollup_rec2.eqpmt_etc_rawcost_fc
3555 ,x_eqpmt_etc_rawcost_pc => l_rollup_rec2.eqpmt_etc_rawcost_pc
3556 ,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
3557 ,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
3558 ,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
3559 ,x_subprj_ppl_act_rawcost_tc => l_rollup_rec2.subprj_ppl_act_rawcost_tc
3560 ,x_subprj_ppl_act_rawcost_fc => l_rollup_rec2.subprj_ppl_act_rawcost_fc
3561 ,x_subprj_ppl_act_rawcost_pc => l_rollup_rec2.subprj_ppl_act_rawcost_pc
3562 ,x_subprj_eqpmt_act_rawcost_tc => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
3563 ,x_subprj_eqpmt_act_rawcost_fc => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
3564 ,x_subprj_eqpmt_act_rawcost_pc => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
3565 ,x_subprj_oth_etc_rawcost_tc => l_rollup_rec2.subprj_oth_etc_rawcost_tc
3566 ,x_subprj_oth_etc_rawcost_fc => l_rollup_rec2.subprj_oth_etc_rawcost_fc
3567 ,x_subprj_oth_etc_rawcost_pc => l_rollup_rec2.subprj_oth_etc_rawcost_pc
3568 ,x_subprj_ppl_etc_rawcost_tc => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
3569 ,x_subprj_ppl_etc_rawcost_fc => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
3570 ,x_subprj_ppl_etc_rawcost_pc => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
3571 ,x_subprj_eqpmt_etc_rawcost_tc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
3572 ,x_subprj_eqpmt_etc_rawcost_fc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
3573 ,x_subprj_eqpmt_etc_rawcost_pc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
3574 );
3575
3576 IF g1_debug_mode = 'Y' THEN
3577 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updated PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3578 END IF;
3579
3580 -- FPM Dev CR 6
3581 IF Fnd_Msg_Pub.count_msg > 0 THEN
3582 RAISE FND_API.G_EXC_ERROR;
3583 END IF;
3584 ELSE ---2
3585
3586 -- BEGIN: Fix for Bug # 3926827.
3587
3588 OPEN cur_pa_rollup1;
3589 FETCH cur_pa_rollup1 INTO l_rollup_rec1;
3590 CLOSE cur_pa_rollup1;
3591
3592 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3593 THEN
3594 l_EFF_ROLLUP_PERCENT_COMP := l_BASE_PERCENT_COMPLETE ;
3595 ELSE
3596 l_EFF_ROLLUP_PERCENT_COMP := l_rollup_rec1.EFF_ROLLUP_PERCENT_COMP;
3597 END IF;
3598
3599 -- END: Fix for Bug # 3926827.
3600
3601 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3602 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3603 THEN
3604
3605 --- l_base_percent_complete := l_rollup_rec1.base_percent_complete;
3606 l_eff_rollup_prog_stat_code := l_rollup_rec1.eff_rollup_prog_stat_code;
3607 l_base_progress_status_code := l_rollup_rec1.base_progress_status_code;
3608
3609 -- bug 3796357 begin
3610 l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
3611 l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
3612 l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
3613 l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
3614 l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
3615 l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
3616 l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
3617 l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
3618 l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
3619 l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
3620 l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
3621 l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
3622 l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
3623 l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
3624 l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
3625 l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
3626 l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
3627 l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
3628 l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
3629 l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
3630 l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
3631 l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
3632 l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
3633 l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
3634 l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
3635 l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
3636 l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
3637 l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
3638 l_txn_currency_code := l_rollup_rec1.txn_currency_code;
3639 l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
3640 l_oth_etc_quantity := l_rollup_rec1.oth_etc_quantity;
3641 l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
3642 l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
3643 l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
3644 l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
3645 l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
3646 l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
3647 l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
3648 l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
3649 l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
3650 l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
3651 l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
3652 l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
3653 l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
3654 l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
3655 l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
3656 l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
3657 l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
3658 l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
3659 -- bug 3796357 end
3660 ELSE
3661 l_eff_rollup_percent_comp := l_base_percent_complete ; -- null; as per majid 21 may
3662 l_eff_rollup_prog_stat_code := null;
3663 END IF;
3664
3665 -- Bug 4506461 Begin
3666 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3667 l_temp_base_pc := l_rollup_rec1.base_percent_complete;
3668 ELSE
3669 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3670 END IF;
3671 -- Bug 4506461 End
3672
3673
3674 -- changed this for effort to cost conversion
3675 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
3676 x_progress_rollup_id => l_progress_rollup_id
3677 ,x_project_id => p_project_id
3678 ,x_object_id => p_object_id
3679 ,x_object_type => p_object_type
3680 ,x_as_of_date => p_as_of_date
3681 ,x_object_version_id => p_object_version_id
3682 ,x_last_update_date => sysdate
3683 ,x_last_updated_by => l_user_id
3684 ,x_creation_date => sysdate
3685 ,x_created_by => l_user_id
3686 ,x_progress_status_code => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
3687 ,x_last_update_login => l_login_id
3688 ,x_incremental_work_qty => l_incremental_work_qty
3689 ,x_cumulative_work_qty => l_cumulative_work_qty
3690 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
3691 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
3692 ,x_base_percent_complete => l_temp_base_pc -- 4506461
3693 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
3694 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
3695 ,x_estimated_start_date => l_estimated_start_date
3696 ,x_estimated_finish_date => l_estimated_finish_date
3697 ,x_actual_start_date => l_actual_start_date
3698 ,x_actual_finish_date => l_actual_finish_date
3699 ,x_est_remaining_effort => l_est_remaining_effort
3700 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3701 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
3702 ,x_eff_rollup_prog_stat_code => l_eff_rollup_prog_stat_code
3703 ,x_percent_complete_id => l_percent_complete_id
3704 ,x_structure_type => p_structure_type
3705 ,x_proj_element_id => l_task_id
3706 ,x_structure_version_id => l_structure_version_id -- null fpm dev cr 3
3707 ,x_ppl_act_effort_to_date => l_actual_effort
3708 ,x_eqpmt_act_effort_to_date => l_eqpmt_act_effort_to_date -- bug 3796357 null --since this is a task progress, there wont be eqpmt effort.
3709 ,x_eqpmt_etc_effort => l_eqpmt_etc_effort -- bug 3796357 null
3710 ,x_oth_act_cost_to_date_tc => l_oth_act_cost_to_date_tc -- bug 3796357 null --no transaction is avialbale at task.
3711 ,x_oth_act_cost_to_date_fc => l_oth_act_cost_to_date_fc -- bug 3796357 null
3712 ,x_oth_act_cost_to_date_pc => l_oth_act_cost_to_date_pc -- bug 3796357 null
3713 ,x_oth_etc_cost_tc => l_oth_etc_cost_tc -- bug 3796357 null --no txn currency at task level.
3714 ,x_oth_etc_cost_fc => l_oth_etc_cost_fc -- bug 3796357 null
3715 ,x_oth_etc_cost_pc => l_oth_etc_cost_pc -- bug 3796357 null
3716 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc --3627315 issue 4
3717 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
3718 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
3719 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
3720 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
3721 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
3722 ,x_eqpmt_act_cost_to_date_tc => l_eqpmt_act_cost_to_date_tc-- bug 3796357 null
3723 ,x_eqpmt_act_cost_to_date_fc => l_eqpmt_act_cost_to_date_fc-- bug 3796357 null
3724 ,x_eqpmt_act_cost_to_date_pc => l_eqpmt_act_cost_to_date_pc-- bug 3796357 null
3725 ,x_eqpmt_etc_cost_tc => l_eqpmt_etc_cost_tc -- bug 3796357 null
3726 ,x_eqpmt_etc_cost_fc => l_eqpmt_etc_cost_fc -- bug 3796357 null
3727 ,x_eqpmt_etc_cost_pc => l_eqpmt_etc_cost_pc -- bug 3796357 null
3728 ,x_earned_value => l_earned_value
3729 ,x_task_wt_basis_code => l_task_weight_basis_code
3730 ,x_subprj_ppl_act_effort => null
3731 ,x_subprj_eqpmt_act_effort => null
3732 ,x_subprj_ppl_etc_effort => null
3733 ,x_subprj_eqpmt_etc_effort => null
3734 ,x_sbpj_oth_act_cost_to_date_tc => null
3735 ,x_sbpj_oth_act_cost_to_date_fc => null
3736 ,x_sbpj_oth_act_cost_to_date_pc => null
3737 ,x_subprj_ppl_act_cost_tc => null
3738 ,x_subprj_ppl_act_cost_fc => null
3739 ,x_subprj_ppl_act_cost_pc => null
3740 ,x_subprj_eqpmt_act_cost_tc => null
3741 ,x_subprj_eqpmt_act_cost_fc => null
3742 ,x_subprj_eqpmt_act_cost_pc => null
3743 ,x_subprj_oth_etc_cost_tc => null
3744 ,x_subprj_oth_etc_cost_fc => null
3745 ,x_subprj_oth_etc_cost_pc => null
3746 ,x_subprj_ppl_etc_cost_tc => null
3747 ,x_subprj_ppl_etc_cost_fc => null
3748 ,x_subprj_ppl_etc_cost_pc => null
3749 ,x_subprj_eqpmt_etc_cost_tc => null
3750 ,x_subprj_eqpmt_etc_cost_fc => null
3751 ,x_subprj_eqpmt_etc_cost_pc => null
3752 ,x_subprj_earned_value => null
3753 ,x_current_flag => l_rollup_current_flag
3754 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3755 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3756 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3757 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3758 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3759 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3760 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3761 ,x_prog_pa_period_name => l_pa_period_name
3762 ,x_prog_gl_period_name => l_gl_period_name
3763 ,x_oth_quantity_to_date => l_oth_quantity_to_date -- bug 3796357 null
3764 ,x_oth_etc_quantity => l_oth_etc_quantity -- bug 3796357 null
3765 ,x_oth_act_rawcost_to_date_tc => l_oth_act_rawcost_to_date_tc-- bug 3796357 null
3766 ,x_oth_act_rawcost_to_date_fc => l_oth_act_rawcost_to_date_fc-- bug 3796357 null
3767 ,x_oth_act_rawcost_to_date_pc => l_oth_act_rawcost_to_date_pc-- bug 3796357 null
3768 ,x_oth_etc_rawcost_tc => l_oth_etc_rawcost_tc-- bug 3796357 null
3769 ,x_oth_etc_rawcost_fc => l_oth_etc_rawcost_fc-- bug 3796357 null
3770 ,x_oth_etc_rawcost_pc => l_oth_etc_rawcost_pc-- bug 3796357 null
3771 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
3772 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
3773 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
3774 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
3775 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
3776 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
3777 ,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
3778 ,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
3779 ,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
3780 ,x_eqpmt_etc_rawcost_tc => l_eqpmt_etc_rawcost_tc-- bug 3796357 null
3781 ,x_eqpmt_etc_rawcost_fc => l_eqpmt_etc_rawcost_fc-- bug 3796357 null
3782 ,x_eqpmt_etc_rawcost_pc => l_eqpmt_etc_rawcost_pc-- bug 3796357 null
3783 ,x_sp_oth_act_rawcost_todate_tc => null
3784 ,x_sp_oth_act_rawcost_todate_fc => null
3785 ,x_sp_oth_act_rawcost_todate_pc => null
3786 ,x_subprj_ppl_act_rawcost_tc => null
3787 ,x_subprj_ppl_act_rawcost_fc => null
3788 ,x_subprj_ppl_act_rawcost_pc => null
3789 ,x_subprj_eqpmt_act_rawcost_tc => null
3790 ,x_subprj_eqpmt_act_rawcost_fc => null
3791 ,x_subprj_eqpmt_act_rawcost_pc => null
3792 ,x_subprj_oth_etc_rawcost_tc => null
3793 ,x_subprj_oth_etc_rawcost_fc => null
3794 ,x_subprj_oth_etc_rawcost_pc => null
3795 ,x_subprj_ppl_etc_rawcost_tc => null
3796 ,x_subprj_ppl_etc_rawcost_fc => null
3797 ,x_subprj_ppl_etc_rawcost_pc => null
3798 ,x_subprj_eqpmt_etc_rawcost_tc => null
3799 ,x_subprj_eqpmt_etc_rawcost_fc => null
3800 ,x_subprj_eqpmt_etc_rawcost_pc => null
3801 );
3802 END IF; --2
3803 END IF; --<l_db_action>
3804
3805
3806 --bug 3958686, insert assignment level records, start
3807 IF NVL( l_lowest_level_task, 'N')='Y' AND NVL(l_assignment_exists, 'N') = 'N'
3808 AND l_element_struc_type = 'WORKPLAN'
3809 AND (nvl(l_actual_effort,0) <> 0 OR nvl(l_est_remaining_effort,0) <> 0) -- Bug 4632744
3810 THEN
3811 IF l_resource_list_member_id is not null
3812 THEN
3813 -- Bug 4632744
3814 -- Commented below call
3815 -- Added new
3816 /*
3817
3818 PA_PROGRESS_PVT.convert_task_prog_to_assgn
3819 ( p_resource_list_mem_id => l_resource_list_member_id
3820 ,p_project_id => p_project_id
3821 ,p_task_id => p_object_id
3822 ,p_structure_version_id => l_structure_version_id
3823 ,p_as_of_date => trunc(p_as_of_date)
3824 ,p_action => p_action
3825 ,p_subprj_actual_exists => l_subproject_act_found -- 4490532
3826 ,p_object_version_id => p_object_version_id -- 4490532
3827 ,x_return_status => l_return_status
3828 ,x_msg_count => l_msg_count
3829 ,x_msg_data => l_msg_data
3830 );
3831 */
3832
3833 -- Bug 4632744
3834 -- Added code below to call assignment progress API
3835 -- with incremnetal actual
3836
3837
3838 OPEN c_get_last_ppl_effort_fr_assgn(l_resource_list_member_id);
3839 FETCH c_get_last_ppl_effort_fr_assgn INTO l_last_submitted_effort;
3840 CLOSE c_get_last_ppl_effort_fr_assgn;
3841
3842 l_actual_effort_this_period := NVL(l_actual_effort,0) - nvl(l_last_submitted_effort,0);
3843 ---5441402 introduced calling module as HIDDEN_ASGMT
3844 if (p_calling_module <> 'AMG') then
3845 l_calling_module := 'HIDDEN_ASGMT';
3846 else
3847 l_calling_module := p_calling_module;
3848 end if;
3849 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
3850 p_api_version => l_api_version
3851 ,p_init_msg_list => p_init_msg_list
3852 ,p_commit => p_commit
3853 ,p_validate_only => p_validate_only
3854 ,p_validation_level => p_validation_level
3855 ,p_calling_module => l_calling_module
3856 ,p_action => p_action
3857 ,p_progress_mode => p_progress_mode
3858 ,p_percent_complete_id => null
3859 ,p_project_id => p_project_id
3860 ,p_object_id => l_resource_list_member_id
3861 ,p_object_version_id => p_object_version_id
3862 ,p_task_id => p_object_id
3863 ,p_as_of_date => p_as_of_date
3864 ,p_progress_comment => p_progress_comment
3865 ,p_brief_overview => p_brief_overview
3866 ,p_actual_start_date => l_actual_start_date
3867 ,p_actual_finish_date => l_actual_finish_date
3868 ,p_estimated_start_date => l_estimated_start_date
3869 ,p_estimated_finish_date => l_estimated_finish_date
3870 ,p_record_version_number => null
3871 ,p_pm_product_code => p_pm_product_code
3872 ,p_structure_type => p_structure_type
3873 ,p_structure_version_id => p_structure_version_id
3874 ,p_actual_cost_this_period => null
3875 ,p_actual_effort_this_period => l_actual_effort_this_period
3876 ,p_rate_based_flag => l_rate_based_flag
3877 ,p_resource_class_code => l_resource_class_code
3878 ,p_actual_cost => null
3879 ,p_actual_effort => l_last_submitted_effort
3880 ,p_etc_cost_this_period => null
3881 ,p_etc_effort_this_period => l_est_remaining_effort
3882 ,p_txn_currency_code => l_txn_currency_code
3883 ,p_rbs_element_id => l_rbs_element_id
3884 ,p_resource_assignment_id => l_resource_assignment_id
3885 ,p_scheduled_start_date => l_scheduled_start_date
3886 ,p_scheduled_finish_date => l_scheduled_finish_date
3887 ,x_return_status => l_return_status
3888 ,x_msg_count => l_msg_count
3889 ,x_msg_data => l_msg_data
3890 );
3891
3892 -- Bug 8294708
3893 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3894 x_msg_data := l_msg_data;
3895 x_return_status := 'E';
3896 RAISE FND_API.G_EXC_ERROR;
3897 END IF;
3898
3899 END IF;
3900 END IF;
3901 --bug 3958686, insert assignment level records, end
3902
3903
3904 IF p_action = 'PUBLISH'
3905 THEN
3906 -- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
3907 /*
3908 --- call apis if the status is 'CANCELLED'
3909 IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
3910 AND l_element_struc_type = 'WORKPLAN' --maansari: fpm changes
3911 THEN
3912 PA_PROJ_ELEMENTS_UTILS.Check_chg_stat_cancel_ok (
3913 p_task_id => p_object_id
3914 ,p_task_version_id => p_object_version_id
3915 ,p_new_task_status => l_task_status
3916 ,x_return_status => l_return_status
3917 ,x_error_message_code => l_error_message_code
3918 );
3919
3920 IF (l_return_status <> 'S') THEN
3921 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3922 p_msg_name => l_error_message_code);
3923 raise FND_API.G_EXC_ERROR;
3924 END IF;
3925 END IF;
3926 */
3927
3928 -- Bug 3878024 : new Check is added below
3929 -- IF NVL( l_lowest_level_task, 'N' ) = 'N' AND p_object_type = 'PA_TASKS'
3930 -- AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3931 IF p_object_type = 'PA_TASKS'
3932 AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3933 THEN
3934 --- update % complete and prog stat for future rollup recs
3935 update pa_progress_rollup
3936 set completed_percentage = l_percent_complete,
3937 progress_status_code = p_progress_status_code
3938 where project_id = p_project_id
3939 and object_id = p_object_id
3940 and object_type = p_object_type
3941 and structure_type = p_structure_type
3942 and as_of_date > p_as_of_date
3943 and current_flag <> 'W' -- Bug 3879461
3944 and structure_version_id is null -- Bug 3879461
3945 ;
3946
3947 PA_PROGRESS_PUB.push_down_task_status(
3948 p_api_version => p_api_version
3949 ,p_init_msg_list => p_init_msg_list
3950 ,p_commit => p_commit
3951 ,p_validate_only => p_validate_only
3952 ,p_validation_level => p_validation_level
3953 ,p_calling_module => p_calling_module
3954 ,p_debug_mode => p_debug_mode
3955 ,p_max_msg_count => p_max_msg_count
3956 ,p_project_id => p_project_id
3957 ,P_OBJECT_TYPE => P_OBJECT_TYPE
3958 ,P_OBJECT_ID => P_OBJECT_ID
3959 ,p_as_of_date => p_as_of_date
3960 ,p_object_version_id => p_object_version_id
3961 ,p_actual_finish_date => nvl(l_actual_finish_date, trunc(sysdate)) -- Bug 3922325 : Added sysdate
3962 ,x_return_status => l_return_status
3963 ,x_msg_count => l_msg_count
3964 ,x_msg_data => l_msg_data
3965 ,p_task_status => l_task_status
3966 );
3967 END IF;
3968
3969 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3970 THEN
3971 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3972 p_msg_name => l_msg_data
3973 );
3974 x_msg_data := l_msg_data;
3975 x_return_status := 'E';
3976 RAISE FND_API.G_EXC_ERROR;
3977 END IF;
3978
3979 /* Bug 2751159 Moved the update task_status code out of IF condition for workplan
3980 It means updation of task status shd happen for financial also */
3981
3982 IF (p_progress_mode <> 'BACKDATED')
3983 THEN
3984 /* -- Bug#8213897 >> Starts -- */
3985
3986 declare
3987
3988 task_status1 number;
3989
3990 cursor cur_Task_Type is
3991 select type_id
3992 from pa_proj_elements
3993 where proj_element_id = p_object_id;
3994
3995 cursor chk_task_type_ppc_enabled (p_task_type_id number)is
3996 select percent_comp_enable_flag
3997 from pa_task_types
3998 where task_type_id = p_task_type_id ;
3999
4000 cursor chk_structure_ppc_enabled is
4001 select percent_comp_enable_flag
4002 from pa_proj_progress_attr
4003 where project_id = p_project_id
4004 and structure_type = p_structure_type;
4005
4006 l_task_type_id number;
4007
4008 l_task_perc_comp_enable_flag varchar2(1);
4009 l_struc_perc_comp_enable_flag varchar2(1);
4010
4011 begin
4012
4013 open cur_Task_Type;
4014 fetch cur_Task_Type into l_task_type_id;
4015 close cur_Task_Type;
4016
4017 open chk_task_type_ppc_enabled(l_task_type_id);
4018 fetch chk_task_type_ppc_enabled into l_task_perc_comp_enable_flag;
4019 close chk_task_type_ppc_enabled;
4020
4021 open chk_structure_ppc_enabled;
4022 fetch chk_structure_ppc_enabled into l_struc_perc_comp_enable_flag;
4023 close chk_structure_ppc_enabled;
4024
4025 select status_code
4026 into task_status1
4027 from pa_proj_elements
4028 WHERE proj_element_id = p_object_id
4029 AND project_id = p_project_id
4030 AND object_type = p_object_type;
4031
4032 If (nvl(l_struc_perc_comp_enable_flag, 'N') = 'N' or
4033 nvl(l_task_perc_comp_enable_flag, 'N') = 'N' )
4034 and task_status1 = '127' then
4035
4036 If l_task_status = 124 then
4037
4038 UPDATE pa_progress_rollup
4039 SET actual_finish_date = '',
4040 actual_start_date = '',
4041 completed_percentage = ''
4042 WHERE object_id = p_object_id
4043 AND current_flag IN ('Y')
4044 AND object_type = 'PA_TASKS'
4045 AND proj_element_id = p_object_id
4046 AND structure_version_id IS NULL
4047 AND project_id = p_project_id
4048 AND structure_type = p_structure_type;
4049
4050 Elsif l_task_status = 125 then
4051
4052 UPDATE pa_progress_rollup
4053 SET actual_finish_date = '',
4054 completed_percentage = ''
4055 WHERE object_id = p_object_id
4056 AND current_flag IN ('Y')
4057 AND object_type = 'PA_TASKS'
4058 AND proj_element_id = p_object_id
4059 AND structure_version_id IS NULL
4060 AND project_id = p_project_id
4061 AND structure_type = p_structure_type;
4062
4063 End If;
4064
4065 End If;
4066
4067 End;
4068
4069 /* -- Bug#8213897 >> Ends -- */
4070
4071
4072
4073 --Update pa_proj_elements with the status
4074 UPDATE pa_proj_elements
4075 SET status_code = l_task_status
4076 ,last_update_date = decode(status_code,l_task_status,last_update_date,sysdate) --Bug 5978904
4077 ,last_update_login = decode(status_code,l_task_status,last_update_login,l_login_id) --Bug 5978904
4078 ,last_updated_by = decode(status_code,l_task_status,last_updated_by,l_user_id) --Bug 5978904
4079 WHERE proj_element_id = p_object_id
4080 AND project_id = p_project_id
4081 AND object_type = p_object_type;
4082 END IF;
4083
4084
4085 -- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
4086 /*
4087 IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
4088 THEN
4089 PA_TASK_PVT1.set_new_tasks_to_TBD(
4090 p_project_id => p_project_id
4091 ,p_task_id => p_object_id
4092 ,p_task_status => l_task_status
4093 ,x_return_status => l_return_status
4094 ,x_msg_count => l_msg_count
4095 ,x_msg_data => l_msg_data);
4096
4097 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4098 raise FND_API.G_EXC_ERROR;
4099 END IF;
4100 END IF;
4101 */
4102
4103 IF l_element_struc_type = 'WORKPLAN'
4104 THEN
4105 IF p_progress_mode <> 'BACKDATED' then
4106 /* Bug2756007 Begin */
4107 OPEN cur_sch_id( p_object_version_id ) ;
4108 FETCH cur_sch_id INTO l_pev_schedule_id, l_sch_rec_ver_number;
4109 CLOSE cur_sch_id;
4110
4111 PA_TASK_PUB1.Update_Schedule_Version(
4112 p_pev_schedule_id => l_pev_schedule_id
4113 ,p_calling_module => p_calling_module
4114 ,p_actual_start_date => l_actual_start_date
4115 ,p_actual_finish_date => l_actual_finish_date
4116 ,p_estimate_start_date => l_estimated_start_date
4117 ,p_estimate_finish_date => l_estimated_finish_date
4118 ,p_record_version_number => l_sch_rec_ver_number
4119 ,x_return_status => l_return_status
4120 ,x_msg_count => l_msg_count
4121 ,x_msg_data => l_msg_data );
4122
4123 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4124 THEN
4125 -- Bug 3248988 : Update_schedule_version adds the message, here message shd not be added
4126 -- PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4127 -- p_msg_name => l_msg_data
4128 -- );
4129 -- x_msg_data := l_msg_data;
4130 x_return_status := 'E';
4131 RAISE FND_API.G_EXC_ERROR;
4132 END IF;
4133 /* Bug2756007 End */
4134 END IF;
4135
4136 /*****5466645
4137 IF(p_bulk_load_flag = 'N') Then
4138
4139 IF p_progress_mode <> 'BACKDATED'
4140 AND l_element_struc_type = 'WORKPLAN' --maansari fpm changes
4141 THEN
4142
4143 --- bug 2756033
4144 -- Bug 2812855 : Added following procedure call to populate actual and estimated dates to all the task versions
4145 IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' )
4146 THEN
4147 PA_TASK_PVT1.Update_Dates_To_All_Versions(
4148 p_project_id => p_project_id
4149 ,p_element_version_id => p_object_version_id
4150 ,x_return_status => l_return_status
4151 ,x_msg_count => l_msg_count
4152 ,x_msg_data => l_msg_data );
4153 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4154 THEN
4155 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4156 p_msg_name => l_msg_data
4157 );
4158 x_msg_data := l_msg_data;
4159 x_return_status := 'E';
4160 RAISE FND_API.G_EXC_ERROR;
4161 END IF;
4162
4163 BEGIN
4164 Select ppev1.proj_element_id
4165 into l_structure_id
4166 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
4167 where ppev2.element_version_id = p_object_version_id
4168 and ppev2.project_id = ppev1.project_id
4169 and ppev2.parent_structure_version_id = ppev1.element_version_id;
4170 EXCEPTION WHEN OTHERS THEN
4171 l_structure_id := -999;
4172 END;
4173
4174 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
4175 AND
4176 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_object_id) = 'Y') --Bug 3784405 Satish
4177 AND
4178 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
4179 THEN
4180 --copy to transaction dates
4181 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
4182 p_validate_only => FND_API.G_FALSE
4183 ,p_project_id => p_project_id
4184 ,x_return_status => x_return_status
4185 ,x_msg_count => x_msg_count
4186 ,x_msg_data => x_msg_data);
4187 END IF;
4188 END IF;
4189 END IF; ------ p_progress_mode <> backdated
4190 END IF; -------------- end p_bulk_load_flag = 'N'
4191 5466645************/
4192 END IF;
4193 END IF;
4194
4195 IF g1_debug_mode = 'Y' THEN
4196 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Task Progress Complete ', x_Log_Level=> 3);
4197 END IF;
4198
4199 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4200 THEN
4201 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4202 p_msg_name => l_msg_data
4203 );
4204
4205 x_msg_data := l_msg_data;
4206 x_return_status := 'E';
4207 RAISE FND_API.G_EXC_ERROR;
4208 END IF;
4209
4210 x_resource_list_member_id := l_resource_list_member_id;
4211
4212 EXCEPTION
4213 WHEN FND_API.G_EXC_ERROR THEN
4214 IF p_commit = FND_API.G_TRUE
4215 THEN
4216 rollback to UPDATE_TASK_PROGRESS;
4217 END IF;
4218 x_return_status := FND_API.G_RET_STS_ERROR;
4219 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4220 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4221 IF p_commit = FND_API.G_TRUE
4222 THEN
4223 rollback to UPDATE_TASK_PROGRESS;
4224 END IF;
4225 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4226 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4227 p_procedure_name => 'UPDATE_TASK_PROGRESS',
4228 p_error_text => SUBSTRB(SQLERRM,1,120));
4229 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4230 WHEN OTHERS THEN
4231 IF p_commit = FND_API.G_TRUE THEN
4232 rollback to UPDATE_TASK_PROGRESS;
4233 END IF;
4234 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4235 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4236 p_procedure_name => 'UPDATE_TASK_PROGRESS',
4237 p_error_text => SUBSTRB(SQLERRM,1,120));
4238 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4239 raise;
4240 END UPDATE_TASK_PROGRESS;
4241
4242
4243 -- Start of comments
4244 -- API name : ROLLUP_PROGRESS_PVT
4245 -- Type : Public
4246 -- Pre-reqs : For Program Rollup, the sub project buckets should be populated.
4247 -- Purpose : Rolls up the structure
4248 -- Parameters Desc :
4249 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4250 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
4251 -- proj_element_id of the deliverable and task
4252 -- p_object_version_id For Assignments, pass task_version_id, otherwise
4253 -- element_version_id of the deliverable and task
4254 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
4255 -- , for struture pass null
4256 -- p_lowest_level_task Does not seem to be required
4257 -- p_process_whole_tree To indicate if whole tree rollup is not required. It will
4258 -- do just 2 level rollup if N
4259 -- p_structure_version_id Structure version id of the publsihed or working structure version
4260 -- p_structure_type Possible values WORKPLAN, FINANCIAL
4261 -- p_fin_rollup_method Possible values are COST, EFFORT
4262 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
4263 -- p_rollup_entire_wbs To indicate if it requires the whole structure rollup, in this
4264 -- case it will ignore the passed object and starts with the lowest
4265 -- task
4266 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
4267 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
4268 -- PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT().
4269 -- End of comments
4270
4271 PROCEDURE ROLLUP_PROGRESS_PVT(
4272 p_api_version IN NUMBER :=1.0
4273 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4274 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4275 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4276 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4277 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4278 ,p_debug_mode IN VARCHAR2 :='N'
4279 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4280 ,p_progress_mode IN VARCHAR2 := 'FUTURE'
4281 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4282 ,p_object_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4283 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4284 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4285 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4286 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4287 ,p_lowest_level_task IN VARCHAR2 := 'N'
4288 ,p_process_whole_tree IN VARCHAR2 := 'Y'
4289 ,p_structure_version_id IN NUMBER
4290 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
4291 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
4292 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
4293 ,p_rollup_entire_wbs IN VARCHAR2 := 'N'
4294 ,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.
4295 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, for BUG 3951024
4296 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4297 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4298 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4299 )
4300 IS
4301
4302 l_api_name CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
4303 l_api_version CONSTANT NUMBER := 1.0 ;
4304 l_return_status VARCHAR2(1) ;
4305 l_msg_count NUMBER ;
4306 l_msg_data VARCHAR2(250) ;
4307 l_data VARCHAR2(250) ;
4308 l_msg_index_out NUMBER ;
4309 l_error_msg_code VARCHAR2(250) ;
4310 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
4311 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
4312 g1_debug_mode VARCHAR2(1);
4313
4314 -- Rollup Cases
4315 -- 1. Workplan Publsihed Version Rollup.
4316 -- 2. Workplan Working Version Rollup.
4317 -- 3. Financial Structure Rollup.
4318 -- 4. Entire WBS using structure version id.
4319 -- 5. Program Rollup
4320
4321 BEGIN
4322
4323 -- Rollup Cases
4324 -- 1. Workplan Publsihed Version Rollup.
4325 -- 2. Workplan Working Version Rollup.
4326 -- 3. Financial Structure Rollup.
4327 -- 4. Entire WBS using structure version id.
4328 -- 5. Program Rollup
4329
4330
4331 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4332
4333 IF g1_debug_mode = 'Y' THEN
4334 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT');
4335 END IF;
4336
4337 IF g1_debug_mode = 'Y' THEN
4338 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4339 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
4340 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
4341 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
4342 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
4343 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
4344 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
4345 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
4346 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4347 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
4348 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
4349 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4350 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
4351 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4352 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4353 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
4354 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4355 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4356 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4357 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4358 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
4359 END IF;
4360
4361 -- 20 May : Amit : If Structure_version_id is null, then no processing shd be done
4362 -- Bug 3856161 : Added p_as_of_date check also
4363 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
4364 return;
4365 END IF;
4366
4367 IF (p_commit = FND_API.G_TRUE) THEN
4368 savepoint ROLLUP_PROGRESS_PVT;
4369 END IF;
4370
4371 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4372 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4373 END IF;
4374
4375 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4376 FND_MSG_PUB.initialize;
4377 END IF;
4378
4379 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
4380
4381 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
4382 p_api_version => p_api_version
4383 ,p_init_msg_list => p_init_msg_list
4384 ,p_commit => p_commit
4385 ,p_validate_only => p_validate_only
4386 ,p_validation_level => p_validation_level
4387 ,p_calling_module => p_calling_module
4388 ,p_debug_mode => p_debug_mode
4389 ,p_max_msg_count => p_max_msg_count
4390 ,p_progress_mode => p_progress_mode
4391 ,p_project_id => p_project_id
4392 ,p_object_type => p_object_type
4393 ,p_object_id => p_object_id
4394 ,p_object_version_id => p_object_version_id
4395 ,p_task_version_id => p_task_version_id
4396 ,p_as_of_date => p_as_of_date
4397 ,p_lowest_level_task => p_lowest_level_task
4398 ,p_process_whole_tree => p_process_whole_tree
4399 ,p_structure_version_id => p_structure_version_id
4400 ,p_structure_type => p_structure_type
4401 ,p_fin_rollup_method => p_fin_rollup_method
4402 ,p_wp_rollup_method => p_wp_rollup_method
4403 ,p_rollup_entire_wbs => p_rollup_entire_wbs
4404 ,p_working_wp_prog_flag => p_working_wp_prog_flag
4405 ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag -- added by rtarway for 3951024
4406 ,x_return_status => l_return_status
4407 ,x_msg_count => l_msg_count
4408 ,x_msg_data => l_msg_data);
4409
4410 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4411 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4412 p_msg_name => l_msg_data
4413 );
4414 x_msg_data := l_msg_data;
4415 x_return_status := 'E';
4416 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4417 END IF;
4418
4419 x_return_status := FND_API.G_RET_STS_SUCCESS;
4420
4421 IF (p_commit = FND_API.G_TRUE) THEN
4422 COMMIT;
4423 END IF;
4424
4425
4426 IF g1_debug_mode = 'Y' THEN
4427 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
4428 END IF;
4429
4430 EXCEPTION
4431 WHEN FND_API.G_EXC_ERROR THEN
4432 IF p_commit = FND_API.G_TRUE THEN
4433 rollback to ROLLUP_PROGRESS_PVT;
4434 END IF;
4435 x_return_status := FND_API.G_RET_STS_ERROR;
4436 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4437 IF p_commit = FND_API.G_TRUE THEN
4438 rollback to ROLLUP_PROGRESS_PVT;
4439 END IF;
4440 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4441 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4442 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4443 p_error_text => SUBSTRB(SQLERRM,1,120));
4444 WHEN OTHERS THEN
4445 IF p_commit = FND_API.G_TRUE THEN
4446 rollback to ROLLUP_PROGRESS_PVT;
4447 END IF;
4448 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4449 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4450 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4451 p_error_text => SUBSTRB(SQLERRM,1,120));
4452 raise;
4453 END ROLLUP_PROGRESS_PVT;
4454
4455 -- Start of comments
4456 -- API name : UPDATE_ROLLUP_PROGRESS_PVT
4457 -- Type : Private
4458 -- Pre-reqs : ROLLUP_PROGRESS_PVT shd have been called.
4459 -- Purpose : Updates the Rolled up data
4460 -- Parameters Desc :
4461 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4462 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
4463 -- proj_element_id of the deliverable and task
4464 -- p_object_version_id For Assignments, pass task_version_id, otherwise
4465 -- element_version_id of the deliverable and task
4466 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
4467 -- , for struture pass null
4468 -- p_lowest_level_task Does not seem to be required
4469 -- p_structure_version_id Structure version id of the publsihed or working structure version
4470 -- p_structure_type Possible values WORKPLAN, FINANCIAL
4471 -- p_fin_rollup_method Possible values are COST, EFFORT
4472 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
4473 -- p_published_structure To indicate if the passed structure version is published
4474 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
4475 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
4476 -- PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT().
4477 -- End of comments
4478
4479 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4480 p_api_version IN NUMBER :=1.0
4481 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4482 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4483 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4484 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4485 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4486 ,p_debug_mode IN VARCHAR2 :='N'
4487 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4488 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4489 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4490 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4491 ,p_rollup_table IN PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4492 ,p_lowest_level_task IN VARCHAR2 := 'N'
4493 ,p_task_version_id IN NUMBER
4494 ,p_structure_version_id IN NUMBER
4495 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
4496 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
4497 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
4498 ,p_published_structure IN VARCHAR2
4499 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- FPM Dev CR 7
4500 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --bug 3829341
4501 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, for BUG 3951024
4502 ,p_progress_mode IN VARCHAR2 := 'FUTURE' -- 4091457
4503 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4504 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4505 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4506 ) IS
4507 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4508 l_api_version CONSTANT NUMBER := 1.0 ;
4509
4510 l_return_status VARCHAR2(1) ;
4511 l_msg_count NUMBER ;
4512 l_msg_data VARCHAR2(250) ;
4513 l_data VARCHAR2(250) ;
4514 l_msg_index_out NUMBER ;
4515 l_error_msg_code VARCHAR2(250) ;
4516 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
4517 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
4518 g1_debug_mode VARCHAR2(1);
4519
4520 BEGIN
4521
4522 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4523
4524 IF g1_debug_mode = 'Y' THEN
4525 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT');
4526 END IF;
4527
4528 IF g1_debug_mode = 'Y' THEN
4529 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4530 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
4531 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
4532 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
4533 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
4534 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
4535 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
4536 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
4537 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4538 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4539 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
4540 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4541 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4542 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4543 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4544 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4545 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4546 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_published_structure='||p_published_structure, x_Log_Level=> 3);
4547 END IF;
4548
4549
4550 IF (p_commit = FND_API.G_TRUE) THEN
4551 savepoint UPDATE_ROLLUP_PROGRESS_PVT;
4552 END IF;
4553
4554 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4555 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4556 END IF;
4557
4558 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4559 FND_MSG_PUB.initialize;
4560 END IF;
4561
4562 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
4563
4564 PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT(
4565 p_api_version => p_api_version
4566 ,p_init_msg_list => p_init_msg_list
4567 ,p_commit => p_commit
4568 ,p_validate_only => p_validate_only
4569 ,p_validation_level => p_validation_level
4570 ,p_calling_module => p_calling_module
4571 ,p_debug_mode => p_debug_mode
4572 ,p_max_msg_count => p_max_msg_count
4573 ,p_project_id => p_project_id
4574 ,p_object_version_id => p_object_version_id
4575 ,p_as_of_date => p_as_of_date
4576 ,p_rollup_table => p_rollup_table
4577 ,p_lowest_level_task => p_lowest_level_task
4578 ,p_task_version_id => p_task_version_id
4579 ,p_structure_version_id => p_structure_version_id
4580 ,p_structure_type => p_structure_type
4581 ,p_fin_rollup_method => p_fin_rollup_method
4582 ,p_wp_rollup_method => p_wp_rollup_method
4583 ,p_published_structure => p_published_structure
4584 ,p_rollup_entire_wbs => p_rollup_entire_wbs
4585 ,p_working_wp_prog_flag => p_working_wp_prog_flag
4586 ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag --BUG 3951024
4587 ,p_progress_mode => p_progress_mode -- 4091457
4588 ,x_return_status => l_return_status
4589 ,x_msg_count => l_msg_count
4590 ,x_msg_data => l_msg_data);
4591
4592 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4593 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4594 p_msg_name => l_msg_data);
4595 x_msg_data := l_msg_data;
4596 x_return_status := 'E';
4597 x_msg_count := l_msg_count;
4598 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4599 END IF;
4600
4601
4602 x_return_status := FND_API.G_RET_STS_SUCCESS;
4603
4604 IF (p_commit = FND_API.G_TRUE) THEN
4605 COMMIT;
4606 END IF;
4607
4608 IF g1_debug_mode = 'Y' THEN
4609 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT End', x_Log_Level=> 3);
4610 END IF;
4611
4612 EXCEPTION
4613 WHEN FND_API.G_EXC_ERROR THEN
4614 IF g1_debug_mode = 'Y' THEN
4615 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4616 END IF;
4617
4618 IF p_commit = FND_API.G_TRUE THEN
4619 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4620 END IF;
4621 x_return_status := FND_API.G_RET_STS_ERROR;
4622 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4623
4624 IF g1_debug_mode = 'Y' THEN
4625 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4626 END IF;
4627
4628 IF p_commit = FND_API.G_TRUE THEN
4629 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4630 END IF;
4631 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4632 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4633 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4634 p_error_text => SUBSTRB(SQLERRM,1,120));
4635 WHEN OTHERS THEN
4636 IF g1_debug_mode = 'Y' THEN
4637 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4638 END IF;
4639
4640 IF p_commit = FND_API.G_TRUE THEN
4641 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4642 END IF;
4643 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4644 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4645 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4646 p_error_text => SUBSTRB(SQLERRM,1,120));
4647 raise;
4648 END UPDATE_ROLLUP_PROGRESS_PVT;
4649
4650
4651 PROCEDURE CREATE_PROJ_PROG_ATTR(
4652 p_api_version IN NUMBER :=1.0
4653 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4654 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4655 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4656 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4657 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4658 ,p_debug_mode IN VARCHAR2 :='N'
4659 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4660 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4661 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4662 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4663 ,P_PROGRESS_CYCLE_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4664 ,P_WQ_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4665 ,P_REMAIN_EFFORT_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4666 ,P_PERCENT_COMP_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4667 ,P_NEXT_PROGRESS_UPDATE_DATE IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4668 ,p_action_set_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4669 ,p_TASK_WEIGHT_BASIS_CODE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4670 ,X_PROJ_PROGRESS_ATTR_ID IN OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4671 ,P_ALLOW_COLLAB_PROG_ENTRY IN VARCHAR2 := 'N'
4672 ,P_ALLW_PHY_PRCNT_CMP_OVERRIDES IN VARCHAR2 := 'N'
4673 ,P_STRUCTURE_TYPE IN VARCHAR2 := 'WORKPLAN'
4674 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4675 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4676 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4677 ) IS
4678
4679 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4680 l_api_version CONSTANT NUMBER := 1.0;
4681
4682 l_return_status VARCHAR2(1);
4683 l_msg_count NUMBER;
4684 l_msg_data VARCHAR2(250);
4685 l_data VARCHAR2(250);
4686 l_msg_index_out NUMBER;
4687 l_error_msg_code VARCHAR2(250);
4688
4689 l_PROGRESS_CYCLE_ID NUMBER := null;
4690 l_WQ_ENABLE_FLAG VARCHAR2(1) := null;
4691 l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4692 l_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4693 l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4694
4695 --bug 3010538
4696 l_TASK_WEIGHT_BASIS_CODE VARCHAR2(30);
4697 --end bug 3010538
4698
4699 BEGIN
4700
4701 IF g1_debug_mode = 'Y' THEN
4702 pa_debug.init_err_stack ('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4703 END IF;
4704
4705 IF (p_debug_mode = 'Y') THEN
4706 IF g1_debug_mode = 'Y' THEN
4707 pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4708 END IF;
4709 END IF;
4710
4711 IF (p_commit = FND_API.G_TRUE) THEN
4712 savepoint CREATE_PROJ_PROG_ATTR;
4713 END IF;
4714
4715 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4716 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4717 END IF;
4718
4719 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4720 FND_MSG_PUB.initialize;
4721 END IF;
4722
4723 IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4724 THEN
4725 l_PROGRESS_CYCLE_ID := null;
4726 ELSE
4727 l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4728 END IF;
4729
4730 IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4731 THEN
4732 l_WQ_ENABLE_FLAG := 'N';
4733 ELSE
4734 l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4735 END IF;
4736
4737 IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4738 THEN
4739 l_REMAIN_EFFORT_ENABLE_FLAG := 'N';
4740 ELSE
4741 l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4742 END IF;
4743
4744 IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4745 THEN
4746 l_PERCENT_COMP_ENABLE_FLAG := 'N';
4747 ELSE
4748 l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4749 END IF;
4750
4751 IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4752 THEN
4753 l_NEXT_PROGRESS_UPDATE_DATE := null;
4754 ELSE
4755 l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4756 END IF;
4757
4758 --bug 3010538
4759 IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4760 THEN
4761 l_task_weight_basis_code := 'DURATION';
4762 ELSE
4763 l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
4764 END IF;
4765 --end bug 3010538
4766
4767 PA_PROJ_PROGRESS_ATTR_PKG.INSERT_ROW(
4768 X_PROJ_PROGRESS_ATTR_ID => X_PROJ_PROGRESS_ATTR_ID
4769 ,x_project_id => p_project_id
4770 ,X_OBJECT_TYPE => P_OBJECT_TYPE
4771 ,X_OBJECT_ID => P_OBJECT_ID
4772 ,X_LAST_UPDATE_DATE => SYSDATE
4773 ,X_LAST_UPDATED_BY => FND_GLOBAL.user_id
4774 ,X_CREATION_DATE => SYSDATE
4775 ,X_CREATED_BY => FND_GLOBAL.user_id
4776 ,X_LAST_UPDATE_LOGIN => FND_GLOBAL.login_id
4777 ,X_PROGRESS_CYCLE_ID => l_PROGRESS_CYCLE_ID
4778 ,X_WQ_ENABLE_FLAG => l_WQ_ENABLE_FLAG
4779 ,X_REMAIN_EFFORT_ENABLE_FLAG => l_REMAIN_EFFORT_ENABLE_FLAG
4780 ,X_PERCENT_COMP_ENABLE_FLAG => l_PERCENT_COMP_ENABLE_FLAG
4781 ,X_NEXT_PROGRESS_UPDATE_DATE => l_NEXT_PROGRESS_UPDATE_DATE
4782 ,X_TASK_WEIGHT_BASIS_CODE => l_TASK_WEIGHT_BASIS_CODE
4783 ,X_ALLOW_COLLAB_PROG_ENTRY => P_ALLOW_COLLAB_PROG_ENTRY
4784 ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES => P_ALLW_PHY_PRCNT_CMP_OVERRIDES
4785 ,X_STRUCTURE_TYPE => P_STRUCTURE_TYPE
4786 );
4787
4788 x_return_status := FND_API.G_RET_STS_SUCCESS;
4789
4790 IF (p_commit = FND_API.G_TRUE) THEN
4791 COMMIT;
4792 END IF;
4793
4794 IF (p_debug_mode = 'Y') THEN
4795 IF g1_debug_mode = 'Y' THEN
4796 pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR END');
4797 END IF;
4798 END IF;
4799
4800 EXCEPTION
4801 when FND_API.G_EXC_ERROR then
4802 if p_commit = FND_API.G_TRUE then
4803 rollback to CREATE_PROJ_PROG_ATTR;
4804 end if;
4805 x_return_status := FND_API.G_RET_STS_ERROR;
4806 when FND_API.G_EXC_UNEXPECTED_ERROR then
4807 if p_commit = FND_API.G_TRUE then
4808 rollback to CREATE_PROJ_PROG_ATTR;
4809 end if;
4810 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4811 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4812 p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4813 p_error_text => SUBSTRB(SQLERRM,1,120));
4814 when OTHERS then
4815 if p_commit = FND_API.G_TRUE then
4816 rollback to CREATE_PROJ_PROG_ATTR;
4817 end if;
4818 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4819 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4820 p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4821 p_error_text => SUBSTRB(SQLERRM,1,120));
4822 raise;
4823 END CREATE_PROJ_PROG_ATTR;
4824
4825
4826 PROCEDURE UPDATE_PROJ_PROG_ATTR(
4827 p_api_version IN NUMBER :=1.0
4828 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4829 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4830 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4831 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4832 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4833 ,p_debug_mode IN VARCHAR2 :='N'
4834 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4835 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4836 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4837 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4838 ,P_PROGRESS_CYCLE_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4839 ,P_WQ_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4840 ,P_REMAIN_EFFORT_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4841 ,P_PERCENT_COMP_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4842 ,P_NEXT_PROGRESS_UPDATE_DATE IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4843 ,p_action_set_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4844 ,p_TASK_WEIGHT_BASIS_CODE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4845 ,P_PROJ_PROGRESS_ATTR_ID IN NUMBER
4846 ,p_record_version_number IN NUMBER
4847 ,p_allow_collab_prog_entry IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4848 ,p_allw_phy_prcnt_cmp_overrides IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4849 ,p_structure_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4850 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4851 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4852 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4853 ) IS
4854
4855 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4856 l_api_version CONSTANT NUMBER := 1.0;
4857
4858 l_return_status VARCHAR2(1);
4859 l_msg_count NUMBER;
4860 l_msg_data VARCHAR2(250);
4861 l_data VARCHAR2(250);
4862 l_msg_index_out NUMBER;
4863 l_error_msg_code VARCHAR2(250);
4864
4865 l_PROGRESS_CYCLE_ID NUMBER := null;
4866 l_WQ_ENABLE_FLAG VARCHAR2(1) := null;
4867 l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4868 l_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4869 l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4870
4871 l_old_enable_wq_flag VARCHAR2(1) := null;
4872 l_old_REMAIN_EFF_ENABLE_FLAG VARCHAR2(1) := null;
4873 l_old_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4874
4875 --bug 3010538
4876 l_TASK_WEIGHT_BASIS_CODE VARCHAR2(30);
4877
4878 CURSOR cur_task_weight_bas_code IS
4879 select task_weight_basis_code
4880 from pa_proj_progress_attr
4881 where proj_progress_attr_id = p_proj_progress_attr_id;
4882 l_old_tk_wght_basis_code VARCHAR2(30);
4883 l_updt_struc_ver_id NUMBER;
4884
4885 --cursor to get structure version id of all non-published version
4886 CURSOR cur_get_wk_ver_struct_id IS
4887 select str.element_version_id
4888 from pa_proj_elem_ver_structure str,
4889 pa_proj_elements pe,
4890 pa_proj_structure_types pst
4891 where pe.project_id = p_project_id
4892 and pe.project_id = str.project_id
4893 and pe.proj_element_id = str.proj_element_id
4894 and str.status_code <> 'STRUCTURE_PUBLISHED'
4895 and pe.proj_element_id = pst.proj_element_id
4896 and pst.structure_type_id = 1;
4897
4898 CURSOR cur_get_proj_temp_flag IS
4899 select template_flag from pa_projects_all where project_id = p_project_id;
4900 l_template_flag VARCHAR2(1);
4901
4902 --cursor to get only structure version id (when version disabled)
4903 CURSOR cur_get_only_ver_struct_id IS
4904 select str.element_version_id
4905 from pa_proj_elem_ver_structure str,
4906 pa_proj_elements pe,
4907 pa_proj_structure_types pst
4908 where pe.project_id = p_project_id
4909 and pe.project_id = str.project_id
4910 and pe.proj_element_id = str.proj_element_id
4911 and pe.proj_element_id = pst.proj_element_id
4912 and pst.structure_type_id = 1;
4913 --end bug 3010538
4914
4915 CURSOR cur_prg_attr
4916 IS
4917 SELECT WQ_ENABLE_FLAG, REMAIN_EFFORT_ENABLE_FLAG,
4918 PERCENT_COMP_ENABLE_FLAG
4919 FROM PA_PROJ_PROGRESS_ATTR
4920 WHERE PROJ_PROGRESS_ATTR_ID = p_PROJ_PROGRESS_ATTR_ID;
4921
4922 -- Bug # 4576303.
4923 cursor cur_tasks_exist (c_str_ver_id NUMBER) is
4924 select 'Y'
4925 from pa_proj_element_versions ppev
4926 where ppev.parent_structure_version_id = c_str_ver_id
4927 and ppev.object_type = 'PA_TASKS';
4928
4929 l_tasks_exist VARCHAR2(1) := null;
4930 -- Bug # 4576303.
4931 BEGIN
4932
4933 IF g1_debug_mode = 'Y' THEN
4934 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4935 END IF;
4936
4937 IF (p_debug_mode = 'Y') THEN
4938 IF g1_debug_mode = 'Y' THEN
4939 pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4940 END IF;
4941 END IF;
4942
4943 IF (p_commit = FND_API.G_TRUE) THEN
4944 savepoint UPDATE_PROJ_PROG_ATTR;
4945 END IF;
4946
4947 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4948 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4949 END IF;
4950
4951 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4952 FND_MSG_PUB.initialize;
4953 END IF;
4954
4955 /* IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4956 THEN
4957 l_PROGRESS_CYCLE_ID := null;
4958 ELSE
4959 l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4960 END IF;
4961
4962 IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4963 THEN
4964 l_WQ_ENABLE_FLAG := null;
4965 ELSE
4966 l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4967 END IF;
4968
4969 IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4970 THEN
4971 l_REMAIN_EFFORT_ENABLE_FLAG := null;
4972 ELSE
4973 l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4974 END IF;
4975
4976 IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4977 THEN
4978 l_PERCENT_COMP_ENABLE_FLAG := null;
4979 ELSE
4980 l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4981 END IF;
4982
4983 IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4984 THEN
4985 l_NEXT_PROGRESS_UPDATE_DATE := null;
4986 ELSE
4987 l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4988 END IF;
4989 */
4990
4991 /* Start commenting out as per Majid's email : 07-APR-2004.
4992
4993 IF PA_PROGRESS_UTILS.PROJ_TASK_PROG_EXISTS( p_project_id, 0 ) = 'Y'
4994 THEN
4995 OPEN cur_prg_attr;
4996 FETCH cur_prg_attr INTO l_old_enable_wq_flag,
4997 l_old_REMAIN_EFF_ENABLE_FLAG ,
4998 l_old_PERCENT_COMP_ENABLE_FLAG;
4999 CLOSE cur_prg_attr;
5000
5001 IF p_PERCENT_COMP_ENABLE_FLAG = 'N' AND
5002 l_old_PERCENT_COMP_ENABLE_FLAG = 'Y'
5003 THEN
5004 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5005 p_msg_name => 'PA_TP_CANT_DIS_PC');
5006 x_msg_data := 'PA_TP_CANT_DIS_PC';
5007 x_return_status := 'E';
5008 RAISE FND_API.G_EXC_ERROR;
5009 END IF;
5010
5011 IF p_WQ_ENABLE_FLAG = 'N' AND
5012 l_old_enable_wq_flag = 'Y'
5013 THEN
5014 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5015 p_msg_name => 'PA_TP_CANT_DIS_WQ');
5016 x_msg_data := 'PA_TP_CANT_DIS_WQ';
5017 x_return_status := 'E';
5018 RAISE FND_API.G_EXC_ERROR;
5019 END IF;
5020
5021 IF p_REMAIN_EFFORT_ENABLE_FLAG = 'N' AND
5022 l_old_REMAIN_EFF_ENABLE_FLAG = 'Y'
5023 THEN
5024 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5025 p_msg_name => 'PA_TP_CANT_DIS_REM_EFF');
5026 x_msg_data := 'PA_TP_CANT_DIS_REM_EFF';
5027 x_return_status := 'E';
5028 RAISE FND_API.G_EXC_ERROR;
5029 END IF;
5030
5031 END IF;
5032
5033 End commentng out as per Majid's email : 07-APR-2004. */
5034
5035 --bug 3010538
5036 OPEN cur_task_weight_bas_code;
5037 FETCH cur_task_weight_bas_code into l_old_tk_wght_basis_code;
5038 CLOSE cur_task_weight_bas_code;
5039 IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5040 THEN
5041 --no value passed; same as old value
5042 l_task_weight_basis_code := l_old_tk_wght_basis_code;
5043 ELSE
5044 --------------dbms_output.put_line('value passed '||p_task_weight_basis_code||','||l_old_tk_wght_basis_code);
5045 --value passed; check if different
5046 IF (p_task_weight_basis_code <> l_old_tk_wght_basis_code)
5047 AND p_structure_type = 'WORKPLAN'
5048 THEN
5049 --------------dbms_output.put_line('old <> new');
5050 --different; check if changing to DURATION or EFFORT
5051 IF (p_task_weight_basis_code = 'DURATION')
5052 -- OR -- Bug # 4576303.
5053 -- (p_task_weight_basis_code = 'EFFORT') -- Bug # 4576303.
5054 THEN
5055 --basis change; set update flag to Y
5056 --------------dbms_output.put_line('basis is duration or effort');
5057 OPEN cur_get_proj_temp_flag;
5058 FETCH cur_get_proj_temp_flag into l_template_flag;
5059 CLOSE cur_get_proj_temp_flag;
5060 IF ('Y'=PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) AND (l_template_flag = 'N')) THEN
5061 --------------dbms_output.put_line('versioning enabled');
5062 --get all working version for project
5063 OPEN cur_get_wk_ver_struct_id;
5064 LOOP
5065 --------------dbms_output.put_line('in loop '||p_project_id);
5066 FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
5067 EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
5068 --call API to update flag
5069 -- Bug # 4576303.
5070 open cur_tasks_exist (l_updt_struc_ver_id);
5071 fetch cur_tasks_exist into l_tasks_exist;
5072 close cur_tasks_exist;
5073 if (nvl(l_tasks_exist, 'N') = 'Y') then
5074 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5075 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5076 p_project_id => p_project_id,
5077 p_structure_version_id => l_updt_struc_ver_id,
5078 p_update_wbs_flag => 'Y',
5079 x_return_status => l_return_status,
5080 x_msg_count => l_msg_count,
5081 x_msg_data => l_msg_data
5082 );
5083 end if;
5084 -- Bug # 4576303.
5085 --------------dbms_output.put_line('ret stat = '||l_return_status);
5086 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5087 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5088 p_msg_name => l_msg_data
5089 );
5090 x_msg_data := l_msg_data;
5091 x_return_status := 'E';
5092 CLOSE cur_get_wk_ver_struct_id;
5093 RAISE FND_API.G_EXC_ERROR;
5094 END IF;
5095 END LOOP;
5096 CLOSE cur_get_wk_ver_struct_id;
5097 ELSE
5098 --------------dbms_output.put_line('versioning disabled');
5099 --get only version, project or template
5100 OPEN cur_get_only_ver_struct_id;
5101 FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
5102 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5103 CLOSE cur_get_only_ver_struct_id;
5104 -- Bug # 4576303.
5105 open cur_tasks_exist (l_updt_struc_ver_id);
5106 fetch cur_tasks_exist into l_tasks_exist;
5107 close cur_tasks_exist;
5108 if (nvl(l_tasks_exist, 'N') = 'Y') then
5109 --call API to update flag
5110 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5111 p_project_id => p_project_id,
5112 p_structure_version_id => l_updt_struc_ver_id,
5113 p_update_wbs_flag => 'Y',
5114 x_return_status => l_return_status,
5115 x_msg_count => l_msg_count,
5116 x_msg_data => l_msg_data
5117 );
5118 end if;
5119 -- Bug # 4576303.
5120 --------------dbms_output.put_line('ret stat = '||l_return_status);
5121 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5122 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5123 p_msg_name => l_msg_data
5124 );
5125 x_msg_data := l_msg_data;
5126 x_return_status := 'E';
5127 RAISE FND_API.G_EXC_ERROR;
5128 END IF;
5129 END IF;
5130 ELSE
5131 --3035902: process update flag changes; added check for
5132 --sharing disabled
5133 --set update flag to N when changing to MANUAL and
5134 --if this is split structure; otherwise no change
5135 IF ('Y'=PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) AND (l_template_flag = 'N') AND (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'N')) THEN
5136 --versioning enabled
5137 OPEN cur_get_wk_ver_struct_id;
5138 LOOP
5139 --------------dbms_output.put_line('in loop '||p_project_id);
5140 FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
5141 EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
5142 --call API to update flag
5143 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5144 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5145 p_project_id => p_project_id,
5146 p_structure_version_id => l_updt_struc_ver_id,
5147 p_update_wbs_flag => 'N',
5148 x_return_status => l_return_status,
5149 x_msg_count => l_msg_count,
5150 x_msg_data => l_msg_data
5151 );
5152 --------------dbms_output.put_line('ret stat = '||l_return_status);
5153 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5154 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5155 p_msg_name => l_msg_data
5156 );
5157 x_msg_data := l_msg_data;
5158 x_return_status := 'E';
5159 CLOSE cur_get_wk_ver_struct_id;
5160 RAISE FND_API.G_EXC_ERROR;
5161 END IF;
5162 END LOOP;
5163 CLOSE cur_get_wk_ver_struct_id;
5164 ELSE
5165 -- Added if clause for bug#3066833
5166 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'N' THEN
5167 --get only version, project or template
5168 OPEN cur_get_only_ver_struct_id;
5169 FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
5170 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5171 CLOSE cur_get_only_ver_struct_id;
5172 --call API to update flag
5173 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5174 p_project_id => p_project_id,
5175 p_structure_version_id => l_updt_struc_ver_id,
5176 p_update_wbs_flag => 'N',
5177 x_return_status => l_return_status,
5178 x_msg_count => l_msg_count,
5179 x_msg_data => l_msg_data
5180 );
5181 --------------dbms_output.put_line('ret stat = '||l_return_status);
5182 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5183 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5184 p_msg_name => l_msg_data
5185 );
5186 x_msg_data := l_msg_data;
5187 x_return_status := 'E';
5188 RAISE FND_API.G_EXC_ERROR;
5189 END IF;
5190 END IF ;
5191 END IF;
5192 END IF;
5193 END IF;
5194 l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
5195 END IF;
5196 --end bug 3010538
5197
5198 PA_PROJ_PROGRESS_ATTR_PKG.UPDATE_ROW(
5199 X_PROJ_PROGRESS_ATTR_ID => P_PROJ_PROGRESS_ATTR_ID
5200 ,X_project_id => p_project_id
5201 ,X_OBJECT_TYPE => p_OBJECT_TYPE
5202 ,X_OBJECT_ID => p_OBJECT_ID
5203 ,X_LAST_UPDATE_DATE => SYSDATE
5204 ,X_LAST_UPDATED_BY => FND_GLOBAL.user_id
5205 ,X_LAST_UPDATE_LOGIN => FND_GLOBAL.login_id
5206 ,X_PROGRESS_CYCLE_ID => p_PROGRESS_CYCLE_ID
5207 ,X_WQ_ENABLE_FLAG => p_WQ_ENABLE_FLAG
5208 ,X_REMAIN_EFFORT_ENABLE_FLAG => p_REMAIN_EFFORT_ENABLE_FLAG
5209 ,X_PERCENT_COMP_ENABLE_FLAG => p_PERCENT_COMP_ENABLE_FLAG
5210 ,X_NEXT_PROGRESS_UPDATE_DATE => p_NEXT_PROGRESS_UPDATE_DATE
5211 ,X_record_version_number => p_record_version_number
5212 ,X_TASK_WEIGHT_BASIS_CODE => l_task_weight_basis_code
5213 ,X_ALLOW_COLLAB_PROG_ENTRY => p_allow_collab_prog_entry
5214 ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES => p_allw_phy_prcnt_cmp_overrides
5215 ,X_STRUCTURE_TYPE => p_structure_type
5216 );
5217
5218 x_return_status := FND_API.G_RET_STS_SUCCESS;
5219
5220 IF (p_commit = FND_API.G_TRUE) THEN
5221 COMMIT;
5222 END IF;
5223
5224 IF (p_debug_mode = 'Y') THEN
5225 IF g1_debug_mode = 'Y' THEN
5226 pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR END');
5227 END IF;
5228 END IF;
5229
5230 EXCEPTION
5231 when FND_API.G_EXC_ERROR then
5232 if p_commit = FND_API.G_TRUE then
5233 rollback to UPDATE_PROJ_PROG_ATTR;
5234 end if;
5235 x_return_status := FND_API.G_RET_STS_ERROR;
5236 when FND_API.G_EXC_UNEXPECTED_ERROR then
5237 if p_commit = FND_API.G_TRUE then
5238 rollback to UPDATE_PROJ_PROG_ATTR;
5239 end if;
5240 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5241 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5242 p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
5243 p_error_text => SUBSTRB(SQLERRM,1,120));
5244 when OTHERS then
5245 if p_commit = FND_API.G_TRUE then
5246 rollback to UPDATE_PROJ_PROG_ATTR;
5247 end if;
5248 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5249 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5250 p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
5251 p_error_text => SUBSTRB(SQLERRM,1,120));
5252 raise;
5253 END UPDATE_PROJ_PROG_ATTR;
5254
5255 PROCEDURE DELETE_PROJ_PROG_ATTR(
5256 p_api_version IN NUMBER :=1.0
5257 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5258 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5259 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5260 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5261 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5262 ,p_debug_mode IN VARCHAR2 :='N'
5263 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5264 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5265 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5266 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5267 ,p_structure_type IN VARCHAR2 := 'WORKPLAN' -- Amit
5268 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5269 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5270 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5271 ) IS
5272
5273 l_api_name CONSTANT VARCHAR(30) := 'DELETE_PROJ_PROG_ATTR';
5274 l_api_version CONSTANT NUMBER := 1.0;
5275
5276 l_return_status VARCHAR2(1);
5277 l_msg_count NUMBER;
5278 l_msg_data VARCHAR2(250);
5279 l_data VARCHAR2(250);
5280 l_msg_index_out NUMBER;
5281 l_error_msg_code VARCHAR2(250);
5282
5283 CURSOR cur_ppp
5284 IS
5285 SELECT rowid
5286 FROM pa_proj_progress_attr
5287 WHERE project_id = p_project_id
5288 AND object_type = p_object_type
5289 AND object_id = p_object_id
5290 AND structure_type = p_structure_type; -- Amit
5291
5292 l_ppp_row_id VARCHAR2(18);
5293
5294 BEGIN
5295
5296 IF g1_debug_mode = 'Y' THEN
5297 pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
5298 END IF;
5299
5300 IF (p_debug_mode = 'Y') THEN
5301 IF g1_debug_mode = 'Y' THEN
5302 pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
5303 END IF;
5304 END IF;
5305
5306 IF (p_commit = FND_API.G_TRUE) THEN
5307 savepoint DELETE_PROJ_PROG_ATTR; --Amit
5308 END IF;
5309
5310 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5311 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5312 END IF;
5313
5314 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5315 FND_MSG_PUB.initialize;
5316 END IF;
5317
5318 OPEN cur_ppp;
5319 FETCH cur_ppp INTO l_ppp_row_id;
5320 CLOSE cur_ppp;
5321
5322 PA_PROJ_PROGRESS_ATTR_PKG.DELETE_ROW( l_ppp_row_id
5323 );
5324
5325 x_return_status := FND_API.G_RET_STS_SUCCESS;
5326
5327 IF (p_commit = FND_API.G_TRUE) THEN
5328 COMMIT;
5329 END IF;
5330
5331 IF (p_debug_mode = 'Y') THEN
5332 IF g1_debug_mode = 'Y' THEN
5333 pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR END');
5334 END IF;
5335 END IF;
5336
5337 EXCEPTION
5338 when FND_API.G_EXC_ERROR then
5339 if p_commit = FND_API.G_TRUE then
5340 rollback to DELETE_PROJ_PROG_ATTR;
5341 end if;
5342 x_return_status := FND_API.G_RET_STS_ERROR;
5343 when FND_API.G_EXC_UNEXPECTED_ERROR then
5344 if p_commit = FND_API.G_TRUE then
5345 rollback to DELETE_PROJ_PROG_ATTR;
5346 end if;
5347 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5348 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5349 p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
5350 p_error_text => SUBSTRB(SQLERRM,1,120));
5351 when OTHERS then
5352 if p_commit = FND_API.G_TRUE then
5353 rollback to DELETE_PROJ_PROG_ATTR;
5354 end if;
5355 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5356 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5357 p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
5358 p_error_text => SUBSTRB(SQLERRM,1,120));
5359 raise;
5360 END DELETE_PROJ_PROG_ATTR;
5361
5362 PROCEDURE delete_progress_record(
5363 p_api_version IN NUMBER :=1.0
5364 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5365 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5366 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5367 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5368 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5369 ,p_debug_mode IN VARCHAR2 :='N'
5370 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5371 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5372 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5373 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5374 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5375 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5376 ) IS
5377
5378 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
5379 l_api_version CONSTANT NUMBER := 1.0;
5380
5381 l_return_status VARCHAR2(1);
5382 l_msg_count NUMBER;
5383 l_msg_data VARCHAR2(250);
5384 l_data VARCHAR2(250);
5385 l_msg_index_out NUMBER;
5386 l_error_msg_code VARCHAR2(250);
5387
5388 CURSOR cur_pa_ppc_str( c_project_id NUMBER, c_proj_element_id NUMBER )
5389 IS
5390 SELECT rowid
5391 FROM pa_percent_completes
5392 WHERE object_version_id = p_structure_version_id
5393 AND object_id = c_proj_element_id
5394 AND project_id = c_project_id
5395 AND object_type = 'PA_STRUCTURES';
5396
5397 CURSOR cur_pa_ppr_str( c_project_id NUMBER, c_proj_element_id NUMBER )
5398 IS
5399 SELECT rowid
5400 FROM pa_progress_rollup
5401 WHERE object_version_id = p_structure_version_id
5402 AND object_id = c_proj_element_id
5403 AND project_id = c_project_id
5404 AND object_type = 'PA_STRUCTURES';
5405
5406 CURSOR cur_pa_ppc_tsk( c_project_id NUMBER, c_proj_element_id NUMBER )
5407 IS
5408 SELECT rowid
5409 FROM pa_percent_completes
5410 WHERE object_version_id = p_task_version_id
5411 AND object_id = c_proj_element_id
5412 AND project_id = c_project_id
5413 AND object_type = 'PA_TASKS';
5414
5415 CURSOR cur_pa_ppr_tsk ( c_project_id NUMBER, c_proj_element_id NUMBER )
5416 IS
5417 SELECT rowid
5418 FROM pa_progress_rollup
5419 WHERE object_version_id = p_task_version_id
5420 AND object_id = c_proj_element_id
5421 AND project_id = c_project_id
5422 AND object_type = 'PA_TASKS';
5423
5424 CURSOR cur_ppevs( c_element_version_id NUMBER )
5425 IS
5426 SELECT project_id, proj_element_id
5427 FROM pa_proj_element_versions
5428 WHERE element_version_id = c_element_version_id
5429 ;
5430
5431 l_rollup_row_id VARCHAR2(18);
5432 l_ppc_row_id VARCHAR2(18);
5433 l_proj_element_id NUMBER;
5434 l_project_id NUMBER;
5435 BEGIN
5436
5437 IF g1_debug_mode = 'Y' THEN
5438 pa_debug.init_err_stack ('PA_PROGRESS_PUB.delete_progress_record');
5439 END IF;
5440
5441 IF (p_debug_mode = 'Y') THEN
5442 IF g1_debug_mode = 'Y' THEN
5443 pa_debug.debug('PA_PROGRESS_PUB.delete_progress_record');
5444 END IF;
5445 END IF;
5446
5447 IF (p_commit = FND_API.G_TRUE) THEN
5448 savepoint delete_progress_record;
5449 END IF;
5450
5451 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5452 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5453 END IF;
5454
5455 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5456 FND_MSG_PUB.initialize;
5457 END IF;
5458
5459 IF p_task_version_id is NULL OR p_task_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5460 THEN
5461 OPEN cur_ppevs( p_structure_version_id );
5462 FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5463 CLOSE cur_ppevs;
5464
5465 OPEN cur_pa_ppc_str( l_project_id, l_proj_element_id );
5466 FETCH cur_pa_ppc_str INTO l_ppc_row_id;
5467 CLOSE cur_pa_ppc_str;
5468
5469 OPEN cur_pa_ppr_str( l_project_id, l_proj_element_id );
5470 FETCH cur_pa_ppr_str INTO l_rollup_row_id;
5471 CLOSE cur_pa_ppr_str;
5472 ELSIF p_structure_version_id IS NOT NULL AND p_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
5473 p_task_version_id IS NOT NULL AND p_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5474 THEN
5475
5476 OPEN cur_ppevs( p_task_version_id );
5477 FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5478 CLOSE cur_ppevs;
5479
5480 OPEN cur_pa_ppc_tsk( l_project_id, l_proj_element_id );
5481 FETCH cur_pa_ppc_tsk INTO l_ppc_row_id;
5482 CLOSE cur_pa_ppc_tsk;
5483
5484 OPEN cur_pa_ppr_tsk( l_project_id, l_proj_element_id );
5485 FETCH cur_pa_ppr_tsk INTO l_rollup_row_id;
5486 CLOSE cur_pa_ppr_tsk;
5487 END IF;
5488
5489 PA_PERCENT_COMPLETES_PKG.DELETE_ROW( l_ppc_row_id );
5490 PA_PROGRESS_ROLLUP_PKG.DELETE_ROW( l_rollup_row_id );
5491
5492 EXCEPTION
5493 when FND_API.G_EXC_ERROR then
5494 if p_commit = FND_API.G_TRUE then
5495 rollback to delete_progress_record;
5496 end if;
5497 x_return_status := FND_API.G_RET_STS_ERROR;
5498 when FND_API.G_EXC_UNEXPECTED_ERROR then
5499 if p_commit = FND_API.G_TRUE then
5500 rollback to delete_progress_record;
5501 end if;
5502 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5503 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5504 p_procedure_name => 'delete_progress_record',
5505 p_error_text => SUBSTRB(SQLERRM,1,120));
5506 when OTHERS then
5507 if p_commit = FND_API.G_TRUE then
5508 rollback to delete_progress_record;
5509 end if;
5510 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5511 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5512 p_procedure_name => 'delete_progress_record',
5513 p_error_text => SUBSTRB(SQLERRM,1,120));
5514 raise;
5515 END delete_progress_record;
5516
5517
5518 PROCEDURE push_down_task_status(
5519 p_api_version IN NUMBER :=1.0
5520 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5521 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5522 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5523 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5524 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5525 ,p_debug_mode IN VARCHAR2 :='N'
5526 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5527 ,p_task_status IN VARCHAR2
5528 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5529 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5530 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5531 ,p_object_type IN Varchar2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5532 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5533 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5534 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
5535 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5536 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5537 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5538 ) IS
5539
5540 l_api_name CONSTANT VARCHAR(30) := 'push_down_task_status';
5541 l_api_version CONSTANT NUMBER := 1.0;
5542
5543 l_return_status VARCHAR2(1);
5544 l_msg_count NUMBER;
5545 l_msg_data VARCHAR2(250);
5546 l_data VARCHAR2(250);
5547 l_msg_index_out NUMBER;
5548 l_error_msg_code VARCHAR2(250);
5549 l_structure_version_id NUMBER;
5550
5551 -- 3922325 : Added pa_proj_elem_ver_schedule join to get scheduled_start_date
5552 -- 4743866, modified the cursor below as join with ppc is not required in most of the cases
5553 CURSOR cur_tasks
5554 IS
5555 SELECT pobj.object_id_to1, ppev1.proj_element_id,
5556 sch.scheduled_start_date
5557 FROM
5558 ( SELECT object_id_from1, object_id_to1
5559 FROM pa_object_relationships
5560 START WITH object_id_from1 = p_object_version_id
5561 and relationship_type = 'S'
5562 CONNECT BY object_id_from1 = PRIOR object_id_to1
5563 and relationship_type = 'S'
5564 UNION -- Bug 3878024 : Added Union
5565 SELECT to_number(null) object_id_from1, p_object_version_id object_id_to1
5566 FROM DUAL
5567 ) pobj,
5568 pa_proj_element_versions ppev1,
5569 pa_proj_elem_ver_schedule sch
5570 WHERE pobj.object_id_to1 = ppev1.element_version_id
5571 AND ppev1.element_version_id = sch.element_version_id;
5572
5573 ---4743866, added following cursor on ppc to get required info
5574 cursor get_task_pc_info(l_obj_id number) is
5575 select completed_percentage, published_flag, current_flag,
5576 actual_start_date, actual_finish_date
5577 from
5578 pa_percent_completes ppc
5579 WHERE ppc.object_id = l_obj_id
5580 AND ppc.object_type = 'PA_TASKS'
5581 AND ppc.structure_type = 'WORKPLAN' -- FPM Dev CR 3
5582 AND ppc.project_id = p_project_id
5583 AND ((ppc.current_flag = 'N' AND ppc.published_flag = 'N') OR
5584 (ppc.current_flag = 'Y' AND ppc.published_flag = 'Y'))
5585 ;
5586 get_task_pc_info_rec get_task_pc_info%rowtype; ---4743866
5587
5588 -- 3922325 : Added assignment_start_date
5589 -- Bug 3878024 Begin
5590 -- 4871809 removed union and added outer join to ppr
5591 CURSOR cur_task_assignments(c_task_version_id NUMBER, c_task_id NUMBER)
5592 IS
5593 SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5594 , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5595 , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5596 , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5597 , nvl(ppr.current_flag,'X') current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5598 , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5599 , ppr.PPL_ACT_EFFORT_TO_DATE, ppr.PPL_ACT_COST_TO_DATE_TC, ppr.PPL_ACT_COST_TO_DATE_PC, ppr.PPL_ACT_COST_TO_DATE_FC
5600 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5601 , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5602 , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5603 , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5604 , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5605 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, ppr.OTH_ETC_QUANTITY, ppr.OTH_ETC_COST_TC, ppr.OTH_ETC_COST_PC, ppr.OTH_ETC_COST_FC
5606 , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5607 , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5608 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5609 , ppr.as_of_date
5610 , ptav.assignment_start_date
5611 FROM pa_task_asgmts_V ptav
5612 , pa_progress_rollup ppr
5613 WHERE ptav.task_version_id = c_task_version_id
5614 -- AND ptav.structure_version_id = l_structure_version_id
5615 AND ptav.task_id = c_task_id
5616 AND ptav.project_id = p_project_id
5617 AND ptav.ta_display_flag = 'Y'
5618 AND ppr.object_id(+) = ptav.resource_list_member_id
5619 AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
5620 AND ppr.proj_element_id(+) = c_task_id
5621 AND ppr.current_flag(+) <> 'N' ---IN ('Y', 'W')
5622 AND ppr.project_id(+) = p_project_id
5623 AND ppr.structure_type(+) = 'WORKPLAN'
5624 AND ppr.structure_version_id(+) is null
5625 ;
5626
5627 l_old_status_code VARCHAR2(150);
5628 l_status_code VARCHAR2(150);
5629 g1_debug_mode VARCHAR2(1);
5630 L_PUSH_AS_OF_DATE Date;
5631 l_etc_txn_raw_cost_this_period NUMBER ;
5632 l_etc_prj_raw_cost_this_period NUMBER ;
5633 l_etc_pfc_raw_cost_this_period NUMBER ;
5634 l_etc_txn_bur_cost_this_period NUMBER ;
5635 l_etc_prj_bur_cost_this_period NUMBER ;
5636 l_etc_pfc_bur_cost_this_period NUMBER ;
5637 l_etc_effort_incr NUMBER ;
5638 l_etc_txn_raw_cost_last NUMBER;
5639 l_etc_prj_raw_cost_last NUMBER;
5640 l_etc_pfc_raw_cost_last NUMBER;
5641 l_etc_txn_bur_cost_last NUMBER;
5642 l_etc_prj_bur_cost_last NUMBER;
5643 l_etc_pfc_bur_cost_last NUMBER;
5644 L_ETC_EFFORT_LAST NUMBER;
5645 l_msg_code VARCHAR2(30);
5646 L_BASE_STRUCT_VER_ID NUMBER;
5647 l_cur_task_old_status_code VARCHAR2(150);
5648 L_LOWEST_LEVEL_TASK VARCHAR2(1);
5649 L_ASSIGNMENT_EXISTS VARCHAR2(1);
5650
5651 l_percent_complete NUMBER;
5652 l_percent_complete_id NUMBER;
5653
5654 -- 4490532 For Hidden assignment Progress record, now we should not be reading the
5655 -- Tasks progress record, instead ot shd be Assignments
5656 -- Because tasks Progress record store Cumulative amounts from subproject too
5657 -- 4871809 removed union and added outer join to ppr
5658 CURSOR cur_system_assignment(c_task_version_id NUMBER, c_task_id NUMBER)
5659 IS
5660 SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5661 , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5662 , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5663 , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5664 , ppr.current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5665 , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5666 , ppr.PPL_ACT_EFFORT_TO_DATE, ppr.PPL_ACT_COST_TO_DATE_TC, ppr.PPL_ACT_COST_TO_DATE_PC, ppr.PPL_ACT_COST_TO_DATE_FC
5667 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5668 , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5669 , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5670 , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5671 , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5672 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, ppr.OTH_ETC_QUANTITY, ppr.OTH_ETC_COST_TC, ppr.OTH_ETC_COST_PC, ppr.OTH_ETC_COST_FC
5673 , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5674 , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5675 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5676 , ppr.as_of_date
5677 , ptav.assignment_start_date
5678 FROM pa_task_asgmts_V ptav
5679 , pa_progress_rollup ppr
5680 WHERE ptav.task_version_id = c_task_version_id
5681 -- AND ptav.structure_version_id = l_structure_version_id
5682 AND ptav.task_id = c_task_id
5683 AND ptav.project_id = p_project_id
5684 AND ptav.ta_display_flag = 'N'
5685 -- 4490532AND ppr.object_id = c_task_id
5686 -- 4490532AND ppr.object_type = 'PA_TASKS'
5687 AND ppr.object_id(+) = ptav.resource_list_member_id -- 4490532
5688 AND ppr.object_type(+) = 'PA_ASSIGNMENTS' -- 4490532
5689 AND ppr.proj_element_id(+) = c_task_id
5690 AND ppr.current_flag(+) <> 'N' ----IN ('Y', 'W')
5691 AND ppr.project_id(+) = p_project_id
5692 AND ppr.structure_type(+) = 'WORKPLAN'
5693 AND ppr.structure_version_id(+) is null
5694 ;
5695
5696 L_PROGRESS_ROLLUP_ID NUMBER;
5697 L_PROG_PA_PERIOD_NAME pa_progress_rollup.prog_pa_period_name%TYPE;
5698 L_PROG_GL_PERIOD_NAME pa_progress_rollup.prog_gl_period_name%TYPE;
5699 l_user_id NUMBER:= fnd_global.user_id;
5700 l_login_id NUMBER:= fnd_global.login_id;
5701 -- Bug 3878024 End
5702
5703 -- Bug 4282618 Begin
5704 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
5705 IS
5706 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
5707 from pa_task_types ttype
5708 , pa_proj_elements elem
5709 where elem.project_id = p_project_id
5710 and elem.proj_element_id = c_proj_element_id
5711 and elem.object_type = 'PA_TASKS'
5712 and elem.type_id = ttype.task_type_id;
5713
5714 l_prog_enabled VARCHAR2(1);
5715 l_prog_stats_code VARCHAR2(150);
5716 -- Bug 4282618 End
5717
5718
5719 BEGIN
5720
5721 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
5722
5723 IF g1_debug_mode = 'Y' THEN
5724 pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_down_task_status');
5725 END IF;
5726
5727 IF g1_debug_mode = 'Y' THEN
5728 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Log_Level=> 3);
5729 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
5730 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_system_task_status='||PA_PROGRESS_UTILS.get_system_task_status( p_task_status ), x_Log_Level=> 3);
5731 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
5732 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
5733 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
5734 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
5735 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
5736 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
5737 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
5738 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
5739 END IF;
5740
5741 -- Initialize OUT params : 5209741
5742 x_return_status := FND_API.G_RET_STS_SUCCESS;
5743 x_msg_data := NULL ;
5744 x_msg_count := 0 ;
5745 -- End : 5209741
5746
5747 IF (p_commit = FND_API.G_TRUE) THEN
5748 savepoint push_down_task_status;
5749 END IF;
5750
5751 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5752 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5753 END IF;
5754
5755 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5756 FND_MSG_PUB.initialize;
5757 END IF;
5758
5759 -- Bug 3878024 : Begin
5760 BEGIN
5761 SELECT parent_structure_version_id INTO l_structure_version_id
5762 FROM pa_proj_element_versions
5763 WHERE element_version_id = p_object_version_id;
5764 EXCEPTION
5765 WHEN OTHERS THEN
5766 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5767 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
5768 p_error_text => 'Unexpected Error : Structure Version Id can not be found. Please contact System Administrator.');
5769
5770 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
5771 END;
5772 -- Bug 3878024 : End;
5773 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
5774
5775 l_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,p_object_id);
5776
5777 ------------------ Added for FP_M changes : BEGIN
5778
5779 IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'COMPLETED' )
5780 THEN
5781
5782
5783 -- Bug 3878024 : The following code is not needed. Now the passed task is taken in the cursosr itself.
5784 /*
5785 --Update pa_proj_elements
5786 UPDATE pa_proj_elements
5787 SET status_code = p_task_status
5788 WHERE proj_element_id = p_object_id
5789 AND project_id = p_project_id;
5790
5791 -- Update Percent complete --
5792 UPDATE pa_percent_completes
5793 SET status_code = p_task_status,
5794 completed_percentage = 100,
5795 Actual_Finish_date = p_actual_finish_date
5796 WHERE object_id = P_Object_ID
5797 AND project_id = p_project_id
5798 AND date_computed = p_as_of_date
5799 AND structure_type = p_structure_type
5800 ;
5801
5802 --Update pa_progress_rollup
5803 UPDATE pa_progress_rollup
5804 SET completed_percentage = 100,
5805 Actual_Finish_date = p_actual_finish_date,
5806 EQPMT_ETC_EFFORT = 0,
5807 OTH_ETC_COST_TC = 0,
5808 OTH_ETC_COST_FC = 0,
5809 OTH_ETC_COST_PC = 0,
5810 PPL_ETC_COST_TC= 0,
5811 PPL_ETC_COST_FC= 0,
5812 PPL_ETC_COST_PC = 0,
5813 EQPMT_ETC_COST_TC = 0,
5814 EQPMT_ETC_COST_FC = 0,
5815 EQPMT_ETC_COST_PC = 0
5816 WHERE object_id = p_object_id
5817 and current_flag = 'Y'
5818 AND as_of_date = p_as_of_date
5819 AND structure_type = p_structure_type
5820 AND structure_version_id IS NULL -- Bug 3764224
5821 and current_flag <> 'W' -- Bug 3879461
5822 AND project_id = p_project_id;
5823 */
5824
5825 FOR cur_tasks_rec in cur_tasks LOOP
5826 -- Bug 4282618 Begin
5827 l_prog_enabled := 'Y';
5828 OPEN cur_prog_enabled(cur_tasks_rec.proj_element_id);
5829 FETCH cur_prog_enabled INTO l_prog_enabled;
5830 CLOSE cur_prog_enabled;
5831
5832 IF l_prog_enabled = 'N' THEN
5833 l_prog_stats_code := null;
5834 ELSE
5835 l_prog_stats_code := 'PROGRESS_STAT_ON_TRACK';
5836 END IF;
5837 -- Bug 4282618 End
5838
5839 l_cur_task_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,cur_tasks_rec.proj_element_id);
5840 -- Bug 3878024 : Begin
5841 FOR cur_task_assignments_rec in cur_task_assignments(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
5842 IF g1_debug_mode = 'Y' THEN
5843 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_task_assignments', x_Log_Level=> 3);
5844 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_list_member_id='||cur_task_assignments_rec.resource_list_member_id, x_Log_Level=> 3);
5845 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.current_flag='||cur_task_assignments_rec.current_flag, x_Log_Level=> 3);
5846 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.proj_element_id='||cur_task_assignments_rec.proj_element_id, x_Log_Level=> 3);
5847 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rbs_element_id='||cur_task_assignments_rec.rbs_element_id, x_Log_Level=> 3);
5848 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
5849 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
5850 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rate_based_flag='||cur_task_assignments_rec.rate_based_flag, x_Log_Level=> 3);
5851 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.txn_currency_code='||cur_task_assignments_rec.txn_currency_code, x_Log_Level=> 3);
5852 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_alias='||cur_task_assignments_rec.resource_alias, x_Log_Level=> 3);
5853 END IF;
5854
5855 IF cur_task_assignments_rec.current_flag = 'Y' THEN
5856 l_push_as_of_date := cur_task_assignments_rec.as_of_date;
5857 IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5858 IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5859 l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
5860 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
5861 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
5862 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
5863 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
5864 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
5865 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
5866 ELSE
5867 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
5868 IF l_etc_effort_incr < 0 THEN
5869 l_etc_effort_incr := 0;
5870 END IF;
5871 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_TC,0);
5872 IF l_etc_txn_bur_cost_this_period < 0 THEN
5873 l_etc_txn_bur_cost_this_period := 0;
5874 END IF;
5875 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_PC,0);
5876 IF l_etc_prj_bur_cost_this_period < 0 THEN
5877 l_etc_prj_bur_cost_this_period := 0;
5878 END IF;
5879 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_FC,0);
5880 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5881 l_etc_pfc_bur_cost_this_period := 0;
5882 END IF;
5883 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_TC,0);
5884 IF l_etc_txn_raw_cost_this_period < 0 THEN
5885 l_etc_txn_raw_cost_this_period := 0;
5886 END IF;
5887 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
5888 IF l_etc_prj_raw_cost_this_period < 0 THEN
5889 l_etc_prj_raw_cost_this_period := 0;
5890 END IF;
5891 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
5892 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5893 l_etc_pfc_raw_cost_this_period := 0;
5894 END IF;
5895 END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5896 ELSIF cur_task_assignments_rec.resource_class_code = 'EQUIPMENT' THEN
5897 IF cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5898 l_etc_effort_incr := NVL(cur_task_assignments_rec.EQPMT_ETC_EFFORT ,0);
5899 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_TC,0);
5900 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_PC,0);
5901 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_FC,0);
5902 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_TC,0);
5903 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_PC,0);
5904 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_FC,0);
5905 ELSE
5906 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
5907 IF l_etc_effort_incr < 0 THEN
5908 l_etc_effort_incr := 0;
5909 END IF;
5910 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_TC,0);
5911 IF l_etc_txn_bur_cost_this_period < 0 THEN
5912 l_etc_txn_bur_cost_this_period := 0;
5913 END IF;
5914 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
5915 IF l_etc_prj_bur_cost_this_period < 0 THEN
5916 l_etc_prj_bur_cost_this_period := 0;
5917 END IF;
5918 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_FC,0);
5919 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5920 l_etc_pfc_bur_cost_this_period := 0;
5921 END IF;
5922 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC,0);
5923 IF l_etc_txn_raw_cost_this_period < 0 THEN
5924 l_etc_txn_raw_cost_this_period := 0;
5925 END IF;
5926 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC,0);
5927 IF l_etc_prj_raw_cost_this_period < 0 THEN
5928 l_etc_prj_raw_cost_this_period := 0;
5929 END IF;
5930 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC,0);
5931 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5932 l_etc_pfc_raw_cost_this_period := 0;
5933 END IF;
5934 END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5935 ELSIF cur_task_assignments_rec.resource_class_code = 'FINANCIAL_ELEMENTS' OR cur_task_assignments_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
5936 IF cur_task_assignments_rec.OTH_ETC_QUANTITY IS NOT NULL THEN
5937 l_etc_effort_incr := NVL(cur_task_assignments_rec.OTH_ETC_QUANTITY ,0);
5938 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_TC,0);
5939 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_PC,0);
5940 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_FC,0);
5941 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_TC,0);
5942 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_PC,0);
5943 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_FC,0);
5944 ELSE
5945 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.OTH_QUANTITY_TO_DATE,0);
5946 IF l_etc_effort_incr < 0 THEN
5947 l_etc_effort_incr := 0;
5948 END IF;
5949 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_TC,0);
5950 IF l_etc_txn_bur_cost_this_period < 0 THEN
5951 l_etc_txn_bur_cost_this_period := 0;
5952 END IF;
5953 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_PC,0);
5954 IF l_etc_prj_bur_cost_this_period < 0 THEN
5955 l_etc_prj_bur_cost_this_period := 0;
5956 END IF;
5957 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_FC,0);
5958 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5959 l_etc_pfc_bur_cost_this_period := 0;
5960 END IF;
5961 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_TC,0);
5962 IF l_etc_txn_raw_cost_this_period < 0 THEN
5963 l_etc_txn_raw_cost_this_period := 0;
5964 END IF;
5965 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_PC,0);
5966 IF l_etc_prj_raw_cost_this_period < 0 THEN
5967 l_etc_prj_raw_cost_this_period := 0;
5968 END IF;
5969 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_FC,0);
5970 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5971 l_etc_pfc_raw_cost_this_period := 0;
5972 END IF;
5973 END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5974 END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5975 ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
5976 -- Record does not exist in rollup table. Push negative planned amount
5977 l_push_as_of_date := p_as_of_date;
5978 l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
5979 l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
5980 l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
5981 l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
5982 l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
5983 l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
5984 l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
5985
5986 -- This below code is under discussion with PM's.
5987 l_PROGRESS_ROLLUP_ID := null;
5988 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
5989 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
5990
5991 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5992 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
5993 ,X_PROJECT_ID => p_project_id
5994 ,X_OBJECT_ID => cur_task_assignments_rec.resource_list_member_id
5995 ,X_OBJECT_TYPE => 'PA_ASSIGNMENTS'
5996 ,X_AS_OF_DATE => l_push_as_of_date
5997 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
5998 ,X_LAST_UPDATE_DATE => SYSDATE
5999 ,X_LAST_UPDATED_BY => l_user_id
6000 ,X_CREATION_DATE => SYSDATE
6001 ,X_CREATED_BY => l_user_id
6002 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code-- 'PROGRESS_STAT_ON_TRACK'
6003 ,X_LAST_UPDATE_LOGIN => l_login_id
6004 ,X_INCREMENTAL_WORK_QTY => null
6005 ,X_CUMULATIVE_WORK_QTY => null
6006 ,X_BASE_PERCENT_COMPLETE => null
6007 ,X_EFF_ROLLUP_PERCENT_COMP => null
6008 ,X_COMPLETED_PERCENTAGE => null
6009 ,X_ESTIMATED_START_DATE => null
6010 ,X_ESTIMATED_FINISH_DATE => null
6011 ,X_ACTUAL_START_DATE => null
6012 ,X_ACTUAL_FINISH_DATE => null
6013 ,X_EST_REMAINING_EFFORT => null
6014 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6015 ,X_BASE_PROGRESS_STATUS_CODE => null
6016 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6017 ,x_percent_complete_id => null
6018 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6019 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
6020 ,X_STRUCTURE_VERSION_ID => null
6021 ,X_PPL_ACT_EFFORT_TO_DATE => null
6022 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6023 ,X_EQPMT_ETC_EFFORT => null
6024 ,X_OTH_ACT_COST_TO_DATE_TC => null
6025 ,X_OTH_ACT_COST_TO_DATE_FC => null
6026 ,X_OTH_ACT_COST_TO_DATE_PC => null
6027 ,X_OTH_ETC_COST_TC => null
6028 ,X_OTH_ETC_COST_FC => null
6029 ,X_OTH_ETC_COST_PC => null
6030 ,X_PPL_ACT_COST_TO_DATE_TC => null
6031 ,X_PPL_ACT_COST_TO_DATE_FC => null
6032 ,X_PPL_ACT_COST_TO_DATE_PC => null
6033 ,X_PPL_ETC_COST_TC => null
6034 ,X_PPL_ETC_COST_FC => null
6035 ,X_PPL_ETC_COST_PC => null
6036 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6037 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6038 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6039 ,X_EQPMT_ETC_COST_TC => null
6040 ,X_EQPMT_ETC_COST_FC => null
6041 ,X_EQPMT_ETC_COST_PC => null
6042 ,X_EARNED_VALUE => null
6043 ,X_TASK_WT_BASIS_CODE => null
6044 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6045 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6046 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6047 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6048 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6049 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6050 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6051 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6052 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6053 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6054 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6055 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6056 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6057 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6058 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6059 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6060 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6061 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6062 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6063 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6064 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6065 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6066 ,X_SUBPRJ_EARNED_VALUE => null
6067 ,X_CURRENT_FLAG => 'Y'
6068 ,X_PROJFUNC_COST_RATE_TYPE => null
6069 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6070 ,X_PROJFUNC_COST_RATE_DATE => null
6071 ,X_PROJ_COST_RATE_TYPE => null
6072 ,X_PROJ_COST_EXCHANGE_RATE => null
6073 ,X_PROJ_COST_RATE_DATE => null
6074 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
6075 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6076 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6077 ,X_OTH_QUANTITY_TO_DATE => null
6078 ,X_OTH_ETC_QUANTITY => null
6079 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6080 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6081 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6082 ,X_OTH_ETC_RAWCOST_TC => null
6083 ,X_OTH_ETC_RAWCOST_FC => null
6084 ,X_OTH_ETC_RAWCOST_PC => null
6085 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6086 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6087 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6088 ,X_PPL_ETC_RAWCOST_TC => null
6089 ,X_PPL_ETC_RAWCOST_FC => null
6090 ,X_PPL_ETC_RAWCOST_PC => null
6091 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6092 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6093 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6094 ,X_EQPMT_ETC_RAWCOST_TC => null
6095 ,X_EQPMT_ETC_RAWCOST_FC => null
6096 ,X_EQPMT_ETC_RAWCOST_PC => null
6097 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6098 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6099 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6100 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6101 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6102 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6103 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6104 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6105 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6106 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6107 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6108 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6109 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6110 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6111 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6112 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6113 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6114 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6115 );
6116
6117 IF Fnd_Msg_Pub.count_msg > 0 THEN
6118 RAISE FND_API.G_EXC_ERROR;
6119 END IF;
6120 END IF; -- cur_task_assignments_rec.current_flag = 'Y' THEN
6121
6122 IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6123 l_etc_effort_incr := l_etc_effort_incr * (-1);
6124 l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
6125 l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
6126 l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
6127 l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
6128 l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
6129 l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
6130
6131 -- Bug 4144845 : Removed Completed check from push workplan actuals.
6132 --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <> 'COMPLETED' THEN
6133 IF g1_debug_mode = 'Y' THEN
6134 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Pushing Negative Amounts To PJI', x_Log_Level=> 3);
6135 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_bur_cost_this_period='||l_etc_txn_bur_cost_this_period, x_Log_Level=> 3);
6136 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_bur_cost_this_period='||l_etc_prj_bur_cost_this_period, x_Log_Level=> 3);
6137 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_bur_cost_this_period='||l_etc_pfc_bur_cost_this_period, x_Log_Level=> 3);
6138 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_effort_incr='||l_etc_effort_incr, x_Log_Level=> 3);
6139 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_raw_cost_this_period='||l_etc_txn_raw_cost_this_period, x_Log_Level=> 3);
6140 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_raw_cost_this_period='||l_etc_prj_raw_cost_this_period, x_Log_Level=> 3);
6141 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_raw_cost_this_period='||l_etc_pfc_raw_cost_this_period, x_Log_Level=> 3);
6142 END IF;
6143
6144 PA_PROGRESS_PUB.push_workplan_actuals(
6145 p_project_Id => p_project_id,
6146 p_structure_version_id => l_structure_version_id,
6147 p_proj_element_id => cur_task_assignments_rec.proj_element_id,
6148 p_object_id => cur_task_assignments_rec.resource_list_member_id,
6149 p_object_type => 'PA_ASSIGNMENTS',
6150 p_as_of_date => l_push_as_of_date,
6151 p_rbs_element_id => cur_task_assignments_rec.rbs_element_id,
6152 p_rate_based_flag => cur_task_assignments_rec.rate_based_flag,
6153 p_resource_class_code => cur_task_assignments_rec.resource_class_code,
6154 p_act_TXN_COST_this_period => null,
6155 p_act_PRJ_COST_this_period => null,
6156 p_act_POU_COST_this_period => null,
6157 p_act_effort_this_period => null,
6158 p_etc_TXN_COST_this_period => l_etc_txn_bur_cost_this_period,
6159 p_etc_PRJ_COST_this_period => l_etc_prj_bur_cost_this_period,
6160 p_etc_POU_COST_this_period => l_etc_pfc_bur_cost_this_period,
6161 p_etc_effort_this_period => l_etc_effort_incr,
6162 p_act_TXN_raw_COST_this_period => null,
6163 p_act_PRJ_raw_COST_this_period => null,
6164 p_act_POU_raw_COST_this_period => null,
6165 p_etc_TXN_raw_COST_this_period => l_etc_txn_raw_cost_this_period,
6166 p_etc_PRJ_raw_COST_this_period => l_etc_prj_raw_cost_this_period,
6167 p_etc_POU_raw_COST_this_period => l_etc_pfc_raw_cost_this_period,
6168 p_txn_currency_code => cur_task_assignments_rec.txn_currency_code,
6169 p_prj_currency_code => null,
6170 p_pfn_currency_code => null,
6171 p_pa_period_name => null,
6172 p_gl_period_name => null,
6173 p_call_pji_apis_flag => 'N',
6174 x_return_status => x_return_status,
6175 x_msg_count => x_msg_count,
6176 x_msg_data => x_msg_data
6177 );
6178 --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <> 'COMPLETED' THEN
6179 END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6180
6181 -- Update Percent complete --
6182 UPDATE pa_percent_completes
6183 SET Actual_Finish_date = p_actual_finish_date
6184 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6185 AND project_id = p_project_id
6186 AND task_id = cur_task_assignments_rec.proj_element_id
6187 AND object_type = 'PA_ASSIGNMENTS'
6188 AND structure_type = p_structure_type
6189 AND ((current_flag = 'Y' and published_flag = 'Y') or
6190 (current_flag = 'N' and published_flag = 'N'))
6191 ;
6192
6193 --Update pa_progress_rollup
6194 UPDATE pa_progress_rollup
6195 SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
6196 Actual_Finish_date = p_actual_finish_date,
6197 estimated_remaining_effort = 0,
6198 EQPMT_ETC_EFFORT = 0,
6199 oth_etc_quantity = 0,
6200 OTH_ETC_COST_TC = 0,
6201 OTH_ETC_COST_FC = 0,
6202 OTH_ETC_COST_PC = 0,
6203 OTH_ETC_RAWCOST_TC = 0,
6204 OTH_ETC_RAWCOST_FC = 0,
6205 OTH_ETC_RAWCOST_PC = 0,
6206 PPL_ETC_COST_TC= 0,
6207 PPL_ETC_COST_FC= 0,
6208 PPL_ETC_COST_PC = 0,
6209 PPL_ETC_RAWCOST_TC= 0,
6210 PPL_ETC_RAWCOST_FC= 0,
6211 PPL_ETC_RAWCOST_PC = 0,
6212 EQPMT_ETC_COST_TC = 0,
6213 EQPMT_ETC_COST_FC = 0,
6214 EQPMT_ETC_COST_PC = 0,
6215 EQPMT_ETC_RAWCOST_TC = 0,
6216 EQPMT_ETC_RAWCOST_FC = 0,
6217 EQPMT_ETC_RAWCOST_PC = 0
6218 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6219 and current_flag IN ('Y', 'W')
6220 AND object_type = 'PA_ASSIGNMENTS'
6221 AND structure_type = p_structure_type
6222 AND proj_element_id = cur_task_assignments_rec.proj_element_id
6223 AND structure_version_id IS NULL
6224 AND project_id = p_project_id;
6225
6226 END LOOP; -- cur_task_assignments_rec in cur_task_assignments(p_object_version_id, p_object_id) LOOP
6227
6228 -- Now tasks processing starts
6229 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
6230 --l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => cur_tasks_rec.object_id_to1 );
6231 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure( cur_tasks_rec.object_id_to1) = 'Y' THEN
6232 l_lowest_level_task := 'N';
6233 ELSE
6234 l_lowest_level_task := 'Y';
6235 END IF;
6236 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,cur_tasks_rec.object_id_to1,'PA_TASKS');
6237 IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
6238 -- Find the hidden assignment and push the task progress value against it
6239 FOR cur_task_assignments_rec in cur_system_assignment(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
6240 IF g1_debug_mode = 'Y' THEN
6241 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_system_assignment', x_Log_Level=> 3);
6242 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_list_member_id='||cur_task_assignments_rec.resource_list_member_id, x_Log_Level=> 3);
6243 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.current_flag='||cur_task_assignments_rec.current_flag, x_Log_Level=> 3);
6244 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.proj_element_id='||cur_task_assignments_rec.proj_element_id, x_Log_Level=> 3);
6245 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rbs_element_id='||cur_task_assignments_rec.rbs_element_id, x_Log_Level=> 3);
6246 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
6247 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
6248 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rate_based_flag='||cur_task_assignments_rec.rate_based_flag, x_Log_Level=> 3);
6249 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.txn_currency_code='||cur_task_assignments_rec.txn_currency_code, x_Log_Level=> 3);
6250 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_alias='||cur_task_assignments_rec.resource_alias, x_Log_Level=> 3);
6251 END IF;
6252
6253 IF cur_task_assignments_rec.current_flag = 'Y' THEN
6254 l_push_as_of_date := cur_task_assignments_rec.as_of_date;
6255 -- Hidden assignment is people only
6256 IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
6257 IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
6258 l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
6259 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
6260 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
6261 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
6262 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
6263 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
6264 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
6265 ELSE
6266 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
6267 IF l_etc_effort_incr < 0 THEN
6268 l_etc_effort_incr := 0;
6269 END IF;
6270 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_TC,0);
6271 IF l_etc_txn_bur_cost_this_period < 0 THEN
6272 l_etc_txn_bur_cost_this_period := 0;
6273 END IF;
6274 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_PC,0);
6275 IF l_etc_prj_bur_cost_this_period < 0 THEN
6276 l_etc_prj_bur_cost_this_period := 0;
6277 END IF;
6278 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_FC,0);
6279 IF l_etc_pfc_bur_cost_this_period < 0 THEN
6280 l_etc_pfc_bur_cost_this_period := 0;
6281 END IF;
6282 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_TC,0);
6283 IF l_etc_txn_raw_cost_this_period < 0 THEN
6284 l_etc_txn_raw_cost_this_period := 0;
6285 END IF;
6286 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
6287 IF l_etc_prj_raw_cost_this_period < 0 THEN
6288 l_etc_prj_raw_cost_this_period := 0;
6289 END IF;
6290 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
6291 IF l_etc_pfc_raw_cost_this_period < 0 THEN
6292 l_etc_pfc_raw_cost_this_period := 0;
6293 END IF;
6294 END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
6295 END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
6296 ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
6297 -- Record does not exist in rollup table. Push negative planned amount
6298 l_push_as_of_date := p_as_of_date;
6299 l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
6300 l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
6301 l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
6302 l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
6303 l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
6304 l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
6305 l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
6306
6307 -- This below code is under discussion with PM's.
6308 l_PROGRESS_ROLLUP_ID := null;
6309 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
6310 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
6311
6312 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6313 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
6314 ,X_PROJECT_ID => p_project_id
6315 ,X_OBJECT_ID => cur_task_assignments_rec.proj_element_id
6316 ,X_OBJECT_TYPE => 'PA_TASKS'
6317 ,X_AS_OF_DATE => l_push_as_of_date
6318 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
6319 ,X_LAST_UPDATE_DATE => SYSDATE
6320 ,X_LAST_UPDATED_BY => l_user_id
6321 ,X_CREATION_DATE => SYSDATE
6322 ,X_CREATED_BY => l_user_id
6323 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6324 ,X_LAST_UPDATE_LOGIN => l_login_id
6325 ,X_INCREMENTAL_WORK_QTY => null
6326 ,X_CUMULATIVE_WORK_QTY => null
6327 ,X_BASE_PERCENT_COMPLETE => null
6328 ,X_EFF_ROLLUP_PERCENT_COMP => null
6329 ,X_COMPLETED_PERCENTAGE => 100
6330 ,X_ESTIMATED_START_DATE => null
6331 ,X_ESTIMATED_FINISH_DATE => null
6332 ,X_ACTUAL_START_DATE => null
6333 ,X_ACTUAL_FINISH_DATE => null
6334 ,X_EST_REMAINING_EFFORT => null
6335 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6336 ,X_BASE_PROGRESS_STATUS_CODE => null
6337 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6338 ,x_percent_complete_id => null
6339 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6340 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
6341 ,X_STRUCTURE_VERSION_ID => null
6342 ,X_PPL_ACT_EFFORT_TO_DATE => null
6343 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6344 ,X_EQPMT_ETC_EFFORT => null
6345 ,X_OTH_ACT_COST_TO_DATE_TC => null
6346 ,X_OTH_ACT_COST_TO_DATE_FC => null
6347 ,X_OTH_ACT_COST_TO_DATE_PC => null
6348 ,X_OTH_ETC_COST_TC => null
6349 ,X_OTH_ETC_COST_FC => null
6350 ,X_OTH_ETC_COST_PC => null
6351 ,X_PPL_ACT_COST_TO_DATE_TC => null
6352 ,X_PPL_ACT_COST_TO_DATE_FC => null
6353 ,X_PPL_ACT_COST_TO_DATE_PC => null
6354 ,X_PPL_ETC_COST_TC => null
6355 ,X_PPL_ETC_COST_FC => null
6356 ,X_PPL_ETC_COST_PC => null
6357 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6358 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6359 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6360 ,X_EQPMT_ETC_COST_TC => null
6361 ,X_EQPMT_ETC_COST_FC => null
6362 ,X_EQPMT_ETC_COST_PC => null
6363 ,X_EARNED_VALUE => null
6364 ,X_TASK_WT_BASIS_CODE => null
6365 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6366 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6367 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6368 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6369 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6370 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6371 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6372 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6373 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6374 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6375 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6376 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6377 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6378 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6379 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6380 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6381 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6382 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6383 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6384 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6385 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6386 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6387 ,X_SUBPRJ_EARNED_VALUE => null
6388 ,X_CURRENT_FLAG => 'Y'
6389 ,X_PROJFUNC_COST_RATE_TYPE => null
6390 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6391 ,X_PROJFUNC_COST_RATE_DATE => null
6392 ,X_PROJ_COST_RATE_TYPE => null
6393 ,X_PROJ_COST_EXCHANGE_RATE => null
6394 ,X_PROJ_COST_RATE_DATE => null
6395 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
6396 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6397 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6398 ,X_OTH_QUANTITY_TO_DATE => null
6399 ,X_OTH_ETC_QUANTITY => null
6400 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6401 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6402 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6403 ,X_OTH_ETC_RAWCOST_TC => null
6404 ,X_OTH_ETC_RAWCOST_FC => null
6405 ,X_OTH_ETC_RAWCOST_PC => null
6406 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6407 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6408 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6409 ,X_PPL_ETC_RAWCOST_TC => null
6410 ,X_PPL_ETC_RAWCOST_FC => null
6411 ,X_PPL_ETC_RAWCOST_PC => null
6412 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6413 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6414 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6415 ,X_EQPMT_ETC_RAWCOST_TC => null
6416 ,X_EQPMT_ETC_RAWCOST_FC => null
6417 ,X_EQPMT_ETC_RAWCOST_PC => null
6418 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6419 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6420 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6421 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6422 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6423 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6424 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6425 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6426 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6427 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6428 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6429 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6430 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6431 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6432 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6433 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6434 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6435 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6436 );
6437
6438 IF Fnd_Msg_Pub.count_msg > 0 THEN
6439 RAISE FND_API.G_EXC_ERROR;
6440 END IF;
6441
6442 -- Bug 3922325 : Hidden Assignment record also shd get created
6443
6444 l_PROGRESS_ROLLUP_ID := null;
6445
6446 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6447 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
6448 ,X_PROJECT_ID => p_project_id
6449 ,X_OBJECT_ID => cur_task_assignments_rec.resource_list_member_id
6450 ,X_OBJECT_TYPE => 'PA_ASSIGNMENTS'
6451 ,X_AS_OF_DATE => l_push_as_of_date
6452 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
6453 ,X_LAST_UPDATE_DATE => SYSDATE
6454 ,X_LAST_UPDATED_BY => l_user_id
6455 ,X_CREATION_DATE => SYSDATE
6456 ,X_CREATED_BY => l_user_id
6457 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6458 ,X_LAST_UPDATE_LOGIN => l_login_id
6459 ,X_INCREMENTAL_WORK_QTY => null
6460 ,X_CUMULATIVE_WORK_QTY => null
6461 ,X_BASE_PERCENT_COMPLETE => null
6462 ,X_EFF_ROLLUP_PERCENT_COMP => null
6463 ,X_COMPLETED_PERCENTAGE => null
6464 ,X_ESTIMATED_START_DATE => null
6465 ,X_ESTIMATED_FINISH_DATE => null
6466 ,X_ACTUAL_START_DATE => null
6467 ,X_ACTUAL_FINISH_DATE => null
6468 ,X_EST_REMAINING_EFFORT => null
6469 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6470 ,X_BASE_PROGRESS_STATUS_CODE => null
6471 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6472 ,x_percent_complete_id => null
6473 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6474 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
6475 ,X_STRUCTURE_VERSION_ID => null
6476 ,X_PPL_ACT_EFFORT_TO_DATE => null
6477 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6478 ,X_EQPMT_ETC_EFFORT => null
6479 ,X_OTH_ACT_COST_TO_DATE_TC => null
6480 ,X_OTH_ACT_COST_TO_DATE_FC => null
6481 ,X_OTH_ACT_COST_TO_DATE_PC => null
6482 ,X_OTH_ETC_COST_TC => null
6483 ,X_OTH_ETC_COST_FC => null
6484 ,X_OTH_ETC_COST_PC => null
6485 ,X_PPL_ACT_COST_TO_DATE_TC => null
6486 ,X_PPL_ACT_COST_TO_DATE_FC => null
6487 ,X_PPL_ACT_COST_TO_DATE_PC => null
6488 ,X_PPL_ETC_COST_TC => null
6489 ,X_PPL_ETC_COST_FC => null
6490 ,X_PPL_ETC_COST_PC => null
6491 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6492 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6493 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6494 ,X_EQPMT_ETC_COST_TC => null
6495 ,X_EQPMT_ETC_COST_FC => null
6496 ,X_EQPMT_ETC_COST_PC => null
6497 ,X_EARNED_VALUE => null
6498 ,X_TASK_WT_BASIS_CODE => null
6499 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6500 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6501 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6502 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6503 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6504 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6505 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6506 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6507 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6508 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6509 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6510 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6511 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6512 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6513 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6514 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6515 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6516 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6517 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6518 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6519 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6520 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6521 ,X_SUBPRJ_EARNED_VALUE => null
6522 ,X_CURRENT_FLAG => 'Y'
6523 ,X_PROJFUNC_COST_RATE_TYPE => null
6524 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6525 ,X_PROJFUNC_COST_RATE_DATE => null
6526 ,X_PROJ_COST_RATE_TYPE => null
6527 ,X_PROJ_COST_EXCHANGE_RATE => null
6528 ,X_PROJ_COST_RATE_DATE => null
6529 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
6530 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6531 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6532 ,X_OTH_QUANTITY_TO_DATE => null
6533 ,X_OTH_ETC_QUANTITY => null
6534 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6535 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6536 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6537 ,X_OTH_ETC_RAWCOST_TC => null
6538 ,X_OTH_ETC_RAWCOST_FC => null
6539 ,X_OTH_ETC_RAWCOST_PC => null
6540 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6541 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6542 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6543 ,X_PPL_ETC_RAWCOST_TC => null
6544 ,X_PPL_ETC_RAWCOST_FC => null
6545 ,X_PPL_ETC_RAWCOST_PC => null
6546 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6547 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6548 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6549 ,X_EQPMT_ETC_RAWCOST_TC => null
6550 ,X_EQPMT_ETC_RAWCOST_FC => null
6551 ,X_EQPMT_ETC_RAWCOST_PC => null
6552 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6553 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6554 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6555 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6556 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6557 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6558 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6559 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6560 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6561 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6562 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6563 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6564 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6565 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6566 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6567 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6568 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6569 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6570 );
6571
6572 IF Fnd_Msg_Pub.count_msg > 0 THEN
6573 RAISE FND_API.G_EXC_ERROR;
6574 END IF;
6575
6576 END IF; -- cur_task_assignments_rec.current_flag = 'Y' THEN
6577
6578 IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6579 l_etc_effort_incr := l_etc_effort_incr * (-1);
6580 l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
6581 l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
6582 l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
6583 l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
6584 l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
6585 l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
6586
6587 -- Bug 4144845 : Removed Completed check from push workplan actuals.
6588 --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <> 'COMPLETED' THEN
6589 IF g1_debug_mode = 'Y' THEN
6590 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Pushing Negative Amounts To PJI for Task', x_Log_Level=> 3);
6591 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_bur_cost_this_period='||l_etc_txn_bur_cost_this_period, x_Log_Level=> 3);
6592 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_bur_cost_this_period='||l_etc_prj_bur_cost_this_period, x_Log_Level=> 3);
6593 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_bur_cost_this_period='||l_etc_pfc_bur_cost_this_period, x_Log_Level=> 3);
6594 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_effort_incr='||l_etc_effort_incr, x_Log_Level=> 3);
6595 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_raw_cost_this_period='||l_etc_txn_raw_cost_this_period, x_Log_Level=> 3);
6596 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_raw_cost_this_period='||l_etc_prj_raw_cost_this_period, x_Log_Level=> 3);
6597 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_raw_cost_this_period='||l_etc_pfc_raw_cost_this_period, x_Log_Level=> 3);
6598 END IF;
6599
6600 PA_PROGRESS_PUB.push_workplan_actuals(
6601 p_project_Id => p_project_id,
6602 p_structure_version_id => l_structure_version_id,
6603 p_proj_element_id => cur_task_assignments_rec.proj_element_id,
6604 p_object_id => cur_task_assignments_rec.proj_element_id,
6605 p_object_type => 'PA_TASKS',
6606 p_as_of_date => l_push_as_of_date,
6607 p_rbs_element_id => cur_task_assignments_rec.rbs_element_id,
6608 p_rate_based_flag => cur_task_assignments_rec.rate_based_flag,
6609 p_resource_class_code => cur_task_assignments_rec.resource_class_code,
6610 p_act_TXN_COST_this_period => null,
6611 p_act_PRJ_COST_this_period => null,
6612 p_act_POU_COST_this_period => null,
6613 p_act_effort_this_period => null,
6614 p_etc_TXN_COST_this_period => l_etc_txn_bur_cost_this_period,
6615 p_etc_PRJ_COST_this_period => l_etc_prj_bur_cost_this_period,
6616 p_etc_POU_COST_this_period => l_etc_pfc_bur_cost_this_period,
6617 p_etc_effort_this_period => l_etc_effort_incr,
6618 p_act_TXN_raw_COST_this_period => null,
6619 p_act_PRJ_raw_COST_this_period => null,
6620 p_act_POU_raw_COST_this_period => null,
6621 p_etc_TXN_raw_COST_this_period => l_etc_txn_raw_cost_this_period,
6622 p_etc_PRJ_raw_COST_this_period => l_etc_prj_raw_cost_this_period,
6623 p_etc_POU_raw_COST_this_period => l_etc_pfc_raw_cost_this_period,
6624 p_txn_currency_code => cur_task_assignments_rec.txn_currency_code,
6625 p_prj_currency_code => null,
6626 p_pfn_currency_code => null,
6627 p_pa_period_name => null,
6628 p_gl_period_name => null,
6629 p_call_pji_apis_flag => 'N',
6630 x_return_status => x_return_status,
6631 x_msg_count => x_msg_count,
6632 x_msg_data => x_msg_data
6633 );
6634 --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <> 'COMPLETED' THEN
6635 END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6636 -- Bug 3922325 : Hidden Assignment records also shd be updated
6637 UPDATE pa_progress_rollup
6638 SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
6639 Actual_Finish_date = p_actual_finish_date,
6640 estimated_remaining_effort = 0,
6641 EQPMT_ETC_EFFORT = 0,
6642 oth_etc_quantity = 0,
6643 OTH_ETC_COST_TC = 0,
6644 OTH_ETC_COST_FC = 0,
6645 OTH_ETC_COST_PC = 0,
6646 OTH_ETC_RAWCOST_TC = 0,
6647 OTH_ETC_RAWCOST_FC = 0,
6648 OTH_ETC_RAWCOST_PC = 0,
6649 PPL_ETC_COST_TC= 0,
6650 PPL_ETC_COST_FC= 0,
6651 PPL_ETC_COST_PC = 0,
6652 PPL_ETC_RAWCOST_TC= 0,
6653 PPL_ETC_RAWCOST_FC= 0,
6654 PPL_ETC_RAWCOST_PC = 0,
6655 EQPMT_ETC_COST_TC = 0,
6656 EQPMT_ETC_COST_FC = 0,
6657 EQPMT_ETC_COST_PC = 0,
6658 EQPMT_ETC_RAWCOST_TC = 0,
6659 EQPMT_ETC_RAWCOST_FC = 0,
6660 EQPMT_ETC_RAWCOST_PC = 0
6661 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6662 and current_flag IN ('Y', 'W')
6663 AND object_type = 'PA_ASSIGNMENTS'
6664 AND structure_type = p_structure_type
6665 AND proj_element_id = cur_task_assignments_rec.proj_element_id
6666 AND structure_version_id IS NULL
6667 AND project_id = p_project_id;
6668 END LOOP; -- cur_task_assignments_rec in cur_system_assignment(p_object_version_id, p_object_id) LOOP
6669 END IF; -- IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
6670
6671 --Update pa_proj_elements
6672 UPDATE pa_proj_elements
6673 SET status_code = p_task_status
6674 ,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6675 ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6676 ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id) --Bug 5978904
6677 WHERE proj_element_id = cur_tasks_rec.proj_element_id
6678 AND project_id = p_project_id
6679 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6680 NOT IN ( 'CANCELLED', 'COMPLETED' );
6681
6682
6683 -- Update Percent complete --
6684 UPDATE pa_percent_completes
6685 SET status_code = p_task_status,
6686 completed_percentage = 100,
6687 Actual_Finish_date = p_actual_finish_date,
6688 actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date)
6689 WHERE object_id = cur_tasks_rec.proj_element_id
6690 AND project_id = p_project_id
6691 AND task_id = cur_tasks_rec.proj_element_id
6692 AND object_type = 'PA_TASKS'
6693 AND structure_type = p_structure_type
6694 AND ((current_flag = 'Y' and published_flag = 'Y') or
6695 (current_flag = 'N' and published_flag = 'N'))
6696 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6697 NOT IN ( 'CANCELLED', 'COMPLETED' )
6698 ;
6699
6700 --Update pa_progress_rollup
6701 UPDATE pa_progress_rollup
6702 SET Actual_Finish_date = p_actual_finish_date,
6703 actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date),
6704 completed_percentage = 100,
6705 estimated_remaining_effort = 0,
6706 EQPMT_ETC_EFFORT = 0,
6707 oth_etc_quantity = 0,
6708 OTH_ETC_COST_TC = 0,
6709 OTH_ETC_COST_FC = 0,
6710 OTH_ETC_COST_PC = 0,
6711 OTH_ETC_RAWCOST_TC = 0,
6712 OTH_ETC_RAWCOST_FC = 0,
6713 OTH_ETC_RAWCOST_PC = 0,
6714 PPL_ETC_COST_TC= 0,
6715 PPL_ETC_COST_FC= 0,
6716 PPL_ETC_COST_PC = 0,
6717 PPL_ETC_RAWCOST_TC= 0,
6718 PPL_ETC_RAWCOST_FC= 0,
6719 PPL_ETC_RAWCOST_PC = 0,
6720 EQPMT_ETC_COST_TC = 0,
6721 EQPMT_ETC_COST_FC = 0,
6722 EQPMT_ETC_COST_PC = 0,
6723 EQPMT_ETC_RAWCOST_TC = 0,
6724 EQPMT_ETC_RAWCOST_FC = 0,
6725 EQPMT_ETC_RAWCOST_PC = 0
6726 WHERE object_id = cur_tasks_rec.proj_element_id
6727 and current_flag IN ('Y', 'W')
6728 AND object_type = 'PA_TASKS'
6729 AND structure_type = p_structure_type
6730 AND proj_element_id = cur_tasks_rec.proj_element_id
6731 AND structure_version_id IS NULL
6732 AND project_id = p_project_id;
6733
6734 -- 3922325 : Added code to create task record if they do not exists
6735 IF sql%notfound THEN
6736 IF g1_debug_mode = 'Y' THEN
6737 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Inserting Tasks Record in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
6738 END IF;
6739
6740 l_percent_complete := 100;
6741 l_PROGRESS_ROLLUP_ID := null;
6742 l_push_as_of_date := p_as_of_date;
6743 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
6744 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
6745
6746 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6747 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
6748 ,X_PROJECT_ID =>p_project_id
6749 ,X_OBJECT_ID => cur_tasks_rec.proj_element_id
6750 ,X_OBJECT_TYPE => 'PA_TASKS'
6751 ,X_AS_OF_DATE => l_push_as_of_date
6752 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
6753 ,X_LAST_UPDATE_DATE => SYSDATE
6754 ,X_LAST_UPDATED_BY => l_user_id
6755 ,X_CREATION_DATE => SYSDATE
6756 ,X_CREATED_BY => l_user_id
6757 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6758 ,X_LAST_UPDATE_LOGIN => l_login_id
6759 ,X_INCREMENTAL_WORK_QTY => null
6760 ,X_CUMULATIVE_WORK_QTY => null
6761 ,X_BASE_PERCENT_COMPLETE => null
6762 ,X_EFF_ROLLUP_PERCENT_COMP => null
6763 ,X_COMPLETED_PERCENTAGE => l_percent_complete
6764 ,X_ESTIMATED_START_DATE => null
6765 ,X_ESTIMATED_FINISH_DATE => null
6766 ,X_ACTUAL_START_DATE => cur_tasks_rec.scheduled_start_date
6767 ,X_ACTUAL_FINISH_DATE => p_actual_finish_date
6768 ,X_EST_REMAINING_EFFORT => null
6769 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6770 ,X_BASE_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6771 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6772 ,x_percent_complete_id => null
6773 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6774 ,X_PROJ_ELEMENT_ID => cur_tasks_rec.proj_element_id
6775 ,X_STRUCTURE_VERSION_ID => null
6776 ,X_PPL_ACT_EFFORT_TO_DATE => null
6777 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6778 ,X_EQPMT_ETC_EFFORT => null
6779 ,X_OTH_ACT_COST_TO_DATE_TC => null
6780 ,X_OTH_ACT_COST_TO_DATE_FC => null
6781 ,X_OTH_ACT_COST_TO_DATE_PC => null
6782 ,X_OTH_ETC_COST_TC => null
6783 ,X_OTH_ETC_COST_FC => null
6784 ,X_OTH_ETC_COST_PC => null
6785 ,X_PPL_ACT_COST_TO_DATE_TC => null
6786 ,X_PPL_ACT_COST_TO_DATE_FC => null
6787 ,X_PPL_ACT_COST_TO_DATE_PC => null
6788 ,X_PPL_ETC_COST_TC => null
6789 ,X_PPL_ETC_COST_FC => null
6790 ,X_PPL_ETC_COST_PC => null
6791 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6792 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6793 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6794 ,X_EQPMT_ETC_COST_TC => null
6795 ,X_EQPMT_ETC_COST_FC => null
6796 ,X_EQPMT_ETC_COST_PC => null
6797 ,X_EARNED_VALUE => null
6798 ,X_TASK_WT_BASIS_CODE => null
6799 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6800 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6801 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6802 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6803 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6804 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6805 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6806 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6807 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6808 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6809 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6810 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6811 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6812 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6813 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6814 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6815 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6816 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6817 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6818 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6819 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6820 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6821 ,X_SUBPRJ_EARNED_VALUE => null
6822 ,X_CURRENT_FLAG => 'Y'
6823 ,X_PROJFUNC_COST_RATE_TYPE => null
6824 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6825 ,X_PROJFUNC_COST_RATE_DATE => null
6826 ,X_PROJ_COST_RATE_TYPE => null
6827 ,X_PROJ_COST_EXCHANGE_RATE => null
6828 ,X_PROJ_COST_RATE_DATE => null
6829 ,X_TXN_CURRENCY_CODE => null
6830 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6831 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6832 ,X_OTH_QUANTITY_TO_DATE => null
6833 ,X_OTH_ETC_QUANTITY => null
6834 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6835 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6836 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6837 ,X_OTH_ETC_RAWCOST_TC => null
6838 ,X_OTH_ETC_RAWCOST_FC => null
6839 ,X_OTH_ETC_RAWCOST_PC => null
6840 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6841 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6842 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6843 ,X_PPL_ETC_RAWCOST_TC => null
6844 ,X_PPL_ETC_RAWCOST_FC => null
6845 ,X_PPL_ETC_RAWCOST_PC => null
6846 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6847 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6848 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6849 ,X_EQPMT_ETC_RAWCOST_TC => null
6850 ,X_EQPMT_ETC_RAWCOST_FC => null
6851 ,X_EQPMT_ETC_RAWCOST_PC => null
6852 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6853 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6854 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6855 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6856 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6857 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6858 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6859 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6860 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6861 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6862 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6863 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6864 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6865 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6866 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6867 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6868 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6869 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6870 );
6871
6872 IF Fnd_Msg_Pub.count_msg > 0 THEN
6873 RAISE FND_API.G_EXC_ERROR;
6874 END IF;
6875
6876 IF g1_debug_mode = 'Y' THEN
6877 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted Tasks Record in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
6878 END IF;
6879 END IF;
6880
6881 END LOOP;
6882 -- Bug 3922325 : No Need to call plan_update here. It will be taken care in update_progress code
6883 /*
6884 BEGIN
6885 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (x_msg_code => l_msg_code,
6886 x_return_status => x_return_status);
6887 EXCEPTION
6888 WHEN OTHERS THEN
6889 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6890 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6891 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
6892 RAISE FND_API.G_EXC_ERROR;
6893 END;
6894
6895 IF x_return_status <> 'S' THEN
6896 RAISE FND_API.G_EXC_ERROR;
6897 END IF;
6898
6899 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
6900
6901 IF (l_base_struct_ver_id = -1) THEN
6902 l_base_struct_ver_id := l_structure_version_id;
6903 END IF;
6904
6905 BEGIN
6906 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
6907 p_project_id => p_project_id,
6908 p_struct_ver_id => l_structure_version_id,
6909 p_base_struct_ver_id => l_base_struct_ver_id,
6910 x_return_status => x_return_status,
6911 x_msg_code => l_msg_code
6912 );
6913 EXCEPTION
6914 WHEN OTHERS THEN
6915 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6916 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6917 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
6918 RAISE FND_API.G_EXC_ERROR;
6919 END;
6920
6921 IF x_return_status <> 'S' THEN
6922 RAISE FND_API.G_EXC_ERROR;
6923 END IF;
6924 -- Bug 3878024 : End
6925 */
6926 END IF;
6927 ------------------ Added for FP_M changes : END
6928
6929 IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'CANCELLED', 'ON_HOLD' )
6930 THEN
6931 -- Bug 3878024 : Commented the below code. Now cursor cur_tasks_rec will select the passed task too
6932 /*
6933 --Update pa_proj_elementso
6934 UPDATE pa_proj_elements
6935 SET status_code = p_task_status
6936 WHERE proj_element_id = p_object_id
6937 AND project_id = p_project_id;
6938
6939 -- FP M : 3491609 : Project Execution Workflow
6940
6941 -- Cancel the WF if its running.
6942 If p_task_status = 'CANCELLED' then
6943 PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF
6944 ( p_task_id => p_object_id
6945 ,x_msg_count => x_msg_count
6946 ,x_msg_data => x_msg_data
6947 ,x_return_status => x_return_status
6948 ) ;
6949
6950 if x_return_status <> FND_API.g_ret_sts_success then
6951 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6952 end if ;
6953 end if ;
6954
6955 -- FP M : 3491609 : Project Execution Workflow
6956 */
6957
6958
6959 FOR cur_tasks_rec in cur_tasks LOOP
6960 --Update pa_proj_elementso
6961 UPDATE pa_proj_elements
6962 SET status_code = p_task_status
6963 ,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6964 ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6965 ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id) --Bug 5978904
6966 WHERE proj_element_id = cur_tasks_rec.proj_element_id
6967 AND project_id = p_project_id
6968 and object_type = 'PA_TASKS'
6969 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6970 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6971 NOT IN ( 'CANCELLED', 'COMPLETED' );
6972
6973 UPDATE pa_percent_completes
6974 SET status_code = p_task_status
6975 WHERE object_id = cur_tasks_rec.proj_element_id
6976 AND project_id = p_project_id
6977 and object_type = 'PA_TASKS'
6978 and structure_type = p_structure_type -- FPM Dev CR 3
6979 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6980 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6981 NOT IN ( 'CANCELLED', 'COMPLETED' )
6982 AND ((current_flag = 'Y' and published_flag = 'Y') or
6983 (current_flag = 'N' and published_flag = 'N'));
6984
6985 -- FP M : 3491609 : Project Execution Workflow
6986
6987 -- Cancel the WF if its running.
6988 If p_task_status = 'CANCELLED' then
6989 PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF (
6990 p_task_id => cur_tasks_rec.proj_element_id
6991 ,x_msg_count => x_msg_count
6992 ,x_msg_data => x_msg_data
6993 ,x_return_status => x_return_status
6994 ) ;
6995
6996 if x_return_status <> FND_API.g_ret_sts_success then
6997 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6998 end if ;
6999
7000 end if ;
7001 -- FP M : 3491609 : Project Execution Workflow
7002 END LOOP;
7003 ELSE
7004
7005 IF PA_PROGRESS_UTILS.get_system_task_status ( l_old_status_code ) = 'ON_HOLD'
7006 THEN
7007 FOR cur_tasks_rec in cur_tasks LOOP
7008 IF p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
7009
7010 --- 4743866
7011 open get_task_pc_info(cur_tasks_rec.proj_element_id);
7012 fetch get_task_pc_info into get_task_pc_info_rec;
7013 close get_task_pc_info;
7014 --- 4743866 changed cur_tasks_rec to get_task_pc_info_rec in code below
7015
7016 IF get_task_pc_info_rec.completed_percentage = 0 AND
7017 get_task_pc_info_rec.actual_start_date IS NULL
7018 THEN
7019 l_status_code := '124';
7020 ELSIF get_task_pc_info_rec.completed_percentage > 0 AND
7021 get_task_pc_info_rec.completed_percentage < 100 AND
7022 get_task_pc_info_rec.actual_start_date IS NOT NULL AND
7023 get_task_pc_info_rec.actual_finish_date IS NULL
7024 THEN
7025 l_status_code := '125';
7026 ELSIF get_task_pc_info_rec.completed_percentage = 100 AND
7027 get_task_pc_info_rec.actual_start_date IS NOT NULL AND
7028 get_task_pc_info_rec.actual_finish_date IS NOT NULL
7029 THEN
7030 l_status_code := '127';
7031 ELSE
7032 l_status_code := '124'; --if p_as_of_date is g_miss_date
7033 END IF;
7034 --Update pa_proj_elementso
7035 if (nvl(get_task_pc_info_rec.published_flag,'X') <> 'N' and
7036 nvl(get_task_pc_info_rec.current_flag,'X') <> 'N') then
7037 UPDATE pa_proj_elements
7038 SET status_code = l_status_code
7039 ,last_update_date = decode(status_code,l_status_code,last_update_date,sysdate) --Bug 5978904
7040 ,last_update_login = decode(status_code,l_status_code,last_update_login,l_login_id) --Bug 5978904
7041 ,last_updated_by = decode(status_code,l_status_code,last_updated_by,l_user_id) --Bug 5978904
7042 WHERE proj_element_id = cur_tasks_rec.proj_element_id
7043 AND project_id = p_project_id
7044 and Object_Type = 'PA_TASKS' -- Bhumesh
7045 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7046 NOT IN ( 'CANCELLED', 'COMPLETED' );
7047
7048 end if;
7049
7050 if (get_task_pc_info_rec.published_flag = 'Y' and get_task_pc_info_rec.current_flag = 'Y') then
7051 UPDATE pa_percent_completes
7052 SET status_code = l_status_code
7053 WHERE object_id = cur_tasks_rec.proj_element_id
7054 AND project_id = p_project_id
7055 and Object_Type = 'PA_TASKS' -- Bhumesh
7056 and structure_type = p_structure_type -- FPM Dev CR 3
7057 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7058 NOT IN ( 'CANCELLED', 'COMPLETED' )
7059 AND current_flag = 'Y' and published_flag = 'Y';
7060 elsif (get_task_pc_info_rec.published_flag = 'N' and get_task_pc_info_rec.current_flag = 'N') then
7061 UPDATE pa_percent_completes
7062 SET status_code = l_status_code
7063 WHERE object_id = cur_tasks_rec.proj_element_id
7064 AND project_id = p_project_id
7065 and Object_Type = 'PA_TASKS' -- Bhumesh
7066 and structure_type = p_structure_type -- FPM Dev CR 3
7067 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7068 NOT IN ( 'CANCELLED', 'COMPLETED' )
7069 AND current_flag = 'N' and published_flag = 'N';
7070 end if;
7071 END IF;-- p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
7072 END LOOP;
7073 END IF;
7074 END IF;
7075
7076 EXCEPTION
7077 when FND_API.G_EXC_ERROR then
7078 if p_commit = FND_API.G_TRUE then
7079 rollback to push_down_task_status;
7080 end if;
7081 x_return_status := FND_API.G_RET_STS_ERROR;
7082 when FND_API.G_EXC_UNEXPECTED_ERROR then
7083 if p_commit = FND_API.G_TRUE then
7084 rollback to push_down_task_status;
7085 end if;
7086 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7087 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
7088 p_procedure_name => 'push_down_task_status',
7089 p_error_text => SUBSTRB(SQLERRM,1,120));
7090 when OTHERS then
7091 if p_commit = FND_API.G_TRUE then
7092 rollback to push_down_task_status;
7093 end if;
7094 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7095 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
7096 p_procedure_name => 'push_down_task_status',
7097 p_error_text => SUBSTRB(SQLERRM,1,120));
7098 raise;
7099 END push_down_task_status;
7100
7101 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
7102 p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7103 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7104 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7105 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7106 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
7107 ,p_lowest_level_task IN VARCHAR2 := 'N'
7108 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
7109 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
7110 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7111 ,p_fin_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7112 ,p_wp_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7113 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- Bug 3606627
7114 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7115 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
7116 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7117 )
7118 IS
7119
7120 l_return_status VARCHAR2(1) ;
7121 l_msg_count NUMBER ;
7122 l_msg_data VARCHAR2(250) ;
7123 l_data VARCHAR2(250) ;
7124 g1_debug_mode VARCHAR2(1);
7125
7126 BEGIN
7127
7128 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7129
7130 IF g1_debug_mode = 'Y' THEN
7131 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT');
7132 END IF;
7133
7134 IF g1_debug_mode = 'Y' THEN
7135 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
7136 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
7137 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
7138 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
7139 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
7140 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
7141 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
7142 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
7143 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
7144 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
7145 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
7146 END IF;
7147
7148 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
7149
7150 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
7151 p_project_id => p_project_id
7152 ,P_OBJECT_TYPE => P_OBJECT_TYPE
7153 ,P_OBJECT_ID => P_OBJECT_ID
7154 ,p_object_version_id => p_object_version_id
7155 ,p_as_of_date => p_as_of_date
7156 ,p_lowest_level_task => p_lowest_level_task
7157 ,p_calling_module => p_calling_module
7158 ,p_structure_type => p_structure_type
7159 ,p_structure_version_id => p_structure_version_id
7160 ,p_fin_rollup_method => p_fin_rollup_method
7161 ,p_wp_rollup_method => p_wp_rollup_method
7162 ,p_rollup_entire_wbs => p_rollup_entire_wbs
7163 ,x_return_status => l_return_status
7164 ,x_msg_count => l_msg_count
7165 ,x_msg_data => l_msg_data);
7166
7167 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7168 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7169 p_msg_name => l_msg_data);
7170 x_msg_data := l_msg_data;
7171 x_return_status := 'E';
7172 x_msg_count := l_msg_count;
7173 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7174 END IF;
7175
7176
7177 x_return_status := FND_API.G_RET_STS_SUCCESS;
7178
7179 IF g1_debug_mode = 'Y' THEN
7180 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
7181 END IF;
7182 EXCEPTION
7183 WHEN OTHERS THEN
7184 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7185 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
7186 p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
7187 p_error_text => SUBSTRB(SQLERRM,1,120));
7188 raise;
7189 END ROLLUP_FUTURE_PROGRESS_PVT;
7190
7191 -- Update_PC_PARTY_MAERGE (PUBLIC)
7192 -- This is the procedure being called during the Party Merge.
7193 -- The input/output arguments format matches the document PartyMergeDD.doc.
7194 -- The goal is to fix the PUBLISHED_BY_PARTY_ID in pa_percent_completes table to point to the
7195 -- same party when two similar parties are begin merged.
7196 --
7197 -- Usage example in pl/sql
7198 -- This procedure should only be called from the PartyMerge utility.
7199 --
7200 procedure Update_PC_PARTY_MERGE(p_entity_name in varchar2,
7201 p_from_id in number,
7202 p_to_id in out nocopy number,
7203 p_from_fk_id in number,
7204 p_to_fk_id in number,
7205 p_parent_entity_name in varchar2,
7206 p_batch_id in number,
7207 p_batch_party_id in number,
7208 p_return_status in out nocopy varchar2) is
7209 begin
7210 p_return_status := FND_API.G_RET_STS_SUCCESS;
7211
7212 if (p_from_fk_id <> p_to_fk_id) then
7213
7214 update pa_percent_completes
7215 set PUBLISHED_BY_PARTY_ID = p_to_fk_id,
7216 last_update_date = hz_utility_pub.last_update_date,
7217 last_updated_by = hz_utility_pub.user_id,
7218 last_update_login = hz_utility_pub.last_update_login
7219 where PUBLISHED_BY_PARTY_ID = p_from_fk_id
7220 ;
7221 p_to_id := p_from_id;
7222
7223 end if;
7224
7225 end Update_PC_PARTY_MERGE;
7226
7227 -- Progress Management Changes. Bug # 3420093.
7228
7229 PROCEDURE APPLY_LP_PROG_ON_CWV(
7230 p_api_version IN NUMBER :=1.0
7231 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
7232 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
7233 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
7234 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
7235 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
7236 ,p_debug_mode IN VARCHAR2 :='N'
7237 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7238 ,p_project_id IN NUMBER
7239 ,p_working_str_version_id IN NUMBER
7240 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7241 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
7242 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7243 )
7244 IS
7245 l_api_name CONSTANT VARCHAR2(30) := 'APPLY_LP_PROG_ON_CWV';
7246 l_api_version CONSTANT NUMBER := p_api_version;
7247 l_user_id NUMBER := FND_GLOBAL.USER_ID;
7248 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
7249 l_return_status VARCHAR2(1);
7250 l_msg_count NUMBER;
7251 l_msg_data VARCHAR2(250);
7252 l_msg_code VARCHAR2(12000);
7253 l_etc_start_date DATE;
7254
7255
7256 CURSOR C1(p_project_id NUMBER, p_working_str_version_id NUMBER) is
7257 -- Bug # 4581937.
7258 select ppr.*
7259 from pa_progress_rollup ppr, pa_proj_element_versions ppev --4871809
7260 where ppr.project_id = p_project_id
7261 and ppr.structure_version_id is null
7262 and ppr.object_type in ('PA_STRUCTURES','PA_ASSIGNMENTS','PA_TASKS')
7263 --and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y' --bug 4050532
7264 and structure_type = 'WORKPLAN' -- FPM Dev CR 3
7265 and current_flag = 'Y'
7266 and ppr.proj_element_id = ppev.proj_element_id
7267 and ppev.parent_structure_version_id = p_working_str_version_id
7268 and nvl(ppev.task_unpub_ver_status_code,'X') <>'TO_BE_DELETED' ;
7269
7270
7271 CURSOR C2(p_project_id NUMBER) is
7272 select max(as_of_date)
7273 from pa_progress_rollup ppr
7274 where ppr.project_id = p_project_id
7275 and ppr.structure_version_id is null
7276 and ppr.structure_type = 'WORKPLAN'
7277 and ppr.current_flag <> 'W' -- Bug 3879461
7278 ;
7279
7280 -- FPM Dev CR 4 : Added the cusrosr c_get_work_obj_ver_id
7281 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER) IS
7282 select element_version_id
7283 from pa_proj_element_versions
7284 where project_id = p_project_id
7285 and proj_element_id = c_proj_element_id
7286 and parent_structure_version_id = c_structure_version_id;
7287
7288 -- Bug 3764224 : Changed the cusrosr c4 def'n
7289 cursor c4 (p_project_id NUMBER, p_object_id NUMBER, p_working_str_version_id NUMBER, p_task_id NUMBER, c_cbs_element_id NUMBER) is
7290 select ptav1.resource_assignment_id, ptav1.resource_list_member_id, ptav1.txn_currency_code
7291 ,ptav1.resource_class_code, ptav1.rate_based_flag, ptav1.rbs_element_id
7292 from pa_task_asgmts_v ptav1
7293 where ptav1.resource_list_member_id = p_object_id
7294 AND NVL(ptav1.cbs_element_id,-1)=NVL(c_cbs_element_id,-1)-- NEED TO ADD :::DJ
7295 and ptav1.structure_version_id = p_working_str_version_id
7296 and ptav1.task_id = p_task_id
7297 ;
7298
7299 cursor c5 (p_project_id NUMBER, p_res_list_member_id NUMBER, p_task_id NUMBER,
7300 p_task_version_id NUMBER, p_structure_version_id NUMBER,c_cbs_element_id NUMBER) is
7301 select rbs_element_id, rate_based_flag, resource_class_code, txn_currency_code
7302 ,resource_list_member_id ,resource_assignment_id--bug 3935699
7303 from pa_task_asgmts_v
7304 where project_id = p_project_id
7305 and resource_list_member_id = p_res_list_member_id -- Commented out to fix Bug # 3815741.
7306 --uncommented the resource_list_member_id for bug 3839699
7307 AND NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1)-- for cbs
7308 and task_id = p_task_id
7309 and task_version_id = p_task_version_id
7310 and structure_version_id = p_structure_version_id;
7311
7312 CURSOR cur_proj_elements(c_proj_element_id NUMBER)
7313 IS
7314
7315 SELECT decode( ppe.base_percent_comp_deriv_code, null, ptt.base_percent_comp_deriv_code, '^', ptt.base_percent_comp_deriv_code, ppe.base_percent_comp_deriv_code )
7316 from pa_proj_elements ppe
7317 ,pa_task_types ptt --added during the bugfix 3962823.
7318 where ppe.project_id = p_project_id
7319 and ppe.proj_element_id = c_proj_element_id
7320 and ppe.type_id = ptt.task_type_id
7321 ;
7322
7323 --bug 3846474
7324 cursor all_lowest_task
7325 is
7326 select task_version_id, 'PA_ASSIGNMENTS' object_type,
7327 resource_assignment_id, TXN_CURRENCY_CODE
7328 from pa_task_asgmts_v ptav
7329 where ptav.project_id= p_project_id
7330 and ptav.structure_version_id = p_working_str_version_id
7331 and ptav.planning_start_date <= l_etc_start_date
7332 -- Bug 3958686 : Commenting the ta_display_flag portion
7333 and NOT EXISTS ( select 'x' from pa_progress_rollup
7334 where project_id=p_project_id
7335 and object_id = ptav.resource_list_member_id
7336 and NVL(cbs_element_id,-1) = NVL(ptav.cbs_element_id,-1)-- added for 16895485
7337 and proj_element_id = ptav.task_id
7338 and object_type = 'PA_ASSIGNMENTS'
7339 and structure_type = 'WORKPLAN' -- Bug 3879461
7340 and structure_version_id is null
7341 and current_flag = 'Y'
7342 );
7343 cursor l_scheduled_dates_cur(p_project_id NUMBER, p_object_id NUMBER, p_object_version_id NUMBER) is
7344 select scheduled_start_date
7345 ,scheduled_finish_date
7346 from pa_proj_elem_ver_schedule
7347 where project_id = p_project_id
7348 and proj_element_id = p_object_id
7349 and element_version_id = p_object_version_id;
7350
7351 cursor l_ptav_cur(p_project_id NUMBER, p_object_id NUMBER, p_task_id NUMBER, p_task_version_id NUMBER , c_cbs_element_id NUMBER) is
7352 select resource_class_code
7353 ,resource_list_member_id
7354 ,assignment_start_date
7355 ,assignment_end_date
7356 ,txn_currency_code
7357 ,resource_assignment_id
7358 -- Bug 3818439 : Added planned amount here
7359 ,planned_quantity
7360 ,planned_bur_cost_txn_cur
7361 ,planned_bur_cost_projfunc
7362 ,planned_bur_cost_proj_cur
7363 ,planned_raw_cost_txn_cur
7364 ,planned_raw_cost_proj_cur
7365 ,planned_raw_cost_projfunc
7366 ,rate_based_flag --bug 3841547
7367 ,ta_display_flag --bug 4021315
7368 ,CBS_ELEMENT_ID
7369 from pa_task_asgmts_v
7370 where project_id = p_project_id
7371 -- and resource_assignment_id = p_object_id Bug 3764224
7372 and resource_list_member_id = p_object_id -- Bug 3764224 ---:::DJ
7373 and task_id = p_task_id
7374 --and task_version_id = p_task_version_id --bug 3911600
7375 and structure_version_id = pa_proj_elements_utils.latest_published_ver_id(p_project_id,'WORKPLAN')
7376 and NVL(cbs_element_id,-1) = NVL(c_cbs_element_id,-1);--added for cbs 16895485
7377
7378 cursor cur_proj_prog_attr
7379 is
7380 select pppa.task_weight_basis_code
7381 from pa_proj_progress_attr pppa
7382 where project_id=p_project_id
7383 and structure_type ='WORKPLAN'
7384 ;
7385
7386 l_work_obj_ver_id NUMBER; -- FPM Dev CR 4
7387
7388 l_c1rec c1%rowtype;
7389 l_c4rec c4%rowtype;
7390 l_c5rec c5%rowtype;
7391
7392 l_progress_rollup_id NUMBER := null;
7393 l_max_as_of_date date;
7394 l_as_of_date date;
7395
7396 l_task_ver_id_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7397 l_planned_effort_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7398 l_start_date_tbl_task SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7399 l_end_date_tbl_task SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7400
7401 l_raw_cost_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7402 l_burdened_cost_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7403
7404 l_task_ver_id_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7405 l_planned_ppl_effort_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7406 l_planned_eqp_effort_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7407 l_planned_qty_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7408 l_start_date_tbl_assgn SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7409 l_end_date_tbl_assgn SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7410 l_res_list_mem_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7411 l_cbs_element_id_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7412 l_res_assgn_id_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7413 l_currency_code_tbl_assgn SYSTEM.pa_varchar2_15_tbl_type := SYSTEM.pa_varchar2_15_tbl_type();
7414
7415 l_raw_cost_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7416 l_burdened_cost_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7417
7418
7419 l_act_TXN_COST_this_period NUMBER := 0;
7420 l_act_PRJ_COST_this_period NUMBER := 0;
7421 l_act_POU_COST_this_period NUMBER := 0;
7422 l_act_effort_this_period NUMBER := 0;
7423 -- Bug 3621404 : Raw Cost Changes Begin
7424 l_act_TXN_RAWCOST_this_period NUMBER := 0;
7425 l_act_PRJ_RAWCOST_this_period NUMBER := 0;
7426 l_act_POU_RAWCOST_this_period NUMBER := 0;
7427 l_etc_TXN_COST_this_period NUMBER := 0;
7428 l_etc_PRJ_COST_this_period NUMBER := 0;
7429 l_etc_POU_COST_this_period NUMBER := 0;
7430 l_etc_TXN_RAWCOST_this_period NUMBER := 0;
7431 l_etc_PRJ_RAWCOST_this_period NUMBER := 0;
7432 l_etc_POU_RAWCOST_this_period NUMBER := 0;
7433 l_etc_effort_this_period NUMBER := 0;
7434 -- Bug 3621404 : Raw Cost Changes End
7435
7436 l_version_enabled_flag VARCHAR2(1) := null;
7437
7438 l_project_ids SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7439 l_struture_version_ids SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7440 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7441
7442 l_res_assign_id_out NUMBER := null;
7443 l_task_version_id_out NUMBER := null;
7444 l_txn_curr_code_out VARCHAR2(15) := null;
7445 L_NEW_RESOURCE_LIST_MEM_ID NUMBER; -- Bug 3764224
7446 l_rate_based_flag_x VARCHAR2(1);
7447 l_rbs_element_id NUMBER;
7448
7449 l_etc NUMBER := 0; --bug 3826599
7450 l_assignment_exists VARCHAR2(1); -- Bug 3834339
7451 l_scheduled_dates_rec l_scheduled_dates_cur%rowtype;
7452 l_ptav_rec l_ptav_cur%rowtype;
7453 l_res_assgmt_id NUMBER; --bug 4021315
7454 l_prev_act_effort NUMBER := null;
7455 l_prev_etc_effort NUMBER := null;
7456
7457 l_task_weight_basis_code VARCHAR2(30);
7458 l_baselined_str_ver_id NUMBER;
7459
7460 --added for percent complete recalculation at the lowest level task as per the new planned effort.
7461 l_EFF_ROLLUP_PERCENT_COMP NUMBER;
7462 l_planned_effort NUMBER;
7463 l_planned_cost NUMBER;
7464 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30);
7465 l_earned_value NUMBER;
7466 g1_debug_mode VARCHAR2(1);
7467 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
7468 l_task_assgn NUMBER := null;
7469 l_new_resource_assignment_id NUMBER;
7470 l_new_object_id NUMBER;
7471 l_resource_class_code NUMBER;
7472 l_rate_based_flag NUMBER;
7473
7474 --bug 4050532
7475
7476 PROGRESS_ROLLUP_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7477 PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7478 PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7479 OBJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7480 L_CBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7481 OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7482 AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7483 OBJECT_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7484 LAST_UPDATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7485 LAST_UPDATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
7486 CREATION_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7487 CREATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
7488 PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7489 LAST_UPDATE_LOGIN PA_PLSQL_DATATYPES.Num15TabTyp;
7490 INCREMENTAL_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
7491 CUMULATIVE_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
7492 BASE_PERCENT_COMPLETE PA_PLSQL_DATATYPES.QtyTabtyp;
7493 EFF_ROLLUP_PERCENT_COMP PA_PLSQL_DATATYPES.QtyTabtyp;
7494 COMPLETED_PERCENTAGE PA_PLSQL_DATATYPES.QtyTabtyp;
7495 ESTIMATED_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7496 ESTIMATED_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7497 ACTUAL_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7498 ACTUAL_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7499 RECORD_VERSION_NUMBER PA_PLSQL_DATATYPES.Num15TabTyp;
7500 BASE_PERCENT_COMP_DERIV_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
7501 BASE_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7502 EFF_ROLLUP_PROG_STAT_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7503 STRUCTURE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7504 PROJ_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7505 STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7506 PPL_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
7507 EQPMT_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
7508 OTH_QUANTITY_TO_DATE PA_PLSQL_DATATYPES.AmtTabTyp;
7509
7510 OTH_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7511 OTH_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7512 OTH_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7513 OTH_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7514 OTH_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7515 OTH_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7516
7517 PPL_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7518 PPL_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7519 PPL_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7520 PPL_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7521 PPL_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7522 PPL_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7523
7524 EQPMT_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7525 EQPMT_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7526 EQPMT_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7527 EQPMT_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7528 EQPMT_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7529 EQPMT_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7530
7531 EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
7532 TASK_WT_BASIS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
7533 CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
7534 PROJFUNC_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7535 PROJFUNC_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
7536 PROJFUNC_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7537 PROJ_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7538 PROJ_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
7539 PROJ_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7540 TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
7541 PROG_PA_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
7542 PROG_GL_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
7543
7544 l_index1 NUMBER := 0;
7545 l_index2 NUMBER := 0;
7546 l_lowest_level_task VARCHAR2(1);
7547 --bug 4050532
7548
7549 BEGIN
7550
7551 IF g1_debug_mode = 'Y' THEN
7552 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7553 END IF;
7554
7555 IF (p_debug_mode = 'Y') THEN
7556 IF g1_debug_mode = 'Y' THEN
7557 pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7558 END IF;
7559 END IF;
7560
7561
7562 IF (p_commit = FND_API.G_TRUE) THEN
7563 savepoint APPLY_LP_PROG_ON_CWV;
7564 END IF;
7565
7566 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
7567 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7568 END IF;
7569
7570 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
7571 FND_MSG_PUB.initialize;
7572 END IF;
7573
7574 x_return_status := FND_API.G_RET_STS_SUCCESS;
7575
7576 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7577
7578 IF g1_debug_mode = 'Y' THEN
7579 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV Start : Passed Parameters :', x_Log_Level=> 3);
7580 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
7581 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'p_working_str_version_id='||p_working_str_version_id, x_Log_Level=> 3);
7582 END IF;
7583
7584 -- Bug 3786612 : Added check_txn_currency_diff call
7585 PA_PROGRESS_UTILS.check_txn_currency_diff
7586 (
7587 p_structure_version_id => p_working_str_version_id,
7588 p_context => 'APPLY_PROGRESS',
7589 x_return_status => x_return_status
7590 );
7591
7592 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7593 RAISE FND_API.G_EXC_ERROR;
7594 END IF;
7595
7596 l_version_enabled_flag := PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id);
7597 --- setting this global var for PJI. In case of VD struct they won't touch ETC
7598 if (l_version_enabled_flag <> 'Y') then --- APP
7599 pa_progress_pub.g_wbs_apply_prog := p_working_str_version_id;
7600 end if;
7601
7602 IF g1_debug_mode = 'Y' THEN
7603 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_version_enabled_flag='||l_version_enabled_flag, x_Log_Level=> 3);
7604 END IF;
7605
7606 -- Get max(as_of_date) for all progress records for the project.
7607 OPEN c2(p_project_id);
7608 FETCH c2 INTO l_max_as_of_date;
7609 IF l_max_as_of_date IS NULL
7610 THEN
7611 CLOSE c2;
7612 return;
7613 END IF;
7614 CLOSE c2;
7615
7616 l_as_of_date := l_max_as_of_date;
7617 l_etc_start_date := l_max_as_of_date + 1;
7618
7619 IF g1_debug_mode = 'Y' THEN
7620 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
7621 END IF;
7622
7623 -- Set B and F package variable.
7624 PA_FP_CALC_PLAN_PKG.G_SPREAD_FROM_DATE := l_max_as_of_date;
7625 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
7626
7627 --moved from below to use it in % complete recalculation.
7628 OPEN cur_proj_prog_attr;
7629 FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
7630 CLOSE cur_proj_prog_attr;
7631
7632 -- Loop through the cursor for each of the lowest tasks.
7633 OPEN c1(p_project_id,p_working_str_version_id);
7634 LOOP
7635 FETCH c1 INTO l_c1rec;
7636 EXIT WHEN c1%NOTFOUND;
7637
7638 IF g1_debug_mode = 'Y' THEN
7639 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_version_id='||l_c1rec.object_version_id, x_Log_Level=> 3);
7640 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_id='||l_c1rec.object_id, x_Log_Level=> 3);
7641 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_type='||l_c1rec.object_type, x_Log_Level=> 3);
7642 END IF;
7643 -- Populate PL/SQL tables that will be used by the FP API:
7644 -- pa_fp_planning_transaction_pub.update_planning_transactions.
7645 -- This is done in both cases - if workplan versioning is enabled
7646 -- or disabled.
7647
7648 -- Cursor cur_task_assgn is used to check if the lowest task has any
7649 -- assignments or not.
7650 -- Bug 3834339 : Using function to decide whether assignment exists on task or not
7651 l_assignment_exists := 'N';
7652 IF l_c1rec.object_type = 'PA_TASKS' THEN
7653 l_assignment_exists := NVL(PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_c1rec.object_version_id,l_c1rec.object_type),'N');
7654 l_lowest_level_task := NVL(pa_proj_elements_utils.is_lowest_task(l_c1rec.object_version_id),'N'); --bug 4050532
7655 END IF;
7656
7657
7658 IF g1_debug_mode = 'Y' THEN
7659 --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_task_assgn='||l_task_assgn, x_Log_Level=> 3);
7660 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_assignment_exists='||l_assignment_exists, x_Log_Level=> 3);
7661 END IF;
7662
7663 /* Begin commenting out this code to fix bug # 4074299.
7664
7665 -- If the lowest task does not have assignments then populate the task data in the
7666 -- "%_tbl_task" pl_sql tables.
7667
7668 IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N') AND
7669 nvl(l_lowest_level_task,'N')='Y') --bug 4050532
7670 THEN
7671 l_task_ver_id_tbl_task.extend;
7672 l_planned_effort_tbl_task.extend;
7673 l_start_date_tbl_task.extend;
7674 l_end_date_tbl_task.extend;
7675
7676 l_raw_cost_tbl_task.extend;
7677 l_burdened_cost_tbl_task.extend;
7678
7679 l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_c1rec.object_version_id;
7680 l_planned_effort_tbl_task(l_planned_effort_tbl_task.count) := nvl(l_c1rec.ppl_act_effort_to_date,0)
7681 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7682 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7683 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7684 + nvl(l_c1rec.estimated_remaining_effort,0)
7685 + nvl(l_c1rec.eqpmt_etc_effort,0)
7686 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
7687 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7688
7689 OPEN l_scheduled_dates_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.object_version_id);
7690 FETCH l_scheduled_dates_cur INTO l_scheduled_dates_rec;
7691 CLOSE l_scheduled_dates_cur;
7692
7693 l_start_date_tbl_task(l_start_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_start_date;
7694 l_end_date_tbl_task(l_end_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_finish_date;
7695
7696 l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
7697 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
7698 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
7699 +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
7700 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
7701 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
7702 +nvl(l_c1rec.ppl_etc_cost_pc,0)
7703 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
7704 +nvl(l_c1rec.oth_etc_cost_pc,0)
7705 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
7706 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
7707 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
7708
7709 l_raw_cost_tbl_task(l_raw_cost_tbl_task.count) := nvl(l_c1rec.oth_act_rawcost_to_date_pc,0)
7710 +nvl(l_c1rec.ppl_act_rawcost_to_date_pc,0)
7711 +nvl(l_c1rec.eqpmt_act_rawcost_to_date_pc,0)
7712 +nvl(l_c1rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)
7713 +nvl(l_c1rec.subprj_ppl_act_rawcost_pc,0)
7714 +nvl(l_c1rec.subprj_eqpmt_act_rawcost_pc,0)
7715 +nvl(l_c1rec.ppl_etc_rawcost_pc,0)
7716 +nvl(l_c1rec.eqpmt_etc_rawcost_pc,0)
7717 +nvl(l_c1rec.oth_etc_rawcost_pc,0)
7718 +nvl(l_c1rec.subprj_ppl_etc_rawcost_pc,0)
7719 +nvl(l_c1rec.subprj_eqpmt_etc_rawcost_pc,0)
7720 +nvl(l_c1rec.subprj_oth_etc_rawcost_pc,0);
7721 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7722 l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := null;
7723 l_raw_cost_tbl_task(l_raw_cost_tbl_task.count):= null;
7724 END IF;
7725
7726 IF g1_debug_mode = 'Y' THEN
7727 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort_tbl_task(l_planned_effort_tbl_task.count)='||l_planned_effort_tbl_task(l_planned_effort_tbl_task.count), x_Log_Level=> 3);
7728 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count)='||l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count), x_Log_Level=> 3);
7729 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_task(l_raw_cost_tbl_task.count)='||l_raw_cost_tbl_task(l_raw_cost_tbl_task.count), x_Log_Level=> 3);
7730 END IF;
7731 END IF; -- ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7732
7733 End commenting out this code to fix bug # 4074299. */
7734
7735 -- For all assignments populate the assignment data in the "%tbl_assgn" pl_sql tables.
7736
7737 IF (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7738 l_task_ver_id_tbl_assgn.extend;
7739 l_planned_ppl_effort_tbl_assgn.extend;
7740 l_planned_eqp_effort_tbl_assgn.extend;
7741 l_planned_qty_tbl_assgn.extend;
7742 l_start_date_tbl_assgn.extend;
7743 l_end_date_tbl_assgn.extend;
7744 l_res_list_mem_tbl_assgn.extend;
7745 l_cbs_element_id_tbl_assgn.extend;
7746 l_currency_code_tbl_assgn.extend;
7747 l_res_assgn_id_tbl_assgn.extend;
7748 l_raw_cost_tbl_assgn.extend;
7749 l_burdened_cost_tbl_assgn.extend;
7750 OPEN l_ptav_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.proj_element_id,l_c1rec.object_version_id,l_c1rec.cbs_element_id);
7751 FETCH l_ptav_cur INTO l_ptav_rec;
7752 CLOSE l_ptav_cur;
7753
7754 l_task_ver_id_tbl_assgn(l_task_ver_id_tbl_assgn.count) := l_c1rec.object_version_id;
7755 -- Bug 3818439 : Defaylting ETC to planned-Actual if ETC is null
7756 -- l_planned_ppl_effort_tbl_assgn and l_planned_eqp_effort_tbl_assgn is not used
7757 -- so no need to change it.
7758 -- Depending on resource_class_code, it should default ETC to planned-actual
7759
7760 l_planned_ppl_effort_tbl_assgn(l_planned_ppl_effort_tbl_assgn.count):= nvl(l_c1rec.ppl_act_effort_to_date,0)
7761 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7762 + nvl(l_c1rec.estimated_remaining_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.ppl_act_effort_to_date,0))
7763 + nvl(l_c1rec.subprj_ppl_etc_effort,0);
7764
7765 l_planned_eqp_effort_tbl_assgn(l_planned_eqp_effort_tbl_assgn.count):=nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7766 + nvl(l_c1rec.eqpmt_etc_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.eqpmt_act_effort_to_date,0))
7767 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7768 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7769
7770
7771 ------5726773 removed all old code regarding l_etc (bug 4378391) and calling a function to calculate proper ETC if it is null
7772 IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
7773 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7774 l_etc := l_c1rec.oth_etc_quantity;
7775 ELSE
7776 ---5726773
7777 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.oth_quantity_to_date,0));
7778 END IF;
7779 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7780
7781 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7782 l_etc := l_c1rec.oth_etc_cost_tc;
7783 ELSE
7784 ---5726773
7785 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.oth_act_cost_to_date_tc,0));
7786 END IF;
7787 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7788
7789 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7790 l_etc := l_c1rec.oth_etc_rawcost_tc;
7791 ELSE
7792 ---5726773
7793 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.oth_act_rawcost_to_date_tc,0));
7794 END IF;
7795 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7796
7797 ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
7798 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7799 l_etc := l_c1rec.oth_etc_quantity;
7800 ELSE
7801 ---5726773
7802 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.oth_quantity_to_date,0));
7803 END IF;
7804 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7805
7806 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7807 l_etc := l_c1rec.oth_etc_cost_tc;
7808 ELSE
7809 ---5726773
7810 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.oth_act_cost_to_date_tc,0));
7811 END IF;
7812 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7813
7814 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7815 l_etc := l_c1rec.oth_etc_rawcost_tc;
7816 ELSE
7817 ---5726773
7818 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.oth_act_rawcost_to_date_tc,0));
7819 END IF;
7820 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7821
7822 ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
7823 IF l_c1rec.estimated_remaining_effort IS NOT NULL THEN
7824 l_etc := l_c1rec.estimated_remaining_effort;
7825 ELSE
7826 ---5726773
7827 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.ppl_act_effort_to_date,0));
7828 END IF;
7829 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.ppl_act_effort_to_date,0) + l_etc;
7830
7831 IF l_c1rec.ppl_etc_cost_tc IS NOT NULL THEN
7832 l_etc := l_c1rec.ppl_etc_cost_tc;
7833 ELSE
7834 ---5726773
7835 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.ppl_act_cost_to_date_tc,0));
7836 END IF;
7837 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_cost_to_date_tc,0) + l_etc;
7838
7839 IF l_c1rec.ppl_etc_rawcost_tc IS NOT NULL THEN
7840 l_etc := l_c1rec.ppl_etc_rawcost_tc;
7841 ELSE
7842 ---5726773
7843 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.ppl_act_rawcost_to_date_tc,0));
7844 END IF;
7845 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_rawcost_to_date_tc,0) + l_etc;
7846
7847 ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
7848 IF l_c1rec.eqpmt_etc_effort IS NOT NULL THEN
7849 l_etc := l_c1rec.eqpmt_etc_effort;
7850 ELSE
7851 ---5726773
7852 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.eqpmt_act_effort_to_date,0));
7853 END IF;
7854 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_effort_to_date,0) + l_etc;
7855
7856 IF l_c1rec.eqpmt_etc_cost_tc IS NOT NULL THEN
7857 l_etc := l_c1rec.eqpmt_etc_cost_tc;
7858 ELSE
7859 ---5726773
7860 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.eqpmt_act_cost_to_date_tc,0));
7861 END IF;
7862 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_cost_to_date_tc,0) + l_etc;
7863
7864 IF l_c1rec.eqpmt_etc_rawcost_tc IS NOT NULL THEN
7865 l_etc := l_c1rec.eqpmt_etc_rawcost_tc;
7866 ELSE
7867 ---5726773
7868 l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.eqpmt_act_rawcost_to_date_tc,0));
7869 END IF;
7870 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_rawcost_to_date_tc,0) + l_etc;
7871
7872 END IF; -- l_ptav_rec.resource_class_code
7873
7874 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7875 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
7876 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count):= null;
7877 END IF;
7878
7879
7880 l_start_date_tbl_assgn(l_start_date_tbl_assgn.count) := l_ptav_rec.assignment_start_date;
7881 l_end_date_tbl_assgn(l_end_date_tbl_assgn.count) := l_ptav_rec.assignment_end_date;
7882 l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count) := l_ptav_rec.resource_list_member_id;
7883 l_cbs_element_id_tbl_assgn(l_cbs_element_id_tbl_assgn.count) := l_ptav_rec.CBS_ELEMENT_ID;-- added for 16895485
7884 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_ptav_rec.txn_currency_code;
7885 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_ptav_rec.resource_assignment_id;
7886
7887 IF g1_debug_mode = 'Y' THEN
7888 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_start_date_tbl_assgn(l_start_date_tbl_assgn.count)='||l_start_date_tbl_assgn(l_start_date_tbl_assgn.count), x_Log_Level=> 3);
7889 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_end_date_tbl_assgn(l_end_date_tbl_assgn.count)='||l_end_date_tbl_assgn(l_end_date_tbl_assgn.count), x_Log_Level=> 3);
7890 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count)='||l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count), x_Log_Level=> 3);
7891 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count)='||l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count), x_Log_Level=> 3);
7892 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count)='||l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count), x_Log_Level=> 3);
7893 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count)='||l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count), x_Log_Level=> 3);
7894 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count)='||l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count), x_Log_Level=> 3);
7895 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count)='||l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count), x_Log_Level=> 3);
7896 END IF;
7897 END IF; -- (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7898
7899 -- The following actions are only performed if workplan versioning is enabled: 1
7900 IF (l_version_enabled_flag = 'Y') THEN
7901
7902 -- 1.1). Make sure that all assignments in published version are also in the current_working version.
7903 -- maansari6/26
7904 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7905 OPEN c_get_work_obj_ver_id(l_c1rec.proj_element_id, p_working_str_version_id);
7906 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7907 CLOSE c_get_work_obj_ver_id;
7908 ELSE
7909 OPEN c_get_work_obj_ver_id(l_c1rec.object_id, p_working_str_version_id);
7910 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7911 CLOSE c_get_work_obj_ver_id;
7912 END IF;
7913 IF g1_debug_mode = 'Y' THEN
7914 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Version Enabled l_work_obj_ver_id='||l_work_obj_ver_id, x_Log_Level=> 3);
7915 END IF;
7916
7917 /* Begin commenting out this code to fix bug # 4074299.
7918
7919 IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7920 l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_work_obj_ver_id;
7921 END IF;
7922
7923 End commenting out this code to fix bug # 4074299. */
7924
7925 -- maansari6/26
7926
7927 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7928 OPEN c4 (p_project_id, l_c1rec.object_id, p_working_str_version_id,l_c1rec.proj_element_id,l_c1rec.cbs_element_id );
7929 FETCH c4 INTO l_c4rec;
7930 IF c4%notfound THEN
7931 IF g1_debug_mode = 'Y' THEN
7932 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Calling DERIVE TASK ASSINGMENT for assignments:rlmid='||l_ptav_rec.resource_list_member_id , x_Log_Level=> 3);
7933 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Task id='||l_c1rec.proj_element_id , x_Log_Level=> 3);
7934 END IF;
7935 --bug 4021315, start
7936 IF l_ptav_rec.ta_display_flag = 'Y'
7937 THEN
7938 l_res_assgmt_id := l_ptav_rec.resource_list_member_id;
7939 ELSE
7940 l_res_assgmt_id := null;
7941 END IF;
7942 --bug 4021315, end
7943 BEGIN
7944
7945 pa_task_assignments_pvt.derive_task_assignments
7946 ( p_project_id => l_c1rec.project_id
7947 ,p_task_version_id => l_work_obj_ver_id --new task version id maansari6/26
7948 ,p_scheduled_start => l_ptav_rec.assignment_start_date
7949 ,p_scheduled_end => l_ptav_rec.assignment_end_date
7950 ,p_resource_class_code => l_ptav_rec.resource_class_code
7951 ,p_resource_list_member_id => l_res_assgmt_id
7952 ,p_unplanned_flag => 'N'
7953 ,x_resource_assignment_id => l_res_assign_id_out
7954 ,x_rate_based_flag => l_rate_based_flag_x
7955 ,x_task_version_id => l_task_version_id_out
7956 ,x_currency_code => l_txn_curr_code_out
7957 ,x_resource_list_member_id => l_new_resource_list_mem_id -- Bug 3764224
7958 ,x_rbs_element_id => l_rbs_element_id
7959 ,x_msg_count => l_msg_count
7960 ,x_msg_data => l_msg_data
7961 ,x_return_status => l_return_status,
7962 p_cbs_element_id => l_ptav_rec.cbs_element_id);-- added for 16895485
7963
7964 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_txn_curr_code_out;
7965 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_res_assign_id_out;
7966
7967 IF g1_debug_mode = 'Y' THEN
7968 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done wiht DERIVE TASK ASSINGMENT for assignments:l_res_assign_id_out='||l_res_assign_id_out , x_Log_Level=> 3);
7969 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done wiht DERIVE TASK ASSINGMENT for assignments:l_new_resource_list_mem_id='||l_new_resource_list_mem_id , x_Log_Level=> 3);
7970 END IF;
7971
7972 --maansari6/26
7973 EXCEPTION
7974 WHEN OTHERS THEN
7975 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
7976 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
7977 p_error_text => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
7978 raise fnd_api.g_exc_error;
7979 END;
7980
7981 -- BEGIN: Adding code to fix Bug # 3815741.
7982
7983 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7984 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7985 p_msg_name => l_msg_data);
7986 x_msg_data := l_msg_data;
7987 x_return_status := 'E';
7988 x_msg_count := l_msg_count;
7989 RAISE FND_API.G_EXC_ERROR;
7990 END IF;
7991
7992 -- END: Adding code to fix Bug # 3815741.
7993 --maansari6/26
7994 ELSE
7995 --Get the resource assignment id and currency code from the new structure version.
7996 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_c4rec.txn_currency_code;
7997 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_c4rec.resource_assignment_id;
7998 l_new_resource_list_mem_id := l_c4rec.resource_list_member_id; --Bug 3764224
7999 END IF; -- c4%notfound
8000 CLOSE c4;
8001 END IF; -- l_c1rec.object_type = 'PA_ASSIGNMENTS'
8002
8003
8004 -- 1.2). Check if working progress record exists for the current working version.
8005
8006 -- Bug 3621404 : Raw Cost Changes Begin
8007 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
8008 --l_new_object_id := l_new_resource_assignment_id; Bug 3764224
8009 l_new_object_id := l_new_resource_list_mem_id; -- Bug 3764224 Basically this will be same as l_c1rec.object_id always
8010 ELSE
8011 l_new_object_id := l_c1rec.object_id;
8012 END IF;
8013
8014 l_act_TXN_COST_this_period := null;
8015 l_act_PRJ_COST_this_period := null;
8016 l_act_POU_COST_this_period := null;
8017 l_act_TXN_RAWCOST_this_period := null;
8018 l_act_PRJ_RAWCOST_this_period := null;
8019 l_act_POU_RAWCOST_this_period := null;
8020 l_etc_TXN_COST_this_period := null;
8021 l_etc_PRJ_COST_this_period := null;
8022 l_etc_POU_COST_this_period := null;
8023 l_etc_TXN_RAWCOST_this_period := null;
8024 l_etc_PRJ_RAWCOST_this_period := null;
8025 l_etc_POU_RAWCOST_this_period := null;
8026 l_act_effort_this_period := null;
8027 l_etc_effort_this_period := null;
8028
8029 --added to calculate effective rollup percent complete at the lowest level task as per the new
8030 --planned value. Not required to calculate for assignments
8031 --The earned value at task level should be based on baselined. earned value will be re-derived in rollup api.
8032 --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
8033 --bug 4191360, dont check assignment exists for WQ
8034 --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
8035 IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
8036 AND NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
8037 THEN
8038 OPEN cur_proj_elements(l_new_object_id);
8039 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
8040 CLOSE cur_proj_elements;
8041
8042 IF g1_debug_mode = 'Y' THEN
8043 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
8044 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
8045 END IF;
8046
8047 --bug 4191360, recalc %complete only if deriv. code has changed
8048 IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8049 THEN
8050 --bug 4191360, moved this from below
8051 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8052 THEN
8053 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
8054 p_task_id => l_c1rec.object_id
8055 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
8056 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
8057 ,p_est_remaining_effort => null
8058 ),8); --Bug 6854114
8059 ELSIF NVL(l_assignment_exists, 'N') = 'N'
8060 THEN
8061 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8062 THEN
8063 /* Begin commenting out this code to fix bug # 4074299.
8064 l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
8065 l_planned_cost := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
8066 End commenting out this code to fix bug # 4074299. */
8067 /* Begin fix for bug # 4074299. */
8068 l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
8069 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
8070 + nvl(l_c1rec.subprj_ppl_act_effort,0)
8071 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
8072 + nvl(l_c1rec.estimated_remaining_effort,0)
8073 + nvl(l_c1rec.eqpmt_etc_effort,0)
8074 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
8075 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
8076
8077 /* End fix for bug # 4074299. */
8078 IF l_planned_effort = 0 OR l_planned_effort IS NULL
8079 THEN
8080 l_planned_effort := 1;
8081 END iF;
8082 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
8083 IF g1_debug_mode = 'Y' THEN
8084 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
8085 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.PPL_ACT_EFFORT_TO_DATE='||l_c1rec.PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
8086 END IF;
8087 --bug 4191360, calc % complete for cost also
8088 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
8089 THEN
8090 l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
8091 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
8092 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
8093 +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
8094 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
8095 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
8096 +nvl(l_c1rec.ppl_etc_cost_pc,0)
8097 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
8098 +nvl(l_c1rec.oth_etc_cost_pc,0)
8099 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
8100 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
8101 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
8102 IF l_planned_cost = 0 OR l_planned_cost IS NULL
8103 THEN
8104 l_planned_cost := 1;
8105 END iF;
8106 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
8107 ELSE
8108 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8109 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8110 --bug 4191360, moved this code above
8111 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8112 THEN
8113 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
8114 p_task_id => l_c1rec.object_id
8115 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
8116 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
8117 ,p_est_remaining_effort => null
8118 ),2);*/
8119 ELSE
8120 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8121 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8122 ELSE
8123 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8124 END IF; -- IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8125 ELSE
8126 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8127 l_earned_value := l_c1rec.earned_value;
8128 END IF;
8129
8130
8131 -- 1.7). Calculate the incremental change in the workplan actuals for this period
8132 -- between the recently inserted progress record and the previously existing progress
8133 -- record (if any).
8134
8135 -- Bug 3621404 : Raw Cost Changes, Now they are derived in the code above
8136
8137 -- Assign the pl/sql tables bug 4050532
8138
8139 l_index2 := l_index2 + 1;
8140
8141 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
8142 percent_complete_id(l_index2) := to_number(null);
8143 PROJECT_ID(l_index2) := p_project_Id;
8144 OBJECT_ID(l_index2) := l_new_object_id;
8145 l_cbs_element_id(l_index2) := l_c1rec.cbs_element_id;-- added for 16895485
8146 OBJECT_TYPE(l_index2) := l_c1rec.object_type;
8147 AS_OF_DATE(l_index2) := l_as_of_date;
8148 OBJECT_VERSION_ID(l_index2) := l_work_obj_ver_id;
8149 LAST_UPDATE_DATE(l_index2) := sysdate;
8150 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
8151 CREATION_DATE(l_index2) := sysdate;
8152 CREATED_BY(l_index2) := fnd_global.user_id;
8153 PROGRESS_STATUS_CODE(l_index2) := l_c1rec.progress_status_code;
8154 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
8155 INCREMENTAL_WORK_QUANTITY(l_index2) := l_c1rec.INCREMENTAL_WORK_QUANTITY;
8156 CUMULATIVE_WORK_QUANTITY(l_index2) := l_c1rec.CUMULATIVE_WORK_QUANTITY;
8157 BASE_PERCENT_COMPLETE(l_index2) := l_c1rec.BASE_PERCENT_COMPLETE;
8158 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_EFF_ROLLUP_PERCENT_COMP;
8159 COMPLETED_PERCENTAGE(l_index2) := l_c1rec.COMPLETED_PERCENTAGE;
8160 ESTIMATED_START_DATE(l_index2) := l_c1rec.ESTIMATED_START_DATE;
8161 ESTIMATED_FINISH_DATE(l_index2) := l_c1rec.ESTIMATED_FINISH_DATE;
8162 ACTUAL_START_DATE(l_index2) := l_c1rec.ACTUAL_START_DATE;
8163 ACTUAL_FINISH_DATE(l_index2) := l_c1rec.ACTUAL_FINISH_DATE;
8164 RECORD_VERSION_NUMBER(l_index2) := 1;
8165 BASE_PERCENT_COMP_DERIV_CODE(l_index2) := NVL(l_BASE_PERCENT_COMP_DERIV_CODE, l_c1rec.BASE_PERCENT_COMP_DERIV_CODE);
8166 BASE_PROGRESS_STATUS_CODE(l_index2) := l_c1rec.BASE_PROGRESS_STATUS_CODE;
8167 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := l_c1rec.EFF_ROLLUP_PROG_STAT_CODE;
8168 STRUCTURE_TYPE(l_index2) := 'WORKPLAN';
8169 PROJ_ELEMENT_ID(l_index2) := l_c1rec.PROJ_ELEMENT_ID;
8170 STRUCTURE_VERSION_ID(l_index2) := p_working_str_version_id;
8171 PPL_ACT_EFFORT_TO_DATE(l_index2) := l_c1rec.PPL_ACT_EFFORT_TO_DATE;
8172 EQPMT_ACT_EFFORT_TO_DATE(l_index2) := l_c1rec.EQPMT_ACT_EFFORT_TO_DATE;
8173 OTH_QUANTITY_TO_DATE(l_index2) := l_c1rec.OTH_QUANTITY_TO_DATE;
8174 OTH_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_TC;
8175 OTH_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_TC;
8176 OTH_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_FC;
8177 OTH_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_FC;
8178 OTH_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_PC;
8179 OTH_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_PC;
8180 PPL_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_TC;
8181 PPL_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_TC;
8182 PPL_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_FC;
8183 PPL_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_FC;
8184 PPL_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_PC;
8185 PPL_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_PC;
8186 EQPMT_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_TC;
8187 EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
8188 EQPMT_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_FC;
8189 EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
8190 EQPMT_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_PC;
8191 EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8192 EARNED_VALUE(l_index2) := l_c1rec.earned_value;
8193 TASK_WT_BASIS_CODE(l_index2) := l_c1rec.TASK_WT_BASIS_CODE;
8194 CURRENT_FLAG(l_index2) := 'Y';
8195 PROJFUNC_COST_RATE_TYPE(l_index2) := l_c1rec.PROJFUNC_COST_RATE_TYPE;
8196 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := l_c1rec.PROJFUNC_COST_EXCHANGE_RATE;
8197 PROJFUNC_COST_RATE_DATE(l_index2) := l_c1rec.PROJFUNC_COST_RATE_DATE;
8198 PROJ_COST_RATE_TYPE(l_index2) := l_c1rec.PROJ_COST_RATE_TYPE;
8199 PROJ_COST_EXCHANGE_RATE(l_index2) := l_c1rec.PROJ_COST_EXCHANGE_RATE;
8200 PROJ_COST_RATE_DATE(l_index2) := l_c1rec.PROJ_COST_RATE_DATE;
8201 TXN_CURRENCY_CODE(l_index2) := l_c1rec.TXN_CURRENCY_CODE;
8202 PROG_PA_PERIOD_NAME(l_index2) := l_c1rec.PROG_PA_PERIOD_NAME;
8203 PROG_GL_PERIOD_NAME(l_index2) := l_c1rec.PROG_GL_PERIOD_NAME;
8204 --end bug 4050532
8205
8206 ELSE --if versioning not enabled then
8207
8208 --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
8209 --bug 4191360
8210 --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
8211 IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
8212 AND NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
8213 THEN
8214
8215 OPEN cur_proj_elements(l_c1rec.object_id);
8216 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
8217 CLOSE cur_proj_elements;
8218 IF g1_debug_mode = 'Y' THEN
8219 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
8220 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
8221 END IF;
8222
8223 --bug 4191360, calc % complete only if deriv. code has changed
8224 IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8225 THEN
8226 --bug 4191360, moved this code from below
8227 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8228 THEN
8229 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
8230 p_task_id => l_c1rec.object_id
8231 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
8232 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
8233 ,p_est_remaining_effort => null
8234 ),8); --Bug 6854114
8235
8236 ELSIF NVL(l_assignment_exists, 'N') = 'N'
8237 THEN
8238 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8239 THEN
8240 /* Begin commenting out this code to fix bug # 4074299.
8241 l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
8242 l_planned_cost := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
8243 End commenting out this code to fix bug # 4074299. */
8244 /* Begin fix for bug # 4074299. */
8245 l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
8246 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
8247 + nvl(l_c1rec.subprj_ppl_act_effort,0)
8248 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
8249 + nvl(l_c1rec.estimated_remaining_effort,0)
8250 + nvl(l_c1rec.eqpmt_etc_effort,0)
8251 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
8252 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
8253
8254 /* End fix for bug # 4074299. */
8255
8256 IF l_planned_effort = 0 OR l_planned_effort IS NULL
8257 THEN
8258 l_planned_effort := 1;
8259 END iF;
8260 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
8261 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
8262 THEN
8263 l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
8264 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
8265 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
8266 +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
8267 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
8268 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
8269 +nvl(l_c1rec.ppl_etc_cost_pc,0)
8270 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
8271 +nvl(l_c1rec.oth_etc_cost_pc,0)
8272 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
8273 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
8274 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
8275 IF l_planned_cost = 0 OR l_planned_cost IS NULL
8276 THEN
8277 l_planned_cost := 1;
8278 END iF;
8279 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
8280 ELSE
8281 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8282 END IF; --IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8283 --bug 4191360, moved this code above
8284 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8285 THEN
8286 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
8287 p_task_id => l_c1rec.object_id
8288 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
8289 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
8290 ,p_est_remaining_effort => null
8291 ),2);*/
8292 ELSE
8293 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8294 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8295 ELSE
8296 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8297 END IF; --IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8298
8299
8300 IF g1_debug_mode = 'Y' THEN
8301 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before updating the rollup table wiht new pc', x_Log_Level=> 3);
8302 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
8303 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.progress_rollup_id='||l_c1rec.progress_rollup_id, x_Log_Level=> 3);
8304 END IF;
8305
8306 UPDATE pa_progress_rollup
8307 SET EFF_ROLLUP_PERCENT_COMP = l_EFF_ROLLUP_PERCENT_COMP
8308 ,last_update_date = SYSDATE
8309 WHERE progress_rollup_id = l_c1rec.progress_rollup_id;
8310 IF g1_debug_mode = 'Y' THEN
8311 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done updating the rollup table wiht new pc', x_Log_Level=> 3);
8312 END IF;
8313
8314 END IF;
8315 --uncommented the code for bug 3906362
8316
8317 END IF; -- If workplan versioning is enabled: 1
8318 END LOOP;
8319 CLOSE C1;
8320
8321 IF g1_debug_mode = 'Y' THEN
8322 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Outside main LOOP', x_Log_Level=> 3);
8323 END IF;
8324
8325
8326 IF (l_version_enabled_flag = 'Y') THEN
8327
8328 --bug 4050532
8329 IF g1_debug_mode = 'Y' THEN
8330 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before BULK insert l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
8331 END IF;
8332
8333 DELETE FROM pa_progress_rollup WHERE project_id = p_project_id and structure_version_id = p_working_str_version_id;
8334
8335 forall l_index1 in 1..l_index2
8336 INSERT INTO pa_progress_rollup(
8337 PROGRESS_ROLLUP_ID
8338 ,PERCENT_COMPLETE_ID
8339 ,PROJECT_ID
8340 ,OBJECT_ID
8341 ,OBJECT_TYPE
8342 ,AS_OF_DATE
8343 ,OBJECT_VERSION_ID
8344 ,LAST_UPDATE_DATE
8345 ,LAST_UPDATED_BY
8346 ,CREATION_DATE
8347 ,CREATED_BY
8348 ,PROGRESS_STATUS_CODE
8349 ,LAST_UPDATE_LOGIN
8350 ,INCREMENTAL_WORK_QUANTITY
8351 ,CUMULATIVE_WORK_QUANTITY
8352 ,BASE_PERCENT_COMPLETE
8353 ,EFF_ROLLUP_PERCENT_COMP
8354 ,COMPLETED_PERCENTAGE
8355 ,ESTIMATED_START_DATE
8356 ,ESTIMATED_FINISH_DATE
8357 ,ACTUAL_START_DATE
8358 ,ACTUAL_FINISH_DATE
8359 ,RECORD_VERSION_NUMBER
8360 ,BASE_PERCENT_COMP_DERIV_CODE
8361 ,BASE_PROGRESS_STATUS_CODE
8362 ,EFF_ROLLUP_PROG_STAT_CODE
8363 ,STRUCTURE_TYPE
8364 ,PROJ_ELEMENT_ID
8365 ,STRUCTURE_VERSION_ID
8366 ,PPL_ACT_EFFORT_TO_DATE
8367 ,EQPMT_ACT_EFFORT_TO_DATE
8368 ,OTH_ACT_COST_TO_DATE_TC
8369 ,OTH_ACT_COST_TO_DATE_FC
8370 ,OTH_ACT_COST_TO_DATE_PC
8371 ,PPL_ACT_COST_TO_DATE_TC
8372 ,PPL_ACT_COST_TO_DATE_FC
8373 ,PPL_ACT_COST_TO_DATE_PC
8374 ,EQPMT_ACT_COST_TO_DATE_TC
8375 ,EQPMT_ACT_COST_TO_DATE_FC
8376 ,EQPMT_ACT_COST_TO_DATE_PC
8377 ,EARNED_VALUE
8378 ,TASK_WT_BASIS_CODE
8379 ,CURRENT_FLAG
8380 ,PROJFUNC_COST_RATE_TYPE
8381 ,PROJFUNC_COST_EXCHANGE_RATE
8382 ,PROJFUNC_COST_RATE_DATE
8383 ,PROJ_COST_RATE_TYPE
8384 ,PROJ_COST_EXCHANGE_RATE
8385 ,PROJ_COST_RATE_DATE
8386 ,TXN_CURRENCY_CODE
8387 ,PROG_PA_PERIOD_NAME
8388 ,PROG_GL_PERIOD_NAME
8389 ,OTH_QUANTITY_TO_DATE
8390 ,OTH_ACT_RAWCOST_TO_DATE_TC
8391 ,OTH_ACT_RAWCOST_TO_DATE_FC
8392 ,OTH_ACT_RAWCOST_TO_DATE_PC
8393 ,PPL_ACT_RAWCOST_TO_DATE_TC
8394 ,PPL_ACT_RAWCOST_TO_DATE_FC
8395 ,PPL_ACT_RAWCOST_TO_DATE_PC
8396 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
8397 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
8398 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
8399 ,CBS_ELEMENT_ID-- added for 16895485
8400 )
8401 VALUES(
8402 PROGRESS_ROLLUP_ID(l_index1)
8403 ,PERCENT_COMPLETE_ID(l_index1)
8404 ,PROJECT_ID(l_index1)
8405 ,OBJECT_ID(l_index1)
8406 ,OBJECT_TYPE(l_index1)
8407 ,AS_OF_DATE(l_index1)
8408 ,OBJECT_VERSION_ID(l_index1)
8409 ,LAST_UPDATE_DATE(l_index1)
8410 ,LAST_UPDATED_BY(l_index1)
8411 ,CREATION_DATE(l_index1)
8412 ,CREATED_BY(l_index1)
8413 ,PROGRESS_STATUS_CODE(l_index1)
8414 ,LAST_UPDATE_LOGIN(l_index1)
8415 ,INCREMENTAL_WORK_QUANTITY(l_index1)
8416 ,CUMULATIVE_WORK_QUANTITY(l_index1)
8417 ,BASE_PERCENT_COMPLETE(l_index1)
8418 ,EFF_ROLLUP_PERCENT_COMP(l_index1)
8419 ,COMPLETED_PERCENTAGE(l_index1)
8420 ,ESTIMATED_START_DATE(l_index1)
8421 ,ESTIMATED_FINISH_DATE(l_index1)
8422 ,ACTUAL_START_DATE(l_index1)
8423 ,ACTUAL_FINISH_DATE(l_index1)
8424 ,RECORD_VERSION_NUMBER(l_index1)
8425 ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
8426 ,BASE_PROGRESS_STATUS_CODE(l_index1)
8427 ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
8428 ,STRUCTURE_TYPE(l_index1)
8429 ,PROJ_ELEMENT_ID(l_index1)
8430 ,STRUCTURE_VERSION_ID(l_index1)
8431 ,PPL_ACT_EFFORT_TO_DATE(l_index1)
8432 ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
8433 ,OTH_ACT_COST_TO_DATE_TC(l_index1)
8434 ,OTH_ACT_COST_TO_DATE_FC(l_index1)
8435 ,OTH_ACT_COST_TO_DATE_PC(l_index1)
8436 ,PPL_ACT_COST_TO_DATE_TC(l_index1)
8437 ,PPL_ACT_COST_TO_DATE_FC(l_index1)
8438 ,PPL_ACT_COST_TO_DATE_PC(l_index1)
8439 ,EQPMT_ACT_COST_TO_DATE_TC(l_index1)
8440 ,EQPMT_ACT_COST_TO_DATE_FC(l_index1)
8441 ,EQPMT_ACT_COST_TO_DATE_PC(l_index1)
8442 ,EARNED_VALUE(l_index1)
8443 ,TASK_WT_BASIS_CODE(l_index1)
8444 ,CURRENT_FLAG(l_index1)
8445 ,PROJFUNC_COST_RATE_TYPE(l_index1)
8446 ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
8447 ,PROJFUNC_COST_RATE_DATE(l_index1)
8448 ,PROJ_COST_RATE_TYPE(l_index1)
8449 ,PROJ_COST_EXCHANGE_RATE(l_index1)
8450 ,PROJ_COST_RATE_DATE(l_index1)
8451 ,TXN_CURRENCY_CODE(l_index1)
8452 ,PROG_PA_PERIOD_NAME(l_index1)
8453 ,PROG_GL_PERIOD_NAME(l_index1)
8454 ,OTH_QUANTITY_TO_DATE(l_index1)
8455 ,OTH_ACT_RAWCOST_TO_DATE_TC(l_index1)
8456 ,OTH_ACT_RAWCOST_TO_DATE_FC(l_index1)
8457 ,OTH_ACT_RAWCOST_TO_DATE_PC(l_index1)
8458 ,PPL_ACT_RAWCOST_TO_DATE_TC(l_index1)
8459 ,PPL_ACT_RAWCOST_TO_DATE_FC(l_index1)
8460 ,PPL_ACT_RAWCOST_TO_DATE_PC(l_index1)
8461 ,EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1)
8462 ,EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1)
8463 ,EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1)
8464 ,L_CBS_ELEMENT_ID(l_index1)-- added for 16895485
8465 );
8466 IF g1_debug_mode = 'Y' THEN
8467 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done with BULK insert into pa_progress_rollup', x_Log_Level=> 3);
8468 END IF;
8469 END IF;
8470
8471
8472
8473 -- Bug 3956248 : Added call of copy_actuals_for_workplan
8474
8475 BEGIN
8476 IF g1_debug_mode = 'Y' THEN
8477 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before calling pa_progress_pvt.copy_actuals_for_workplan ', x_Log_Level=> 3);
8478 END IF;
8479 --bug 4046422
8480 --pa_fp_copy_from_pkg.copy_actuals_for_workplan(
8481
8482 pa_progress_pvt.copy_actuals_for_workplan(
8483 p_calling_context => 'WP_APPLY_PROGRESS_TO_WORKING'
8484 ,p_project_id => p_project_id
8485 ,p_source_struct_ver_id => PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id)
8486 ,p_target_struct_ver_id => p_working_str_version_id
8487 ,x_return_status => l_return_status
8488 ,x_msg_count => l_msg_count
8489 ,x_msg_data => l_msg_data);
8490
8491
8492 IF g1_debug_mode = 'Y' THEN
8493 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After pa_progress_pvt.copy_actuals_for_workplan l_return_status='||l_return_status, x_Log_Level=> 3);
8494 END IF;
8495 EXCEPTION
8496 WHEN OTHERS THEN
8497 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8498 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8499 p_error_text => SUBSTRB('PA_PROGRESS_PVT.COPY_ACTUALS_FOR_WORKPLAN:'||SQLERRM,1,120));
8500 RAISE FND_API.G_EXC_ERROR;
8501 END;
8502
8503 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8504 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8505 p_msg_name => l_msg_data);
8506 x_msg_data := l_msg_data;
8507 x_return_status := 'E';
8508 x_msg_count := l_msg_count;
8509 RAISE FND_API.G_EXC_ERROR;
8510 END IF;
8511
8512
8513 -- end if; -- If workplan versioning is enabled: 2
8514
8515 --bug 3846474
8516 -- Populate pl/sql tables with the all other lowest tasks and assignments.
8517 IF g1_debug_mode = 'Y' THEN
8518 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Populating pl/sql tables for extra assignments and tasks', x_Log_Level=> 3);
8519 END IF;
8520
8521 FOR all_lowest_task_rec in all_lowest_task LOOP
8522 IF g1_debug_mode = 'Y' THEN
8523 --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.object_type='||all_lowest_task_rec.object_type, x_Log_Level=> 3);
8524 --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.element_version_id='||all_lowest_task_rec.element_version_id, x_Log_Level=> 3);
8525 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.resource_assignment_id='||all_lowest_task_rec.resource_assignment_id, x_Log_Level=> 3);
8526 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.txn_currency_code='||all_lowest_task_rec.txn_currency_code, x_Log_Level=> 3);
8527 END IF;
8528
8529 IF all_lowest_task_rec.object_type = 'PA_ASSIGNMENTS' THEN
8530 l_res_assgn_id_tbl_assgn.extend;
8531 l_currency_code_tbl_assgn.extend;
8532 l_raw_cost_tbl_assgn.extend;
8533 l_burdened_cost_tbl_assgn.extend;
8534 l_planned_qty_tbl_assgn.extend;
8535
8536 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count):= all_lowest_task_rec.resource_assignment_id;
8537 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := all_lowest_task_rec.txn_currency_code;
8538 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := null;
8539 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := null;
8540 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
8541
8542 END IF;
8543 END LOOP;
8544
8545 IF g1_debug_mode = 'Y' THEN
8546 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Printing PA_TASKS PL/SQL tables:count='||l_task_ver_id_tbl_task.count(), x_Log_Level=> 3);
8547 FOR i in 1..l_task_ver_id_tbl_task.count() LOOP
8548 IF g1_debug_mode = 'Y' THEN
8549 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_task_ver_id_tbl_task'||'('||i||')='||l_task_ver_id_tbl_task(i), x_Log_Level=> 3);
8550 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort_tbl_task'||'('||i||')='||l_planned_effort_tbl_task(i), x_Log_Level=> 3);
8551 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_task'||'('||i||')='||l_raw_cost_tbl_task(i), x_Log_Level=> 3);
8552 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_task'||'('||i||')='||l_burdened_cost_tbl_task(i), x_Log_Level=> 3);
8553 END IF;
8554 END LOOP;
8555 END IF;
8556
8557
8558 -- Call FP API to copy the Total Actual Effort + Total ETC Effort to planned effort
8559
8560 IF g1_debug_mode = 'Y' THEN
8561 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Printing PA_ASSIGNMENTS PL/SQL tables:count='||l_res_assgn_id_tbl_assgn.count(), x_Log_Level=> 3);
8562 FOR i in 1..l_res_assgn_id_tbl_assgn.count() LOOP
8563 IF g1_debug_mode = 'Y' THEN
8564 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_assgn_id_tbl_assgn'||'('||i||')='||l_res_assgn_id_tbl_assgn(i), x_Log_Level=> 3);
8565 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_currency_code_tbl_assgn'||'('||i||')='||l_currency_code_tbl_assgn(i), x_Log_Level=> 3);
8566 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_qty_tbl_assgn'||'('||i||')='||l_planned_qty_tbl_assgn(i), x_Log_Level=> 3);
8567 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_assgn'||'('||i||')='||l_raw_cost_tbl_assgn(i), x_Log_Level=> 3);
8568 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_assgn'||'('||i||')='||l_burdened_cost_tbl_assgn(i), x_Log_Level=> 3);
8569 END IF;
8570 END LOOP;
8571 END IF;
8572
8573 -- Calling FP API for all assignments.
8574 -- IF (l_planned_ppl_effort_tbl_assgn.exists(1) OR l_planned_eqp_effort_tbl_assgn.exists(1) OR l_planned_qty_tbl_assgn.exists(1)) THEN
8575 IF (l_res_assgn_id_tbl_assgn.count > 0) then
8576 BEGIN
8577 IF g1_debug_mode = 'Y' THEN
8578 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before PA_FP_CALC_PLAN_PKG.calculate', x_Log_Level=> 3);
8579 END IF;
8580 /* Commnted for Perf Bug 4189762 and added Calculate API
8581 pa_fp_planning_transaction_pub.update_planning_transactions
8582 (p_context => 'TASK_ASSIGNMENT'
8583 ,p_struct_elem_version_id => p_working_str_version_id
8584 ,p_resource_assignment_id_tbl => l_res_assgn_id_tbl_assgn
8585 ,p_quantity_tbl => l_planned_qty_tbl_assgn
8586 ,p_currency_code_tbl => l_currency_code_tbl_assgn
8587 ,p_apply_progress_flag => 'Y'
8588 ,p_raw_cost_tbl => l_raw_cost_tbl_assgn
8589 ,p_burdened_cost_tbl => l_burdened_cost_tbl_assgn
8590 ,x_return_status => l_return_status
8591 ,x_msg_count => l_msg_count
8592 ,x_msg_data => l_msg_data
8593 );
8594 */
8595
8596 PA_FP_CALC_PLAN_PKG.calculate
8597 (
8598 p_project_id => p_project_id
8599 ,p_budget_version_id => PA_PLANNING_TRANSACTION_UTILS.Get_Wp_Budget_Version_Id(p_working_str_version_id)
8600 ,p_source_context => 'RESOURCE_ASSIGNMENT'
8601 ,p_apply_progress_flag => 'Y'
8602 ,p_resource_assignment_tab => l_res_assgn_id_tbl_assgn
8603 ,p_txn_currency_code_tab => l_currency_code_tbl_assgn
8604 ,p_total_qty_tab => l_planned_qty_tbl_assgn
8605 ,p_total_raw_cost_tab => l_raw_cost_tbl_assgn
8606 ,p_total_burdened_cost_tab => l_burdened_cost_tbl_assgn
8607 ,x_return_status => l_return_status
8608 ,x_msg_count => l_msg_count
8609 ,x_msg_data => l_msg_data);
8610 IF g1_debug_mode = 'Y' THEN
8611 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After PA_FP_CALC_PLAN_PKG.calculate l_return_status='||l_return_status, x_Log_Level=> 3);
8612 END IF;
8613 EXCEPTION
8614 WHEN OTHERS THEN
8615 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8616 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8617 p_error_text => SUBSTRB('Call of PA_FP_CALC_PLAN_PKG.calculate Failed:'||SQLERRM,1,120));
8618 RAISE FND_API.G_EXC_ERROR;
8619 END;
8620
8621 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8622 x_return_status := 'E';
8623 RAISE FND_API.G_EXC_ERROR;
8624 END IF;
8625 END IF;
8626
8627 pa_progress_pub.g_wbs_apply_prog := null; --- resetting the var back to null
8628 -- The following actions are also only performed if workplan versioning is enabled: 3:
8629 IF (l_version_enabled_flag = 'Y') THEN
8630
8631 -- 3.1). Calling PJI API: PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE() within it own PL/SQL Block
8632 -- to push progress actuals. This is done once here instead of, for each of the lowest tasks by calling
8633 -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8634
8635 BEGIN
8636 IF g1_debug_mode = 'Y' THEN
8637 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before calling PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE', x_Log_Level=> 3);
8638 END IF;
8639 -- PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(x_msg_code => l_msg_code
8640 -- ,x_return_status => l_return_status);
8641 IF g1_debug_mode = 'Y' THEN
8642 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done with calling PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:l_return_status='||l_return_status, x_Log_Level=> 3);
8643 END IF;
8644
8645
8646 EXCEPTION
8647 WHEN OTHERS THEN
8648 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8649 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8650 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
8651 RAISE FND_API.G_EXC_ERROR;
8652 END;
8653
8654 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8655 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8656 p_msg_name => l_msg_code);
8657 x_msg_data := l_msg_code;
8658 x_return_status := 'E';
8659 RAISE FND_API.G_EXC_ERROR;
8660 END IF;
8661
8662 -- 3.2). Calling PJI API: PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA() to populate
8663 -- the temporary table: PJI_FM_XBS_ACCUM_TMP1.This is done once here instead of, for each of the lowest tasks by calling
8664 -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8665 -- Bug 3834339 : reducing the scope of IF so that populate_workplan_data gets called in version disabled case too
8666 END IF; -- IF (l_version_enabled_flag = 'Y') THEN
8667
8668 BEGIN
8669
8670 -- Bug 3846353 : Baselined str version also need to be passed, otherwise it will be null at task level
8671
8672 l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
8673
8674 IF l_baselined_str_ver_id = -1 OR l_baselined_str_ver_id IS NULL THEN
8675 l_baselined_str_ver_id := p_working_str_version_id;
8676 END IF;
8677
8678
8679 -- 4392189 : Program reporting Changes : We are calling populate_pji_tab_for_plan instead of directly calling populate_workplan_data
8680 IF g1_debug_mode = 'Y' THEN
8681 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before populate_pji_tab_for_plan', x_Log_Level=> 3);
8682 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_baselined_str_ver_id='||l_baselined_str_ver_id, x_Log_Level=> 3);
8683 END IF;
8684
8685 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
8686 p_calling_module => p_calling_module
8687 ,p_project_id => p_project_id
8688 ,p_structure_version_id => p_working_str_version_id
8689 ,p_baselined_str_ver_id => l_baselined_str_ver_id
8690 ,p_program_rollup_flag => 'Y'
8691 ,p_calling_context => 'ROLLUP'
8692 ,x_return_status => l_return_status
8693 ,x_msg_count => l_msg_count
8694 ,x_msg_data => l_msg_data
8695 );
8696
8697 /*
8698 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
8699 p_project_id => p_project_id
8700 ,p_struct_ver_id => p_working_str_version_id
8701 ,p_base_struct_ver_id => l_baselined_str_ver_id
8702 ,x_return_status => l_return_status
8703 ,x_msg_code => l_msg_code );
8704
8705 */
8706
8707 IF g1_debug_mode = 'Y' THEN
8708 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After populate_pji_tab_for_plan task l_return_status='||l_return_status, x_Log_Level=> 3);
8709 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Reading actuals and planned from PJI tmp', x_Log_Level=> 3);
8710
8711 DECLARE
8712 CURSOR tmp1 IS
8713 SELECT
8714 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
8715 * FROM pji_fm_xbs_accum_tmp1 WHERE project_id = p_project_id
8716 AND struct_version_id =p_working_str_version_id
8717 ;
8718 BEGIN
8719 FOR tmp1_rec IN tmp1 LOOP
8720 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PROJECT_ELEMENT_ID='||tmp1_rec.PROJECT_ELEMENT_ID, x_Log_Level=> 3);
8721 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_LABOR_HRS='||tmp1_rec.ACT_LABOR_HRS, x_Log_Level=> 3);
8722 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_EQUIP_HRS='||tmp1_rec.ACT_EQUIP_HRS, x_Log_Level=> 3);
8723 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_PRJ_BRDN_COST='||tmp1_rec.ACT_PRJ_BRDN_COST, x_Log_Level=> 3);
8724 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'LABOR_HOURS='||tmp1_rec.LABOR_HOURS, x_Log_Level=> 3);
8725 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'EQUIPMENT_HOURS='||tmp1_rec.EQUIPMENT_HOURS, x_Log_Level=> 3);
8726 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'BASE_LABOR_HOURS='||tmp1_rec.BASE_LABOR_HOURS, x_Log_Level=> 3);
8727 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'BASE_EQUIP_HOURS='||tmp1_rec.BASE_EQUIP_HOURS, x_Log_Level=> 3);
8728 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PRJ_BRDN_COST='||tmp1_rec.PRJ_BRDN_COST, x_Log_Level=> 3);
8729 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PRJ_BASE_BRDN_COST='||tmp1_rec.PRJ_BASE_BRDN_COST, x_Log_Level=> 3);
8730 END LOOP;
8731 END;
8732 END IF;
8733 EXCEPTION
8734 WHEN OTHERS THEN
8735 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8736 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8737 p_error_text => SUBSTRB('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN:'||SQLERRM,1,120));
8738 RAISE FND_API.G_EXC_ERROR;
8739 END;
8740
8741 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8742 x_msg_data := l_msg_data;
8743 x_return_status := 'E';
8744 x_msg_count := l_msg_count;
8745 RAISE FND_API.G_EXC_ERROR;
8746 END IF;
8747
8748 -- 3.3). Update table: pa_proj_element_ver_structure
8749 -- 3.4). Call Rollup API for the whole structure, Pass working structure version_id.
8750 -- Bug 4346801, we should rollup even for VD projects to re-calc EV.
8751 -- IF (l_version_enabled_flag <> 'Y') THEN
8752
8753 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
8754 p_init_msg_list => p_init_msg_list
8755 --Added by rtarway for BUG 3696263
8756 ,p_calling_module => p_calling_module
8757 ,p_commit => p_commit
8758 ,p_validate_only => p_validate_only
8759 ,p_project_id => p_project_id
8760 ,p_structure_version_id => p_working_str_version_id
8761 ,p_as_of_date => l_as_of_date--l_max_as_of_date -- FPM Dev CR 4
8762 ,p_wp_rollup_method => l_task_weight_basis_code ---l_c1rec.TASK_WT_BASIS_CODE -- FPM Dev CR 4
8763 ,p_rollup_entire_wbs => 'Y' -- FPM Dev CR 4
8764 ,p_working_wp_prog_flag => 'N' ---bug 3846353 . pass 'N'. Use baselined BAC
8765 ,x_return_status => l_return_status
8766 ,x_msg_count => l_msg_count
8767 ,x_msg_data => l_msg_data);
8768
8769 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8770 x_msg_data := l_msg_data;
8771 x_return_status := 'E';
8772 x_msg_count := l_msg_count;
8773 RAISE FND_API.G_EXC_ERROR;
8774 END IF;
8775
8776 -- Call of rollup future is not needed here as there will be only one record per object in working version
8777
8778 --- END IF; -- If workplan versioning is enabled
8779
8780 UPDATE pa_proj_elem_ver_structure
8781 set date_prog_applied_on_wver = sysdate
8782 ,schedule_dirty_flag = decode( PA_Project_Structure_Utils.Check_Third_Party_Sch_Flag(p_project_id), --bug 3844689
8783 'Y', 'Y', schedule_dirty_flag ) --set this flag to indicate re-scheduling is required.
8784 WHERE project_id = p_project_id
8785 AND element_version_id = p_working_str_version_id;
8786
8787 IF (p_commit = FND_API.G_TRUE) THEN
8788 COMMIT;
8789 END IF;
8790
8791 EXCEPTION
8792 when FND_API.G_EXC_ERROR then
8793 if p_commit = FND_API.G_TRUE then
8794 rollback to APPLY_LP_PROG_ON_CWV;
8795 end if;
8796 x_return_status := FND_API.G_RET_STS_ERROR;
8797 x_msg_count := fnd_msg_pub.count_msg;
8798
8799 -- BEGIN: Commenting this code out to fix Bug # 3956275.
8800 /*
8801
8802 -- BEGIN: Adding code to fix Bug # 3815741.
8803
8804 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8805 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8806 p_error_text => SUBSTRB(SQLERRM,1,120));
8807
8808 -- END: Adding code to fix Bug # 3815741.
8809
8810 */
8811
8812 -- END: Commenting this code out to fix Bug # 3956275.
8813
8814 when FND_API.G_EXC_UNEXPECTED_ERROR then
8815 if p_commit = FND_API.G_TRUE then
8816 rollback to APPLY_LP_PROG_ON_CWV;
8817 end if;
8818 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8819 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8820 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8821 p_error_text => SUBSTRB(SQLERRM,1,120));
8822 x_msg_count := fnd_msg_pub.count_msg;
8823 when OTHERS then
8824 if p_commit = FND_API.G_TRUE then
8825 rollback to APPLY_LP_PROG_ON_CWV;
8826 end if;
8827 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8828 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8829 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8830 p_error_text => SUBSTRB(SQLERRM,1,120));
8831 x_msg_count := fnd_msg_pub.count_msg;
8832 raise;
8833 END APPLY_LP_PROG_ON_CWV;
8834
8835 -- Progress Management Changes. Bug # 3420093.
8836
8837 PROCEDURE delete_working_wp_progress(
8838 p_api_version IN NUMBER :=1.0
8839 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
8840 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
8841 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
8842 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
8843 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
8844 ,p_debug_mode IN VARCHAR2 :='N'
8845 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8846 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8847 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8848 ,p_task_version_id IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()
8849 ,p_calling_context IN VARCHAR2 := 'STRUCTURE_VERSION'
8850 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8851 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8852 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8853 )
8854 IS
8855 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_WORKING_WP_PROGRESS';
8856 l_api_version CONSTANT NUMBER := p_api_version;
8857 l_user_id NUMBER := FND_GLOBAL.USER_ID;
8858 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
8859 l_return_status VARCHAR2(1);
8860 l_msg_count NUMBER;
8861 l_msg_data VARCHAR2(250);
8862 i NUMBER;
8863 BEGIN
8864 IF g1_debug_mode = 'Y' THEN
8865 pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8866 END IF;
8867
8868 IF (p_debug_mode = 'Y') THEN
8869 IF g1_debug_mode = 'Y' THEN
8870 pa_debug.debug('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8871 END IF;
8872 END IF;
8873 IF (p_commit = FND_API.G_TRUE) THEN
8874 savepoint DELETE_WORKING_WP_PROGRESS;
8875 END IF;
8876
8877 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
8878 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8879 END IF;
8880
8881 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
8882 FND_MSG_PUB.initialize;
8883 END IF;
8884
8885 x_return_status := FND_API.G_RET_STS_SUCCESS;
8886
8887 if (p_calling_context = 'STRUCTURE_VERSION') then
8888
8889 delete from pa_progress_rollup
8890 where project_id = p_project_id
8891 -- and object_version_id = p_structure_version_id -- Bug 4190086
8892 and structure_version_id = p_structure_version_id -- Bug 4190086
8893 ;
8894
8895 elsif (p_calling_context = 'PROJECT_STRUCTURE') then
8896
8897 delete from pa_progress_rollup
8898 where project_id = p_project_id;
8899
8900 delete from pa_proj_progress_attr
8901 where project_id = p_project_id;
8902
8903 delete from pa_proj_workplan_attr
8904 where project_id = p_project_id;
8905
8906 elsif (p_calling_context = 'TASK_VERSION') then
8907
8908 forall i in p_task_version_id.first..p_task_version_id.last
8909 delete /*+ INDEX(PA_PROGRESS_ROLLUP PA_PROGRESS_ROLLUP_N4)*/ from pa_progress_rollup --Added hint for 15876400
8910 where project_id = p_project_id
8911 and object_version_id = p_task_version_id(i);
8912
8913 forall i in p_task_version_id.first..p_task_version_id.last
8914 delete /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N5)*/ from pa_percent_completes -- added hint for bug 16325523
8915 where project_id = p_project_id
8916 and object_version_id = p_task_version_id(i);
8917
8918 end if;
8919
8920 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8921 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8922 p_msg_name => l_msg_data);
8923 x_msg_data := l_msg_data;
8924 x_return_status := 'E';
8925 x_msg_count := l_msg_count;
8926 RAISE FND_API.G_EXC_ERROR;
8927 END IF;
8928
8929 IF (p_commit = FND_API.G_TRUE) THEN
8930 COMMIT;
8931 END IF;
8932 EXCEPTION
8933 when FND_API.G_EXC_ERROR then
8934 if p_commit = FND_API.G_TRUE then
8935 rollback to DELETE_WORKING_WP_PROGRESS;
8936 end if;
8937 x_return_status := FND_API.G_RET_STS_ERROR;
8938 when FND_API.G_EXC_UNEXPECTED_ERROR then
8939 if p_commit = FND_API.G_TRUE then
8940 rollback to DELETE_WORKING_WP_PROGRESS;
8941 end if;
8942 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8943 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8944 p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8945 p_error_text => SUBSTRB(SQLERRM,1,120));
8946 when OTHERS then
8947 if p_commit = FND_API.G_TRUE then
8948 rollback to DELETE_WORKING_WP_PROGRESS;
8949 end if;
8950 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8951 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8952 p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8953 p_error_text => SUBSTRB(SQLERRM,1,120));
8954 raise;
8955 END delete_working_wp_progress;
8956
8957 -- Progress Management Changes. Bug # 3420093.
8958
8959 Procedure PULL_SUMMARIZED_ACTUALS (
8960 p_api_version IN NUMBER :=1.0
8961 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
8962 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
8963 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
8964 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
8965 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
8966 ,p_debug_mode IN VARCHAR2 :='N'
8967 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8968 ,P_Project_ID IN NUMBER
8969 ,P_Calling_Mode IN VARCHAR2
8970 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8971 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8972 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8973 )
8974 IS
8975 l_api_name CONSTANT VARCHAR2(30) := 'PULL_SUMMARIZED_ACTUALS';
8976 l_api_version CONSTANT NUMBER := p_api_version;
8977 l_user_id NUMBER := FND_GLOBAL.USER_ID;
8978 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
8979 l_project_id_list SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8980 l_proj_pgm_level SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8981 l_msg_code VARCHAR2(32);
8982
8983 l_str_ver_id NUMBER;
8984 Cursor cur_Summerized_Actuals
8985 IS
8986 Select ppevs.element_version_id
8987 FROM PA_Proj_Elem_Ver_Structure ppevs,
8988 PA_Proj_Elements ppe,
8989 PA_Proj_Structure_Types ppst,
8990 PA_Structure_types pst
8991 WHERE ppevs.Project_ID = P_Project_ID
8992 AND ppevs.status_code = 'STRUCTURE_PUBLISHED'
8993 AND ppevs.proj_element_id = ppe.Proj_Element_ID
8994 AND ppe.Project_ID = ppevs.Project_ID
8995 AND ppe.Proj_Element_ID = ppst.Proj_Element_ID
8996 AND ppst.Structure_Type_ID = pst.Structure_Type_ID
8997 AND pst.structure_type = 'WORKPLAN';
8998 -- Bug 4600547 Begin
8999 CURSOR c_check_prog_exists IS
9000 SELECT 'Y'
9001 FROM pa_progress_rollup
9002 where project_id = P_Project_ID
9003 AND structure_type = 'WORKPLAN'
9004 and structure_version_id is null;
9005
9006 l_check_prog_exists VARCHAR2(1):='N';
9007 -- Bug 4600547 End
9008
9009 -- Bug 5961235 Begin
9010 CURSOR c_check_prog_exists_prg IS
9011 SELECT 'Y' from dual
9012 where exists ( select DISTINCT ppev.PROJECT_ID
9013 FROM pa_progress_rollup ppr,
9014 pa_proj_element_versions ppev
9015 where ppr.project_id=ppev.project_id
9016 and ppev.OBJECT_TYPE = 'PA_STRUCTURES'
9017 and ppr.structure_type = 'WORKPLAN'
9018 and ppr.structure_version_id is null
9019 and exists (select null
9020 from PA_PROJ_ELEMENT_VERSIONS ppev2
9021 where ppev2.project_id=p_project_id
9022 and ppev.prg_group=ppev2.prg_group)
9023 );
9024
9025 l_program_enable_flag VARCHAR2(1):='N';
9026 -- Bug 5961235 end
9027
9028 BEGIN
9029 IF g1_debug_mode = 'Y' THEN
9030 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS');
9031 END IF;
9032
9033 IF g1_debug_mode = 'Y' THEN
9034 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS Start : P_Project_ID='||P_Project_ID||', P_Calling_Mode='||P_Calling_Mode, x_Log_Level=> 3);
9035 END IF;
9036
9037 IF (p_commit = FND_API.G_TRUE) THEN
9038 savepoint PULL_SUMMARIZED_ACTUALS;
9039 END IF;
9040
9041 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9042 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9043 END IF;
9044
9045 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9046 FND_MSG_PUB.initialize;
9047 END IF;
9048
9049 x_return_status := FND_API.G_RET_STS_SUCCESS;
9050
9051 --bug 4573340
9052 IF NOT NVL(PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(P_Project_ID),'X') = 'SHARE_FULL'
9053 THEN
9054 return;
9055 END IF;
9056 --end bug 4573340 This check is not related to bugfix 4573340. This is added while fixing that bug.
9057
9058 -- Check the record
9059 OPEN cur_Summerized_Actuals;
9060 FETCH cur_Summerized_Actuals INTO l_str_ver_id;
9061 fetch cur_Summerized_Actuals into l_str_ver_id;
9062 if cur_Summerized_Actuals%notfound then
9063 If p_calling_mode = 'PUBLISH' Then
9064 l_project_id_list.extend;
9065 l_proj_pgm_level.extend;
9066 l_project_id_list(1) := P_Project_ID;
9067 l_proj_pgm_level(1) := 1; ---setting to 2 so that pgm rollup is done
9068 -- 4600547 : We don't need to set it to 2 because PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS
9069 -- will take care of program rollup part after this call
9070
9071 IF g1_debug_mode = 'Y' THEN
9072 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'Calling GET_SUMMARIZED_ACTUALS with p_plan_res_level Y', x_Log_Level=> 3);
9073 END IF;
9074
9075 PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
9076 p_project_id_list => l_project_id_list
9077 --,p_extraction_type => 'FULL' 4415960
9078 ,p_extraction_type => 'PUBLISH'-- 4415960
9079 ,p_plan_res_level => 'Y'
9080 ,p_proj_pgm_level => l_proj_pgm_level
9081 ,x_return_status => x_return_status
9082 ,x_msg_count => x_msg_count
9083 ,x_msg_data => x_msg_data
9084 );
9085
9086 IF g1_debug_mode = 'Y' THEN
9087 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'After Call x_return_status='||x_return_status, x_Log_Level=> 3);
9088 END IF;
9089
9090 -- Added the if block for Bug#5659575
9091 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9092 RAISE FND_API.G_EXC_ERROR;
9093 END IF;
9094
9095 begin
9096 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (
9097 p_plan_wbs_ver_id => l_str_ver_id
9098 , x_msg_code => l_msg_code
9099 , x_return_status => x_return_status);
9100
9101 EXCEPTION
9102 WHEN OTHERS THEN
9103 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9104 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9105 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE failed: sqlerrm='||SQLERRM,1,120));
9106 RAISE FND_API.G_EXC_ERROR;
9107 END;
9108
9109 -- Added the if block for Bug#5659575
9110 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9111 RAISE FND_API.G_EXC_ERROR;
9112 END IF;
9113
9114 -- Bug 4600547 Begin
9115 -- Added thew following cursor call to avoid unnecessary creating rollup records
9116 -- whene there is no incremental amounts found in first run for assignments
9117
9118 OPEN c_check_prog_exists;
9119 FETCH c_check_prog_exists INTO l_check_prog_exists;
9120 CLOSE c_check_prog_exists;
9121
9122 -- Bug 5961235 : For programs if sub projects has progress then we need to rollup at program task level
9123 IF nvl(l_check_prog_exists,'N') = 'N' THEN
9124 l_program_enable_flag := PA_PROJECT_STRUCTURE_UTILS.check_program_flag_enable(P_Project_ID);
9125
9126 If l_program_enable_flag = 'Y' then
9127 OPEN c_check_prog_exists_prg;
9128 FETCH c_check_prog_exists_prg INTO l_check_prog_exists;
9129 CLOSE c_check_prog_exists_prg;
9130 end if;
9131 END IF;
9132
9133 IF nvl(l_check_prog_exists,'N') = 'Y' THEN
9134
9135 IF g1_debug_mode = 'Y' THEN
9136 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'Calling GET_SUMMARIZED_ACTUALS with p_plan_res_level N', x_Log_Level=> 3);
9137 END IF;
9138
9139 PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
9140 p_project_id_list => l_project_id_list
9141 --,p_extraction_type => 'FULL' 4415960
9142 ,p_extraction_type => 'PUBLISH'-- 4415960
9143 ,p_plan_res_level => 'N'
9144 ,p_proj_pgm_level => l_proj_pgm_level
9145 ,x_return_status => x_return_status
9146 ,x_msg_count => x_msg_count
9147 ,x_msg_data => x_msg_data
9148 );
9149
9150 IF g1_debug_mode = 'Y' THEN
9151 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'After Call x_return_status='||x_return_status, x_Log_Level=> 3);
9152 END IF;
9153
9154 -- Bug 5659575
9155 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9156 RAISE FND_API.G_EXC_ERROR;
9157 END IF;
9158
9159 END IF;
9160 End If;
9161 end if;
9162 CLOSE cur_Summerized_Actuals;
9163
9164 EXCEPTION
9165 when FND_API.G_EXC_ERROR then
9166 if p_commit = FND_API.G_TRUE then
9167 rollback to PULL_SUMMARIZED_ACTUALS;
9168 end if;
9169 x_return_status := FND_API.G_RET_STS_ERROR;
9170 when FND_API.G_EXC_UNEXPECTED_ERROR then
9171 if p_commit = FND_API.G_TRUE then
9172 rollback to PULL_SUMMARIZED_ACTUALS;
9173 end if;
9174 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9175 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9176 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9177 p_error_text => SUBSTRB(SQLERRM,1,120));
9178 when OTHERS then
9179 if p_commit = FND_API.G_TRUE then
9180 rollback to DELETE_WORKING_WP_PROGRESS;
9181 end if;
9182 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9183 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9184 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9185 p_error_text => SUBSTRB(SQLERRM,1,120));
9186 raise;
9187 END PULL_SUMMARIZED_ACTUALS;
9188
9189 -- Progress Management Changes. Bug # 3420093.
9190
9191 PROCEDURE UPDATE_PROGRESS(
9192 p_api_version IN NUMBER :=1.0
9193 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
9194 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
9195 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
9196 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
9197 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
9198 ,p_debug_mode IN VARCHAR2 :='N'
9199 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9200 ,p_action IN VARCHAR2 :='SAVE'
9201 ,P_rollup_entire_wbs_flag IN VARCHAR2 :='N'
9202 ,p_progress_mode IN VARCHAR2 :='FUTURE'
9203 ,p_percent_complete_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9204 ,p_project_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9205 ,p_object_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9206 ,p_object_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9207 ,p_object_type IN VARCHAR2 :='PA_TASKS'
9208 ,p_as_of_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9209 ,p_percent_complete IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9210 ,p_progress_status_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9211 ,p_progress_comment IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9212 ,p_brief_overview IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9213 ,p_actual_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9214 ,p_actual_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9215 ,p_estimated_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9216 ,p_estimated_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9217 ,p_scheduled_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9218 ,p_scheduled_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9219 ,p_record_version_number IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9220 ,p_task_status IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9221 ,p_est_remaining_effort IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9222 ,p_ETC_cost IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9223 ,p_actual_work_quantity IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9224 ,p_pm_product_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9225 ,p_structure_type IN VARCHAR2 :='WORKPLAN'
9226 ,p_actual_effort IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9227 ,p_actual_cost IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9228 ,p_actual_effort_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9229 ,p_actual_cost_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9230 ,p_object_sub_type IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9231 ,p_task_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9232 ,p_structure_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9233 ,p_prog_fom_wp_flag IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9234 ,p_rollup_reporting_lines_flag IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9235 ,p_planned_cost IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9236 ,p_planned_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9237 ,p_rate_based_flag IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9238 ,p_resource_class_code IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9239 ,p_transfer_wp_pc_flag IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9240 ,p_txn_currency_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9241 ,p_rbs_element_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9242 -- ,p_resource_list_member_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3764224
9243 ,p_resource_assignment_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3764224
9244 ,p_eff_rollup_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- 3910193
9245 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9246 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
9247 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9248 )
9249 IS
9250 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PROGRESSES' ;
9251 l_api_version CONSTANT NUMBER := p_api_version ;
9252 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
9253 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
9254 l_return_status VARCHAR2(1) ;
9255 l_msg_count NUMBER ;
9256 l_msg_data VARCHAR2(250) ;
9257 l_object_type VARCHAR2(30) ;
9258 l_structure_version_id NUMBER ;
9259 l_task_version_id NUMBER ;
9260 l_wp_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
9261 l_fin_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
9262 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
9263 L_LOWEST_LEVEL_TASK VARCHAR2(1);
9264 l_last_progress_date DATE;
9265 l_plan_version_id NUMBER;
9266
9267 --BUG3632883
9268 l_flag VARCHAR2(1);
9269
9270 CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
9271 IS
9272 SELECT element_version_id, parent_structure_version_id
9273 FROM pa_proj_element_versions
9274 WHERE proj_element_id = c_proj_element_id
9275 AND object_type = 'PA_TASKS'
9276 AND project_id = c_project_id
9277 AND parent_structure_version_id = c_structure_version_id;
9278
9279 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
9280 IS
9281 SELECT task_weight_basis_code
9282 FROM pa_proj_progress_attr
9283 WHERE project_id = c_project_id
9284 AND structure_type = c_structure_type;
9285
9286 CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
9287 IS
9288 SELECT elemver.element_version_id, elemver.parent_structure_version_id
9289 FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
9290 WHERE elemver.proj_element_id = c_proj_element_id
9291 AND elemver.object_type = 'PA_TASKS'
9292 AND elemver.project_id = c_project_id
9293 AND str.project_id = c_project_id
9294 AND elemver.parent_structure_version_id = str.element_version_id
9295 AND str.latest_eff_published_flag = 'Y';
9296
9297 --BUG3632883: Check for template, progress should not be allowed for template.
9298 --to be used only in AMG flow
9299 CURSOR c_get_template_flag
9300 IS
9301 SELECT TEMPLATE_FLAG
9302 FROM PA_PROJECTS_ALL
9303 WHERE PROJECT_ID = p_project_id;
9304
9305 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
9306 l_task_id NUMBER; --3603636
9307 -- Bug 3722011 Begin
9308 L_SHARING_ENABLED VARCHAR2(1) ;
9309 L_SPLIT_WORKPLAN VARCHAR2(1) ;
9310 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
9311 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
9312 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type() ;
9313 -- Bug 3722011 End
9314
9315 -- BEGIN: Code to fix Bug # 3821106.
9316
9317 cursor cur_percent_complete(p_project_id NUMBER, p_object_id NUMBER
9318 , p_object_version_id NUMBER, p_object_type VARCHAR2
9319 , p_as_of_date DATE) is
9320 select 'Y'
9321 from pa_progress_rollup
9322 where project_id = p_project_id
9323 and object_id = p_object_id
9324 and object_type = p_object_type
9325 and as_of_date = p_as_of_date
9326 and structure_type = 'WORKPLAN'
9327 and current_flag = 'Y'
9328 and not exists (select 1
9329 from pa_percent_completes
9330 where project_id = p_project_id
9331 and object_id = p_object_id
9332 and object_type = p_object_type
9333 and date_computed = p_as_of_date
9334 and structure_type = 'WORKPLAN');
9335
9336 cur_percent_complete_rec cur_percent_complete%rowtype;
9337
9338 l_action VARCHAR2(30);
9339
9340 l_resource_list_member_id NUMBER;
9341 l_prog_pa_period_name VARCHAR2(30);
9342 l_prog_gl_period_name VARCHAR2(30);
9343
9344 -- END: Code to fix Bug # 3821106.
9345 l_base_struct_ver_id NUMBER;
9346 l_msg_code VARCHAR2(32);
9347 l_calling_mode VARCHAR2(15);
9348
9349 -- Begin Bug # 4524977.
9350
9351 l_prev_prog_upd_date date; -- 7225884
9352
9353 cursor l_cur_publish(l_request_id NUMBER) is
9354 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
9355 from fnd_conc_req_summary_v fcrsv
9356 where fcrsv.request_id = l_request_id;
9357
9358 l_rec_publish l_cur_publish%ROWTYPE;
9359
9360 l_wp_ver_enabled_flag VARCHAR2(1) := null;
9361
9362 l_request_id NUMBER := null;
9363 l_process_code VARCHAR2(30) := null;
9364 l_str_version_id NUMBER := null;
9365 l_structure_id NUMBER := null;
9366
9367 -- End for Bug # 4524977.
9368
9369 BEGIN
9370
9371 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9372
9373 IF g1_debug_mode = 'Y' THEN
9374 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS');
9375 END IF;
9376
9377 -- FPM Dev CR 3 : Added Debug messages
9378 IF g1_debug_mode = 'Y' THEN
9379 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS Start : Passed Parameters :', x_Log_Level=> 3);
9380 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
9381 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
9382 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
9383 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
9384 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
9385 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
9386 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
9387 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
9388 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
9389 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete_id='||p_percent_complete_id, x_Log_Level=> 3);
9390 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
9391 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
9392 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
9393 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
9394 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
9395 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
9396 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
9397 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_status_code='||p_progress_status_code, x_Log_Level=> 3);
9398 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
9399 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
9400 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_start_date='||p_actual_start_date, x_Log_Level=> 3);
9401 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
9402 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_start_date='||p_estimated_start_date, x_Log_Level=> 3);
9403 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_finish_date='||p_estimated_finish_date, x_Log_Level=> 3);
9404 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_start_date='||p_scheduled_start_date, x_Log_Level=> 3);
9405 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_finish_date='||p_scheduled_finish_date, x_Log_Level=> 3);
9406 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_record_version_number='||p_record_version_number, x_Log_Level=> 3);
9407 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
9408 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_est_remaining_effort='||p_est_remaining_effort, x_Log_Level=> 3);
9409 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_ETC_cost='||p_ETC_cost, x_Log_Level=> 3);
9410 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_work_quantity='||p_actual_work_quantity, x_Log_Level=> 3);
9411 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_pm_product_code='||p_pm_product_code, x_Log_Level=> 3);
9412 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
9413 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
9414 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_cost='||p_actual_cost, x_Log_Level=> 3);
9415 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_effort_this_period='||p_actual_effort_this_period, x_Log_Level=> 3);
9416 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_cost_this_period='||p_actual_cost_this_period, x_Log_Level=> 3);
9417 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_sub_type='||p_object_sub_type, x_Log_Level=> 3);
9418 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
9419 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
9420 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_prog_fom_wp_flag='||p_prog_fom_wp_flag, x_Log_Level=> 3);
9421 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rollup_reporting_lines_flag='||p_rollup_reporting_lines_flag, x_Log_Level=> 3);
9422 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
9423 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
9424 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rate_based_flag='||p_rate_based_flag, x_Log_Level=> 3);
9425 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_class_code='||p_resource_class_code, x_Log_Level=> 3);
9426 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_transfer_wp_pc_flag='||p_transfer_wp_pc_flag, x_Log_Level=> 3);
9427 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_txn_currency_code='||p_txn_currency_code, x_Log_Level=> 3);
9428 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rbs_element_id='||p_rbs_element_id, x_Log_Level=> 3);
9429 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_assignment_id='||p_resource_assignment_id, x_Log_Level=> 3);
9430 END IF;
9431
9432 IF (p_commit = FND_API.G_TRUE) THEN
9433 savepoint UPDATE_PROGRESS;
9434 END IF;
9435
9436 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9437 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9438 END IF;
9439
9440 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9441 FND_MSG_PUB.initialize;
9442 END IF;
9443
9444 x_return_status := FND_API.G_RET_STS_SUCCESS;
9445
9446 -- Begin fix for Bug # 4524977.
9447
9448 PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
9449 (p_project_id => p_project_id
9450 ,p_structure_type => p_structure_type
9451 ,x_request_id => l_request_id
9452 ,x_process_code => l_process_code
9453 ,x_structure_version_id => l_str_version_id
9454 ,x_return_status => l_return_status
9455 ,x_msg_count => l_msg_count
9456 ,x_msg_data => l_msg_data);
9457
9458
9459 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
9460
9461 x_msg_data := l_msg_data;
9462 x_return_status := 'E';
9463 x_msg_count := l_msg_count;
9464
9465 raise FND_API.G_EXC_ERROR;
9466
9467 end if;
9468
9469 open l_cur_publish(l_request_id);
9470 fetch l_cur_publish into l_rec_publish;
9471 close l_cur_publish;
9472
9473 l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id);
9474
9475 if ((l_rec_publish.process = 'CONC_PUBLISH')
9476 and (l_process_code in ('WUP', 'WUE'))
9477 and (l_wp_ver_enabled_flag = 'Y')) then
9478
9479 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9480 ,p_msg_name => 'PA_PS_PUBLISH_NO_PROG');
9481
9482 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
9483
9484 x_return_status := FND_API.G_RET_STS_ERROR;
9485
9486 raise FND_API.G_EXC_ERROR;
9487
9488 elsif ((l_rec_publish.process = 'CONC_UPDATE')
9489 and (l_process_code = 'WUP')
9490 and (l_wp_ver_enabled_flag = 'N')) then
9491
9492 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9493 ,p_msg_name => 'PA_PS_UPDATE_NO_PROG');
9494
9495 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
9496
9497 x_return_status := FND_API.G_RET_STS_ERROR;
9498
9499 raise FND_API.G_EXC_ERROR;
9500
9501 elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
9502 and (l_process_code = 'WUP')
9503 and (l_wp_ver_enabled_flag = 'N')) then
9504
9505 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9506 ,p_msg_name => 'PA_PS_APLPRG_NO_PROG');
9507
9508 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
9509
9510 x_return_status := FND_API.G_RET_STS_ERROR;
9511
9512 raise FND_API.G_EXC_ERROR;
9513
9514 end if;
9515
9516 -- End fix for Bug # 4524977.
9517
9518 -- BEGIN: Code to fix Bug # 3821106.
9519
9520 l_action := p_action;
9521 -- Bug 3879461 : Commented teporary code below.
9522 /*
9523 if (p_action = 'SAVE') then
9524 open cur_percent_complete(p_project_id, p_object_id
9525 , p_object_version_id, p_object_type
9526 , p_as_of_date);
9527 fetch cur_percent_complete into cur_percent_complete_rec;
9528 if cur_percent_complete%FOUND then
9529 l_action := 'PUBLISH';
9530 end if;
9531 close cur_percent_complete;
9532 end if;
9533 */
9534
9535 -- END: Code to fix Bug # 3821106.
9536
9537 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
9538 -- Bug 3722011 Begin
9539 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
9540 IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) AND p_structure_type = 'WORKPLAN' THEN
9541 l_split_workplan := 'Y';
9542 ELSE
9543 l_split_workplan := 'N';
9544 END IF;
9545 -- Bug 3722011 End
9546
9547 --BUG3632883
9548 IF (p_calling_module = 'AMG')
9549 THEN
9550 OPEN c_get_template_flag;
9551 FETCH c_get_template_flag INTO l_flag;
9552 CLOSE c_get_template_flag;
9553
9554 IF (l_flag = 'Y')
9555 THEN
9556 --Raise Error
9557 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
9558 ,p_msg_name => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
9559 x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
9560 x_return_status := FND_API.G_RET_STS_ERROR;
9561 RAISE FND_API.G_EXC_ERROR;
9562 END IF;
9563 END IF;
9564
9565 -- Begin code fix for bug # 3974859.
9566
9567 IF p_structure_type = 'WORKPLAN' THEN
9568 -- bug 7225884
9569 BEGIN
9570 SELECT next_progress_update_date
9571 INTO l_prev_prog_upd_date
9572 FROM pa_proj_progress_attr
9573 WHERE project_id = p_project_id
9574 AND object_type = 'PA_STRUCTURES'
9575 AND structure_type = 'WORKPLAN';
9576 EXCEPTION
9577 WHEN OTHERS THEN
9578 l_prev_prog_upd_date := p_as_of_date-1;
9579 END;
9580
9581 IF NVL(l_prev_prog_upd_date,p_as_of_date-1) <> p_as_of_date THEN
9582 UPDATE pa_proj_progress_attr
9583 SET next_progress_update_date = p_as_of_date
9584 WHERE project_id = p_project_id
9585 AND object_type = 'PA_STRUCTURES'
9586 AND structure_type = 'WORKPLAN';
9587 END IF;
9588 END IF;
9589
9590 -- End code fix for bug # 3974859.
9591
9592 -- FPM Dev CR 1 : Added call of UPDATE_FINANCIAL_TASK_PROGRESS for Financial Percent Complete
9593 IF p_structure_type = 'FINANCIAL'
9594 THEN
9595 IF g1_debug_mode = 'Y' THEN
9596 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
9597 END IF;
9598
9599 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
9600 p_task_id => p_task_id
9601 ,p_project_id => p_project_id
9602 ,p_object_id => p_object_id
9603 ,p_object_type => p_object_type
9604 ,p_structure_type => p_structure_type
9605 );
9606 IF g1_debug_mode = 'Y' THEN
9607 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'l_last_progress_date='||l_last_progress_date, x_Log_Level=> 3);
9608 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
9609 END IF;
9610
9611 PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
9612 p_api_version => l_api_version
9613 ,p_init_msg_list => p_init_msg_list
9614 ,p_commit => p_commit
9615 ,p_validate_only => p_validate_only
9616 ,p_validation_level => p_validation_level
9617 ,p_calling_module => p_calling_module
9618 ,p_action => l_action -- Code to fix Bug # 3821106.
9619 ,P_rollup_entire_wbs_flag => P_rollup_entire_wbs_flag
9620 ,p_percent_complete_id => p_percent_complete_id
9621 ,p_project_id => p_project_id
9622 ,p_object_id => p_object_id
9623 ,p_object_version_id => p_object_version_id
9624 ,p_object_type => p_object_type
9625 ,p_as_of_date => p_as_of_date
9626 ,p_percent_complete => p_percent_complete
9627 ,p_structure_type => p_structure_type
9628 ,p_task_id => p_task_id
9629 ,p_structure_version_id => p_structure_version_id
9630 ,p_record_version_number => p_record_version_number
9631 ,p_progress_comment => p_progress_comment -- Bug 3595585
9632 ,p_brief_overview => p_brief_overview -- Bug 3595585
9633 ,x_return_status => l_return_status
9634 ,x_msg_count => l_msg_count
9635 ,x_msg_data => l_msg_data
9636 );
9637 IF g1_debug_mode = 'Y' THEN
9638 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_FINANCIAL_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9639 END IF;
9640
9641 -- PA_ASSIGNMENTS
9642 ELSIF p_object_type = 'PA_ASSIGNMENTS' AND p_structure_type = 'WORKPLAN' THEN
9643 IF g1_debug_mode = 'Y' THEN
9644 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
9645 END IF;
9646
9647 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
9648 p_api_version => l_api_version
9649 ,p_init_msg_list => p_init_msg_list
9650 ,p_commit => p_commit
9651 ,p_validate_only => p_validate_only
9652 ,p_validation_level => p_validation_level
9653 ,p_calling_module => p_calling_module
9654 ,p_action => l_action -- Code to fix Bug # 3821106.
9655 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
9656 ,p_progress_mode => p_progress_mode
9657 ,p_percent_complete_id => p_percent_complete_id
9658 ,p_project_id => p_project_id
9659 ,p_object_id => p_object_id
9660 ,p_object_version_id => p_object_version_id
9661 ,p_task_id => p_task_id
9662 ,p_as_of_date => p_as_of_date
9663 ,p_progress_comment => p_progress_comment
9664 ,p_brief_overview => p_brief_overview
9665 ,p_actual_start_date => p_actual_start_date
9666 ,p_actual_finish_date => p_actual_finish_date
9667 ,p_estimated_start_date => p_estimated_start_date
9668 ,p_estimated_finish_date => p_estimated_finish_date
9669 ,p_record_version_number => p_record_version_number
9670 ,p_pm_product_code => p_pm_product_code
9671 ,p_structure_type => p_structure_type
9672 ,p_structure_version_id => p_structure_version_id
9673 ,p_actual_cost_this_period => p_actual_cost_this_period
9674 ,p_actual_effort_this_period => p_actual_effort_this_period
9675 ,p_rate_based_flag => p_rate_based_flag
9676 ,p_resource_class_code => p_resource_class_code
9677 ,p_actual_cost => p_actual_cost
9678 ,p_actual_effort => p_actual_effort
9679 ,p_etc_cost_this_period => p_etc_cost
9680 ,p_etc_effort_this_period => p_est_remaining_effort
9681 ,p_txn_currency_code => p_txn_currency_code
9682 ,p_rbs_element_id => p_rbs_element_id
9683 -- ,p_resource_list_member_id => p_resource_list_member_id -- Bug 3764224
9684 ,p_resource_assignment_id => p_resource_assignment_id -- Bug 3764224
9685 ,p_scheduled_start_date => p_scheduled_start_date -- Bug 3586648
9686 ,p_scheduled_finish_date => p_scheduled_finish_date -- Bug 3586648
9687 ,x_return_status => l_return_status
9688 ,x_msg_count => l_msg_count
9689 ,x_msg_data => l_msg_data
9690 );
9691 IF g1_debug_mode = 'Y' THEN
9692 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_ASSIGNMENT_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9693 END IF;
9694 -- PA_DELIVERABLES
9695 ELSIF p_object_type = 'PA_DELIVERABLES' AND p_structure_type = 'WORKPLAN' THEN
9696 IF g1_debug_mode = 'Y' THEN
9697 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
9698 END IF;
9699
9700 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
9701 p_api_version => l_api_version
9702 ,p_init_msg_list => p_init_msg_list
9703 ,p_commit => p_commit
9704 ,p_validate_only => p_validate_only
9705 ,p_validation_level => p_validation_level
9706 ,p_calling_module => p_calling_module
9707 ,p_action => l_action -- Code to fix Bug # 3821106.
9708 ,p_bulk_load_flag => P_rollup_entire_wbs_flag
9709 ,p_progress_mode => p_progress_mode
9710 ,p_percent_complete_id => p_percent_complete_id
9711 ,p_project_id => p_project_id
9712 ,p_object_id => p_object_id
9713 ,p_object_type => p_object_type
9714 ,p_object_version_id => p_object_version_id
9715 ,p_del_status => p_task_status -- FPM Dev CR 1
9716 ,p_task_id => p_task_id
9717 ,p_as_of_date => p_as_of_date
9718 ,p_percent_complete => p_percent_complete
9719 ,p_progress_status_code => p_progress_status_code
9720 ,p_progress_comment => p_progress_comment
9721 ,p_brief_overview => p_brief_overview
9722 ,p_actual_finish_date => p_actual_finish_date
9723 ,p_record_version_number => p_record_version_number
9724 ,p_pm_product_code => p_pm_product_code
9725 ,p_structure_type => p_structure_type
9726 ,x_return_status => l_return_status
9727 ,x_msg_count => l_msg_count
9728 ,x_msg_data => l_msg_data
9729 );
9730 IF g1_debug_mode = 'Y' THEN
9731 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_DELIVERABLE_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9732 END IF;
9733
9734 -- PA_TASKS and PA_STRUCTURES
9735 ELSIF (p_object_type = 'PA_TASKS' OR p_object_type = 'PA_STRUCTURES') AND p_structure_type = 'WORKPLAN' THEN
9736 IF g1_debug_mode = 'Y' THEN
9737 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
9738 END IF;
9739 PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
9740 p_api_version => l_api_version
9741 ,p_init_msg_list => p_init_msg_list
9742 ,p_commit => p_commit
9743 ,p_validate_only => p_validate_only
9744 ,p_validation_level => p_validation_level
9745 ,p_calling_module => p_calling_module
9746 ,p_debug_mode => p_debug_mode
9747 ,p_max_msg_count => p_max_msg_count
9748 ,p_action => l_action -- Code to fix Bug # 3821106.
9749 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
9750 ,p_progress_mode => p_progress_mode
9751 ,p_percent_complete_id => p_percent_complete_id
9752 ,p_project_id => p_project_id
9753 ,p_object_id => p_object_id
9754 ,p_object_version_id => p_object_version_id
9755 ,p_object_type => p_object_type
9756 ,p_as_of_date => p_as_of_date
9757 ,p_percent_complete => p_percent_complete
9758 ,p_progress_status_code => p_progress_status_code
9759 ,p_progress_comment => p_progress_comment
9760 ,p_brief_overview => p_brief_overview
9761 ,p_actual_start_date => p_actual_start_date
9762 ,p_actual_finish_date => p_actual_finish_date
9763 ,p_estimated_start_date => p_estimated_start_date
9764 ,p_estimated_finish_date => p_estimated_finish_date
9765 ,p_record_version_number => p_record_version_number
9766 ,p_task_status => p_task_status
9767 ,p_actual_work_quantity => p_actual_work_quantity
9768 ,p_pm_product_code => p_pm_product_code
9769 ,p_structure_type => p_structure_type
9770 ,p_prog_fom_wp_flag => p_prog_fom_wp_flag
9771 ,p_planned_cost => p_planned_cost
9772 ,p_planned_effort => p_planned_effort
9773 ,p_actual_effort => p_actual_effort
9774 ,p_est_remaining_effort => p_est_remaining_effort
9775 ,p_structure_version_id => p_structure_version_id -- Bug 3608422 : Passing structure version id too
9776 ,p_eff_rollup_percent_complete => p_eff_rollup_percent_complete --bug 3910193
9777 ,x_resource_list_member_id => l_resource_list_member_id
9778 ,x_return_status => l_return_status
9779 ,x_msg_count => l_msg_count
9780 ,x_msg_data => l_msg_data
9781 );
9782 IF g1_debug_mode = 'Y' THEN
9783 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9784 END IF;
9785 END IF;
9786
9787 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9788 x_msg_data := l_msg_data;
9789 x_return_status := 'E';
9790 x_msg_count := l_msg_count;
9791 RAISE FND_API.G_EXC_ERROR;
9792 END IF;
9793
9794 -- Bug 3614828 : Moved the code to get local variables for object type, task version id, structure type etc..
9795 -- here, so that it is also accessible to ASGN_DLV_TO_TASK_ROLLUP_PVT
9796 IF (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES'
9797 OR (p_structure_type = 'FINANCIAL' and p_object_type = 'PA_TASKS')) THEN
9798
9799 l_object_type := 'PA_TASKS';
9800 l_task_version_id := null;
9801 -- FPM Dev CR 1 : Call of cursor c_get_latest_pub_task_ver
9802 IF p_object_type = 'PA_DELIVERABLES' AND (p_task_id IS NOT NULL AND p_task_id <>PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM )THEN
9803 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
9804 -- Bug 3957792 -- Proceed for roll-up only if task is not in cancelled status
9805 IF ( PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) <> 'CANCELLED' ) THEN
9806 OPEN c_get_latest_pub_task_ver(p_task_id, p_project_id);
9807 FETCH c_get_latest_pub_task_ver INTO l_task_version_id, l_structure_version_id;
9808 CLOSE c_get_latest_pub_task_ver;
9809 END IF;
9810
9811 ELSE
9812 OPEN c_get_task_version_id(p_task_id, p_project_id ,p_structure_version_id);
9813 FETCH c_get_task_version_id INTO l_task_version_id, l_structure_version_id;
9814 CLOSE c_get_task_version_id;
9815 END IF;
9816 l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9817 l_task_id := p_task_id; -- 3603636
9818 ELSE
9819 l_object_type := p_object_type;
9820 l_task_version_id := p_object_version_id;
9821 l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9822 l_structure_version_id := p_structure_version_id;
9823 l_task_id := p_object_id; -- 3603636
9824 END IF;
9825
9826 OPEN c_get_task_weight_method(p_project_id, p_structure_type);
9827 FETCH c_get_task_weight_method INTO l_rollup_method;
9828 CLOSE c_get_task_weight_method;
9829
9830 IF p_structure_type = 'WORKPLAN' THEN
9831 l_wp_rollup_method := l_rollup_method;
9832 ELSE
9833 l_fin_rollup_method := l_rollup_method;
9834 END IF;
9835
9836 /* maansari 21-JUN-2004 */
9837 -- Begin commenting out since we do not want this to be patched on pjd2qa unless this is tested
9838
9839 -- Bug 3614828 : Added call of ASGN_DLV_TO_TASK_ROLLUP_PVT for partial rollup
9840 IF ((l_action = 'SAVE' AND p_calling_module = 'TASK_PROG_DET_PAGE' -- Code to fix Bug # 3821106.
9841 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9842 AND (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9843 AND (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES' ) --bug 4097524 added PA_TASKS also
9844 -- This condition can be modified to make PA_TASKS if we can make sure that task records are getting inserted at the last after inserting assignment and delievarble progress from Task Progress Details page
9845 -- This will improve performance as it will be called once only i.e. for tasks
9846 -- as of now it will be called for each assignments and deliverables for a task
9847 AND p_structure_type = 'WORKPLAN')
9848 OR --bug 4101208
9849 (l_action = 'SAVE'
9850 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9851 AND (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9852 AND ( p_object_type = 'PA_TASKS')
9853 AND p_structure_type = 'WORKPLAN')
9854 )
9855 THEN
9856 pa_progress_pub.ASGN_DLV_TO_TASK_ROLLUP_PVT(
9857 p_calling_module => p_calling_module,
9858 p_project_id => p_project_id,
9859 p_task_id => p_task_id,
9860 p_task_version_id => l_task_version_id,
9861 p_as_of_date => p_as_of_date,
9862 p_structure_version_id => l_structure_version_id,
9863 p_wp_rollup_method => l_wp_rollup_method,
9864 x_return_status => l_return_status,
9865 x_msg_count => l_msg_count,
9866 x_msg_data => l_msg_data);
9867
9868
9869 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9870 x_msg_data := l_msg_data;
9871 x_return_status := 'E';
9872 x_msg_count := l_msg_count;
9873 RAISE FND_API.G_EXC_ERROR;
9874 END IF;
9875 END IF;
9876
9877
9878 --End commenting out since we do not want this to be patched on pjd2qa unless this is tested.
9879 /* maansari 21-JUN-2004 */
9880
9881 -- Amit : 1. Call of Future Rollup Progress
9882 -- 2. lowest task variable population
9883 -- 3. object version id is of task to be passed
9884 -- 4. p_process_whole_tree to be passed as Y
9885 -- 5. structure type also to be passed
9886 -- 6. p_fin_rollup_method and p_wp_rollup_method is to be passed
9887 -- 7. l_structure_version_id is not having any value.
9888 -- 8. Call of program rollup private API
9889
9890 IF l_action = 'PUBLISH' -- Code to fix Bug # 3821106.
9891 THEN
9892
9893 IF g1_debug_mode = 'Y' THEN
9894 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action PUBLISH', x_Log_Level=> 3);
9895 END IF;
9896
9897 IF ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
9898 THEN
9899 IF l_split_workplan = 'Y' AND p_object_type <> 'PA_DELIVERABLES' THEN -- Bug 4370820 : Added <> DELIVERABLES
9900 BEGIN
9901 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N'; -- Bug 4186007
9902 -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
9903 -- is not called. Actually it gets called but PJI code does not do anything.
9904
9905 l_project_ids.extend(1);
9906 l_project_ids(1) := p_project_id;
9907 l_struture_version_ids.extend(1);
9908 l_struture_version_ids(1) := l_structure_version_id;
9909 l_proj_thru_dates_tbl.extend(1);
9910 l_proj_thru_dates_tbl(1) := p_as_of_date;
9911 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
9912 (P_PROJECT_ID_TAB => l_project_ids,
9913 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
9914 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
9915 P_CALLING_CONTEXT => 'WP_PROGRESS',
9916 P_EXTRACTION_TYPE => 'INCREMENTAL', -- Bug 4186007
9917 X_RETURN_STATUS => l_return_status,
9918 X_MSG_COUNT => l_msg_count,
9919 X_MSG_DATA => l_msg_data
9920 );
9921
9922 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ; -- Bug 4186007
9923 delete from PA_PROG_ACT_BY_PERIOD_TEMP where project_id = p_project_id
9924 AND structure_version_id = l_structure_version_id;
9925 -- 3994165 : Deletion is now moved here.
9926 EXCEPTION
9927 WHEN OTHERS THEN
9928 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9929 p_procedure_name => 'update_progress',
9930 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
9931 RAISE FND_API.G_EXC_ERROR;
9932 END;
9933
9934 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9935 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9936 p_msg_name => l_msg_data);
9937 x_msg_data := l_msg_data;
9938 x_return_status := 'E';
9939 x_msg_count := l_msg_count;
9940 RAISE FND_API.G_EXC_ERROR;
9941 END IF;
9942
9943 END IF; -- l_split_workplan = 'Y' THEN
9944
9945 IF p_structure_type = 'WORKPLAN' THEN
9946 BEGIN
9947 --- getting plan id
9948 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
9949 p_project_id => p_project_id,
9950 p_plan_type_id => -1,
9951 p_proj_str_ver_id => l_structure_version_id) ;
9952 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(
9953 p_plan_version_id => l_plan_version_id,
9954 x_msg_code => l_msg_code,
9955 x_return_status => x_return_status);
9956 EXCEPTION
9957 WHEN OTHERS THEN
9958 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9959 p_procedure_name => 'update_progress',
9960 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
9961 RAISE FND_API.G_EXC_ERROR;
9962 END;
9963 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9964 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9965 p_msg_name => l_msg_code);
9966 x_return_status := 'E';
9967 RAISE FND_API.G_EXC_ERROR;
9968 END IF;
9969
9970
9971 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
9972
9973 IF (l_base_struct_ver_id = -1) THEN
9974 l_base_struct_ver_id := l_structure_version_id; --maansari7/6 bug 3742356
9975 END IF;
9976 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
9977 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
9978 p_calling_module => p_calling_module
9979 ,p_project_id => p_project_id
9980 ,p_structure_version_id => l_structure_version_id
9981 ,p_baselined_str_ver_id => l_base_struct_ver_id
9982 ,p_program_rollup_flag => 'Y'
9983 ,p_calling_context => 'SUMMARIZE'
9984 ,p_as_of_date => p_as_of_date
9985 ,x_return_status => l_return_status
9986 ,x_msg_count => l_msg_count
9987 ,x_msg_data => l_msg_data
9988 );
9989 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9990 x_msg_data := l_msg_data;
9991 x_return_status := 'E';
9992 x_msg_count := l_msg_count;
9993 RAISE FND_API.G_EXC_ERROR;
9994 END IF;
9995
9996 /*
9997 BEGIN
9998 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
9999 p_project_id => p_project_id,
10000 p_struct_ver_id => l_structure_version_id,
10001 p_base_struct_ver_id => l_base_struct_ver_id,
10002 p_as_of_date => p_as_of_date, -- Fix for Bug # 4251406.
10003 x_return_status => x_return_status,
10004 x_msg_code => l_msg_code
10005 );
10006 EXCEPTION
10007 WHEN OTHERS THEN
10008 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10009 p_procedure_name => 'update_progress',
10010 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
10011 RAISE FND_API.G_EXC_ERROR;
10012 END;
10013 */
10014 END IF;-- p_structure_type = 'WORKPLAN' THEN
10015
10016 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
10017 p_init_msg_list => 'F'
10018 ,p_commit => 'F'
10019 ,p_validate_only => 'F'
10020 ,p_calling_module => p_calling_module
10021 ,p_progress_mode => p_progress_mode
10022 ,p_project_id => p_project_id
10023 ,P_OBJECT_TYPE => 'PA_TASKS'
10024 ,P_OBJECT_ID => l_task_id -- p_task_id 3603636
10025 ,p_object_version_id => l_task_version_id
10026 ,p_as_of_date => p_as_of_date
10027 ,p_lowest_level_task => nvl(l_lowest_level_task, 'N')
10028 ,p_process_whole_tree => 'Y'
10029 ,p_structure_version_id => l_structure_version_id
10030 ,p_rollup_entire_wbs => p_rollup_entire_wbs_flag
10031 ,p_fin_rollup_method => l_fin_rollup_method
10032 ,p_wp_rollup_method => l_wp_rollup_method
10033 ,p_task_version_id => l_task_version_id
10034 ,p_structure_type => p_structure_type
10035 ,x_return_status => l_return_status
10036 ,x_msg_count => l_msg_count
10037 ,x_msg_data => l_msg_data);
10038
10039 IF g1_debug_mode = 'Y' THEN
10040 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling ROLLUP_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
10041 END IF;
10042
10043 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10044 x_msg_data := l_msg_data;
10045 x_return_status := 'E';
10046 x_msg_count := l_msg_count;
10047 RAISE FND_API.G_EXC_ERROR;
10048 END IF;
10049
10050 -----5466645
10051 IF p_progress_mode <> 'BACKDATED' AND p_object_type = 'PA_TASKS'
10052 AND p_structure_type = 'WORKPLAN' --maansari fpm changes
10053 THEN
10054 IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' ) THEN
10055 PA_TASK_PVT1.Update_Dates_To_All_Versions(
10056 p_project_id => p_project_id
10057 ,p_element_version_id => l_task_version_id
10058 ,x_return_status => l_return_status
10059 ,x_msg_count => l_msg_count
10060 ,x_msg_data => l_msg_data );
10061 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
10062 THEN
10063 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
10064 p_msg_name => l_msg_data);
10065 x_msg_data := l_msg_data;
10066 x_return_status := 'E';
10067 RAISE FND_API.G_EXC_ERROR;
10068 END IF;
10069
10070 BEGIN
10071 Select ppev1.proj_element_id
10072 into l_structure_id
10073 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
10074 where ppev2.element_version_id = l_task_version_id
10075 and ppev2.project_id = ppev1.project_id
10076 and ppev2.parent_structure_version_id = ppev1.element_version_id;
10077 EXCEPTION WHEN OTHERS THEN
10078 l_structure_id := -999;
10079 END;
10080
10081 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
10082 AND
10083 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id) = 'Y') --Bug 3784405 Satish
10084 AND
10085 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
10086 THEN
10087 --copy to transaction dates
10088 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
10089 p_validate_only => FND_API.G_FALSE
10090 ,p_project_id => p_project_id
10091 ,x_return_status => x_return_status
10092 ,x_msg_count => x_msg_count
10093 ,x_msg_data => x_msg_data);
10094 END IF;
10095 END IF;
10096 END IF; ------ p_progress_mode <> backdated
10097 -----5466645
10098
10099 IF p_progress_mode <> 'BACKDATED' THEN
10100 IF p_structure_type = 'WORKPLAN' OR
10101 (p_structure_type = 'FINANCIAL' AND p_as_of_date < NVL( l_last_progress_date, p_as_of_date ))
10102 THEN
10103 IF g1_debug_mode = 'Y' THEN
10104 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
10105 END IF;
10106 IF p_object_type IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
10107 l_calling_mode := null;
10108 ELSE
10109 l_calling_mode := 'FUTURE_ROLLUP';
10110 END IF;
10111
10112 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
10113 p_project_id => p_project_id
10114 ,P_OBJECT_TYPE => l_object_type
10115 ,P_OBJECT_ID => l_task_id -- p_task_id 3603636
10116 ,p_object_version_id => l_task_version_id
10117 ,p_as_of_date => p_as_of_date
10118 ,p_lowest_level_task => NVL( l_lowest_level_task, 'N' )
10119 ,p_calling_module => p_calling_module
10120 ,p_calling_mode => l_calling_mode -- Bug 4097710
10121 ,p_structure_type => p_structure_type
10122 ,p_structure_version_id => l_structure_version_id
10123 ,p_fin_rollup_method => l_fin_rollup_method
10124 ,p_wp_rollup_method => l_wp_rollup_method
10125 ,x_return_status => l_return_status
10126 ,x_msg_count => l_msg_count
10127 ,x_msg_data => l_msg_data
10128 );
10129
10130 IF g1_debug_mode = 'Y' THEN
10131 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling ROLLUP_FUTURE_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
10132 END IF;
10133 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10134 x_msg_data := l_msg_data;
10135 x_return_status := 'E';
10136 x_msg_count := l_msg_count;
10137 RAISE FND_API.G_EXC_ERROR;
10138 END IF;
10139 END IF; -- IF p_progress_mode <> 'BACKDATED'
10140 END IF; -- ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
10141 END IF; -- p_action='PUBLISH'
10142
10143 -- Bug 4392189 : Uncommenting and chaning the code for program rollup
10144 -- Bug 3807299 Calling program_rollup_pvt always
10145 --Added by rtarway for BUG 3668168, l_structure_version_id IS NOT NULL
10146 --program roll up should not be called in case of null structure version id
10147 --Program Rollup is not supported in FPM
10148 --bug 4033869
10149 --Need not be called in backdate mode, as per saima's mail
10150
10151 IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
10152 AND p_rollup_entire_wbs_flag = 'N'
10153 AND l_structure_version_id IS NOT NULL THEN
10154 IF g1_debug_mode = 'Y' THEN
10155 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
10156 END IF;
10157 pa_progress_pvt.program_rollup_pvt(
10158 p_init_msg_list => 'F'
10159 ,p_commit => 'F'
10160 ,p_validate_only => 'F'
10161 ,p_project_id => p_project_id
10162 ,p_as_of_date => p_as_of_date
10163 ,p_structure_type => p_structure_type
10164 ,p_structure_ver_id => l_structure_version_id
10165 ,x_return_status => l_return_status
10166 ,x_msg_count => l_msg_count
10167 ,x_msg_data => l_msg_data);
10168 IF g1_debug_mode = 'Y' THEN
10169 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling program_rollup_pvt l_return_status='||l_return_status, x_Log_Level=> 3);
10170 END IF;
10171 END IF;
10172
10173
10174 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10175 x_msg_data := l_msg_data;
10176 x_return_status := 'E';
10177 x_msg_count := l_msg_count;
10178 RAISE FND_API.G_EXC_ERROR;
10179 END IF;
10180
10181
10182 -- Bug 3807299 Calling new API update_link_proj_rollup_dates
10183 -- ADDed by rtarway for 3668168, l_structure_version_id IS NOT NULL and l_task_version_id IS NOT NULL
10184 -- Bug 3957792 : Removed the call of update_link_proj_rollup_dates. It is not implemnted as part of FPM
10185 --Uncommented as per Majid's Mail, BUG 4080922, rtarway
10186 --Need not be called in backdate mode, as per saima's mail
10187
10188 IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
10189 --AND p_rollup_entire_wbs_flag = 'N' --4080922, rtarway, removed this check because it needs to be called from AMG for each task too
10190 AND p_object_type = 'PA_TASKS'
10191 AND l_structure_version_id IS NOT NULL
10192 AND l_task_version_id IS NOT NULL
10193 THEN
10194 pa_progress_pub.update_link_proj_rollup_dates(
10195 p_init_msg_list => 'F'
10196 ,p_commit => 'F'
10197 ,p_calling_module => p_calling_module
10198 ,p_project_id => p_project_id
10199 ,p_task_id => l_task_id
10200 ,p_task_version_id => l_task_version_id
10201 ,p_as_of_date => p_as_of_date
10202 ,p_structure_version_id => l_structure_version_id
10203 ,x_return_status => l_return_status
10204 ,x_msg_count => l_msg_count
10205 ,x_msg_data => l_msg_data
10206 );
10207 END IF;
10208
10209 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10210 x_msg_data := l_msg_data;
10211 x_return_status := 'E';
10212 x_msg_count := l_msg_count;
10213 RAISE FND_API.G_EXC_ERROR;
10214 END IF;
10215
10216 END IF;
10217
10218
10219 IF (p_commit = FND_API.G_TRUE) THEN
10220 COMMIT;
10221 END IF;
10222 EXCEPTION
10223 when FND_API.G_EXC_ERROR then
10224 if p_commit = FND_API.G_TRUE then
10225 rollback to UPDATE_PROGRESS;
10226 end if;
10227 x_return_status := FND_API.G_RET_STS_ERROR;
10228 x_msg_count := fnd_msg_pub.count_msg;
10229 when FND_API.G_EXC_UNEXPECTED_ERROR then
10230 if p_commit = FND_API.G_TRUE then
10231 rollback to UPDATE_PROGRESS;
10232 end if;
10233 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10234 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10235 p_procedure_name => 'UPDATE_PROGRESS',
10236 p_error_text => SUBSTRB(SQLERRM,1,120));
10237 x_msg_count := fnd_msg_pub.count_msg;
10238 when OTHERS then
10239 if p_commit = FND_API.G_TRUE then
10240 rollback to UPDATE_PROGRESS;
10241 end if;
10242 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10243 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10244 p_procedure_name => 'UPDATE_PROGRESS',
10245 p_error_text => SUBSTRB(SQLERRM,1,120));
10246 x_msg_count := fnd_msg_pub.count_msg;
10247 raise;
10248 END update_progress;
10249
10250 -- Progress Management Changes. Bug # 3420093.
10251
10252 PROCEDURE populate_pji_tab_for_plan(
10253 p_api_version IN NUMBER :=1.0
10254 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10255 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10256 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10257 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10258 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10259 ,p_debug_mode IN VARCHAR2 :='N'
10260 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10261 ,p_project_id IN NUMBER
10262 ,p_project_element_id IN NUMBER DEFAULT NULL --bug 4183307
10263 ,p_structure_version_id IN NUMBER DEFAULT NULL
10264 ,p_baselined_str_ver_id IN NUMBER DEFAULT NULL
10265 ,p_structure_type IN VARCHAR2 := 'WORKPLAN' -- Bug 3627315
10266 ,p_populate_tmp_tab_flag IN VARCHAR2 := 'Y' --bug 4290593
10267 ,p_program_rollup_flag IN VARCHAR2 := 'Y' --bug 4392189
10268 ,p_calling_context IN VARCHAR2 := 'ROLLUP' -- bug 4392189 , Possible values are ROLLUP and SUMMARIZE
10269 ,p_as_of_date IN DATE := null -- bug 4392189
10270 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10271 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10272 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10273 ) AS
10274 l_api_name CONSTANT VARCHAR2(30) := 'populate_pji_tab_for_plan';
10275 l_api_version CONSTANT NUMBER := p_api_version;
10276 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10277 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10278 l_return_status VARCHAR2(1);
10279 l_msg_count NUMBER;
10280 l_msg_data VARCHAR2(250);
10281 l_baselined_str_ver_id NUMBER; -- FPM Dev CR 7
10282 l_plan_version_id NUMBER; -- Bug 3627315
10283 l_structure_version_id NUMBER; -- Bug 3627315
10284 BEGIN
10285
10286 IF g1_debug_mode = 'Y' THEN
10287 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN');
10288 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
10289 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10290 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_project_element_id='||p_project_element_id, x_Log_Level=> 3);
10291 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
10292 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_baselined_str_ver_id='||p_baselined_str_ver_id, x_Log_Level=> 3);
10293 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
10294 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_populate_tmp_tab_flag='||p_populate_tmp_tab_flag, x_Log_Level=> 3);
10295 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_program_rollup_flag='||p_program_rollup_flag, x_Log_Level=> 3);
10296 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_calling_context='||p_calling_context, x_Log_Level=> 3);
10297 END IF;
10298
10299 IF (p_commit = FND_API.G_TRUE) THEN
10300 savepoint plan_qtys;
10301 END IF;
10302
10303 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10304 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10305 END IF;
10306
10307 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10308 FND_MSG_PUB.initialize;
10309 END IF;
10310
10311 x_return_status := FND_API.G_RET_STS_SUCCESS;
10312
10313 --bug 4290593
10314 IF p_populate_tmp_tab_flag = 'N' AND PA_PROJ_STRUCTURE_UTILS.CHECK_PJI_TEMP_TAB_POPULATED(p_project_id) = 'Y'
10315 THEN
10316 return;
10317 END IF;
10318 --end bug 4290593
10319
10320 -- FPM Dev CR 7 : Passing null if baseline structure version id is -1
10321 IF p_baselined_str_ver_id = -1 THEN
10322 l_baselined_str_ver_id := null;
10323 ELSE
10324 l_baselined_str_ver_id := p_baselined_str_ver_id;
10325 END IF;
10326 -- Bug 3627315 : Added coce to get baseline plan version id and structure version id
10327 IF p_structure_type = 'FINANCIAL' THEN
10328
10329 /* Begin Fix for Bug # 4115607. */
10330
10331 -- l_plan_version_id := PA_FIN_PLAN_UTILS.Get_app_budget_cost_cb_ver(p_project_id);
10332
10333 l_plan_version_id := pa_progress_utils.get_app_cost_budget_cb_wor_ver(p_project_id);
10334
10335 /* End fix for Bug # 4115607. */
10336
10337 l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_FIN_STRUC_VER_ID(p_project_id);
10338 END IF;
10339
10340 BEGIN
10341 -- Bug 3627315 : Added code to conditionally call PJI API with diff parameters
10342 IF p_structure_type = 'WORKPLAN' THEN
10343 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
10344 p_project_id => p_project_id,
10345 p_struct_ver_id => p_structure_version_id,
10346 p_base_struct_ver_id => l_baselined_str_ver_id,
10347 p_project_element_id => p_project_element_id, ----bug 4183307
10348 p_program_rollup_flag => p_program_rollup_flag, -- bug 4392189
10349 p_calling_context => p_calling_context, -- bug 4392189
10350 p_as_of_date => p_as_of_date, -- bug 4392189
10351 x_return_status => l_return_status,
10352 x_msg_code => l_msg_data
10353 );
10354 ELSE --FINANCIAL
10355
10356 IF (l_plan_version_id is not null) THEN -- Added to fix Bug # 3813130.
10357
10358 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
10359 p_project_id => p_project_id,
10360 p_struct_ver_id => l_structure_version_id,
10361 p_workplan_flag => 'N', --This will populate financial data in pji tmp1 table.
10362 p_plan_version_id => l_plan_version_id,
10363 x_return_status => l_return_status,
10364 x_msg_code => l_msg_data
10365 );
10366
10367 end if; -- Added to fix Bug # 3813130.
10368
10369 END IF;
10370 EXCEPTION
10371 WHEN OTHERS THEN
10372 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10373 p_procedure_name => 'POPULATE_PJI_TAB_FOR_PLAN',
10374 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data Failed. SQLERRM='||SQLERRM,1,120));
10375 RAISE FND_API.G_EXC_ERROR;
10376 END;
10377
10378 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10379 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
10380 p_msg_name => l_msg_data);
10381 x_msg_data := l_msg_data;
10382 x_return_status := 'E';
10383 x_msg_count := l_msg_count;
10384 RAISE FND_API.G_EXC_ERROR;
10385 END IF;
10386
10387
10388 EXCEPTION
10389 when FND_API.G_EXC_ERROR then
10390 if p_commit = FND_API.G_TRUE then
10391 rollback to plan_qtys;
10392 end if;
10393 x_return_status := FND_API.G_RET_STS_ERROR;
10394 when FND_API.G_EXC_UNEXPECTED_ERROR then
10395 if p_commit = FND_API.G_TRUE then
10396 rollback to plan_qtys;
10397 end if;
10398 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10399 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10400 p_procedure_name => 'populate_pji_tab_for_plan',
10401 p_error_text => SUBSTRB(SQLERRM,1,120));
10402 when OTHERS then
10403 if p_commit = FND_API.G_TRUE then
10404 rollback to plan_qtys;
10405 end if;
10406 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10407 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10408 p_procedure_name => 'populate_pji_tab_for_plan',
10409 p_error_text => SUBSTRB(SQLERRM,1,120));
10410 raise;
10411 END populate_pji_tab_for_plan;
10412
10413 -- This API takes Actual and ETC incrmental amounts to update in PJI data model
10414
10415 PROCEDURE push_workplan_actuals(
10416 p_api_version IN NUMBER :=1.0
10417 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10418 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10419 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10420 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10421 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10422 ,p_debug_mode IN VARCHAR2 :='N'
10423 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10424 ,p_project_Id NUMBER
10425 ,p_structure_version_id NUMBER
10426 ,p_proj_element_id NUMBER
10427 ,p_object_id NUMBER
10428 ,p_object_type VARCHAR2
10429 ,p_as_of_date DATE
10430 ,p_resource_assignment_id NUMBER :=null -- Bug 4186007
10431 ,p_resource_list_member_id NUMBER :=null-- Bug 4186007
10432 ,p_rbs_element_id NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10433 ,p_rate_based_flag VARCHAR2 := 'Y' -- Default for Task
10434 ,p_resource_class_code VARCHAR2 :='PEOPLE' -- Default for Task
10435 -- ,p_TXN_CURRENCY_CODE VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR Bug 3595585 Removed not needed
10436 ,p_act_TXN_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10437 ,p_act_PRJ_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10438 ,p_act_POU_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10439 ,p_act_effort_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10440 ,p_etc_TXN_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10441 ,p_etc_PRJ_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10442 ,p_etc_POU_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10443 ,p_etc_effort_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10444 ,p_call_pji_apis_flag VARCHAR2 := 'Y'
10445 ,p_act_TXN_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10446 ,p_act_PRJ_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10447 ,p_act_POU_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10448 ,p_etc_TXN_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10449 ,p_etc_PRJ_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10450 ,p_etc_POU_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10451 -- BUG # 3659659.
10452 ,p_txn_currency_code VARCHAR2 := null
10453 ,p_prj_currency_code VARCHAR2 := null
10454 ,p_pfn_currency_code VARCHAR2 := null
10455 -- BUG # 3659659.
10456 --bug3675107
10457 ,p_pa_period_name VARCHAR2 :=null
10458 ,p_gl_period_name VARCHAR2 :=null
10459 --bug3675107
10460 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10461 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10462 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10463 ,p_cbs_element_id NUMBER := null -- Added for CBS phase 2 16200605
10464 ) IS
10465 -- Bug 3621404 : Added parameters for raw cost fields. Existing fields will work as burdened cost
10466 l_api_name CONSTANT VARCHAR2(30) := 'push_workplan_actuals';
10467 l_api_version CONSTANT NUMBER := p_api_version;
10468 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10469 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10470 l_return_status VARCHAR2(1);
10471 l_msg_count NUMBER;
10472 l_msg_data VARCHAR2(250);
10473
10474
10475 CURSOR cur_rollup(c_period_type VARCHAR2)
10476 IS
10477 SELECT decode(c_period_type, 'P', PROG_PA_PERIOD_NAME, 'G', PROG_GL_PERIOD_NAME, null )
10478 FROM pa_progress_rollup
10479 WHERE project_id = p_project_id
10480 AND object_id = p_object_id
10481 AND proj_element_id = p_proj_element_id
10482 AND as_of_date = p_as_of_date
10483 AND structure_type = 'WORKPLAN'
10484 AND NVL(cbs_element_id,-1) = NVL(p_cbs_element_id,-1) --Added for CBS phase 2 16200605
10485 ;
10486
10487 l_period_name VARCHAR2(150);
10488 l_period_TYPE VARCHAR2(1);
10489 l_RBS_VERSION_ID NUMBER;
10490 l_structure_version_id NUMBER;
10491 l_RBS_ELEMENT_ID NUMBER;
10492 l_TXN_BRDN_COST NUMBER;
10493 l_PRJ_BRDN_COST NUMBER;
10494 l_PFC_BRDN_COST NUMBER;
10495 l_etc_quantity NUMBER; -- Bug 3595585
10496 l_org_id NUMBER; -- Bug 3595585
10497 l_rate_based_flag VARCHAR2(1); -- Bug 3595585
10498 l_ETC_TXN_BURDENED_COST NUMBER; -- Bug 3595585
10499 l_ETC_PRJ_BURDENED_COST NUMBER; -- Bug 3595585
10500 l_ETC_PFC_BURDENED_COST NUMBER; -- Bug 3595585
10501 l_resource_class_code pa_resource_assignments.resource_class_code%TYPE; -- Bug 3595585
10502 l_PLAN_TYPE_ID NUMBER; -- Bug 3595585
10503 l_PLAN_VERSION_ID NUMBER; -- Bug 3595585
10504 L_BASE_STRUCT_VER_ID NUMBER; -- Bug 3595585
10505 l_msg_code VARCHAR2(32);
10506 -- Bug 3621404 : Raw Cost Changes
10507 l_etc_TXN_raw_COST_this_period NUMBER;
10508 l_etc_PRJ_raw_COST_this_period NUMBER;
10509 l_etc_POU_raw_COST_this_period NUMBER;
10510
10511 -- BUG # 3659659.
10512
10513 l_txn_currency_code VARCHAR2(15) := null;
10514 l_prj_currency_code VARCHAR2(15) := null;
10515 l_pfn_currency_code VARCHAR2(15) := null;
10516
10517 cursor proj_all(p_project_id NUMBER) is
10518 select project_currency_code, projfunc_currency_code
10519 from pa_projects_all
10520 where project_id = p_project_id;
10521
10522 -- BUG # 3659659.
10523
10524 cursor cur_org_id(p_project_id NUMBER) is
10525 select org_id
10526 from pa_projects
10527 where project_id = p_project_Id;
10528
10529 --bug3675107
10530 l_pa_period_name VARCHAR2(30) :=null;
10531 l_gl_period_name VARCHAR2(30) :=null;
10532 --bug3675107
10533 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
10534
10535 -- Bug 4186007 Begin
10536 l_structure_sharing_code VARCHAR2(30);
10537 l_sharing_Enabled VARCHAR2(1);
10538 l_split_workplan VARCHAR2(1);
10539 -- Bug 4186007 End
10540
10541 BEGIN
10542
10543 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10544 IF g1_debug_mode = 'Y' THEN
10545 pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_workplan_actuals');
10546 END IF;
10547
10548 IF (p_debug_mode = 'Y') THEN
10549 IF g1_debug_mode = 'Y' THEN
10550 pa_debug.debug('PA_PROGRESS_PUB.push_workplan_actuals');
10551 END IF;
10552 END IF;
10553
10554 IF (p_commit = FND_API.G_TRUE) THEN
10555 savepoint push_actuals;
10556 END IF;
10557
10558 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10559 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10560 END IF;
10561
10562 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10563 FND_MSG_PUB.initialize;
10564 END IF;
10565
10566 x_return_status := FND_API.G_RET_STS_SUCCESS;
10567 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
10568
10569 IF NVL(p_structure_version_id,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM --bug 3625085
10570 THEN
10571 l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_WP_VERSION(p_project_id);
10572 ELSE
10573 l_structure_version_id := p_structure_version_id;
10574 END IF;
10575
10576 IF p_RBS_ELEMENT_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10577 THEN
10578 l_RBS_ELEMENT_ID := null;
10579 ELSE
10580 l_RBS_ELEMENT_ID := p_RBS_ELEMENT_ID;
10581 END IF;
10582
10583 -- Bug 3595585 : Added following checks
10584
10585
10586 IF p_etc_effort_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10587 THEN
10588 l_ETC_QUANTITY := null;
10589 ELSE
10590 l_ETC_QUANTITY := p_etc_effort_this_period;
10591 END IF;
10592
10593 IF p_etc_TXN_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10594 THEN
10595 l_ETC_TXN_BURDENED_COST := null;
10596 ELSE
10597 l_ETC_TXN_BURDENED_COST := p_etc_TXN_COST_this_period;
10598 END IF;
10599
10600 IF p_etc_PRJ_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10601 THEN
10602 l_ETC_PRJ_BURDENED_COST := null;
10603 ELSE
10604 l_ETC_PRJ_BURDENED_COST := p_etc_PRJ_COST_this_period;
10605 END IF;
10606
10607 IF p_etc_POU_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10608 THEN
10609 l_ETC_PFC_BURDENED_COST := null;
10610 ELSE
10611 l_ETC_PFC_BURDENED_COST := p_etc_POU_COST_this_period;
10612 END IF;
10613
10614 IF p_resource_class_code IS NULL
10615 THEN
10616 l_resource_class_code := 'PEOPLE';
10617 ELSE
10618 l_resource_class_code := p_resource_class_code;
10619 END IF;
10620
10621 IF p_rate_based_flag IS NULL
10622 THEN
10623 l_rate_based_flag := 'Y';
10624 ELSE
10625 l_rate_based_flag := p_rate_based_flag;
10626 END IF;
10627 -- Bug 3621404 : Raw Cost Changes
10628
10629
10630 IF p_etc_TXN_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10631 THEN
10632 l_etc_TXN_raw_COST_this_period := null;
10633 ELSE
10634 l_etc_TXN_raw_COST_this_period := p_etc_TXN_raw_COST_this_period;
10635 END IF;
10636
10637 IF p_etc_PRJ_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10638 THEN
10639 l_etc_PRJ_raw_COST_this_period := null;
10640 ELSE
10641 l_etc_PRJ_raw_COST_this_period := p_etc_PRJ_raw_COST_this_period;
10642 END IF;
10643
10644 IF p_etc_POU_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10645 THEN
10646 l_etc_POU_raw_COST_this_period := null;
10647 ELSE
10648 l_etc_POU_raw_COST_this_period := p_etc_POU_raw_COST_this_period;
10649 END IF;
10650
10651 BEGIN
10652 open cur_org_id(p_project_id);
10653 fetch cur_org_id into l_org_id;
10654 close cur_org_id;
10655 END;
10656
10657 BEGIN
10658 l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase( l_structure_version_id ); -- Bug 3608422 : passing l_ instead of p_
10659 EXCEPTION
10660 WHEN OTHERS THEN
10661 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10662 p_procedure_name => 'push_workplan_actuals',
10663 p_error_text => SUBSTRB('PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase:'||SQLERRM,1,120));
10664 RAISE FND_API.G_EXC_ERROR;
10665 END;
10666
10667
10668 IF l_period_type = 'P' AND p_pa_period_name IS NOT NULL
10669 THEN
10670 l_PERIOD_NAME := p_pa_period_name;
10671 ELSIF l_period_type = 'P' AND p_pa_period_name IS NULL
10672 THEN
10673 l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
10674 END IF;
10675
10676 IF l_period_type = 'G' AND p_gl_period_name IS NOT NULL
10677 THEN
10678 l_PERIOD_NAME := p_gl_period_name;
10679 ELSIF l_period_type = 'G' AND p_gl_period_name IS NULL
10680 THEN
10681 l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
10682 END IF;
10683
10684 --bug 3675107
10685
10686 BEGIN
10687 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
10688 EXCEPTION
10689 WHEN OTHERS THEN
10690 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10691 p_procedure_name => 'PUSH_WORKPLAN_ACTUALS',
10692 p_error_text => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id:'||SQLERRM,1,120));
10693 RAISE FND_API.G_EXC_ERROR;
10694 END;
10695
10696 BEGIN
10697 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
10698 p_project_id => p_project_id,
10699 p_plan_type_id => -1,
10700 p_proj_str_ver_id => l_structure_version_id) ;
10701 EXCEPTION
10702 WHEN OTHERS THEN
10703 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10704 p_procedure_name => 'PUSH_WORKPLAN_ACTUALS',
10705 p_error_text => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_version_id:'||SQLERRM,1,120));
10706 RAISE FND_API.G_EXC_ERROR;
10707 END;
10708
10709 BEGIN
10710
10711 -- BUG # 3659659. Obtain proper values of currency codes if they are null.
10712
10713 if (p_prj_currency_code is null or p_pfn_currency_code is null) then
10714 open proj_all(p_project_id);
10715 fetch proj_all INTO l_prj_currency_code, l_pfn_currency_code;
10716 close proj_all;
10717 end if;
10718
10719 if (p_prj_currency_code is not null) then
10720 l_prj_currency_code := p_prj_currency_code;
10721 end if;
10722
10723 if (p_pfn_currency_code is not null) then
10724 l_pfn_currency_code := p_pfn_currency_code;
10725 end if;
10726
10727 if (p_txn_currency_code is null) then
10728 l_txn_currency_code := l_prj_currency_code;
10729 else
10730 l_txn_currency_code := p_txn_currency_code;
10731 end if;
10732
10733 -- Bug 3801745 : Commneted below code, not required now
10734 --IF l_rate_based_flag = 'N' THEN -- Bug 3836485
10735 -- l_act_quantity := null;
10736 -- l_ETC_QUANTITY := null;
10737 --END IF;
10738
10739 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
10740 l_TXN_BRDN_COST := null;
10741 l_PRJ_BRDN_COST := null;
10742 l_PFC_BRDN_COST := null;
10743 l_ETC_TXN_BURDENED_COST := null;
10744 l_ETC_PRJ_BURDENED_COST := null;
10745 l_ETC_PFC_BURDENED_COST := null;
10746 l_etc_TXN_raw_COST_this_period := null;
10747 l_etc_PRJ_raw_COST_this_period := null;
10748 l_etc_POU_raw_COST_this_period := null;
10749 END IF;
10750
10751
10752
10753 IF g1_debug_mode = 'Y' THEN
10754 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Log_Level=> 3);
10755 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_PROJECT_ID='||p_PROJECT_ID, x_Log_Level=> 3);
10756 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_org_id='||l_org_id, x_Log_Level=> 3);
10757 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_PROJ_ELEMENT_ID='||p_PROJ_ELEMENT_ID, x_Log_Level=> 3);
10758 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
10759 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PERIOD_NAME='||l_PERIOD_NAME, x_Log_Level=> 3);
10760 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_period_TYPE='||l_period_TYPE, x_Log_Level=> 3);
10761 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
10762 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_RBS_ELEMENT_ID='||l_RBS_ELEMENT_ID, x_Log_Level=> 3);
10763 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_plan_version_id='||l_plan_version_id, x_Log_Level=> 3);
10764 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_plan_type_id='||l_plan_type_id, x_Log_Level=> 3);
10765 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_txn_currency_code='||l_txn_currency_code, x_Log_Level=> 3);
10766 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_prj_currency_code='||l_prj_currency_code, x_Log_Level=> 3);
10767 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_pfn_currency_code='||l_pfn_currency_code, x_Log_Level=> 3);
10768 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_resource_class_code='||l_resource_class_code, x_Log_Level=> 3);
10769 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_rate_based_flag='||l_rate_based_flag, x_Log_Level=> 3);
10770 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_TXN_BRDN_COST='||l_TXN_BRDN_COST, x_Log_Level=> 3);
10771 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PRJ_BRDN_COST='||l_PRJ_BRDN_COST, x_Log_Level=> 3);
10772 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PFC_BRDN_COST='||l_PFC_BRDN_COST, x_Log_Level=> 3);
10773 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_QUANTITY='||l_ETC_QUANTITY, x_Log_Level=> 3);
10774 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_TXN_BURDENED_COST='||l_ETC_TXN_BURDENED_COST, x_Log_Level=> 3);
10775 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_PRJ_BURDENED_COST='||l_ETC_PRJ_BURDENED_COST, x_Log_Level=> 3);
10776 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_PFC_BURDENED_COST='||l_ETC_PFC_BURDENED_COST, x_Log_Level=> 3);
10777 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_TXN_raw_COST_this_period='||l_etc_TXN_raw_COST_this_period, x_Log_Level=> 3);
10778 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_raw_COST_this_period, x_Log_Level=> 3);
10779 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_POU_raw_COST_this_period='||l_etc_POU_raw_COST_this_period, x_Log_Level=> 3);
10780 END IF;
10781
10782
10783 -- Bug 15928585
10784 -- Commenting this insert since after this PJI API is not called.
10785 -- This data is staying in the table and is getting used in the next user update to plan
10786 -- amounts and causing data corruption.
10787 /* INSERT INTO PJI_FM_EXTR_PLAN_LINES (
10788 PROJECT_ID
10789 ,PROJECT_ORG_ID
10790 ,PROJECT_ELEMENT_ID
10791 ,STRUCT_VER_ID
10792 ,PERIOD_NAME
10793 ,CALENDAR_TYPE
10794 ,START_DATE
10795 ,END_DATE
10796 ,RBS_ELEMENT_ID
10797 ,RBS_VERSION_ID
10798 ,PLAN_VERSION_ID
10799 ,PLAN_TYPE_ID
10800 ,WP_VERSION_FLAG
10801 ,ROLLUP_TYPE
10802 ,TXN_CURRENCY_CODE
10803 ,TXN_RAW_COST
10804 ,TXN_BURDENED_COST
10805 ,TXN_REVENUE
10806 ,PRJ_CURRENCY_CODE
10807 ,PRJ_RAW_COST
10808 ,PRJ_BURDENED_COST
10809 ,PRJ_REVENUE
10810 ,PFC_CURRENCY_CODE
10811 ,PFC_RAW_COST
10812 ,PFC_BURDENED_COST
10813 ,PFC_REVENUE
10814 ,QUANTITY
10815 ,RESOURCE_CLASS_CODE
10816 ,RATE_BASED_FLAG
10817 ,ETC_QUANTITY
10818 ,ETC_TXN_BURDENED_COST
10819 ,ETC_PRJ_BURDENED_COST
10820 ,ETC_PFC_BURDENED_COST
10821 ,ETC_TXN_RAW_COST
10822 ,ETC_PRJ_RAW_COST
10823 ,ETC_PFC_RAW_COST
10824 ,CBS_ELEMENT_ID -- Added for CBS PHASE 2 16200605
10825 )
10826 values(
10827 p_PROJECT_ID
10828 ,l_org_id
10829 ,p_PROJ_ELEMENT_ID
10830 ,l_structure_version_id
10831 ,l_PERIOD_NAME
10832 ,l_period_TYPE
10833 ,null
10834 ,p_as_of_date
10835 ,l_RBS_ELEMENT_ID
10836 ,null
10837 ,l_plan_version_id
10838 ,l_plan_type_id
10839 ,'Y'
10840 ,'W'
10841 ,l_txn_currency_code
10842 ,null
10843 ,null
10844 ,null
10845 ,l_prj_currency_code
10846 ,null
10847 ,null
10848 ,null
10849 ,l_pfn_currency_code
10850 ,null
10851 ,null
10852 ,null
10853 ,null
10854 ,l_resource_class_code
10855 ,l_rate_based_flag
10856 ,l_ETC_QUANTITY
10857 ,l_ETC_TXN_BURDENED_COST
10858 ,l_ETC_PRJ_BURDENED_COST
10859 ,l_ETC_PFC_BURDENED_COST
10860 ,l_etc_TXN_raw_COST_this_period
10861 ,l_etc_PRJ_raw_COST_this_period
10862 ,l_etc_POU_raw_COST_this_period
10863 ,P_CBS_ELEMENT_ID -- Added for CBS PHASE 2 16200605
10864 );*/
10865 -- End Bug 15928585
10866 EXCEPTION
10867 WHEN OTHERS THEN
10868 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10869 p_procedure_name => 'push_workplan_actuals',
10870 p_error_text => SUBSTRB('INSERT INTO PJI_FM_EXTR_PLAN_LINES:'||SQLERRM,1,120));
10871 RAISE FND_API.G_EXC_ERROR;
10872 END;
10873
10874 -- Bug 4186007 Begin
10875 -- Now we will not use POPULATE_PRG_ACT_TBL_SINGLE to poulate the PA_PROG_ACT_BY_PERIOD_TEMP
10876 -- it was populating the cumulative amount.
10877 -- Now we will populate the incrmental amount and will call API MAINTAIN_ACTUAL_AMT_WRP
10878 -- with p_extraction_type as INCRMENTAL
10879 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
10880 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
10881 IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) THEN
10882 l_split_workplan := 'Y';
10883 ELSE
10884 l_split_workplan := 'N';
10885 END IF;
10886
10887 IF NVL(l_split_workplan, 'N') = 'Y' AND p_resource_assignment_id IS NOT NULL THEN
10888 --delete from PA_PROG_ACT_BY_PERIOD_TEMP;
10889 -- 3994165 : Deletion is now moved to the wrapper Bulk API.
10890
10891 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
10892 project_id
10893 , structure_version_id
10894 , task_id
10895 , resource_assignment_id
10896 , as_of_date
10897 , actual_cost
10898 , actual_effort
10899 , period_name
10900 , txn_currency_code
10901 , actual_cost_pc
10902 , actual_cost_fc
10903 , actual_rawcost
10904 , actual_rawcost_pc
10905 , actual_rawcost_fc
10906 , hidden_res_assgn_id
10907 , resource_list_member_id
10908 , current_flag
10909 , object_type
10910 , percent_complete_id
10911 , attribute1
10912 , attribute2
10913 , attribute3
10914 , attribute4
10915 , attribute5
10916 , attribute6
10917 , start_date -- 4310021
10918 , finish_date -- 4310021
10919 )
10920 VALUES (
10921 p_PROJECT_ID
10922 , l_structure_version_id
10923 , p_PROJ_ELEMENT_ID
10924 , p_resource_assignment_id
10925 , p_as_of_date
10926 , p_act_TXN_COST_this_period
10927 , p_act_effort_this_period
10928 , l_PERIOD_NAME
10929 , l_txn_currency_code
10930 , p_act_PRJ_COST_this_period
10931 , p_act_POU_COST_this_period
10932 , p_act_TXN_raw_COST_this_period
10933 , p_act_PRJ_raw_COST_this_period
10934 , p_act_POU_raw_COST_this_period
10935 , to_number(null)
10936 , p_resource_list_member_id
10937 , to_char(null)
10938 , p_object_type
10939 , to_number(null)
10940 , to_char(null)
10941 , to_char(null)
10942 , to_char(null)
10943 , to_number(null)
10944 , to_number(null)
10945 , to_number(null)
10946 , p_as_of_date -- 4310021
10947 , p_as_of_date -- 4310021
10948 );
10949
10950 END IF; -- NVL(l_split_workplan, 'N') = 'Y'
10951 -- Bug 4186007 End
10952
10953
10954 -- Call PJI API's if p_call_pji_apis_flag is set.
10955
10956 -- NO NEED TO CALL PLAN_UPDATE HERE. IT IS CALLED IN UPDATE_PROGRESS ONLY
10957
10958
10959 IF x_return_status <> 'S' THEN
10960 RAISE FND_API.G_EXC_ERROR;
10961 END IF;
10962
10963 EXCEPTION
10964 when FND_API.G_EXC_ERROR then
10965 if p_commit = FND_API.G_TRUE then
10966 rollback to push_actuals;
10967 end if;
10968 x_return_status := FND_API.G_RET_STS_ERROR;
10969 when FND_API.G_EXC_UNEXPECTED_ERROR then
10970 if p_commit = FND_API.G_TRUE then
10971 rollback to push_actuals;
10972 end if;
10973 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10974 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10975 p_procedure_name => 'push_workplan_actuals',
10976 p_error_text => SUBSTRB(SQLERRM,1,120));
10977 when OTHERS then
10978 if p_commit = FND_API.G_TRUE then
10979 rollback to push_actuals;
10980 end if;
10981 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10982 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10983 p_procedure_name => 'push_workplan_actuals',
10984 p_error_text => SUBSTRB(SQLERRM,1,120));
10985 raise;
10986 END push_workplan_actuals;
10987
10988 -- Progress Management Change for bug # 3420093.
10989
10990 PROCEDURE program_rollup_pvt(
10991 p_api_version IN NUMBER :=1.0
10992 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10993 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10994 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10995 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10996 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10997 ,p_debug_mode IN VARCHAR2 :='N'
10998 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10999 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11000 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
11001 ,p_structure_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
11002 ,p_structure_ver_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11003 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11004 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
11005 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11006 )
11007 IS
11008 l_api_name CONSTANT VARCHAR2(30) := 'PROGRAM_ROLLUP_PVT';
11009 l_api_version CONSTANT NUMBER := p_api_version;
11010 l_user_id NUMBER := FND_GLOBAL.USER_ID;
11011 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
11012 l_return_status VARCHAR2(1);
11013 l_msg_count NUMBER;
11014 l_msg_data VARCHAR2(250);
11015 g1_debug_mode VARCHAR2(1);
11016
11017 BEGIN
11018
11019 --Open Question:
11020 --1. The parent Project progress record should go to the parent project cycle date.
11021 --As of now it is going with just passed as of date.
11022 --2.
11023 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11024
11025 IF g1_debug_mode = 'Y' THEN
11026 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
11027 END IF;
11028
11029 IF g1_debug_mode = 'Y' THEN
11030 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
11031 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
11032 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_ver_id='||p_structure_ver_id, x_Log_Level=> 3);
11033 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
11034 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
11035 END IF;
11036
11037 IF g1_debug_mode = 'Y' THEN
11038 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
11039 END IF;
11040
11041 IF (p_commit = FND_API.G_TRUE) THEN
11042 savepoint PROGRAM_ROLLUP_PVT;
11043 END IF;
11044
11045 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
11046 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11047 END IF;
11048
11049 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11050 FND_MSG_PUB.initialize;
11051 END IF;
11052
11053 x_return_status := FND_API.G_RET_STS_SUCCESS;
11054
11055 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
11056
11057 PA_PROGRESS_PVT.program_rollup_pvt(
11058 p_api_version => p_api_version
11059 ,p_init_msg_list => p_init_msg_list
11060 ,p_commit => p_commit
11061 ,p_validate_only => p_validate_only
11062 ,p_validation_level => p_validation_level
11063 ,p_calling_module => p_calling_module
11064 ,p_debug_mode => p_debug_mode
11065 ,p_max_msg_count => p_max_msg_count
11066 ,p_project_id => p_project_id
11067 ,p_as_of_date => p_as_of_date
11068 ,p_structure_type => p_structure_type
11069 ,p_structure_ver_id => p_structure_ver_id
11070 ,x_return_status => l_return_status
11071 ,x_msg_count => l_msg_count
11072 ,x_msg_data => l_msg_data);
11073
11074 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11075 x_msg_data := l_msg_data;
11076 x_return_status := 'E';
11077 x_msg_count := l_msg_count;
11078 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11079 END IF;
11080
11081 IF (p_commit = FND_API.G_TRUE) THEN
11082 COMMIT;
11083 END IF;
11084
11085 EXCEPTION
11086 when FND_API.G_EXC_ERROR then
11087 if p_commit = FND_API.G_TRUE then
11088 rollback to PROGRAM_ROLLUP_PVT;
11089 end if;
11090 x_return_status := FND_API.G_RET_STS_ERROR;
11091 when FND_API.G_EXC_UNEXPECTED_ERROR then
11092 if p_commit = FND_API.G_TRUE then
11093 rollback to PROGRAM_ROLLUP_PVT;
11094 end if;
11095 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11096 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11097 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
11098 p_error_text => SUBSTRB(SQLERRM,1,120));
11099 when OTHERS then
11100 if p_commit = FND_API.G_TRUE then
11101 rollback to PROGRAM_ROLLUP_PVT;
11102 end if;
11103 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11104 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11105 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
11106 p_error_text => SUBSTRB(SQLERRM,1,120));
11107 raise;
11108 END program_rollup_pvt;
11109
11110 PROCEDURE transfer_wp_percent_to_fin(
11111 p_api_version IN NUMBER :=1.0
11112 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
11113 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
11114 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
11115 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
11116 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
11117 ,p_debug_mode IN VARCHAR2 :='N'
11118 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11119 ,p_project_id IN NUMBER
11120 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11121 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
11122 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11123 )
11124 IS
11125 l_api_name CONSTANT VARCHAR2(30) := 'TRANSFER_WP_PERCENT_TO_FIN';
11126 l_api_version CONSTANT NUMBER := p_api_version;
11127 l_user_id NUMBER := FND_GLOBAL.USER_ID;
11128 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
11129 l_return_status VARCHAR2(1);
11130 l_msg_count NUMBER;
11131 l_msg_data VARCHAR2(250);
11132
11133 l_structure_sharing_code VARCHAR2(30);
11134 l_structure_version_id NUMBER;
11135 l_fin_structure_version_id NUMBER;
11136
11137 l_percent_bac NUMBER := 0;
11138 l_sum_bac NUMBER := 0;
11139 l_bac_task NUMBER := 0;
11140 l_percent_complete NUMBER := 0;
11141 l_wp_rollup_method VARCHAR2(30);
11142 g1_debug_mode VARCHAR2(1);
11143
11144
11145 CURSOR cur_fin_low_tasks(c_structure_type VARCHAR, c_structure_version_id number ) -- Bug 3957457 : Added c_structure_version_id
11146 IS
11147 -- Bug 3957457 : get percent complete from pa_progress_rollup instead of pa_percent_complete
11148 -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
11149 -- SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
11150 SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
11151 FROM pa_proj_element_versions ppv, pa_progress_rollup ppr
11152 WHERE ppv.project_id = p_project_id
11153 AND ppv.financial_task_flag = 'Y'
11154 AND ppv.parent_structure_version_id = c_structure_version_id -- Bug 3957457
11155 -- AND PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(ppv.element_version_id) = 'N' bug 4086613
11156 AND ppv.project_id = ppr.project_id(+)
11157 -- AND ppv.element_version_id = ppc.object_version_id(+)
11158 AND ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
11159 AND ppr.current_flag(+) = 'Y'
11160 AND ppr.structure_type(+) = c_structure_type
11161 AND ppr.structure_version_id(+) is null -- Bug 3957457
11162 and not exists (select 1
11163 from pa_object_relationships por,
11164 pa_proj_element_versions ppv1
11165 where por.object_id_from1 = ppv.element_version_id
11166 and relationship_type = 'S'
11167 and ppv1.element_version_id = por.object_id_to1
11168 and ppv1.financial_task_flag = 'Y')
11169 ;
11170
11171 -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
11172 CURSOR cur_wp_task( c_object_version_id NUMBER, c_structure_version_id number ) -- Bug 3952006 : Added c_structure_version_id
11173 IS
11174 -- Bug 3952006 : get percent complete from pa_progress_rollup instead of pa_percent_complete
11175 --SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
11176 SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
11177 FROM pa_proj_element_versions ppv, pa_progress_rollup ppr, pa_object_relationships por
11178 WHERE ppv.project_id = p_project_id
11179 AND ppv.parent_structure_version_id = c_structure_version_id -- Bug 3952006
11180 AND ppv.project_id = ppr.project_id(+)
11181 AND por.object_id_to1 = c_object_version_id
11182 AND por.relationship_type = 'M'
11183 AND ppv.element_version_id = por.object_id_from1
11184 -- AND ppv.element_version_id = ppc.object_version_id(+)
11185 AND ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
11186 AND ppr.current_flag(+) = 'Y'
11187 AND ppr.structure_type(+) = 'WORKPLAN'
11188 AND ppr.structure_version_id(+) is null -- Bug 3696820
11189 ;
11190
11191 -- Bug 3603636 : Added cusrosr c_get_task_weight_method and variable l_rollup_method
11192
11193 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
11194 IS
11195 SELECT task_weight_basis_code
11196 FROM pa_proj_progress_attr
11197 WHERE project_id = c_project_id
11198 AND structure_type = c_structure_type;
11199
11200 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
11201 l_baselined_str_ver_id NUMBER ;
11202 -- Bug 4136239 : Added l_call_rollup, l_call_update_progress
11203 l_call_rollup VARCHAR2(1):='N' ;
11204 l_call_update_progress VARCHAR2(1):='N' ;
11205
11206 -- Bug 4284353 Begin
11207 l_as_of_date DATE;
11208
11209 CURSOR c_max_date IS
11210 -- 4487630 : Now Date will be derived as max of existing financial as of date, workplan as of date, sysdate
11211 -- select max(decode(structure_type, 'WORKPLAN', as_of_date, as_of_date+1))
11212 select max(as_of_date)
11213 from pa_progress_rollup
11214 where project_id = p_project_id
11215 and structure_version_id is null
11216 and structure_type IN('WORKPLAN', 'FINANCIAL')
11217 and current_flag = 'Y';
11218 -- Bug 4284353 End
11219 BEGIN
11220 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11221
11222 IF g1_debug_mode = 'Y' THEN
11223 pa_debug.init_err_stack ('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
11224 END IF;
11225
11226
11227 IF g1_debug_mode = 'Y' THEN
11228 pa_debug.debug('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
11229 END IF;
11230
11231
11232 IF g1_debug_mode = 'Y' THEN
11233 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'p_project_id : '||p_project_id, x_Log_Level=> 3);
11234 END IF;
11235
11236
11237 IF (p_commit = FND_API.G_TRUE) THEN
11238 SAVEPOINT TRANSFER_WP_PERCENT_TO_FIN;
11239 END IF;
11240
11241 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
11242 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11243 END IF;
11244
11245 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11246 FND_MSG_PUB.initialize;
11247 END IF;
11248
11249
11250 x_return_status := FND_API.G_RET_STS_SUCCESS;
11251
11252 IF g1_debug_mode = 'Y' THEN
11253 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'getting the structure sharing code', x_Log_Level=> 3);
11254 END IF;
11255
11256 SELECT structure_sharing_code
11257 INTO l_structure_sharing_code
11258 FROM pa_projects_all
11259 WHERE project_id = p_project_id;
11260
11261
11262 l_fin_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'FINANCIAL');
11263
11264
11265 IF PA_PROJECT_STRUCTURE_UTILS.check_workplan_enabled(p_project_id) = 'N'
11266 THEN
11267 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11268 ,p_msg_name => 'PA_PS_WORKPLAN_DISABLED');
11269 x_msg_data := 'PA_PS_WORKPLAN_DISABLED';
11270 x_return_status := 'E';
11271 RAISE FND_API.G_EXC_ERROR;
11272 END IF;
11273
11274
11275 IF ((l_structure_sharing_code = 'SPLIT_NO_MAPPING') or l_structure_sharing_code is null) -- Added OR condition for Bug no 4767821.
11276 THEN
11277 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11278 ,p_msg_name => 'PA_TRAN_SHCODE_INV');
11279 x_msg_data := 'PA_TRAN_SHCODE_INV';
11280 x_return_status := 'E';
11281 RAISE FND_API.G_EXC_ERROR;
11282 END IF;
11283
11284 OPEN c_max_date;
11285 FETCH c_max_date INTO l_as_of_date;
11286 CLOSE c_max_date;
11287
11288 -- Bug 4284353
11289 -- Bug 7184046 - Reverted this change done as part of the bug 4284353 as copying progress from workplan is displaying sysdate rather than work plan as of date when workplan as of date < sysdate
11290 /*IF trunc(nvl(l_as_of_date,sysdate)) <= trunc(sysdate) THEN
11291 l_as_of_date := trunc(sysdate);
11292 END IF; */
11293
11294
11295 IF g1_debug_mode = 'Y' THEN
11296 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'l_fin_structure_version_id : '||l_fin_structure_version_id, x_Log_Level=> 3);
11297 END IF;
11298
11299 IF g1_debug_mode = 'Y' THEN
11300 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'l_structure_sharing_code : '||l_structure_sharing_code, x_Log_Level=> 3);
11301 END IF;
11302
11303 IF l_structure_sharing_code = 'SHARE_FULL' OR l_structure_sharing_code = 'SHARE_PARTIAL'
11304 THEN
11305 FOR cur_task IN cur_fin_low_tasks('WORKPLAN', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
11306 LOOP
11307
11308 IF g1_debug_mode = 'Y' THEN
11309 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'percent complete : '||cur_task.completed_percentage, x_Log_Level=> 3);
11310 END IF;
11311
11312 IF g1_debug_mode = 'Y' THEN
11313 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'element version id : '||cur_task.element_version_id, x_Log_Level=> 3);
11314 END IF;
11315
11316 IF cur_task.completed_percentage IS NOT NULL
11317 THEN
11318 l_call_rollup := 'Y'; -- Bug 4136239
11319 PA_PROGRESS_PUB.UPDATE_PROGRESS(
11320 p_action => 'PUBLISH'
11321 ,P_rollup_entire_wbs_flag => 'Y'
11322 ,p_progress_mode => 'FUTURE'
11323 ,p_project_id => p_project_id
11324 ,p_object_id => cur_task.proj_element_id
11325 ,p_object_version_id => cur_task.element_version_id
11326 ,p_object_type => 'PA_TASKS'
11327 ,p_as_of_date => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
11328 ,p_percent_complete => cur_task.completed_percentage
11329 ,p_structure_type => 'FINANCIAL'
11330 ,p_structure_version_id => l_fin_structure_version_id
11331 ,p_task_id => cur_task.proj_element_id -- FPM Dev CR 2
11332 ,p_record_version_number => cur_task.record_version_number
11333 ,p_transfer_wp_pc_flag => 'Y'
11334 ,x_return_status => l_return_status
11335 ,x_msg_count => l_msg_count
11336 ,x_msg_data => l_msg_data
11337 );
11338 END IF;
11339
11340 END LOOP;
11341
11342 ELSIF l_structure_sharing_code = 'SPLIT_MAPPING'
11343 THEN
11344 l_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id);
11345
11346 IF l_structure_version_id = -1
11347 THEN
11348 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11349 ,p_msg_name => 'PA_NO_PUBLISHED_VERSION');
11350 x_msg_data := 'PA_NO_PUBLISHED_VERSION';
11351 x_return_status := 'E';
11352 RAISE FND_API.G_EXC_ERROR;
11353 END IF;
11354 -- Bug 3696820 : begin
11355 BEGIN
11356 l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
11357 EXCEPTION
11358 WHEN OTHERS THEN
11359 l_baselined_str_ver_id := null;
11360 END;
11361
11362 pa_progress_pub.populate_pji_tab_for_plan(
11363 p_init_msg_list => FND_API.G_FALSE,
11364 p_calling_module => p_calling_module,
11365 p_project_id => p_project_id,
11366 p_structure_version_id => l_structure_version_id,
11367 p_baselined_str_ver_id => l_baselined_str_ver_id,
11368 p_structure_type => 'WORKPLAN',
11369 x_return_status => l_return_status,
11370 x_msg_count => l_msg_count,
11371 x_msg_data => l_msg_data
11372 );
11373
11374 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11375 x_msg_data := l_msg_data;
11376 x_return_status := 'E';
11377 x_msg_count := l_msg_count;
11378 RAISE FND_API.G_EXC_ERROR;
11379 END IF;
11380 -- Bug 3696820 : end
11381
11382 -- Bug 3952006 : Begin
11383 -- Commented the below code and added cursor call
11384 --SELECT task_weight_basis_code
11385 --INTO l_wp_rollup_method
11386 --FROM PA_PROJ_PROGRESS_ATTR
11387 --WHERE project_id = p_project_id
11388 --AND STRUCTURE_TYPE = 'FINANCIAL';
11389
11390 OPEN c_get_task_weight_method(p_project_id, 'WORKPLAN');
11391 FETCH c_get_task_weight_method INTO l_wp_rollup_method;
11392 CLOSE c_get_task_weight_method;
11393 -- Bug 3952006 : End
11394
11395 FOR cur_task IN cur_fin_low_tasks('FINANCIAL', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
11396 LOOP
11397 IF g1_debug_mode = 'Y' THEN
11398 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'fin element version id : '||cur_task.element_version_id, x_Log_Level=> 3);
11399 END IF;
11400 l_sum_bac := null; -- Bug 3952006
11401 l_percent_bac := null; -- Bug 3952006
11402 l_percent_complete := null; -- Bug 4136239
11403 l_call_update_progress := 'N'; -- Bug 4136239
11404
11405 FOR cur_per IN cur_wp_task(cur_task.element_version_id, l_structure_version_id) -- Bug 3952006 : Added l_structure_version_id
11406 LOOP
11407
11408 IF g1_debug_mode = 'Y' THEN
11409 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'wp element version id : '||cur_per.element_version_id, x_Log_Level=> 3);
11410 END IF;
11411 l_bac_task := null; -- Bug 3952006
11412 l_bac_task := PA_PROGRESS_UTILS.Get_BAC_Value(
11413 p_project_id => p_project_id
11414 ,p_task_weight_method => l_wp_rollup_method
11415 ,p_proj_element_id => cur_per.proj_element_id
11416 ,p_structure_version_id => l_structure_version_id
11417 ,p_structure_type => 'WORKPLAN'
11418 );
11419 -- Bug 3696820 : Used nvl
11420 l_percent_bac := nvl(l_percent_bac,0) + nvl(cur_per.completed_percentage,0) * nvl(l_bac_task,0);
11421 l_sum_bac := nvl(l_sum_bac,0) + nvl(l_bac_task,0);
11422 IF cur_per.completed_percentage IS NOT NULL THEN -- Bug 4136239
11423 -- If % complete is there on mapped tasks, then only for financial task update_progress shd be called
11424 l_call_update_progress := 'Y';
11425 END IF;
11426 END LOOP;
11427
11428 IF l_sum_bac <> 0
11429 THEN
11430 l_percent_complete := l_percent_bac/l_sum_bac;
11431 --Commented by rtarway, for BUG 3950574
11432 --l_percent_complete := round(l_percent_complete,2);
11433 END IF;
11434
11435 IF l_percent_complete IS NOT NULL AND l_call_update_progress = 'Y' -- Bug 4136239 Added l_call_update_progress
11436 THEN
11437 l_call_rollup := 'Y'; -- Bug 4136239
11438 PA_PROGRESS_PUB.UPDATE_PROGRESS(
11439 p_action => 'PUBLISH'
11440 ,P_rollup_entire_wbs_flag => 'Y'
11441 ,p_progress_mode => 'FUTURE'
11442 ,p_project_id => p_project_id
11443 ,p_object_id => cur_task.proj_element_id
11444 ,p_object_version_id => cur_task.element_version_id
11445 ,p_object_type => 'PA_TASKS'
11446 ,p_as_of_date => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
11447 ,p_percent_complete => l_percent_complete
11448 ,p_structure_type => 'FINANCIAL'
11449 ,p_structure_version_id => l_fin_structure_version_id
11450 ,p_task_id => cur_task.proj_element_id -- FPM Dev CR 2
11451 ,p_record_version_number => cur_task.record_version_number
11452 ,p_transfer_wp_pc_flag => 'Y'
11453 ,x_return_status => l_return_status
11454 ,x_msg_count => l_msg_count
11455 ,x_msg_data => l_msg_data
11456 );
11457 END IF;
11458 END LOOP;
11459 END IF;
11460
11461 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11462 x_msg_data := l_msg_data;
11463 x_return_status := 'E';
11464 x_msg_count := l_msg_count;
11465 RAISE FND_API.G_EXC_ERROR;
11466 END IF;
11467 -- Bug 3603636 : Added call of Rollup API
11468
11469 IF l_call_rollup = 'Y' THEN -- Bug 4136239
11470
11471 -- 4609910 : We need to call PJI temp table population here
11472 -- It is strange that the table did not find any data here
11473 -- so need to call it here
11474 PA_PROGRESS_PUB.populate_pji_tab_for_plan(
11475 p_project_id => p_project_id,
11476 p_structure_type => 'FINANCIAL',
11477 x_return_status => l_return_status,
11478 x_msg_count => l_msg_count,
11479 x_msg_data => l_msg_data
11480 );
11481
11482 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11483 x_msg_data := l_msg_data;
11484 x_return_status := 'E';
11485 x_msg_count := l_msg_count;
11486 RAISE FND_API.G_EXC_ERROR;
11487 END IF;
11488
11489 OPEN c_get_task_weight_method(p_project_id, 'FINANCIAL');
11490 FETCH c_get_task_weight_method INTO l_rollup_method;
11491 CLOSE c_get_task_weight_method;
11492
11493
11494 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
11495 p_init_msg_list => p_init_msg_list
11496 ,p_commit => p_commit
11497 --Added by rtarway for BUG 3696263
11498 ,p_calling_module => p_calling_module
11499 ,p_progress_mode => 'TRANSFER_WP_PC' --bug 4284353
11500
11501 ,p_validate_only => p_validate_only
11502 ,p_project_id => p_project_id
11503 ,p_structure_version_id => l_fin_structure_version_id
11504 ,p_as_of_date => trunc(l_as_of_date)
11505 ,p_fin_rollup_method => l_rollup_method
11506 ,p_rollup_entire_wbs => 'Y'
11507 ,p_structure_type => 'FINANCIAL'
11508 ,x_return_status => l_return_status
11509 ,x_msg_count => l_msg_count
11510 ,x_msg_data => l_msg_data);
11511
11512
11513 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11514 x_msg_data := l_msg_data;
11515 x_return_status := 'E';
11516 x_msg_count := l_msg_count;
11517 RAISE FND_API.G_EXC_ERROR;
11518 END IF;
11519 END IF; --IF l_call_rollup = 'Y'
11520
11521 IF (p_commit = FND_API.G_TRUE) THEN
11522 COMMIT;
11523 END IF;
11524 EXCEPTION
11525 when FND_API.G_EXC_ERROR then
11526 if p_commit = FND_API.G_TRUE then
11527 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11528 end if;
11529 x_return_status := FND_API.G_RET_STS_ERROR;
11530 when FND_API.G_EXC_UNEXPECTED_ERROR then
11531 if p_commit = FND_API.G_TRUE then
11532 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11533 end if;
11534 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11535 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11536 p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11537 p_error_text => SUBSTRB(SQLERRM,1,120));
11538 when OTHERS then
11539 if p_commit = FND_API.G_TRUE then
11540 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11541 end if;
11542 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11543 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11544 p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11545 p_error_text => SUBSTRB(SQLERRM,1,120));
11546 raise;
11547 END transfer_wp_percent_to_fin;
11548
11549 -- Bug 3839288 : Rewritten this procedure.
11550 --Bug 5027965. Made sure that the ETC cost is copied from current working version
11551 --if the latest progress is already applied
11552 PROCEDURE publish_progress(
11553 p_api_version IN NUMBER :=1.0
11554 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
11555 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
11556 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
11557 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
11558 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
11559 ,p_debug_mode IN VARCHAR2 :='N'
11560 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11561 ,p_project_id IN NUMBER
11562 ,p_working_str_ver_id IN NUMBER -- Bug 4190086
11563 ,p_pub_structure_version_id IN NUMBER -- Bug 3839288
11564 ,x_upd_new_elem_ver_id_flag OUT NOCOPY VARCHAR2 -- BUG 3951024, rtarway --File.Sql.39 bug 4440895
11565 ,x_as_of_date OUT NOCOPY DATE -- Bug 3839288 --File.Sql.39 bug 4440895
11566 ,x_task_weight_basis_code OUT NOCOPY VARCHAR2 -- Bug 3839288 --File.Sql.39 bug 4440895
11567 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11568 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
11569 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11570 )
11571 IS
11572 l_api_name CONSTANT VARCHAR2(30) := 'PUBLISH_PROGRESS';
11573 l_api_version CONSTANT NUMBER := p_api_version;
11574 l_return_status VARCHAR2(1);
11575 l_msg_count NUMBER;
11576 l_msg_data VARCHAR2(250);
11577 p_baseline_flag VARCHAR2(1):='N';
11578
11579 CURSOR C2(p_project_id NUMBER) is
11580 select max(trunc(as_of_date)) -- 5294838 truncate
11581 from pa_progress_rollup ppr
11582 where ppr.project_id = p_project_id
11583 and ppr.structure_version_id is null
11584 and ppr.structure_type = 'WORKPLAN'
11585 and current_flag = 'Y';
11586
11587 CURSOR cur_proj_prog_attr IS
11588 SELECT pppa.task_weight_basis_code
11589 FROM pa_proj_progress_attr pppa
11590 WHERE project_id=p_project_id
11591 AND structure_type ='WORKPLAN'
11592 ;
11593
11594
11595 CURSOR c_get_working_wp_progress is
11596 select ppr.*
11597 from pa_progress_rollup ppr
11598 where ppr.project_id = p_project_id
11599 -- and ppr.structure_version_id is not null -- Bug 4190086
11600 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11601 and ppr.structure_type = 'WORKPLAN';
11602
11603 -- Bug 4111107 : Added c_get_all_progress
11604 -- Bug 4871809, replaced ppr.* with column names to reduce sharable memory
11605 CURSOR c_get_all_progress is
11606 select PROJECT_ID,
11607 OBJECT_ID ,
11608 OBJECT_TYPE,
11609 AS_OF_DATE ,
11610 OBJECT_VERSION_ID,
11611 PROGRESS_STATUS_CODE,
11612 INCREMENTAL_WORK_QUANTITY ,
11613 CUMULATIVE_WORK_QUANTITY ,
11614 BASE_PERCENT_COMPLETE ,
11615 EFF_ROLLUP_PERCENT_COMP,
11616 COMPLETED_PERCENTAGE ,
11617 ESTIMATED_START_DATE ,
11618 ESTIMATED_FINISH_DATE ,
11619 ACTUAL_START_DATE ,
11620 ACTUAL_FINISH_DATE ,
11621 ESTIMATED_REMAINING_EFFORT ,
11622 BASE_PERCENT_COMP_DERIV_CODE,
11623 STRUCTURE_TYPE ,
11624 PROJ_ELEMENT_ID,
11625 STRUCTURE_VERSION_ID ,
11626 PPL_ACT_EFFORT_TO_DATE ,
11627 EQPMT_ACT_EFFORT_TO_DATE,
11628 OTH_ACT_COST_TO_DATE_TC ,
11629 OTH_ACT_COST_TO_DATE_FC,
11630 OTH_ACT_COST_TO_DATE_PC ,
11631 PPL_ACT_COST_TO_DATE_TC ,
11632 PPL_ACT_COST_TO_DATE_FC,
11633 PPL_ACT_COST_TO_DATE_PC ,
11634 EQPMT_ACT_COST_TO_DATE_TC,
11635 EQPMT_ACT_COST_TO_DATE_FC,
11636 EQPMT_ACT_COST_TO_DATE_PC,
11637 EARNED_VALUE ,
11638 CBS_ELEMENT_ID-- added for 16895485
11639 from pa_progress_rollup ppr
11640 where ppr.project_id = p_project_id
11641 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11642 and ppr.structure_type = 'WORKPLAN'
11643 and ppr.proj_element_id <> 0 -- 4398411
11644 and ppr.proj_element_id is not null -- 4398411
11645 UNION ALL
11646 select PROJECT_ID,
11647 OBJECT_ID ,
11648 OBJECT_TYPE,
11649 AS_OF_DATE ,
11650 OBJECT_VERSION_ID,
11651 PROGRESS_STATUS_CODE,
11652 INCREMENTAL_WORK_QUANTITY ,
11653 CUMULATIVE_WORK_QUANTITY ,
11654 BASE_PERCENT_COMPLETE ,
11655 EFF_ROLLUP_PERCENT_COMP,
11656 COMPLETED_PERCENTAGE ,
11657 ESTIMATED_START_DATE ,
11658 ESTIMATED_FINISH_DATE ,
11659 ACTUAL_START_DATE ,
11660 ACTUAL_FINISH_DATE ,
11661 ESTIMATED_REMAINING_EFFORT ,
11662 BASE_PERCENT_COMP_DERIV_CODE,
11663 STRUCTURE_TYPE ,
11664 PROJ_ELEMENT_ID,
11665 STRUCTURE_VERSION_ID ,
11666 PPL_ACT_EFFORT_TO_DATE ,
11667 EQPMT_ACT_EFFORT_TO_DATE,
11668 OTH_ACT_COST_TO_DATE_TC ,
11669 OTH_ACT_COST_TO_DATE_FC,
11670 OTH_ACT_COST_TO_DATE_PC ,
11671 PPL_ACT_COST_TO_DATE_TC ,
11672 PPL_ACT_COST_TO_DATE_FC,
11673 PPL_ACT_COST_TO_DATE_PC ,
11674 EQPMT_ACT_COST_TO_DATE_TC,
11675 EQPMT_ACT_COST_TO_DATE_FC,
11676 EQPMT_ACT_COST_TO_DATE_PC,
11677 EARNED_VALUE,
11678 CBS_ELEMENT_ID-- added for 16895485
11679 from pa_progress_rollup ppr1
11680 where ppr1.project_id = p_project_id
11681 and ppr1.structure_version_id IS NULL
11682 and ppr1.structure_type = 'WORKPLAN'
11683 and ppr1.current_flag = 'Y'
11684 and ppr1.proj_element_id <> 0 -- 4398411
11685 and ppr1.proj_element_id is not null -- 4398411
11686 and not exists
11687 (select 'xyz' from pa_progress_rollup ppr2
11688 where ppr2.project_id = ppr1.project_id
11689 and ppr2.object_id = ppr1.object_id
11690 and nvl(ppr2.proj_element_id,0) = nvl(ppr1.proj_element_id,0)
11691 and ppr2.structure_version_id = p_working_str_ver_id
11692 and ppr2.structure_type = 'WORKPLAN'
11693 )
11694 ;
11695
11696
11697 CURSOR c_get_ppc_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11698 select rowid, ppc.*
11699 from pa_percent_completes ppc
11700 where ppc.project_id = c_project_id
11701 and ppc.structure_type = 'WORKPLAN'
11702 --and trunc(ppc.date_computed) = trunc(c_as_of_date) -- Bug 4227280
11703 and ppc.published_flag = 'N' -- Bug 4227280
11704 and ppc.object_id = c_object_id
11705 and ppc.task_id = c_proj_element_id
11706 and ppc.object_type = c_object_type
11707 and NVL(ppc.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11708
11709 CURSOR c_get_last_ppc_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11710 select ppc.*
11711 from pa_percent_completes ppc
11712 where ppc.project_id = c_project_id
11713 and ppc.structure_type = 'WORKPLAN'
11714 ---and trunc(ppc.date_computed) <= trunc(c_as_of_date)
11715 and ppc.object_id = c_object_id
11716 and ppc.task_id = c_proj_element_id
11717 and ppc.object_type = c_object_type
11718 and ppc.current_flag = 'Y'
11719 and ppc.published_flag = 'Y'
11720 and NVL(ppc.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11721
11722 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER, c_object_type VARCHAR2) IS
11723 select element_version_id
11724 from pa_proj_element_versions
11725 where project_id = p_project_id
11726 and proj_element_id = c_proj_element_id
11727 and ((c_object_type <> 'PA_DELIVERABLES' and parent_structure_version_id = c_structure_version_id)
11728 OR c_object_type = 'PA_DELIVERABLES'); -- 4398411 : Added Deliverable condition
11729
11730 CURSOR c_get_progress_status(c_proj_element_id NUMBER) IS
11731 select initial_progress_status_code
11732 from pa_proj_elements
11733 , pa_task_types
11734 where project_id = p_project_id
11735 and proj_element_id = c_proj_element_id
11736 and type_id = task_type_id;
11737
11738 CURSOR c_get_ppr_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11739 select rowid, ppr.*
11740 from pa_progress_rollup ppr
11741 where ppr.project_id = c_project_id
11742 and ppr.structure_type = 'WORKPLAN'
11743 and ppr.structure_version_id is null
11744 --and trunc(ppr.as_of_date) = trunc(c_as_of_date) -- Bug 4227280
11745 and ppr.current_flag = 'W' -- Bug 4227280
11746 and ppr.object_id = c_object_id
11747 and ppr.proj_element_id = c_proj_element_id
11748 and ppr.object_type = c_object_type
11749 and NVL(ppr.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11750
11751 CURSOR c_get_last_ppr_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11752 select ppr.*
11753 from pa_progress_rollup ppr
11754 where ppr.project_id = c_project_id
11755 and ppr.structure_type = 'WORKPLAN'
11756 and ppr.structure_version_id is null
11757 ------ and trunc(ppr.as_of_date) < trunc(c_as_of_date) redundant cond. 4743866
11758 and ppr.object_id = c_object_id
11759 and ppr.proj_element_id = c_proj_element_id
11760 and ppr.object_type = c_object_type
11761 and ppr.current_flag = 'Y'
11762 and NVL(ppr.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11763
11764 CURSOR get_prev_published_ver IS
11765 SELECT a.element_version_id
11766 FROM pa_proj_elem_ver_structure a
11767 WHERE a.project_id = p_project_id
11768 AND a.LATEST_EFF_PUBLISHED_FLAG <> 'Y'
11769 AND a.STATUS_CODE = 'STRUCTURE_PUBLISHED'
11770 ORDER BY published_date desc;
11771
11772 CURSOR c_get_sch_dates(c_project_id NUMBER, c_object_version_id NUMBER) IS
11773 select scheduled_start_date, scheduled_finish_date
11774 from pa_proj_elem_ver_schedule
11775 where project_id = c_project_id
11776 and element_version_id = c_object_version_id ;
11777
11778 CURSOR c_ptav_cur(c_project_id NUMBER, c_object_id NUMBER, c_task_id NUMBER, c_task_version_id NUMBER, c_structure_version_id NUMBER, c_ta_display_flag VARCHAR2, c_cbs_element_id NUMBER) IS
11779 SELECT resource_class_code
11780 ,resource_list_member_id
11781 ,assignment_start_date
11782 ,assignment_end_date
11783 ,txn_currency_code
11784 ,resource_assignment_id
11785 ,planned_quantity
11786 ,planned_bur_cost_txn_cur
11787 ,planned_bur_cost_projfunc
11788 ,planned_bur_cost_proj_cur
11789 ,planned_raw_cost_txn_cur
11790 ,planned_raw_cost_proj_cur
11791 ,planned_raw_cost_projfunc
11792 ,rate_based_flag
11793 ,budget_version_id --- 4372462
11794 ,cbs_element_id
11795 FROM pa_task_asgmts_v
11796 WHERE project_id = c_project_id
11797 AND resource_list_member_id = c_object_id
11798 AND task_id = c_task_id
11799 AND task_version_id = c_task_version_id
11800 AND structure_version_id = c_structure_version_id
11801 and NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1);-- added for 16895485
11802 --AND ta_display_flag = c_ta_display_flag; bug 3958686, now select all assignments
11803
11804 l_ptav_rec c_ptav_cur%ROWTYPE;
11805
11806 l_ppc_rec c_get_ppc_rec%ROWTYPE;
11807 l_ppr_rec c_get_ppr_rec%ROWTYPE;
11808 l_last_ppc_rec c_get_last_ppc_rec%ROWTYPE;
11809 l_last_ppr_rec c_get_last_ppr_rec%ROWTYPE;
11810 l_as_of_date DATE := NULL;
11811 l_max_as_of_date DATE := NULL;
11812 l_user_id NUMBER := fnd_global.user_id;
11813 l_login_id NUMBER := fnd_global.login_id;
11814 l_published_by_party_id NUMBER := PA_UTILS.get_party_id(l_user_id);
11815 L_LATEST_PUB_WP_VERSION_ID NUMBER;
11816 L_PRE_PUB_STR_VER_ID NUMBER;
11817 L_TASK_WEIGHT_BASIS_CODE pa_proj_progress_attr.task_weight_basis_code%TYPE;
11818 L_OBJECT_VERSION_ID NUMBER;
11819 L_PROGRESS_STATUS_CODE pa_progress_rollup.progress_status_code%TYPE;
11820 L_ACTUAL_START_DATE DATE;
11821 L_ACTUAL_FINISH_DATE DATE;
11822 L_ESTIMATED_START_DATE DATE;
11823 L_ESTIMATED_FINISH_DATE DATE;
11824 L_TASK_STATUS pa_percent_completes.status_code%TYPE;
11825 L_PERCENT_COMPLETE_ID NUMBER;
11826 L_SYSTEM_STATUS_CODE pa_project_statuses.project_system_status_code%TYPE;
11827 L_PROGRESS_ROLLUP_ID NUMBER;
11828 L_BAC_VALUE NUMBER;
11829 L_EARNED_VALUE NUMBER;
11830 L_PROG_PA_PERIOD_NAME pa_progress_rollup.PROG_PA_PERIOD_NAME%TYPE;
11831 L_PROG_GL_PERIOD_NAME pa_progress_rollup.PROG_GL_PERIOD_NAME%TYPE;
11832 l_scheduled_start_date DATE;
11833 l_scheduled_finish_date DATE;
11834 l_baselined_str_ver_id NUMBER;
11835 l_oth_etc_quantity NUMBER;
11836 l_oth_etc_cost_tc NUMBER;
11837 l_oth_etc_cost_pc NUMBER;
11838 l_oth_etc_cost_fc NUMBER;
11839 l_oth_etc_rawcost_tc NUMBER;
11840 l_oth_etc_rawcost_pc NUMBER;
11841 l_oth_etc_rawcost_fc NUMBER;
11842 l_estimated_remaining_effort NUMBER;
11843 l_ppl_etc_cost_tc NUMBER;
11844 l_ppl_etc_cost_pc NUMBER;
11845 l_ppl_etc_cost_fc NUMBER;
11846 l_ppl_etc_rawcost_tc NUMBER;
11847 l_ppl_etc_rawcost_pc NUMBER;
11848 l_ppl_etc_rawcost_fc NUMBER;
11849 l_eqpmt_etc_effort NUMBER;
11850 l_eqpmt_etc_cost_tc NUMBER;
11851 l_eqpmt_etc_cost_pc NUMBER;
11852 l_eqpmt_etc_cost_fc NUMBER;
11853 l_eqpmt_etc_rawcost_tc NUMBER;
11854 l_eqpmt_etc_rawcost_pc NUMBER;
11855 l_eqpmt_etc_rawcost_fc NUMBER;
11856
11857 --reset ETC whenever workplan gets published.
11858
11859 l_etc_reset_flag VARCHAR2(1) := 'Y';
11860 --Added by rtarway for BUG 3951024
11861 l_upd_new_elem_ver_id_flag VARCHAR2(1) := 'Y';
11862
11863 CURSOR cur_lp_progress is
11864 select *
11865 from pa_progress_rollup ppr
11866 where ppr.project_id = p_project_id
11867 and ppr.structure_version_id is null
11868 and ppr.object_type = 'PA_TASKS'
11869 and structure_type = 'WORKPLAN'
11870 and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y' -- Bug 3627315 issue 8 Added this condition
11871 and pa_progress_utils.check_assignment_exists(p_project_id,ppr.object_version_id,ppr.object_type) = 'N' -- Bug 3627315 issue 8 Added this condition
11872 and current_flag = 'Y'
11873 Union
11874 select *
11875 from pa_progress_rollup ppr
11876 where ppr.project_id = p_project_id
11877 and ppr.structure_version_id is null
11878 and ppr.object_type = 'PA_ASSIGNMENTS'
11879 and structure_type = 'WORKPLAN'
11880 and current_flag = 'Y';
11881
11882 CURSOR c_ptav_cur_task(c_project_id NUMBER, c_object_id NUMBER, c_task_id NUMBER, c_task_version_id NUMBER, c_structure_version_id NUMBER, c_ta_display_flag VARCHAR2,c_cbs_element_id NUMBER) IS
11883 SELECT resource_class_code
11884 ,resource_list_member_id
11885 ,assignment_start_date
11886 ,assignment_end_date
11887 ,txn_currency_code
11888 ,resource_assignment_id
11889 ,planned_quantity
11890 ,planned_bur_cost_txn_cur
11891 ,planned_bur_cost_projfunc
11892 ,planned_bur_cost_proj_cur
11893 ,planned_raw_cost_txn_cur
11894 ,planned_raw_cost_proj_cur
11895 ,planned_raw_cost_projfunc
11896 ,rate_based_flag
11897 ,budget_version_id --- 4372462
11898 ,cbs_element_id
11899 FROM pa_task_asgmts_v
11900 WHERE project_id = c_project_id
11901 AND task_id = c_task_id
11902 AND task_version_id = c_task_version_id
11903 AND structure_version_id = c_structure_version_id
11904 AND ta_display_flag = c_ta_display_flag
11905 and NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1);-- added for 16895485
11906
11907 -- Bug 3865516 : Added c_get_task_status
11908 CURSOR c_get_task_status(c_project_id NUMBER, c_proj_element_id NUMBER) IS
11909 select status_code
11910 from pa_proj_elements
11911 where project_id = c_project_id
11912 and proj_element_id = c_proj_element_id;
11913
11914
11915 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
11916
11917 --bug 3906362
11918 l_EFF_ROLLUP_PERCENT_COMP NUMBER;
11919 l_planned_effort NUMBER;
11920 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30);
11921
11922 CURSOR cur_proj_elements(c_proj_element_id NUMBER)
11923 IS
11924 SELECT BASE_PERCENT_COMP_DERIV_CODE
11925 from pa_proj_elements
11926 where project_id = p_project_id
11927 and proj_element_id = c_proj_element_id;
11928
11929 CURSOR cur_task_plan (c_proj_element_id NUMBER)
11930 IS
11931 SELECT labor_effort
11932 FROM pji_xbs_plans_v
11933 WHERE project_id = p_project_id
11934 AND proj_element_id = c_proj_element_id
11935 AND STRUCTURE_VERSION_ID = p_pub_structure_version_id
11936 AND STRUCTURE_TYPE = 'WORKPLAN'
11937 ;
11938 --end bug 3906362
11939
11940 --bug 4191360, start
11941 /*CURSOR cur_task_plan_cost (c_proj_element_id NUMBER)
11942 IS
11943 SELECT nvl(BRDN_COST, 0)
11944 FROM pji_xbs_plans_v
11945 WHERE project_id = p_project_id
11946 AND proj_element_id = c_proj_element_id
11947 AND STRUCTURE_VERSION_ID = p_pub_structure_version_id
11948 AND STRUCTURE_TYPE = 'WORKPLAN'
11949 ;*/
11950 l_planned_cost NUMBER;
11951 l_assignment_exists VARCHAR2(1);
11952 --bug 4191360, end
11953
11954 -- ETC Changes
11955
11956 l_task_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11957 l_completed_percentage_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11958 l_project_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11959 l_object_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11960 l_object_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11961 l_cbs_element_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11962 l_object_version_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11963 l_progress_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11964 l_act_start_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11965 l_act_finish_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11966 l_est_start_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11967 l_est_finish_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11968 l_task_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11969 l_earned_value_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11970 l_incr_work_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11971 l_cumu_work_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11972 l_eff_rollup_percent_comp_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11973 l_base_prog_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11974 l_eff_roll_prog_stat_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11975 l_percent_complete_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11976 l_base_per_comp_deriv_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11977 l_base_perc_comp_tbl PA_PLSQL_DATATYPES.NumTabTyp; -- 4604661
11978
11979 l_ppl_act_effort_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11980 l_eqpmt_act_effort_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11981 l_oth_quantity_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11982
11983 l_eqpmt_etc_effort_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11984 l_est_remaining_effort_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11985 l_oth_etc_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11986
11987 l_ppl_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11988 l_ppl_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11989 l_ppl_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11990 l_ppl_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11991 l_ppl_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11992 l_ppl_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11993 l_eqpmt_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11994 l_eqpmt_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11995 l_eqpmt_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11996 l_eqpmt_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11997 l_eqpmt_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11998 l_eqpmt_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11999 l_oth_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12000 l_oth_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12001 l_oth_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12002 l_oth_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12003 l_oth_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12004 l_oth_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12005
12006 l_ppl_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12007 l_ppl_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12008 l_ppl_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12009 l_eqp_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12010 l_eqp_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12011 l_eqp_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12012 l_oth_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12013 l_oth_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12014 l_oth_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12015
12016 l_ppl_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12017 l_ppl_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12018 l_ppl_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12019 l_eqpmt_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12020 l_eqpmt_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12021 l_eqpmt_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12022 l_oth_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12023 l_oth_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12024 l_oth_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
12025
12026 l_projfunc_cost_rate_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
12027 l_projfunc_cost_exc_rate_tbl PA_PLSQL_DATATYPES.NumTabTyp;
12028 l_projfunc_cost_rate_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
12029 l_proj_cost_rate_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
12030 l_proj_cost_exchange_rate_tbl PA_PLSQL_DATATYPES.NumTabTyp;
12031 l_proj_cost_rate_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
12032 l_txn_currency_code_tbl PA_PLSQL_DATATYPES.Char15TabTyp;
12033 l_progress_rollup_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
12034
12035 l_description PA_PLSQL_DATATYPES.Char250TabTyp;
12036 TYPE pa_varchar2_4000_tbl_type IS TABLE OF VARCHAR2(4000);
12037 l_progress_comment pa_varchar2_4000_tbl_type:= pa_varchar2_4000_tbl_type();
12038
12039
12040 l_count Number;
12041 l_index Number;
12042
12043
12044 -- Bug 4282618 Begin
12045 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
12046 IS
12047 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
12048 from pa_task_types ttype
12049 , pa_proj_elements elem
12050 where elem.project_id = p_project_id
12051 and elem.proj_element_id = c_proj_element_id
12052 and elem.object_type = 'PA_TASKS'
12053 and elem.type_id = ttype.task_type_id;
12054
12055 l_prog_enabled_tbl PA_PLSQL_DATATYPES.Char1TabTyp;
12056 l_prog_enabled VARCHAR2(1);
12057 -- Bug 4282618 End
12058 l_prog_rec_found VARCHAR2(1):='N'; --4600547
12059
12060 --Bug 5027965
12061 l_etc_cost_calc_mode VARCHAR2(30);
12062 l_latest_prog_applied_flag VARCHAR2(1);
12063 l_plan_version_id pa_budget_versions.budget_version_id%TYPE;
12064 l_curr_workplan_ver_bv_id pa_budget_versions.budget_version_id%TYPE;
12065
12066 l_upd_rollup_prog varchar2(1) := 'N'; --5212999
12067
12068 --Bug 6499700
12069 l_last_ppc_pub_flag VARCHAR2(1);
12070
12071 BEGIN
12072
12073 -- LOGIAL FLOW OF API: PUBLISH_PROGRESS():
12074 -- ---------------------------------------
12075 --
12076 -- 1). Update current_flag in rollup table to 'N' for old records before inserting published records.
12077 -- 2). Find max(as_of_date) for all progress records for the project.
12078 -- 3). Find the next_progress_cycle date for the max(as_of_date).
12079 -- 4). Insert published progress records with the above next_progress_cycle date as as_of_date.
12080
12081 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
12082
12083 IF g1_debug_mode = 'Y' THEN
12084 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PUBLISH_PROGRESS');
12085 END IF;
12086
12087 IF g1_debug_mode = 'Y' THEN
12088 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'p_project_id : '||p_project_id, x_Log_Level=> 3);
12089 END IF;
12090
12091 IF (p_commit = FND_API.G_TRUE) THEN
12092 SAVEPOINT PUBLISH_PROGRESS;
12093 END IF;
12094
12095 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
12096 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12097 END IF;
12098
12099 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
12100 FND_MSG_PUB.initialize;
12101 END IF;
12102
12103 x_return_status := FND_API.G_RET_STS_SUCCESS;
12104
12105 -- Bug 4111107
12106 -- Now it will create Progress records for all objects
12107 -- for which they have progress records for working wp version
12108 -- or for published wp version
12109
12110 -- We should not be resetting ETC if ETC is overidden in publish wp version.
12111 -- This change will be done later
12112
12113
12114 -- Get max(as_of_date) for all progress records for the project.
12115
12116 OPEN c2(p_project_id);
12117 FETCH c2 INTO l_max_as_of_date;
12118 CLOSE c2;
12119
12120 IF g1_debug_mode = 'Y' THEN
12121 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_max_as_of_date='||l_max_as_of_date, x_Log_Level=> 3);
12122 END IF;
12123
12124 -- Get next_progress_cycle_date for max(as_of_date).
12125
12126 --- date should not move if it is in future 5226910(5212999)
12127 if (l_max_as_of_date >= trunc(sysdate)) then
12128 l_as_of_date := l_max_as_of_date;
12129 l_upd_rollup_prog := 'Y';
12130 else
12131 l_as_of_date := pa_progress_utils.get_next_progress_cycle(
12132 p_project_id => p_project_id
12133 ,p_task_id => null
12134 ,p_start_date => l_max_as_of_date);
12135 l_as_of_date := trunc(l_as_of_date); -- 5294838
12136 end if;
12137
12138
12139 -- On this l_as_of_date, there can be working progress record which we will update
12140 -- with working wp version progress
12141
12142 l_latest_pub_wp_version_id := p_pub_structure_version_id;--PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'WORKPLAN');
12143 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
12144
12145 IF g1_debug_mode = 'Y' THEN
12146 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
12147 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_latest_pub_wp_version_id='||l_latest_pub_wp_version_id, x_Log_Level=> 3);
12148 END IF;
12149
12150 OPEN cur_proj_prog_attr;
12151 FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
12152 CLOSE cur_proj_prog_attr;
12153
12154 -- ETC Changes Begin
12155 l_index := 0;
12156 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_as_of_date);
12157 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_as_of_date);
12158
12159 -- Bug 4111107 : Delete all Working Progress Records
12160 -- Previously it was getting deleted inside the curosr
12161
12162 DELETE from pa_percent_completes
12163 where project_id = p_project_id
12164 and structure_type = 'WORKPLAN'
12165 and published_flag = 'N';
12166
12167 DELETE from pa_progress_rollup
12168 where project_id = p_project_id
12169 and structure_type = 'WORKPLAN'
12170 and structure_version_id is null
12171 and current_flag = 'W';
12172
12173 --Bug 5027965. If the latest progress is applied on current working version then the ETC cost should be
12174 --copied from the working version. Otherwise, it shoule be derived based on the rate setup on as_of_date
12175 l_latest_prog_applied_flag := pa_progress_utils.check_wwp_prog_publishing_ok(p_project_id =>p_project_id,
12176 p_structure_version_id =>p_working_str_ver_id);
12177 IF (l_latest_prog_applied_flag = 'Y') THEN
12178
12179 l_etc_cost_calc_mode := 'COPY';
12180
12181 SELECT budget_version_id
12182 INTO l_curr_workplan_ver_bv_id
12183 FROM pa_budget_versions
12184 WHERE project_structure_version_id=p_working_str_ver_id;
12185
12186 ELSE
12187
12188 l_etc_cost_calc_mode:= 'DERIVE';
12189
12190 END IF;
12191
12192 -- Bug 4111107 : Replaced c_get_working_wp_progress to c_get_all_progress
12193 FOR l_rec IN c_get_all_progress LOOP
12194 l_index := l_index+1;
12195 l_eff_rollup_percent_comp := l_rec.eff_rollup_percent_comp; -- 4604661 : Initialize
12196 l_prog_rec_found :='Y'; --4600547
12197 IF g1_debug_mode = 'Y' THEN
12198 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_id='||l_rec.object_id, x_Log_Level=> 3);
12199 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.proj_element_id='||l_rec.proj_element_id, x_Log_Level=> 3);
12200 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_type='||l_rec.object_type, x_Log_Level=> 3);
12201 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_version_id='||l_rec.object_version_id, x_Log_Level=> 3);
12202 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.EFF_ROLLUP_PERCENT_COMP='||l_rec.EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12203 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.COMPLETED_PERCENTAGE='|| l_rec.COMPLETED_PERCENTAGE, x_Log_Level=> 3);
12204 END IF;
12205 -- Bug 4111107 : Now deletion of working record is moved above
12206 -- Check if ppc record is there on max as of date
12207 --l_ppc_rec := null;
12208 --OPEN c_get_ppc_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date);
12209 --FETCH c_get_ppc_rec INTO l_ppc_rec;
12210 --CLOSE c_get_ppc_rec;
12211
12212 --IF l_ppc_rec.project_id IS NOT NULL THEN
12213 -- If this is found, it means there exists working progress record
12214 -- delete it
12215 -- IF g1_debug_mode = 'Y' THEN
12216 -- pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPC Record Found, Deleting it', x_Log_Level=> 3);
12217 -- END IF;
12218 -- PA_PERCENT_COMPLETES_PKG.DELETE_ROW(l_ppc_rec.rowid);
12219 --END IF;
12220
12221 l_last_ppc_rec := null;
12222 OPEN c_get_last_ppc_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date,l_rec.cbs_element_id);
12223 FETCH c_get_last_ppc_rec INTO l_last_ppc_rec;
12224 CLOSE c_get_last_ppc_rec;
12225
12226 --Bug 3956234 : Now rollup record is opened here instead of below in the code.
12227 -- This was required to get the rollup progress status code.
12228
12229 -- Bug 4111107 : Now deletion of working record is moved above
12230 -- Check if ppr record is there on max as of date
12231 --l_ppr_rec := null;
12232 --OPEN c_get_ppr_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date);
12233 --FETCH c_get_ppr_rec INTO l_ppr_rec;
12234 --CLOSE c_get_ppr_rec;
12235
12236 --IF l_ppr_rec.project_id IS NOT NULL THEN
12237 -- If this is found, it means there exists working progress record
12238 -- delete it
12239 -- IF g1_debug_mode = 'Y' THEN
12240 -- pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPR Record Found, Deleting it', x_Log_Level=> 3);
12241 -- END IF;
12242 -- PA_PROGRESS_ROLLUP_PKG.DELETE_ROW(l_ppr_rec.rowid);
12243 --END IF;
12244
12245 l_last_ppr_rec := null;
12246 OPEN c_get_last_ppr_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date,l_rec.cbs_element_id);
12247 FETCH c_get_last_ppr_rec INTO l_last_ppr_rec;
12248 CLOSE c_get_last_ppr_rec;
12249
12250 --Bug 6499700 .For already published records, incremental_work_quantity should not be considered.
12251 BEGIN
12252 SELECT published_flag
12253 INTO l_last_ppc_pub_flag
12254 FROM pa_percent_completes
12255 WHERE percent_complete_id=l_last_ppr_rec.percent_complete_id;
12256 EXCEPTION
12257 WHEN NO_DATA_FOUND THEN
12258 l_last_ppc_pub_flag:='N';
12259 END;
12260
12261 IF l_last_ppc_pub_flag='Y' THEN
12262 l_last_ppr_rec.incremental_work_quantity:=to_number(null);
12263 END IF;
12264 --End of fix for bug Bug 6499700
12265
12266 l_object_version_id := null;
12267 l_progress_status_code := null;
12268 l_actual_start_date := null;
12269 l_actual_finish_date := null;
12270 l_estimated_start_date := null;
12271 l_estimated_finish_date := null;
12272 l_task_status := null;
12273 l_percent_complete_id := null;
12274
12275 -- Bug 4398411 : Added object_type in following cursor
12276 OPEN c_get_work_obj_ver_id(l_rec.proj_element_id, l_latest_pub_wp_version_id, l_rec.object_type);
12277 FETCH c_get_work_obj_ver_id INTO l_object_version_id;
12278 CLOSE c_get_work_obj_ver_id;
12279
12280 IF l_last_ppc_rec.progress_status_code IS NOT NULL THEN
12281 l_progress_status_code := l_last_ppc_rec.progress_status_code;
12282 --Bug 3956234 : Introduced rollup status code below.
12283 ELSIF NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code) IS NOT NULL THEN
12284 l_progress_status_code := NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code);
12285 ELSE
12286 OPEN c_get_progress_status(l_rec.proj_element_id);
12287 FETCH c_get_progress_status INTO l_progress_status_code;
12288 CLOSE c_get_progress_status;
12289 END IF;
12290
12291 l_estimated_start_date := l_rec.estimated_start_date;
12292 l_estimated_finish_date := l_rec.estimated_finish_date;
12293
12294 l_actual_start_date := l_rec.actual_start_date;
12295 l_actual_finish_date := l_rec.actual_finish_date;
12296
12297 -- Bug 3865516 : l_rec.completed_percentage and l_rec.EFF_ROLLUP_PERCENT_COMP shd not have OR
12298 -- it shd be NVL
12299 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) > 0 AND l_actual_start_date IS null) THEN
12300 OPEN c_get_sch_dates(p_project_id, l_rec.object_version_id);
12301 FETCH c_get_sch_dates INTO l_scheduled_start_date, l_scheduled_finish_date;
12302 CLOSE c_get_sch_dates;
12303 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
12304 END IF;
12305
12306 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100 AND l_actual_finish_date IS null) THEN
12307 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
12308 END IF;
12309 -- Bug 3865516 Begin
12310 IF l_rec.object_type = 'PA_TASKS' THEN
12311 IF l_last_ppc_rec.status_code IS NOT NULL THEN
12312 l_task_status := l_last_ppc_rec.status_code;
12313 ELSE
12314 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
12315 FETCH c_get_task_status INTO l_task_status;
12316 CLOSE c_get_task_status;
12317 END IF;
12318 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status);
12319
12320 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100 AND l_system_status_code <> 'COMPLETED')
12321 THEN
12322 l_task_status := '127';
12323 ELSIF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) > 0 AND (l_system_status_code = 'NOT_STARTED' OR l_system_status_code IS NULL OR l_system_status_code = ''))
12324 THEN
12325 l_task_status := '125';
12326 END IF;
12327 -- Bug 3865516 End
12328 -- Bug 4343997 rtarway Begin
12329 ELSIF l_rec.object_type = 'PA_DELIVERABLES' THEN
12330 IF l_last_ppc_rec.status_code IS NOT NULL THEN
12331 l_task_status := l_last_ppc_rec.status_code;
12332 ELSE
12333 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
12334 FETCH c_get_task_status INTO l_task_status;
12335 CLOSE c_get_task_status;
12336 END IF;
12337 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status,'PA_DELIVERABLES');
12338 END IF;
12339 -- Bug 4343997 rtarway End
12340
12341 IF g1_debug_mode = 'Y' THEN
12342 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_version_id='||l_object_version_id, x_Log_Level=> 3);
12343 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_last_ppc_rec.progress_status_code='||l_last_ppc_rec.progress_status_code, x_Log_Level=> 3);
12344 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
12345 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
12346 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
12347 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
12348 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.actual_start_date='||l_rec.actual_start_date, x_Log_Level=> 3);
12349 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
12350 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.actual_finish_date='||l_rec.actual_finish_date, x_Log_Level=> 3);
12351 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
12352 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
12353 END IF;
12354
12355
12356 l_task_id_tbl(l_index) := l_rec.proj_element_id;
12357 l_completed_percentage_tbl(l_index) := l_rec.completed_percentage;
12358 l_project_id_tbl(l_index) := l_rec.project_id;
12359 l_object_type_tbl(l_index) := l_rec.object_type;
12360 l_object_id_tbl(l_index) := l_rec.object_id;
12361 l_cbs_element_id_tbl(l_index) := l_rec.cbs_element_Id;
12362 -- l_object_version_id_tbl(l_index) := l_rec.object_version_id; Bug 4227280
12363 l_object_version_id_tbl(l_index) := l_object_version_id; -- Bug 4227280
12364 l_progress_status_code_tbl(l_index) := l_progress_status_code;
12365 l_act_start_date_tbl(l_index) := l_actual_start_date;
12366 l_act_finish_date_tbl(l_index) := l_actual_finish_date;
12367 l_est_start_date_tbl(l_index) := l_estimated_start_date;
12368 l_est_finish_date_tbl(l_index) := l_estimated_finish_date;
12369 l_task_status_code_tbl(l_index) := l_task_status;
12370 l_earned_value_tbl(l_index) := l_rec.earned_value;
12371 l_base_per_comp_deriv_code_tbl(l_index) := l_last_ppr_rec.BASE_PERCENT_COMP_DERIV_CODE;
12372 l_base_perc_comp_tbl(l_index) := l_rec.base_percent_complete; -- 4604661
12373 l_description(l_index) := l_last_ppc_rec.description;
12374 l_progress_comment.extend(1);
12375 l_progress_comment(l_index) := l_last_ppc_rec.progress_comment;
12376
12377 -- Bug 4282618 Begin
12378 l_prog_enabled := 'Y';
12379 OPEN cur_prog_enabled(l_rec.proj_element_id);
12380 FETCH cur_prog_enabled INTO l_prog_enabled;
12381 CLOSE cur_prog_enabled;
12382
12383 l_prog_enabled_tbl(l_index) := l_prog_enabled;
12384 -- Bug 4282618 End
12385
12386
12387 l_oth_etc_quantity := null;
12388 l_oth_etc_cost_tc := null;
12389 l_oth_etc_cost_pc := null;
12390 l_oth_etc_cost_fc := null;
12391 l_oth_etc_rawcost_tc := null;
12392 l_oth_etc_rawcost_pc := null;
12393 l_oth_etc_rawcost_fc := null;
12394 l_estimated_remaining_effort := null;
12395 l_ppl_etc_cost_tc := null;
12396 l_ppl_etc_cost_pc := null;
12397 l_ppl_etc_cost_fc := null;
12398 l_ppl_etc_rawcost_tc := null;
12399 l_ppl_etc_rawcost_pc := null;
12400 l_ppl_etc_rawcost_fc := null;
12401 l_eqpmt_etc_effort := null;
12402 l_eqpmt_etc_cost_tc := null;
12403 l_eqpmt_etc_cost_pc := null;
12404 l_eqpmt_etc_cost_fc := null;
12405 l_eqpmt_etc_rawcost_tc := null;
12406 l_eqpmt_etc_rawcost_pc := null;
12407 l_eqpmt_etc_rawcost_fc := null;
12408
12409
12410 -- We need to derive ETC as new planned-actual for assignments and lowest tasks which do not have assignments
12411 -- For summary level rollup API will take care
12412
12413 IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
12414 l_ptav_rec := null;
12415 OPEN c_ptav_cur(p_project_id, l_rec.object_id, l_rec.proj_element_id, l_object_version_id, l_latest_pub_wp_version_id, 'Y',l_rec.cbs_element_id);
12416 FETCH c_ptav_cur INTO l_ptav_rec;
12417 CLOSE c_ptav_cur;
12418
12419 IF g1_debug_mode = 'Y' THEN
12420 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur', x_Log_Level=> 3);
12421 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.resource_class_cod='||l_ptav_rec.resource_class_code, x_Log_Level=> 3);
12422 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_quantity='||l_ptav_rec.planned_quantity, x_Log_Level=> 3);
12423 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_bur_cost_txn_cur='||l_ptav_rec.planned_bur_cost_txn_cur, x_Log_Level=> 3);
12424 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_proj_cur='||l_ptav_rec.planned_bur_cost_proj_cur, x_Log_Level=> 3);
12425 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_projfunc='||l_ptav_rec.planned_bur_cost_projfunc, x_Log_Level=> 3);
12426 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_txn_cur='||l_ptav_rec.planned_raw_cost_txn_cur, x_Log_Level=> 3);
12427 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_proj_cur='||l_ptav_rec.planned_raw_cost_proj_cur, x_Log_Level=> 3);
12428 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_projfunc='||l_ptav_rec.planned_raw_cost_projfunc, x_Log_Level=> 3);
12429 END IF;
12430
12431 IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
12432 --5726773
12433 --adding the below code for Bug 7185549
12434 l_oth_etc_quantity := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(NVL(l_ptav_rec.planned_quantity,0),NVL(l_last_ppr_rec.oth_quantity_to_date,0));
12435
12436 /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
12437 IF l_oth_etc_quantity < 0 THEN
12438 l_oth_etc_quantity := 0;
12439 END IF; */
12440 ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
12441 --5726773
12442 l_oth_etc_quantity := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.oth_quantity_to_date);
12443 /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
12444 IF l_oth_etc_quantity < 0 THEN
12445 l_oth_etc_quantity := 0;
12446 END IF; */
12447 ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
12448 --5726773
12449 l_estimated_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.ppl_act_effort_to_date);
12450 /*5726773 l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
12451 IF l_estimated_remaining_effort < 0 THEN
12452 l_estimated_remaining_effort := 0;
12453 END IF; */
12454 ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
12455 --5726773
12456 l_eqpmt_etc_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.eqpmt_act_effort_to_date);
12457 /* 5726773 l_eqpmt_etc_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.eqpmt_act_effort_to_date,0);
12458 IF l_eqpmt_etc_effort < 0 THEN
12459 l_eqpmt_etc_effort := 0;
12460 END IF; */
12461 END IF;
12462 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp; --bug 3906362
12463 --bug 4191360, consider for lowest level task only
12464 --ELSIF l_rec.object_type = 'PA_TASKS' AND NVL(PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_object_version_id,l_rec.object_type),'N') = 'N' THEN
12465 ELSIF l_rec.object_type = 'PA_TASKS' AND NVL(pa_proj_elements_utils.is_lowest_task(l_object_version_id),'N') = 'Y' THEN
12466 l_ptav_rec := null;
12467 --bug 4191360, added IF NVL(l_assignment_exists, 'N')
12468 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_object_version_id,l_rec.object_type);
12469 IF NVL(l_assignment_exists, 'N') = 'N'
12470 THEN
12471 OPEN c_ptav_cur_task(p_project_id, l_rec.object_id, l_rec.proj_element_id, l_object_version_id, l_latest_pub_wp_version_id, 'N',l_rec.cbs_element_id);
12472 FETCH c_ptav_cur_task INTO l_ptav_rec;
12473 CLOSE c_ptav_cur_task;
12474
12475 IF g1_debug_mode = 'Y' THEN
12476 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur_task', x_Log_Level=> 3);
12477 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.resource_class_cod='||l_ptav_rec.resource_class_code, x_Log_Level=> 3);
12478 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_quantity='||l_ptav_rec.planned_quantity, x_Log_Level=> 3);
12479 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_bur_cost_txn_cur='||l_ptav_rec.planned_bur_cost_txn_cur, x_Log_Level=> 3);
12480 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_proj_cur='||l_ptav_rec.planned_bur_cost_proj_cur, x_Log_Level=> 3);
12481 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_projfunc='||l_ptav_rec.planned_bur_cost_projfunc, x_Log_Level=> 3);
12482 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_txn_cur='||l_ptav_rec.planned_raw_cost_txn_cur, x_Log_Level=> 3);
12483 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_proj_cur='||l_ptav_rec.planned_raw_cost_proj_cur, x_Log_Level=> 3);
12484 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_projfunc='||l_ptav_rec.planned_raw_cost_projfunc, x_Log_Level=> 3);
12485 END IF;
12486
12487 /*l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
12488 IF l_estimated_remaining_effort < 0 THEN
12489 l_estimated_remaining_effort := 0;
12490 END IF; */
12491 -- Commented above and added below for Bug# 6713712
12492 -- Used PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act to calculate
12493 -- l_estimated_remaining_effort.
12494 l_estimated_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(NVL(l_ptav_rec.planned_quantity,0),NVL(l_last_ppr_rec.ppl_act_effort_to_date,0));
12495 END IF;
12496 --bug 3906362
12497
12498 l_BASE_PERCENT_COMP_DERIV_CODE := null;
12499
12500 OPEN cur_proj_elements(l_rec.object_id);
12501 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
12502 CLOSE cur_proj_elements;
12503
12504 l_base_per_comp_deriv_code_tbl(l_index) := l_BASE_PERCENT_COMP_DERIV_CODE;
12505
12506 IF g1_debug_mode = 'Y' THEN
12507 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
12508 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
12509 END IF;
12510
12511 --bug 4191360, rederive rollup percent only if %complete derv. code has changed
12512 IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12513 OR l_estimated_remaining_effort <> l_last_ppr_rec.estimated_remaining_effort -- Bug 4111107 : this should be done when ETC changes too
12514 OR l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED' -- 4617909
12515 THEN
12516 --bug 4191360, for lowest level task calculate percent complete if der code is WQ based, irrespective of assignment
12517 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12518 THEN
12519 l_EFF_ROLLUP_PERCENT_COMP := PA_PROGRESS_UTILS.Calc_base_percent(
12520 p_task_id => l_rec.object_id
12521 --4617909 ,p_incr_work_qty => l_rec.INCREMENTAL_WORK_QUANTITY
12522 --4617909 ,p_cuml_work_qty => l_rec.CUMULATIVE_WORK_QUANTITY
12523 -- Using l_last_ppr_rec values as working ver progress might be old
12524 ,p_incr_work_qty => l_last_ppr_rec.INCREMENTAL_WORK_QUANTITY
12525 ,p_cuml_work_qty => l_last_ppr_rec.CUMULATIVE_WORK_QUANTITY
12526 ,p_est_remaining_effort => null
12527 );
12528 IF g1_debug_mode = 'Y' THEN
12529 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12530 END IF;
12531 --for lowest level task calc percent complete if assignment doesnt exist
12532 ELSIF NVL(l_assignment_exists, 'N') = 'N' THEN
12533 l_planned_effort := null;
12534 l_planned_cost := null;
12535 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12536 THEN
12537 --bug 4191360, get the planned directly from cursor c_ptav_cur_task
12538 /*IF l_rec.estimated_remaining_effort IS NULL
12539 THEN
12540 OPEN cur_task_plan(l_rec.object_id);
12541 FETCH cur_task_plan INTO l_planned_effort;
12542 CLOSE cur_task_plan;
12543 END IF;
12544 l_planned_effort := nvl( l_rec.PPL_ACT_EFFORT_TO_DATE,0) + nvl(l_rec.estimated_remaining_effort,nvl(l_planned_effort,0)-nvl( l_rec.PPL_ACT_EFFORT_TO_DATE,0));*/
12545 l_planned_effort := l_ptav_rec.planned_quantity;
12546 IF l_planned_effort = 0 OR l_planned_effort IS NULL
12547 THEN
12548 l_planned_effort := 1;
12549 END iF;
12550 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
12551 IF g1_debug_mode = 'Y' THEN
12552 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.PPL_ACT_EFFORT_TO_DATE='||l_rec.PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
12553 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.estimated_remaining_effort='||l_rec.estimated_remaining_effort, x_Log_Level=> 3);
12554 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
12555 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12556 END IF;
12557 --bug 4191360, consider cost as well
12558 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in('COST')
12559 THEN
12560 --bug 4191360, get the planned cost directly from cursor c_ptav_cur_task
12561 /*IF l_rec.PPL_ETC_COST_PC IS NULL
12562 THEN
12563 OPEN cur_task_plan_cost(l_rec.object_id);
12564 FETCH cur_task_plan_cost INTO l_planned_cost;
12565 CLOSE cur_task_plan_cost;
12566 END IF;
12567 l_planned_cost := nvl( l_rec.PPL_ACT_COST_TO_DATE_PC,0) + nvl(l_rec.PPL_ETC_COST_PC,nvl(l_planned_cost,0)-nvl( l_rec.PPL_ACT_COST_TO_DATE_PC,0));*/
12568 l_planned_cost := l_ptav_rec.planned_bur_cost_proj_cur;
12569 IF l_planned_cost = 0 OR l_planned_cost IS NULL
12570 THEN
12571 l_planned_cost := 1;
12572 END iF;
12573 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
12574 ELSE
12575 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12576 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12577 --bug 4191360, moved this code above
12578 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12579 THEN
12580 l_EFF_ROLLUP_PERCENT_COMP := PA_PROGRESS_UTILS.Calc_base_percent(
12581 p_task_id => l_rec.object_id
12582 ,p_incr_work_qty => l_rec.INCREMENTAL_WORK_QUANTITY
12583 ,p_cuml_work_qty => l_rec.CUMULATIVE_WORK_QUANTITY
12584 ,p_est_remaining_effort => null
12585 );
12586 IF g1_debug_mode = 'Y' THEN
12587 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12588 END IF;*/
12589 ELSE
12590 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12591 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12592 ELSE
12593 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12594 END IF; -- IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12595 --bug 3906362
12596 END IF; -- IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
12597
12598 IF g1_debug_mode = 'Y' THEN
12599 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Before Costing out ETC', x_Log_Level=> 3);
12600 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12601 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12602 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12603 END IF;
12604
12605 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
12606 l_ppl_etc_cost_tc := null;
12607 l_ppl_etc_cost_fc := null;
12608 l_ppl_etc_cost_pc := null;
12609 l_ppl_etc_rawcost_tc := null;
12610 l_ppl_etc_rawcost_fc := null;
12611 l_ppl_etc_rawcost_pc := null;
12612 l_eqpmt_etc_cost_tc := null;
12613 l_eqpmt_etc_cost_fc := null;
12614 l_eqpmt_etc_cost_pc := null;
12615 l_eqpmt_etc_rawcost_tc := null;
12616 l_eqpmt_etc_rawcost_fc := null;
12617 l_eqpmt_etc_rawcost_pc := null;
12618 l_oth_etc_cost_tc := null;
12619 l_oth_etc_cost_fc := null;
12620 l_oth_etc_cost_pc := null;
12621 l_oth_etc_rawcost_tc := null;
12622 l_oth_etc_rawcost_fc := null;
12623 l_oth_etc_rawcost_pc := null;
12624 ELSE -- ETC Changes : Costing out ETC always
12625 IF l_oth_etc_quantity IS NOT NULL THEN
12626 IF l_oth_etc_quantity = 0 THEN
12627 l_oth_etc_cost_tc := 0;
12628 l_oth_etc_cost_fc := 0;
12629 l_oth_etc_cost_pc := 0;
12630 l_oth_etc_rawcost_tc := 0;
12631 l_oth_etc_rawcost_fc := 0;
12632 l_oth_etc_rawcost_pc := 0;
12633 ELSE
12634 --Bug 5027965.
12635 IF l_etc_cost_calc_mode ='COPY' THEN
12636 l_plan_version_id := l_curr_workplan_ver_bv_id;
12637 ELSE
12638 l_plan_version_id := l_ptav_rec.budget_version_id;
12639 END IF;
12640 pa_progress_utils.get_plan_costs_for_qty
12641 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12642 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12643 ,p_project_id => p_project_id
12644 ,p_task_id => l_rec.proj_element_id
12645 ,p_as_of_date => l_as_of_date
12646 ,p_structure_version_id => l_latest_pub_wp_version_id
12647 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12648 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12649 ,p_quantity => l_oth_etc_quantity
12650 ,p_budget_version_id => l_plan_version_id ---5027965 ---4372462
12651 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12652 ,x_rawcost_tc => l_oth_etc_rawcost_tc
12653 ,x_brdncost_tc => l_oth_etc_cost_tc
12654 ,x_rawcost_pc => l_oth_etc_rawcost_pc
12655 ,x_brdncost_pc => l_oth_etc_cost_pc
12656 ,x_rawcost_fc => l_oth_etc_rawcost_fc
12657 ,x_brdncost_fc => l_oth_etc_cost_fc
12658 ,x_return_status => x_return_status
12659 ,x_msg_count => x_msg_count
12660 ,x_msg_data => x_msg_data
12661 );
12662 IF x_return_status <> 'S' THEN
12663 raise FND_API.G_EXC_ERROR;
12664 END IF;
12665 END IF;
12666 ELSIF l_estimated_remaining_effort IS NOT NULL THEN
12667 IF l_estimated_remaining_effort = 0 THEN
12668 l_ppl_etc_cost_tc := 0;
12669 l_ppl_etc_cost_fc := 0;
12670 l_ppl_etc_cost_pc := 0;
12671 l_ppl_etc_rawcost_tc := 0;
12672 l_ppl_etc_rawcost_fc := 0;
12673 l_ppl_etc_rawcost_pc := 0;
12674 ELSE
12675 --Bug 5027965.
12676 IF l_etc_cost_calc_mode ='COPY' THEN
12677 l_plan_version_id := l_curr_workplan_ver_bv_id;
12678 ELSE
12679 l_plan_version_id := l_ptav_rec.budget_version_id;
12680 END IF;
12681 pa_progress_utils.get_plan_costs_for_qty
12682 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12683 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12684 ,p_project_id => p_project_id
12685 ,p_task_id => l_rec.proj_element_id
12686 ,p_as_of_date => l_as_of_date
12687 ,p_structure_version_id => l_latest_pub_wp_version_id
12688 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12689 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12690 ,p_quantity => l_estimated_remaining_effort
12691 ,p_budget_version_id => l_plan_version_id ---4372462 --Bug 5027965
12692 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12693 ,x_rawcost_tc => l_ppl_etc_rawcost_tc
12694 ,x_brdncost_tc => l_ppl_etc_cost_tc
12695 ,x_rawcost_pc => l_ppl_etc_rawcost_pc
12696 ,x_brdncost_pc => l_ppl_etc_cost_pc
12697 ,x_rawcost_fc => l_ppl_etc_rawcost_fc
12698 ,x_brdncost_fc => l_ppl_etc_cost_fc
12699 ,x_return_status => x_return_status
12700 ,x_msg_count => x_msg_count
12701 ,x_msg_data => x_msg_data
12702 );
12703 IF x_return_status <> 'S' THEN
12704 raise FND_API.G_EXC_ERROR;
12705 END IF;
12706 END IF;
12707 ELSIF l_eqpmt_etc_effort IS NOT NULL THEN
12708 IF l_eqpmt_etc_effort = 0 THEN
12709 l_eqpmt_etc_cost_tc := 0;
12710 l_eqpmt_etc_cost_fc := 0;
12711 l_eqpmt_etc_cost_pc := 0;
12712 l_eqpmt_etc_rawcost_tc := 0;
12713 l_eqpmt_etc_rawcost_fc := 0;
12714 l_eqpmt_etc_rawcost_pc := 0;
12715 ELSE
12716 --Bug 5027965.
12717 IF l_etc_cost_calc_mode ='COPY' THEN
12718 l_plan_version_id := l_curr_workplan_ver_bv_id;
12719 ELSE
12720 l_plan_version_id := l_ptav_rec.budget_version_id;
12721 END IF;
12722 pa_progress_utils.get_plan_costs_for_qty
12723 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12724 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12725 ,p_project_id => p_project_id
12726 ,p_task_id => l_rec.proj_element_id
12727 ,p_as_of_date => l_as_of_date
12728 ,p_structure_version_id => l_latest_pub_wp_version_id
12729 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12730 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12731 ,p_quantity => l_eqpmt_etc_effort
12732 ,p_budget_version_id => l_plan_version_id ---4372462 --Bug 5027965
12733 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12734 ,x_rawcost_tc => l_eqpmt_etc_rawcost_tc
12735 ,x_brdncost_tc => l_eqpmt_etc_cost_tc
12736 ,x_rawcost_pc => l_eqpmt_etc_rawcost_pc
12737 ,x_brdncost_pc => l_eqpmt_etc_cost_pc
12738 ,x_rawcost_fc => l_eqpmt_etc_rawcost_fc
12739 ,x_brdncost_fc => l_eqpmt_etc_cost_fc
12740 ,x_return_status => x_return_status
12741 ,x_msg_count => x_msg_count
12742 ,x_msg_data => x_msg_data
12743 );
12744 IF x_return_status <> 'S' THEN
12745 raise FND_API.G_EXC_ERROR;
12746 END IF;
12747 END IF;
12748 END IF;
12749 END IF;
12750
12751 IF g1_debug_mode = 'Y' THEN
12752 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After Costing out ETC', x_Log_Level=> 3);
12753 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12754 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_tc='||l_oth_etc_cost_tc, x_Log_Level=> 3);
12755 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_pc='||l_oth_etc_cost_pc, x_Log_Level=> 3);
12756 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_fc='||l_oth_etc_cost_fc, x_Log_Level=> 3);
12757 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_tc='||l_oth_etc_rawcost_tc, x_Log_Level=> 3);
12758 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_pc='||l_oth_etc_rawcost_pc, x_Log_Level=> 3);
12759 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_fc='||l_oth_etc_rawcost_fc, x_Log_Level=> 3);
12760 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12761 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_tc='||l_ppl_etc_cost_tc, x_Log_Level=> 3);
12762 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_pc='||l_ppl_etc_cost_pc, x_Log_Level=> 3);
12763 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_fc='||l_ppl_etc_cost_fc, x_Log_Level=> 3);
12764 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_tc='||l_ppl_etc_rawcost_tc, x_Log_Level=> 3);
12765 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_pc='||l_ppl_etc_rawcost_pc, x_Log_Level=> 3);
12766 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_fc='||l_ppl_etc_rawcost_fc, x_Log_Level=> 3);
12767 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12768 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_tc='||l_eqpmt_etc_cost_tc, x_Log_Level=> 3);
12769 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_pc='||l_eqpmt_etc_cost_pc, x_Log_Level=> 3);
12770 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_fc='||l_eqpmt_etc_cost_fc, x_Log_Level=> 3);
12771 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_tc='||l_eqpmt_etc_rawcost_tc, x_Log_Level=> 3);
12772 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_pc='||l_eqpmt_etc_rawcost_pc, x_Log_Level=> 3);
12773 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_fc='||l_eqpmt_etc_rawcost_fc, x_Log_Level=> 3);
12774 END IF;
12775
12776 l_incr_work_quantity_tbl(l_index) := l_last_ppr_rec.INCREMENTAL_WORK_Quantity;
12777 l_cumu_work_quantity_tbl(l_index) := l_last_ppr_rec.CUMULATIVE_WORK_Quantity;
12778 l_eff_rollup_percent_comp_tbl(l_index) := l_EFF_ROLLUP_PERCENT_COMP;
12779
12780 l_base_prog_status_code_tbl(l_index) := l_last_ppr_rec.BASE_PROGRESS_STATUS_CODE;
12781 l_eff_roll_prog_stat_code_tbl(l_index) := l_last_ppr_rec.EFF_ROLLUP_PROG_STAT_CODE;
12782
12783 l_ppl_act_effort_to_date_tbl(l_index) := l_last_ppr_rec.PPL_ACT_EFFORT_TO_DATE;
12784 l_PPL_ACT_COST_TO_DATE_TC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_TC;
12785 l_PPL_ACT_COST_TO_DATE_FC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_FC;
12786 l_PPL_ACT_COST_TO_DATE_PC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_PC;
12787 l_ppl_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_TC;
12788 l_ppl_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
12789 l_ppl_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
12790
12791 l_est_remaining_effort_tbl(l_index) := l_estimated_remaining_effort;
12792 l_ppl_etc_cost_tc_tbl(l_index) := l_ppl_etc_cost_tc;
12793 l_ppl_etc_cost_fc_tbl(l_index) := l_ppl_etc_cost_fc;
12794 l_ppl_etc_cost_pc_tbl(l_index) := l_ppl_etc_cost_pc;
12795 l_ppl_etc_rawcost_tc_tbl(l_index) := l_ppl_etc_rawcost_tc;
12796 l_ppl_etc_rawcost_fc_tbl(l_index) := l_ppl_etc_rawcost_fc;
12797 l_ppl_etc_rawcost_pc_tbl(l_index) := l_ppl_etc_rawcost_pc;
12798
12799 l_eqpmt_act_effort_to_date_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_EFFORT_TO_DATE;
12800 l_eqp_act_cost_to_date_tc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_TC;
12801 l_eqp_act_cost_to_date_fc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_FC;
12802 l_eqp_act_cost_to_date_pc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_PC;
12803 l_eqpmt_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
12804 l_eqpmt_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
12805 l_eqpmt_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
12806
12807 l_eqpmt_etc_effort_tbl(l_index) := l_eqpmt_etc_effort;
12808 l_eqpmt_etc_cost_tc_tbl(l_index) := l_eqpmt_etc_cost_tc;
12809 l_eqpmt_etc_cost_fc_tbl(l_index) := l_eqpmt_etc_cost_fc;
12810 l_eqpmt_etc_cost_pc_tbl(l_index) := l_eqpmt_etc_cost_pc;
12811 l_eqpmt_etc_rawcost_tc_tbl(l_index) := l_eqpmt_etc_rawcost_tc;
12812 l_eqpmt_etc_rawcost_fc_tbl(l_index) := l_eqpmt_etc_rawcost_fc;
12813 l_eqpmt_etc_rawcost_pc_tbl(l_index) := l_eqpmt_etc_rawcost_pc;
12814
12815 l_oth_quantity_to_date_tbl(l_index) := l_last_ppr_rec.oth_quantity_to_date;
12816 l_OTH_ACT_COST_TO_DATE_TC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_TC;
12817 l_OTH_ACT_COST_TO_DATE_FC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_FC;
12818 l_OTH_ACT_COST_TO_DATE_PC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_PC;
12819 l_oth_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_TC;
12820 l_oth_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
12821 l_oth_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
12822
12823 l_oth_etc_quantity_tbl(l_index) := l_oth_etc_quantity;
12824 l_oth_etc_cost_tc_tbl(l_index) := l_oth_etc_cost_tc;
12825 l_oth_etc_cost_fc_tbl(l_index) := l_oth_etc_cost_fc;
12826 l_oth_etc_cost_pc_tbl(l_index) := l_oth_etc_cost_pc;
12827 l_oth_etc_rawcost_tc_tbl(l_index) := l_oth_etc_rawcost_tc;
12828 l_oth_etc_rawcost_fc_tbl(l_index) := l_oth_etc_rawcost_fc;
12829 l_oth_etc_rawcost_pc_tbl(l_index) := l_oth_etc_rawcost_pc;
12830
12831 l_PROJFUNC_COST_RATE_TYPE_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_RATE_TYPE;
12832 l_projfunc_cost_exc_rate_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_EXCHANGE_RATE;
12833 l_PROJFUNC_COST_RATE_DATE_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_RATE_DATE;
12834 l_PROJ_COST_RATE_TYPE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_RATE_TYPE;
12835 l_PROJ_COST_EXCHANGE_RATE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_EXCHANGE_RATE;
12836 l_PROJ_COST_RATE_DATE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_RATE_DATE;
12837 l_TXN_CURRENCY_CODE_tbl(l_index) := l_last_ppr_rec.TXN_CURRENCY_CODE;
12838
12839 -- Bug 4111107 : Now l_etc_reset_flag is not used anymore
12840 --l_etc_reset_flag := 'N'; -- Bug 4227280
12841
12842 -- Bug 4282618 Begin
12843 IF l_prog_enabled = 'N' THEN
12844 l_completed_percentage_tbl(l_index) := null;
12845 l_progress_status_code_tbl(l_index) := null;
12846 l_earned_value_tbl(l_index) := null;
12847 l_eff_rollup_percent_comp_tbl(l_index) := null;
12848 l_eff_roll_prog_stat_code_tbl(l_index) := null;
12849 END IF;
12850 -- Bug 4282618 End
12851 END LOOP;
12852
12853 IF g1_debug_mode = 'Y' THEN
12854 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After plsql table is built l_index='||l_index, x_Log_Level=> 3);
12855 END IF;
12856
12857 FORALL i IN 1..l_index
12858 update pa_percent_completes
12859 set current_flag = 'N'
12860 where project_id = l_project_id_tbl(i)
12861 and current_flag = 'Y'
12862 and structure_type = 'WORKPLAN'
12863 and object_type = l_object_type_tbl(i)
12864 and object_id = l_object_id_tbl(i)
12865 and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12866 and task_id = l_task_id_tbl(i)
12867 and l_prog_enabled_tbl(i) = 'Y' -- Bug 4282618
12868 ;
12869 IF g1_debug_mode = 'Y' THEN
12870 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk update' , x_Log_Level=> 3);
12871 END IF;
12872
12873
12874 FORALL i IN 1..l_index
12875 update pa_proj_elements
12876 set status_code = l_task_status_code_tbl(i)
12877 where project_id = l_project_id_tbl(i)
12878 and proj_element_id = l_task_id_tbl(i)
12879 and l_object_type_tbl(i) = 'PA_TASKS'
12880 ;
12881
12882 IF g1_debug_mode = 'Y' THEN
12883 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk update' , x_Log_Level=> 3);
12884 END IF;
12885
12886 FORALL i IN 1..l_index
12887 insert into pa_percent_completes(TASK_ID,
12888 DATE_COMPUTED,
12889 LAST_UPDATE_DATE,
12890 LAST_UPDATED_BY,
12891 CREATION_DATE,
12892 CREATED_BY,
12893 LAST_UPDATE_LOGIN,
12894 COMPLETED_PERCENTAGE,
12895 PROJECT_ID,
12896 CURRENT_FLAG,
12897 PERCENT_COMPLETE_ID,
12898 object_VERSION_ID,
12899 OBJECT_TYPE,
12900 OBJECT_id,
12901 PROGRESS_STATUS_CODE,
12902 ACTUAL_START_DATE,
12903 ACTUAL_FINISH_DATE,
12904 ESTIMATED_START_DATE,
12905 ESTIMATED_FINISH_DATE,
12906 PUBLISHED_FLAG,
12907 published_BY_party_ID,
12908 history_flag,
12909 status_code,
12910 RECORD_VERSION_NUMBER,
12911 structure_type,
12912 description,
12913 progress_comment,
12914 cbs_element_id
12915 ) values
12916 ( l_task_id_tbl(i)
12917 ,l_as_of_date
12918 ,sysdate
12919 ,l_user_id
12920 ,sysdate
12921 ,l_user_id
12922 ,l_login_id
12923 ,l_completed_percentage_tbl(i)
12924 ,l_project_id_tbl(i)
12925 ,'Y'
12926 ,PA_PERCENT_COMPLETES_S.nextval
12927 ,l_object_version_id_tbl(i)
12928 ,l_object_type_tbl(i)
12929 ,l_object_id_tbl(i)
12930 ,l_progress_status_code_tbl(i)
12931 ,l_act_start_date_tbl(i)
12932 ,l_act_finish_date_tbl(i)
12933 ,l_est_start_date_tbl(i)
12934 ,l_est_finish_date_tbl(i)
12935 ,'Y'
12936 ,l_published_by_party_id
12937 ,'N'
12938 ,l_task_status_code_tbl(i)
12939 ,to_number(1)
12940 ,'WORKPLAN'
12941 ,l_description(i)
12942 ,l_progress_comment(i)
12943 ,l_cbs_element_id_tbl(i)
12944 )
12945 RETURNING PERCENT_COMPLETE_ID
12946 BULK COLLECT INTO l_percent_complete_id_tbl;
12947
12948 IF g1_debug_mode = 'Y' THEN
12949 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk insert' , x_Log_Level=> 3);
12950 END IF;
12951
12952 -- Bug 4282618 Begin
12953 -- The seprate delete is added after the insertion
12954 -- This is because of Bulk returning clause, we can not use select .. from dual ..where with bulk returning
12955 FOR i IN 1..l_index LOOP
12956 IF l_prog_enabled_tbl(i) = 'N' THEN
12957 DELETE pa_percent_completes
12958 where percent_complete_id = l_percent_complete_id_tbl(i);
12959
12960 l_percent_complete_id_tbl(i):=null;
12961 END IF;
12962 END LOOP;
12963 -- Bug 4282618 End
12964
12965
12966 ---5212999
12967 if (l_upd_rollup_prog = 'N') then
12968 FORALL i IN 1..l_index
12969 update pa_progress_rollup
12970 set current_flag = 'N'
12971 where project_id = l_project_id_tbl(i)
12972 and current_flag = 'Y'
12973 and structure_version_id is null
12974 and structure_type = 'WORKPLAN'
12975 and object_type = l_object_type_tbl(i)
12976 and object_id = l_object_id_tbl(i)
12977 and nvl(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12978 and proj_element_id = l_task_id_tbl(i);
12979
12980 else
12981 FORALL i IN 1..l_index
12982 delete from pa_progress_rollup
12983 where project_id = l_project_id_tbl(i)
12984 and current_flag = 'Y'
12985 and structure_version_id is null
12986 and structure_type = 'WORKPLAN'
12987 and object_type = l_object_type_tbl(i)
12988 and object_id = l_object_id_tbl(i)
12989 and nvl(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12990 and proj_element_id = l_task_id_tbl(i);
12991 end if;
12992
12993 IF g1_debug_mode = 'Y' THEN
12994 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After third bulk update' , x_Log_Level=> 3);
12995 /* For Debug Purposes, Can be removed
12996 FOR i IN 1..l_index LOOP
12997 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_project_id_tbl(i)='||l_project_id_tbl(i), x_Log_Level=> 3);
12998 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_id_tbl(i)='||l_object_id_tbl(i), x_Log_Level=> 3);
12999 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_type_tbl(i)='||l_object_type_tbl(i), x_Log_Level=> 3);
13000 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_version_id_tbl(i)='||l_object_version_id_tbl(i), x_Log_Level=> 3);
13001 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_progress_status_code_tbl(i)='||l_progress_status_code_tbl(i), x_Log_Level=> 3);
13002 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_incr_work_quantity_tbl(i)='||l_incr_work_quantity_tbl(i), x_Log_Level=> 3);
13003 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_cumu_work_quantity_tbl(i)='||l_cumu_work_quantity_tbl(i), x_Log_Level=> 3);
13004 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eff_rollup_percent_comp_tbl(i)='||l_eff_rollup_percent_comp_tbl(i), x_Log_Level=> 3);
13005 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_completed_percentage_tbl(i)='||l_completed_percentage_tbl(i), x_Log_Level=> 3);
13006 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_start_date_tbl(i)='||l_est_start_date_tbl(i), x_Log_Level=> 3);
13007 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_finish_date_tbl(i)='||l_est_finish_date_tbl(i), x_Log_Level=> 3);
13008 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_act_start_date_tbl(i)='||l_act_start_date_tbl(i), x_Log_Level=> 3);
13009 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_act_finish_date_tbl(i)='||l_act_finish_date_tbl(i), x_Log_Level=> 3);
13010 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_remaining_effort_tbl(i)='||l_est_remaining_effort_tbl(i), x_Log_Level=> 3);
13011 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_base_per_comp_deriv_code_tbl(i)='||l_base_per_comp_deriv_code_tbl(i), x_Log_Level=> 3);
13012 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_base_prog_status_code_tbl(i)='||l_base_prog_status_code_tbl(i), x_Log_Level=> 3);
13013 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eff_roll_prog_stat_code_tbl(i)='||l_eff_roll_prog_stat_code_tbl(i), x_Log_Level=> 3);
13014 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_percent_complete_id_tbl(i)='||l_percent_complete_id_tbl(i), x_Log_Level=> 3);
13015 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_task_id_tbl(i)='||l_task_id_tbl(i), x_Log_Level=> 3);
13016 END LOOP;
13017 */
13018 END IF;
13019
13020
13021
13022 FORALL i IN 1..l_index
13023 insert into pa_progress_rollup(
13024 PROGRESS_ROLLUP_ID
13025 ,PROJECT_ID
13026 ,OBJECT_ID
13027 ,OBJECT_TYPE
13028 ,AS_OF_DATE
13029 ,OBJECT_VERSION_ID
13030 ,LAST_UPDATE_DATE
13031 ,LAST_UPDATED_BY
13032 ,CREATION_DATE
13033 ,CREATED_BY
13034 ,PROGRESS_STATUS_CODE
13035 ,LAST_UPDATE_LOGIN
13036 ,INCREMENTAL_WORK_QUANTITY
13037 ,CUMULATIVE_WORK_QUANTITY
13038 ,EFF_ROLLUP_PERCENT_COMP
13039 ,COMPLETED_PERCENTAGE
13040 ,ESTIMATED_START_DATE
13041 ,ESTIMATED_FINISH_DATE
13042 ,ACTUAL_START_DATE
13043 ,ACTUAL_FINISH_DATE
13044 ,ESTIMATED_REMAINING_EFFORT
13045 ,RECORD_VERSION_NUMBER
13046 ,BASE_PERCENT_COMP_DERIV_CODE
13047 ,BASE_PROGRESS_STATUS_CODE
13048 ,EFF_ROLLUP_PROG_STAT_CODE
13049 ,PERCENT_COMPLETE_ID
13050 ,STRUCTURE_TYPE
13051 ,PROJ_ELEMENT_ID
13052 ,PPL_ACT_EFFORT_TO_DATE
13053 ,EQPMT_ACT_EFFORT_TO_DATE
13054 ,EQPMT_ETC_EFFORT
13055 ,OTH_ACT_COST_TO_DATE_TC
13056 ,OTH_ACT_COST_TO_DATE_FC
13057 ,OTH_ACT_COST_TO_DATE_PC
13058 ,OTH_ETC_COST_TC
13059 ,OTH_ETC_COST_FC
13060 ,OTH_ETC_COST_PC
13061 ,PPL_ACT_COST_TO_DATE_TC
13062 ,PPL_ACT_COST_TO_DATE_FC
13063 ,PPL_ACT_COST_TO_DATE_PC
13064 ,PPL_ETC_COST_TC
13065 ,PPL_ETC_COST_FC
13066 ,PPL_ETC_COST_PC
13067 ,EQPMT_ACT_COST_TO_DATE_TC
13068 ,EQPMT_ACT_COST_TO_DATE_FC
13069 ,EQPMT_ACT_COST_TO_DATE_PC
13070 ,EQPMT_ETC_COST_TC
13071 ,EQPMT_ETC_COST_FC
13072 ,EQPMT_ETC_COST_PC
13073 ,EARNED_VALUE
13074 ,TASK_WT_BASIS_CODE
13075 ,CURRENT_FLAG
13076 ,PROJFUNC_COST_RATE_TYPE
13077 ,PROJFUNC_COST_EXCHANGE_RATE
13078 ,PROJFUNC_COST_RATE_DATE
13079 ,PROJ_COST_RATE_TYPE
13080 ,PROJ_COST_EXCHANGE_RATE
13081 ,PROJ_COST_RATE_DATE
13082 ,TXN_CURRENCY_CODE
13083 ,PROG_PA_PERIOD_NAME
13084 ,PROG_GL_PERIOD_NAME
13085 ,OTH_QUANTITY_TO_DATE
13086 ,OTH_ETC_QUANTITY
13087 ,OTH_ACT_RAWCOST_TO_DATE_TC
13088 ,OTH_ACT_RAWCOST_TO_DATE_FC
13089 ,OTH_ACT_RAWCOST_TO_DATE_PC
13090 ,OTH_ETC_RAWCOST_TC
13091 ,OTH_ETC_RAWCOST_FC
13092 ,OTH_ETC_RAWCOST_PC
13093 ,PPL_ACT_RAWCOST_TO_DATE_TC
13094 ,PPL_ACT_RAWCOST_TO_DATE_FC
13095 ,PPL_ACT_RAWCOST_TO_DATE_PC
13096 ,PPL_ETC_RAWCOST_TC
13097 ,PPL_ETC_RAWCOST_FC
13098 ,PPL_ETC_RAWCOST_PC
13099 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
13100 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
13101 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
13102 ,EQPMT_ETC_RAWCOST_TC
13103 ,EQPMT_ETC_RAWCOST_FC
13104 ,EQPMT_ETC_RAWCOST_PC
13105 ,BASE_PERCENT_COMPLETE -- 4604661
13106 ,CBS_ELEMENT_ID
13107 ) VALUES (
13108 PA_PROGRESS_ROLLUP_S.nextval
13109 ,l_project_id_tbl(i)
13110 ,l_object_id_tbl(i)
13111 ,l_object_type_tbl(i)
13112 ,l_as_of_date
13113 ,l_object_version_id_tbl(i)
13114 ,sysdate
13115 ,l_user_id
13116 ,sysdate
13117 ,l_user_id
13118 ,l_progress_status_code_tbl(i)
13119 ,l_login_id
13120 ,l_incr_work_quantity_tbl(i)
13121 ,l_cumu_work_quantity_tbl(i)
13122 ,l_eff_rollup_percent_comp_tbl(i)
13123 ,l_completed_percentage_tbl(i)
13124 ,l_est_start_date_tbl(i)
13125 ,l_est_finish_date_tbl(i)
13126 ,l_act_start_date_tbl(i)
13127 ,l_act_finish_date_tbl(i)
13128 ,l_est_remaining_effort_tbl(i)
13129 ,to_number(1)
13130 ,l_base_per_comp_deriv_code_tbl(i)
13131 ,l_base_prog_status_code_tbl(i)
13132 ,l_eff_roll_prog_stat_code_tbl(i)
13133 ,l_percent_complete_id_tbl(i)
13134 ,'WORKPLAN'
13135 ,l_task_id_tbl(i)
13136 ,l_ppl_act_effort_to_date_tbl(i)
13137 ,l_eqpmt_act_effort_to_date_tbl(i)
13138 ,l_eqpmt_etc_effort_tbl(i)
13139 ,l_oth_act_cost_to_date_tc_tbl(i)
13140 ,l_oth_act_cost_to_date_fc_tbl(i)
13141 ,l_oth_act_cost_to_date_pc_tbl(i)
13142 ,l_oth_etc_cost_tc_tbl(i)
13143 ,l_oth_etc_cost_fc_tbl(i)
13144 ,l_oth_etc_cost_pc_tbl(i)
13145 ,l_ppl_act_cost_to_date_tc_tbl(i)
13146 ,l_ppl_act_cost_to_date_fc_tbl(i)
13147 ,l_ppl_act_cost_to_date_pc_tbl(i)
13148 ,l_ppl_etc_cost_tc_tbl(i)
13149 ,l_ppl_etc_cost_fc_tbl(i)
13150 ,l_ppl_etc_cost_pc_tbl(i)
13151 ,l_eqp_act_cost_to_date_tc_tbl(i)
13152 ,l_eqp_act_cost_to_date_fc_tbl(i)
13153 ,l_eqp_act_cost_to_date_pc_tbl(i)
13154 ,l_eqpmt_etc_cost_tc_tbl(i)
13155 ,l_eqpmt_etc_cost_fc_tbl(i)
13156 ,l_eqpmt_etc_cost_pc_tbl(i)
13157 ,l_earned_value_tbl(i)
13158 ,l_task_weight_basis_code
13159 ,'Y'
13160 ,l_projfunc_cost_rate_type_tbl(i)
13161 ,l_projfunc_cost_exc_rate_tbl(i)
13162 ,l_projfunc_cost_rate_date_tbl(i)
13163 ,l_proj_cost_rate_type_tbl(i)
13164 ,l_proj_cost_exchange_rate_tbl(i)
13165 ,l_proj_cost_rate_date_tbl(i)
13166 ,l_txn_currency_code_tbl(i)
13167 ,l_prog_pa_period_name
13168 ,l_prog_gl_period_name
13169 ,l_oth_quantity_to_date_tbl(i)
13170 ,l_oth_etc_quantity_tbl(i)
13171 ,l_oth_act_raw_to_date_tc_tbl(i)
13172 ,l_oth_act_raw_to_date_fc_tbl(i)
13173 ,l_oth_act_raw_to_date_pc_tbl(i)
13174 ,l_oth_etc_rawcost_tc_tbl(i)
13175 ,l_oth_etc_rawcost_fc_tbl(i)
13176 ,l_oth_etc_rawcost_pc_tbl(i)
13177 ,l_ppl_act_raw_to_date_tc_tbl(i)
13178 ,l_ppl_act_raw_to_date_fc_tbl(i)
13179 ,l_ppl_act_raw_to_date_pc_tbl(i)
13180 ,l_ppl_etc_rawcost_tc_tbl(i)
13181 ,l_ppl_etc_rawcost_fc_tbl(i)
13182 ,l_ppl_etc_rawcost_pc_tbl(i)
13183 ,l_eqpmt_act_raw_to_date_tc_tbl(i)
13184 ,l_eqpmt_act_raw_to_date_fc_tbl(i)
13185 ,l_eqpmt_act_raw_to_date_pc_tbl(i)
13186 ,l_eqpmt_etc_rawcost_tc_tbl(i)
13187 ,l_eqpmt_etc_rawcost_fc_tbl(i)
13188 ,l_eqpmt_etc_rawcost_pc_tbl(i)
13189 ,l_base_perc_comp_tbl(i) -- 4604661
13190 ,l_cbs_element_id_tbl(i)
13191 );
13192
13193 IF g1_debug_mode = 'Y' THEN
13194 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk insert' , x_Log_Level=> 3);
13195 END IF;
13196
13197 -- ETC Changes End
13198
13199 --reset the ETC whenever workplan gets published.
13200 -- This code is removed now. Now we select all progress record from published or working wp version
13201
13202 -- Now l_upd_new_elem_ver_id_flag wil not be used as we are creating progress records always,
13203 -- irrespective whether Apply Progress id Done or not.
13204
13205 IF g1_debug_mode = 'Y' THEN
13206 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
13207 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_upd_new_elem_ver_id_flag='||l_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
13208 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'x_return_status='||x_return_status, x_Log_Level=> 3);
13209 END IF;
13210
13211 -- 4600547 : We should only assign x_as_of_date to next cycle date only if progress records are found.
13212 -- otherwise it was doing unnecessary calling rollup api in process_wbs_updates and creating prog records
13213 IF nvl(l_prog_rec_found,'N') = 'Y' THEN
13214 x_as_of_date := l_as_of_date;
13215 ELSE
13216 x_as_of_date := null;
13217 END IF;
13218
13219 x_task_weight_basis_code := l_task_weight_basis_code;
13220 --rtarway, BUG 3951024
13221 x_upd_new_elem_ver_id_flag := l_upd_new_elem_ver_id_flag;
13222
13223 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13224 x_return_status := 'E';
13225 x_msg_count := x_msg_count;
13226 RAISE FND_API.G_EXC_ERROR;
13227 END IF;
13228
13229
13230 IF (p_commit = FND_API.G_TRUE) THEN
13231 COMMIT;
13232 END IF;
13233 EXCEPTION
13234 when FND_API.G_EXC_ERROR then
13235 if p_commit = FND_API.G_TRUE then
13236 rollback to PUBLISH_PROGRESS;
13237 end if;
13238 x_return_status := FND_API.G_RET_STS_ERROR;
13239 when FND_API.G_EXC_UNEXPECTED_ERROR then
13240 if p_commit = FND_API.G_TRUE then
13241 rollback to PUBLISH_PROGRESS;
13242 end if;
13243 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13244 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
13245 p_procedure_name => 'PUBLISH_PROGRESS',
13246 p_error_text => SUBSTRB(SQLERRM,1,120));
13247 when OTHERS then
13248 if p_commit = FND_API.G_TRUE then
13249 rollback to PUBLISH_PROGRESS;
13250 end if;
13251 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13252 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
13253 p_procedure_name => 'PUBLISH_PROGRESS',
13254 p_error_text => SUBSTRB(SQLERRM,1,120));
13255 raise;
13256
13257 END PUBLISH_PROGRESS;
13258
13259
13260 PROCEDURE GET_SUMMARIZED_ACTUALS(p_project_id_list IN SYSTEM.pa_num_tbl_type,
13261 p_extraction_type IN VARCHAR2,
13262 p_plan_res_level IN VARCHAR2,
13263 p_proj_pgm_level IN SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type(),
13264 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
13265 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
13266 x_msg_data OUT NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
13267
13268 l_project_id NUMBER;
13269 l_object_id NUMBER;
13270 l_object_version_id NUMBER;
13271 l_task_version_id NUMBER;
13272 l_object_Type VARCHAR2(80);
13273 l_base_pc_deriv_code VARCHAR2(150);
13274 l_task_wt_basis_code VARCHAR2(30);
13275 l_txn_curr_code VARCHAR2(30);
13276 l_org_id NUMBER;
13277 l_shared_structure VARCHAR2(30);
13278 l_db_case VARCHAR2(1);
13279 l_last_projelemid NUMBER:=0;
13280 l_last_res_list_mem_id NUMBER:=0;
13281 l_new_res_list_member_id NUMBER; -- Bug 3764224 : RLM Id Changes
13282 l_last_object_Type VARCHAR2(80);
13283 l_last_cbs_element_id NUMBER; -- CBS Check
13284 l_txn_raw_cost NUMBER(22,5); --start 5343956
13285 l_txn_brdn_cost NUMBER(22,5);
13286 l_txn_raw_cost_tot NUMBER(22,5);
13287 l_txn_brdn_cost_tot NUMBER(22,5); --end 5343956
13288 l_sch_start_date DATE;
13289 l_sch_end_date DATE;
13290 l_asgn_sch_start_date DATE;
13291 l_asgn_sch_finish_date DATE;
13292 l_res_list_member_id NUMBER;
13293 --CBS Change in Get_Summarized_Actuals
13294 l_cbs_element_id NUMBER;
13295 --End CBS Change in Get_Summarized_Actuals
13296 l_res_assignment_id NUMBER;
13297 l_res_class_code VARCHAR2(30);
13298 l_task_id NUMBER;
13299 l_planned_eff NUMBER;
13300 l_planned_cost NUMBER(22,5); --5343956
13301 l_percent_comp NUMBER;
13302 l_eff_rollup_pc NUMBER;
13303 l_earned_val NUMBER;
13304 l_rate_based_flag VARCHAR2(1);
13305 l_init_prog_stat_code VARCHAR2(150);
13306 l_uncategorized_flag VARCHAR2(1);
13307 l_ppl_res_list_mem_id NUMBER;
13308 l_plan_type VARCHAR2(1);
13309 l_plan_type_id NUMBER;
13310 l_plan_version_id NUMBER;
13311 l_rbs_element_id NUMBER;
13312
13313 x_txn_rate_type VARCHAR2(30);
13314 x_txn_rate_date DATE;
13315 x_txn_exch_rate NUMBER(22,5); --start 5343956
13316 x_txn_raw_cost NUMBER(22,5);
13317 x_txn_brdn_cost NUMBER(22,5);
13318 x_txn_raw_cost_tot NUMBER(22,5);
13319 x_txn_brdn_cost_tot NUMBER(22,5); --end 5343956
13320 x_projfunc_curr_code VARCHAR2(30);
13321 x_projfunc_cost_rate_type VARCHAR2(30);
13322 x_projfunc_cost_rate_date DATE;
13323 x_projfunc_cost_exch_rate NUMBER(22,5); --5343956
13324 x_projfunc_raw_cost NUMBER(22,5); --5343956
13325 x_msg_code VARCHAR2(80);
13326
13327 l_init_vars VARCHAR2(1);
13328 l_ignore_rec VARCHAR2(1);
13329 l_match_found VARCHAR2(1);
13330 l_index NUMBER;
13331 l_index1 NUMBER;
13332 l_index2 NUMBER;
13333 l_index3 NUMBER;
13334 l_index4 NUMBER;
13335 l_temp_index2 NUMBER;
13336 l_latest_wp_struct_ver_id NUMBER;
13337 l_base_struct_ver_id NUMBER;
13338 l_period_start_date DATE;
13339 l_temp_as_of_date DATE;
13340 l_conv_rate_date DATE;
13341 l_max_as_of_date DATE;
13342 l_max_as_of_date_assign DATE;
13343 l_pa_period_name VARCHAR2(80);
13344 l_gl_period_name VARCHAR2(80);
13345 l_period_name VARCHAR2(80);
13346 l_working_rec_found VARCHAR2(1);
13347 l_return_status VARCHAR2(1);
13348 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
13349 l_proj_curr_code VARCHAR2(15);
13350 l_proj_func_curr_code VARCHAR2(15);
13351 l_wp_prl_res_class_flag VARCHAR2(1) := 'Y'; -- CBS: Workplan PRL Resource Class Flag
13352
13353
13354 L_ACT_COST_TO_DATE_TC NUMBER(22,5); --start 5343956
13355 L_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
13356 L_PPL_ACT_COST_TO_DATE_TC NUMBER(22,5);
13357 L_PPL_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
13358 L_EQPMT_ACT_COST_TO_DATE_TC NUMBER(22,5);
13359 L_EQPMT_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
13360 l_asgn_plan_quantity NUMBER(22,5);
13361 l_asgn_plan_bur_cost_tc NUMBER(22,5);
13362 l_asgn_plan_bur_cost_fc NUMBER(22,5);
13363 l_asgn_plan_bur_cost_pc NUMBER(22,5);
13364 l_asgn_plan_raw_cost_tc NUMBER(22,5);
13365 l_asgn_plan_raw_cost_fc NUMBER(22,5);
13366 l_asgn_plan_raw_cost_pc NUMBER(22,5); --end 5343956
13367 l_asgmt_count NUMBER; -- Added for Bug 13419867
13368
13369 l_no_rate_exception Exception;
13370 cursor projects_in_range is
13371 select ppa.org_id, ppa.project_currency_code, ppa.projfunc_currency_code,
13372 PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(ppa.project_id) shared_structure
13373 from pa_projects_all ppa
13374 where ppa.project_id = l_project_id;
13375
13376 -- tables to hold project_ids, latest WP ids and res list ids.
13377 proj_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13378 latest_wp_struct_ver_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13379 res_list_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13380 proj_org_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13381 proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
13382 calendar_type_tbl SYSTEM.pa_varchar2_1_tbl_type:= SYSTEM.pa_varchar2_1_tbl_type();
13383 proj_curr_code_tbl SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
13384 proj_func_curr_code_tbl SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
13385 proj_pgm_level_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13386
13387 -- Added for bug 5464875
13388 base_struct_ver_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13389 populate_in_tbl PJI_FM_XBS_ACCUM_UTILS.populate_in_tbl_type;
13390
13391 /* Begin: Fix for Bug # 5526638. */
13392 l_act_err_flag SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13393 --l_act_err_msg SYSTEM.pa_varchar2_240_tbl_type:= SYSTEM.pa_varchar2_240_tbl_type();
13394 l_act_err_msg SYSTEM.pa_varchar2_2000_tbl_type:= SYSTEM.pa_varchar2_2000_tbl_type(); --increased the size for the bug 13640836
13395 l_act_out_report VARCHAR2(1) := 'N';
13396 l_err_msg VARCHAR2(600); --increased the size for the bug 13640836
13397 l_skip_exception Exception;
13398 l_pji_wp_exception Exception;
13399 skip_proj_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13400 skip_latest_wp_str_ver_id_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13401 skip_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
13402 /* End: Fix for Bug # 5526638. */
13403
13404 cursor max_as_of_Date is
13405 select max(date_computed) from pa_percent_completes ppc
13406 where project_id = l_project_id
13407 and published_flag ='Y'
13408 and current_flag = 'Y'
13409 and object_type = 'PA_TASKS'
13410 and structure_type = 'WORKPLAN'
13411 and not exists (select '1' --- 4871809,5503428
13412 from pa_object_relationships
13413 where object_Type_from = 'PA_TASKS'
13414 and relationship_type = 'S'
13415 and object_id_from1 = ppc.object_version_id);
13416
13417 cursor max_as_of_date_assign is
13418 select max(date_computed) from pa_percent_completes
13419 where project_id = l_project_id
13420 and published_flag ='Y'
13421 and current_flag = 'Y'
13422 and object_type = 'PA_ASSIGNMENTS'
13423 and structure_type = 'WORKPLAN';
13424
13425 cursor max_as_of_date_rollup is
13426 select max(as_of_date) from pa_progress_rollup
13427 where project_id = l_project_id
13428 and structure_type = 'WORKPLAN'
13429 and structure_version_id is null
13430 and current_flag = 'Y';
13431
13432 cursor max_as_of_date_rollup_tsk is
13433 select max(as_of_date) from pa_progress_rollup
13434 where project_id = l_project_id
13435 and object_type = 'PA_TASKS'
13436 and structure_type = 'WORKPLAN'
13437 and structure_version_id is null
13438 and current_flag = 'Y';
13439
13440 -- table for rollup records
13441 PROGRESS_ROLLUP_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13442 PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13443 PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13444 OBJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13445 --Add cbs_element_id
13446 CBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13447 OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13448 AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13449 OBJECT_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13450 LAST_UPDATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13451 LAST_UPDATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
13452 CREATION_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13453 CREATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
13454 PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
13455 LAST_UPDATE_LOGIN PA_PLSQL_DATATYPES.Num15TabTyp;
13456 INCREMENTAL_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
13457 CUMULATIVE_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
13458 BASE_PERCENT_COMPLETE PA_PLSQL_DATATYPES.QtyTabtyp;
13459 EFF_ROLLUP_PERCENT_COMP PA_PLSQL_DATATYPES.QtyTabtyp;
13460 COMPLETED_PERCENTAGE PA_PLSQL_DATATYPES.QtyTabtyp;
13461 ESTIMATED_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13462 ESTIMATED_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13463 ACTUAL_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13464 ACTUAL_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13465 ESTIMATED_REMAINING_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13466 RECORD_VERSION_NUMBER PA_PLSQL_DATATYPES.Num15TabTyp;
13467 BASE_PERCENT_COMP_DERIV_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13468 BASE_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
13469 EFF_ROLLUP_PROG_STAT_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
13470 STRUCTURE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13471 PROJ_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13472 STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13473 PPL_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
13474 EQPMT_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
13475 EQPMT_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13476 OTH_QTY PA_PLSQL_DATATYPES.AmtTabTyp;
13477 OTH_ETC_QTY PA_PLSQL_DATATYPES.AmtTabTyp;
13478 OTH_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13479 OTH_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13480 OTH_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13481 OTH_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13482 OTH_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13483 OTH_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13484 OTH_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13485 OTH_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13486 OTH_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13487 OTH_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13488 OTH_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13489 OTH_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13490 PPL_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13491 PPL_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13492 PPL_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13493 PPL_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13494 PPL_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13495 PPL_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13496 PPL_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13497 PPL_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13498 PPL_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13499 PPL_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13500 PPL_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13501 PPL_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13502 EQPMT_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13503 EQPMT_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13504 EQPMT_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13505 EQPMT_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13506 EQPMT_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13507 EQPMT_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13508 EQPMT_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13509 EQPMT_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13510 EQPMT_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13511 EQPMT_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13512 EQPMT_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13513 EQPMT_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13514 EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
13515 TASK_WT_BASIS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13516 SUBPRJ_PPL_ACT_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13517 SUBPRJ_EQPMT_ACT_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13518 SUBPRJ_PPL_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13519 SUBPRJ_EQPMT_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13520 SUBPRJ_OTH_ACT_COST_TO_DT_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13521 SPJ_OTH_ACT_RAWCOST_TO_DT_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13522 SUBPRJ_OTH_ACT_COST_TO_DT_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13523 SPJ_OTH_ACT_RAWCOST_TO_DT_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13524 SUBPRJ_OTH_ACT_COST_TO_DT_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13525 SPJ_OTH_ACT_RAWCOST_TO_DT_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13526 SUBPRJ_PPL_ACT_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13527 SUBPRJ_PPL_ACT_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13528 SUBPRJ_PPL_ACT_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13529 SUBPRJ_PPL_ACT_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13530 SUBPRJ_PPL_ACT_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13531 SUBPRJ_PPL_ACT_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13532 SUBPRJ_EQPMT_ACT_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13533 SUBPRJ_EQPMT_ACT_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13534 SUBPRJ_EQPMT_ACT_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13535 SUBPRJ_EQPMT_ACT_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13536 SUBPRJ_EQPMT_ACT_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13537 SUBPRJ_EQPMT_ACT_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13538 SUBPRJ_OTH_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13539 SUBPRJ_OTH_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13540 SUBPRJ_OTH_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13541 SUBPRJ_OTH_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13542 SUBPRJ_OTH_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13543 SUBPRJ_OTH_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13544 SUBPRJ_PPL_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13545 SUBPRJ_PPL_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13546 SUBPRJ_PPL_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13547 SUBPRJ_PPL_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13548 SUBPRJ_PPL_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13549 SUBPRJ_PPL_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13550 SUBPRJ_EQPMT_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13551 SUBPRJ_EQPMT_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13552 SUBPRJ_EQPMT_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13553 SUBPRJ_EQPMT_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13554 SUBPRJ_EQPMT_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13555 SUBPRJ_EQPMT_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13556 SUBPRJ_EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
13557 CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13558 PROJFUNC_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13559 PROJFUNC_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
13560 PROJFUNC_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13561 PROJ_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13562 PROJ_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
13563 PROJ_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13564 TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
13565 PROG_PA_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13566 PROG_GL_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13567
13568 u_progress_rollup_id PA_PLSQL_DATATYPES.Num15TabTyp;
13569 u_object_version_id PA_PLSQL_DATATYPES.Num15TabTyp;
13570 u_completed_percentage PA_PLSQL_DATATYPES.QtyTabtyp;
13571 u_eff_rollup_percent_comp PA_PLSQL_DATATYPES.QtyTabtyp;
13572 u_earned_val PA_PLSQL_DATATYPES.QtyTabtyp;
13573 u_actual_finish_date PA_PLSQL_DATATYPES.DateTabTyp;
13574 u_oth_qty PA_PLSQL_DATATYPES.AmtTabTyp;
13575 u_oth_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13576 u_oth_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13577 u_oth_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13578 u_oth_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13579 u_oth_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13580 u_oth_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13581 u_oth_etc_qty PA_PLSQL_DATATYPES.AmtTabTyp;
13582 u_oth_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13583 u_oth_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13584 u_oth_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13585 u_oth_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13586 u_oth_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13587 u_oth_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13588 u_ppl_act_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13589 u_ppl_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13590 u_ppl_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13591 u_ppl_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13592 u_ppl_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13593 u_ppl_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13594 u_ppl_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13595 u_ppl_etc_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13596 u_ppl_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13597 u_ppl_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13598 u_ppl_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13599 u_ppl_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13600 u_ppl_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13601 u_ppl_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13602 u_eqpmt_act_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13603 u_eqpmt_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13604 u_eqpmt_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13605 u_eqpmt_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13606 u_eqpmt_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13607 u_eqpmt_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13608 u_eqpmt_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13609 u_eqpmt_etc_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13610 u_eqpmt_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13611 u_eqpmt_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13612 u_eqpmt_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13613 u_eqpmt_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13614 u_eqpmt_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13615 u_eqpmt_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13616
13617 u1_progress_rollup_id PA_PLSQL_DATATYPES.Num15TabTyp;
13618
13619 ETC_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13620 ETC_PROJECT_ORG_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13621 ETC_PROJECT_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13622 -- CBS Change in Get_Summarized_Actuals
13623 ETC_CBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13624 -- End CBS Change in Get_Summarized_Actuals
13625 ETC_STRUCT_VER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13626 ETC_PERIOD_NAME PA_PLSQL_DATATYPES.Char80TabTyp;
13627 ETC_CALENDAR_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
13628 ETC_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13629 ETC_END_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13630 ETC_RBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13631 ETC_RBS_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13632 ETC_PLAN_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13633 ETC_PLAN_TYPE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13634 ETC_WP_VERSION_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13635 ETC_ROLLUP_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
13636 ETC_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13637 ETC_QUANTITY PA_PLSQL_DATATYPES.AmtTabTyp;
13638 ETC_TXN_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13639 ETC_PRJ_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13640 ETC_PFC_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13641 ETC_TXN_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13642 ETC_PRJ_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13643 ETC_PFC_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13644 ETC_RESOURCE_CLASS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13645 ETC_RATE_BASED_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13646 ETC_PRJ_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13647 ETC_PFC_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13648
13649 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13650
13651 t_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13652 t_STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13653 t_TASK_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13654 t_RESOURCE_ASSIGNMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13655 t_AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13656 t_ACTUAL_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13657 t_ACTUAL_EFFORT PA_PLSQL_DATATYPES.QtyTabTyp;
13658 t_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13659 t_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
13660 t_ACTUAL_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13661 t_ACTUAL_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13662 t_ACTUAL_RAWCOST PA_PLSQL_DATATYPES.AmtTabTyp;
13663 t_ACTUAL_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13664 t_ACTUAL_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13665 t_HIDDEN_RES_ASSGN_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13666 t_RESOURCE_LIST_MEMBER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13667 t_CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13668 t_OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13669 t_PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13670 t_track_wp_cost_flag PA_PLSQL_DATATYPES.Char1TabTyp;
13671 t_min_start_date PA_PLSQL_DATATYPES.DateTabTyp;
13672 t_max_end_date PA_PLSQL_DATATYPES.DateTabTyp;
13673
13674 l_t_index NUMBER:=0;
13675 l_index_etc NUMBER:=0;
13676 l_sri_index_etc NUMBER:=0; -- 6266824 added this variable for replacing
13677 l_t_temp_index NUMBER:=0;
13678 i NUMBER;
13679 l_period_flag VARCHAR2(1);
13680 l_last_period_flag VARCHAR2(1);
13681 l_extraction_type VARCHAR2(30);
13682
13683 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13684
13685 -- cursor to get rollup record for as of date
13686 cursor rollup_rec_asofdate is
13687 select PROGRESS_ROLLUP_ID,
13688 PERCENT_COMPLETE_ID,
13689 PROJECT_ID,
13690 OBJECT_ID,
13691 OBJECT_TYPE,
13692 AS_OF_DATE,
13693 OBJECT_VERSION_ID,
13694 LAST_UPDATE_DATE,
13695 LAST_UPDATED_BY,
13696 CREATION_DATE,
13697 CREATED_BY,
13698 PROGRESS_STATUS_CODE,
13699 LAST_UPDATE_LOGIN,
13700 INCREMENTAL_WORK_QUANTITY,
13701 CUMULATIVE_WORK_QUANTITY,
13702 BASE_PERCENT_COMPLETE,
13703 EFF_ROLLUP_PERCENT_COMP,
13704 COMPLETED_PERCENTAGE,
13705 ESTIMATED_START_DATE,
13706 ESTIMATED_FINISH_DATE,
13707 ACTUAL_START_DATE,
13708 ACTUAL_FINISH_DATE,
13709 ESTIMATED_REMAINING_EFFORT,
13710 RECORD_VERSION_NUMBER,
13711 BASE_PERCENT_COMP_DERIV_CODE,
13712 BASE_PROGRESS_STATUS_CODE,
13713 EFF_ROLLUP_PROG_STAT_CODE,
13714 STRUCTURE_TYPE,
13715 PROJ_ELEMENT_ID,
13716 STRUCTURE_VERSION_ID,
13717 PPL_ACT_EFFORT_TO_DATE,
13718 EQPMT_ACT_EFFORT_TO_DATE,
13719 EQPMT_ETC_EFFORT,
13720 OTH_ACT_COST_TO_DATE_TC,
13721 OTH_ACT_RAWCOST_TO_DATE_TC,
13722 OTH_ACT_COST_TO_DATE_FC,
13723 OTH_ACT_RAWCOST_TO_DATE_FC,
13724 OTH_ACT_COST_TO_DATE_PC,
13725 OTH_ACT_RAWCOST_TO_DATE_PC,
13726 OTH_ETC_COST_TC,
13727 OTH_ETC_RAWCOST_TC,
13728 OTH_ETC_COST_FC,
13729 OTH_ETC_RAWCOST_FC,
13730 OTH_ETC_COST_PC,
13731 OTH_ETC_RAWCOST_PC,
13732 PPL_ACT_COST_TO_DATE_TC,
13733 PPL_ACT_RAWCOST_TO_DATE_TC,
13734 PPL_ACT_COST_TO_DATE_FC,
13735 PPL_ACT_RAWCOST_TO_DATE_FC,
13736 PPL_ACT_COST_TO_DATE_PC,
13737 PPL_ACT_RAWCOST_TO_DATE_PC,
13738 PPL_ETC_COST_TC,
13739 PPL_ETC_RAWCOST_TC,
13740 PPL_ETC_COST_FC,
13741 PPL_ETC_RAWCOST_FC,
13742 PPL_ETC_COST_PC,
13743 PPL_ETC_RAWCOST_PC,
13744 EQPMT_ACT_COST_TO_DATE_TC,
13745 EQPMT_ACT_RAWCOST_TO_DATE_TC,
13746 EQPMT_ACT_COST_TO_DATE_FC,
13747 EQPMT_ACT_RAWCOST_TO_DATE_FC,
13748 EQPMT_ACT_COST_TO_DATE_PC,
13749 EQPMT_ACT_RAWCOST_TO_DATE_PC,
13750 EQPMT_ETC_COST_TC,
13751 EQPMT_ETC_RAWCOST_TC,
13752 EQPMT_ETC_COST_FC,
13753 EQPMT_ETC_RAWCOST_FC,
13754 EQPMT_ETC_COST_PC,
13755 EQPMT_ETC_RAWCOST_PC,
13756 EARNED_VALUE,
13757 TASK_WT_BASIS_CODE,
13758 SUBPRJ_PPL_ACT_EFFORT,
13759 SUBPRJ_EQPMT_ACT_EFFORT,
13760 SUBPRJ_PPL_ETC_EFFORT,
13761 SUBPRJ_EQPMT_ETC_EFFORT,
13762 SUBPRJ_OTH_ACT_COST_TO_DT_TC,
13763 SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
13764 SUBPRJ_OTH_ACT_COST_TO_DT_FC,
13765 SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
13766 SUBPRJ_OTH_ACT_COST_TO_DT_PC,
13767 SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
13768 SUBPRJ_PPL_ACT_COST_TC,
13769 SUBPRJ_PPL_ACT_RAWCOST_TC,
13770 SUBPRJ_PPL_ACT_COST_FC,
13771 SUBPRJ_PPL_ACT_RAWCOST_FC,
13772 SUBPRJ_PPL_ACT_COST_PC,
13773 SUBPRJ_PPL_ACT_RAWCOST_PC,
13774 SUBPRJ_EQPMT_ACT_COST_TC,
13775 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13776 SUBPRJ_EQPMT_ACT_COST_FC,
13777 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13778 SUBPRJ_EQPMT_ACT_COST_PC,
13779 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13780 SUBPRJ_OTH_ETC_COST_TC,
13781 SUBPRJ_OTH_ETC_RAWCOST_TC,
13782 SUBPRJ_OTH_ETC_COST_FC,
13783 SUBPRJ_OTH_ETC_RAWCOST_FC,
13784 SUBPRJ_OTH_ETC_COST_PC,
13785 SUBPRJ_OTH_ETC_RAWCOST_PC,
13786 SUBPRJ_PPL_ETC_COST_TC,
13787 SUBPRJ_PPL_ETC_RAWCOST_TC,
13788 SUBPRJ_PPL_ETC_COST_FC,
13789 SUBPRJ_PPL_ETC_RAWCOST_FC,
13790 SUBPRJ_PPL_ETC_COST_PC,
13791 SUBPRJ_PPL_ETC_RAWCOST_PC,
13792 SUBPRJ_EQPMT_ETC_COST_TC,
13793 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13794 SUBPRJ_EQPMT_ETC_COST_FC,
13795 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13796 SUBPRJ_EQPMT_ETC_COST_PC,
13797 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13798 SUBPRJ_EARNED_VALUE,
13799 CURRENT_FLAG,
13800 PROJFUNC_COST_RATE_TYPE,
13801 PROJFUNC_COST_EXCHANGE_RATE,
13802 PROJFUNC_COST_RATE_DATE,
13803 PROJ_COST_RATE_TYPE,
13804 PROJ_COST_EXCHANGE_RATE,
13805 PROJ_COST_RATE_DATE,
13806 TXN_CURRENCY_CODE,
13807 PROG_PA_PERIOD_NAME,
13808 PROG_GL_PERIOD_NAME,
13809 OTH_QUANTITY_TO_DATE,
13810 OTH_ETC_QUANTITY,
13811 -- Add cbs_element_id
13812 CBS_ELEMENT_ID
13813 from pa_progress_rollup
13814 where project_id = l_project_id
13815 and object_id = l_object_id
13816 and object_Type = l_object_type
13817 -- Add cbs_element_id
13818 and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13819 and structure_type = 'WORKPLAN'
13820 and structure_version_id is null
13821 and proj_element_id = l_task_id
13822 AND current_flag <> 'W' -- Bug 3879461
13823 and trunc(as_of_date) = (select max(trunc(as_of_Date))
13824 from pa_progress_rollup
13825 where project_id = l_project_id
13826 and object_id = l_object_id
13827 and object_Type = l_object_type
13828 -- Add cbs_element_id
13829 and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13830 and structure_type = 'WORKPLAN'
13831 and structure_version_id is null
13832 and proj_element_id = l_task_id
13833 AND current_flag <> 'W' -- Bug 3879461
13834 and trunc(as_of_Date) <= l_temp_as_of_date);
13835
13836 l_rollup_rec_asofdate rollup_rec_asofdate%rowtype;
13837
13838 -- cursor to get working rollup record for as of date
13839 cursor w_rollup_rec_asofdate is
13840 select PROGRESS_ROLLUP_ID,
13841 PERCENT_COMPLETE_ID,
13842 PROJECT_ID,
13843 OBJECT_ID,
13844 OBJECT_TYPE,
13845 AS_OF_DATE,
13846 OBJECT_VERSION_ID,
13847 LAST_UPDATE_DATE,
13848 LAST_UPDATED_BY,
13849 CREATION_DATE,
13850 CREATED_BY,
13851 PROGRESS_STATUS_CODE,
13852 LAST_UPDATE_LOGIN,
13853 INCREMENTAL_WORK_QUANTITY,
13854 CUMULATIVE_WORK_QUANTITY,
13855 BASE_PERCENT_COMPLETE,
13856 EFF_ROLLUP_PERCENT_COMP,
13857 COMPLETED_PERCENTAGE,
13858 ESTIMATED_START_DATE,
13859 ESTIMATED_FINISH_DATE,
13860 ACTUAL_START_DATE,
13861 ACTUAL_FINISH_DATE,
13862 ESTIMATED_REMAINING_EFFORT,
13863 RECORD_VERSION_NUMBER,
13864 BASE_PERCENT_COMP_DERIV_CODE,
13865 BASE_PROGRESS_STATUS_CODE,
13866 EFF_ROLLUP_PROG_STAT_CODE,
13867 STRUCTURE_TYPE,
13868 PROJ_ELEMENT_ID,
13869 STRUCTURE_VERSION_ID,
13870 PPL_ACT_EFFORT_TO_DATE,
13871 EQPMT_ACT_EFFORT_TO_DATE,
13872 EQPMT_ETC_EFFORT,
13873 OTH_ACT_COST_TO_DATE_TC,
13874 OTH_ACT_RAWCOST_TO_DATE_TC,
13875 OTH_ACT_COST_TO_DATE_FC,
13876 OTH_ACT_RAWCOST_TO_DATE_FC,
13877 OTH_ACT_COST_TO_DATE_PC,
13878 OTH_ACT_RAWCOST_TO_DATE_PC,
13879 OTH_ETC_COST_TC,
13880 OTH_ETC_RAWCOST_TC,
13881 OTH_ETC_COST_FC,
13882 OTH_ETC_RAWCOST_FC,
13883 OTH_ETC_COST_PC,
13884 OTH_ETC_RAWCOST_PC,
13885 PPL_ACT_COST_TO_DATE_TC,
13886 PPL_ACT_RAWCOST_TO_DATE_TC,
13887 PPL_ACT_COST_TO_DATE_FC,
13888 PPL_ACT_RAWCOST_TO_DATE_FC,
13889 PPL_ACT_COST_TO_DATE_PC,
13890 PPL_ACT_RAWCOST_TO_DATE_PC,
13891 PPL_ETC_COST_TC,
13892 PPL_ETC_RAWCOST_TC,
13893 PPL_ETC_COST_FC,
13894 PPL_ETC_RAWCOST_FC,
13895 PPL_ETC_COST_PC,
13896 PPL_ETC_RAWCOST_PC,
13897 EQPMT_ACT_COST_TO_DATE_TC,
13898 EQPMT_ACT_RAWCOST_TO_DATE_TC,
13899 EQPMT_ACT_COST_TO_DATE_FC,
13900 EQPMT_ACT_RAWCOST_TO_DATE_FC,
13901 EQPMT_ACT_COST_TO_DATE_PC,
13902 EQPMT_ACT_RAWCOST_TO_DATE_PC,
13903 EQPMT_ETC_COST_TC,
13904 EQPMT_ETC_RAWCOST_TC,
13905 EQPMT_ETC_COST_FC,
13906 EQPMT_ETC_RAWCOST_FC,
13907 EQPMT_ETC_COST_PC,
13908 EQPMT_ETC_RAWCOST_PC,
13909 EARNED_VALUE,
13910 TASK_WT_BASIS_CODE,
13911 SUBPRJ_PPL_ACT_EFFORT,
13912 SUBPRJ_EQPMT_ACT_EFFORT,
13913 SUBPRJ_PPL_ETC_EFFORT,
13914 SUBPRJ_EQPMT_ETC_EFFORT,
13915 SUBPRJ_OTH_ACT_COST_TO_DT_TC,
13916 SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
13917 SUBPRJ_OTH_ACT_COST_TO_DT_FC,
13918 SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
13919 SUBPRJ_OTH_ACT_COST_TO_DT_PC,
13920 SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
13921 SUBPRJ_PPL_ACT_COST_TC,
13922 SUBPRJ_PPL_ACT_RAWCOST_TC,
13923 SUBPRJ_PPL_ACT_COST_FC,
13924 SUBPRJ_PPL_ACT_RAWCOST_FC,
13925 SUBPRJ_PPL_ACT_COST_PC,
13926 SUBPRJ_PPL_ACT_RAWCOST_PC,
13927 SUBPRJ_EQPMT_ACT_COST_TC,
13928 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13929 SUBPRJ_EQPMT_ACT_COST_FC,
13930 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13931 SUBPRJ_EQPMT_ACT_COST_PC,
13932 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13933 SUBPRJ_OTH_ETC_COST_TC,
13934 SUBPRJ_OTH_ETC_RAWCOST_TC,
13935 SUBPRJ_OTH_ETC_COST_FC,
13936 SUBPRJ_OTH_ETC_RAWCOST_FC,
13937 SUBPRJ_OTH_ETC_COST_PC,
13938 SUBPRJ_OTH_ETC_RAWCOST_PC,
13939 SUBPRJ_PPL_ETC_COST_TC,
13940 SUBPRJ_PPL_ETC_RAWCOST_TC,
13941 SUBPRJ_PPL_ETC_COST_FC,
13942 SUBPRJ_PPL_ETC_RAWCOST_FC,
13943 SUBPRJ_PPL_ETC_COST_PC,
13944 SUBPRJ_PPL_ETC_RAWCOST_PC,
13945 SUBPRJ_EQPMT_ETC_COST_TC,
13946 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13947 SUBPRJ_EQPMT_ETC_COST_FC,
13948 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13949 SUBPRJ_EQPMT_ETC_COST_PC,
13950 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13951 SUBPRJ_EARNED_VALUE,
13952 CURRENT_FLAG,
13953 PROJFUNC_COST_RATE_TYPE,
13954 PROJFUNC_COST_EXCHANGE_RATE,
13955 PROJFUNC_COST_RATE_DATE,
13956 PROJ_COST_RATE_TYPE,
13957 PROJ_COST_EXCHANGE_RATE,
13958 PROJ_COST_RATE_DATE,
13959 TXN_CURRENCY_CODE,
13960 PROG_PA_PERIOD_NAME,
13961 PROG_GL_PERIOD_NAME,
13962 OTH_QUANTITY_TO_DATE,
13963 OTH_ETC_QUANTITY
13964 from pa_progress_rollup
13965 where project_id = l_project_id
13966 and object_id = l_object_id
13967 and object_Type = l_object_type
13968 -- Add cbs_element_id
13969 and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13970 and structure_type = 'WORKPLAN'
13971 and structure_version_id is null
13972 and proj_element_id = l_task_id
13973 AND current_flag = 'W'; -- Bug 3879461
13974
13975 l_w_rollup_rec_asofdate w_rollup_rec_asofdate%rowtype;
13976
13977 -- cursor to get rollup records after as of date
13978 cursor future_rollup_recs is
13979 select PROGRESS_ROLLUP_ID,
13980 PERCENT_COMPLETE_ID,
13981 PROJECT_ID,
13982 OBJECT_ID,
13983 OBJECT_TYPE,
13984 AS_OF_DATE,
13985 OBJECT_VERSION_ID,
13986 LAST_UPDATE_DATE,
13987 LAST_UPDATED_BY,
13988 CREATION_DATE,
13989 CREATED_BY,
13990 PROGRESS_STATUS_CODE,
13991 LAST_UPDATE_LOGIN,
13992 INCREMENTAL_WORK_QUANTITY,
13993 CUMULATIVE_WORK_QUANTITY,
13994 BASE_PERCENT_COMPLETE,
13995 EFF_ROLLUP_PERCENT_COMP,
13996 COMPLETED_PERCENTAGE,
13997 ESTIMATED_START_DATE,
13998 ESTIMATED_FINISH_DATE,
13999 ACTUAL_START_DATE,
14000 ACTUAL_FINISH_DATE,
14001 ESTIMATED_REMAINING_EFFORT,
14002 RECORD_VERSION_NUMBER,
14003 BASE_PERCENT_COMP_DERIV_CODE,
14004 BASE_PROGRESS_STATUS_CODE,
14005 EFF_ROLLUP_PROG_STAT_CODE,
14006 STRUCTURE_TYPE,
14007 PROJ_ELEMENT_ID,
14008 STRUCTURE_VERSION_ID,
14009 PPL_ACT_EFFORT_TO_DATE,
14010 EQPMT_ACT_EFFORT_TO_DATE,
14011 EQPMT_ETC_EFFORT,
14012 OTH_ACT_COST_TO_DATE_TC,
14013 OTH_ACT_RAWCOST_TO_DATE_TC,
14014 OTH_ACT_COST_TO_DATE_FC,
14015 OTH_ACT_RAWCOST_TO_DATE_FC,
14016 OTH_ACT_COST_TO_DATE_PC,
14017 OTH_ACT_RAWCOST_TO_DATE_PC,
14018 OTH_ETC_COST_TC,
14019 OTH_ETC_RAWCOST_TC,
14020 OTH_ETC_COST_FC,
14021 OTH_ETC_RAWCOST_FC,
14022 OTH_ETC_COST_PC,
14023 OTH_ETC_RAWCOST_PC,
14024 PPL_ACT_COST_TO_DATE_TC,
14025 PPL_ACT_RAWCOST_TO_DATE_TC,
14026 PPL_ACT_COST_TO_DATE_FC,
14027 PPL_ACT_RAWCOST_TO_DATE_FC,
14028 PPL_ACT_COST_TO_DATE_PC,
14029 PPL_ACT_RAWCOST_TO_DATE_PC,
14030 PPL_ETC_COST_TC,
14031 PPL_ETC_RAWCOST_TC,
14032 PPL_ETC_COST_FC,
14033 PPL_ETC_RAWCOST_FC,
14034 PPL_ETC_COST_PC,
14035 PPL_ETC_RAWCOST_PC,
14036 EQPMT_ACT_COST_TO_DATE_TC,
14037 EQPMT_ACT_RAWCOST_TO_DATE_TC,
14038 EQPMT_ACT_COST_TO_DATE_FC,
14039 EQPMT_ACT_RAWCOST_TO_DATE_FC,
14040 EQPMT_ACT_COST_TO_DATE_PC,
14041 EQPMT_ACT_RAWCOST_TO_DATE_PC,
14042 EQPMT_ETC_COST_TC,
14043 EQPMT_ETC_RAWCOST_TC,
14044 EQPMT_ETC_COST_FC,
14045 EQPMT_ETC_RAWCOST_FC,
14046 EQPMT_ETC_COST_PC,
14047 EQPMT_ETC_RAWCOST_PC,
14048 EARNED_VALUE,
14049 TASK_WT_BASIS_CODE,
14050 SUBPRJ_PPL_ACT_EFFORT,
14051 SUBPRJ_EQPMT_ACT_EFFORT,
14052 SUBPRJ_PPL_ETC_EFFORT,
14053 SUBPRJ_EQPMT_ETC_EFFORT,
14054 SUBPRJ_OTH_ACT_COST_TO_DT_TC,
14055 SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
14056 SUBPRJ_OTH_ACT_COST_TO_DT_FC,
14057 SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
14058 SUBPRJ_OTH_ACT_COST_TO_DT_PC,
14059 SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
14060 SUBPRJ_PPL_ACT_COST_TC,
14061 SUBPRJ_PPL_ACT_RAWCOST_TC,
14062 SUBPRJ_PPL_ACT_COST_FC,
14063 SUBPRJ_PPL_ACT_RAWCOST_FC,
14064 SUBPRJ_PPL_ACT_COST_PC,
14065 SUBPRJ_PPL_ACT_RAWCOST_PC,
14066 SUBPRJ_EQPMT_ACT_COST_TC,
14067 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
14068 SUBPRJ_EQPMT_ACT_COST_FC,
14069 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
14070 SUBPRJ_EQPMT_ACT_COST_PC,
14071 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
14072 SUBPRJ_OTH_ETC_COST_TC,
14073 SUBPRJ_OTH_ETC_RAWCOST_TC,
14074 SUBPRJ_OTH_ETC_COST_FC,
14075 SUBPRJ_OTH_ETC_RAWCOST_FC,
14076 SUBPRJ_OTH_ETC_COST_PC,
14077 SUBPRJ_OTH_ETC_RAWCOST_PC,
14078 SUBPRJ_PPL_ETC_COST_TC,
14079 SUBPRJ_PPL_ETC_RAWCOST_TC,
14080 SUBPRJ_PPL_ETC_COST_FC,
14081 SUBPRJ_PPL_ETC_RAWCOST_FC,
14082 SUBPRJ_PPL_ETC_COST_PC,
14083 SUBPRJ_PPL_ETC_RAWCOST_PC,
14084 SUBPRJ_EQPMT_ETC_COST_TC,
14085 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
14086 SUBPRJ_EQPMT_ETC_COST_FC,
14087 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
14088 SUBPRJ_EQPMT_ETC_COST_PC,
14089 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
14090 SUBPRJ_EARNED_VALUE,
14091 CURRENT_FLAG,
14092 PROJFUNC_COST_RATE_TYPE,
14093 PROJFUNC_COST_EXCHANGE_RATE,
14094 PROJFUNC_COST_RATE_DATE,
14095 PROJ_COST_RATE_TYPE,
14096 PROJ_COST_EXCHANGE_RATE,
14097 PROJ_COST_RATE_DATE,
14098 TXN_CURRENCY_CODE,
14099 PROG_PA_PERIOD_NAME,
14100 PROG_GL_PERIOD_NAME,
14101 OTH_QUANTITY_TO_DATE,
14102 OTH_ETC_QUANTITY
14103 from pa_progress_rollup
14104 where project_id = l_project_id
14105 and object_id = l_object_id
14106 and object_type = l_object_type
14107 -- Add cbs_element_id
14108 and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
14109 and structure_type = 'WORKPLAN'
14110 and structure_version_id is null
14111 and proj_element_id = l_task_id
14112 and as_of_Date > l_temp_as_of_date;
14113
14114 l_future_rollup_recs future_rollup_recs%rowtype;
14115
14116 -- cursor to get all assignment records for that as of date
14117 cursor all_assignments_asofdate is
14118 select *
14119 from pa_progress_rollup
14120 where project_id = l_project_id
14121 and object_type = 'PA_ASSIGNMENTS'
14122 and structure_version_id is null
14123 and structure_Type = 'WORKPLAN'
14124 --- and nvl(ppl_act_effort_to_date,0) + nvl(eqpmt_act_effort_to_date,0) + nvl(oth_quantity_to_date,0) > 0
14125 AND current_flag <> 'W' -- Bug 3879461
14126 and as_of_date = l_temp_as_of_Date;
14127
14128 -- cursor to get all assignment records for the previous as of date
14129 cursor all_assign_prev_asofdate is
14130 select *
14131 from pa_progress_rollup ppr
14132 where ppr.project_id = l_project_id
14133 and ppr.object_type = 'PA_ASSIGNMENTS'
14134 and ppr.structure_version_id is null
14135 and ppr.structure_Type = 'WORKPLAN'
14136 AND current_flag <> 'W' -- Bug 3879461
14137 and ppr.as_of_date = (select /*+ no_merge leading(PPr1) */ max(as_of_date) --Added hint for 11694228
14138 from pa_progress_rollup ppr1
14139 where ppr1.project_id = l_project_id
14140 and ppr1.object_type = 'PA_ASSIGNMENTS'
14141 and ppr1.object_id = ppr.object_id
14142 and ppr1.proj_element_id = ppr.proj_element_id
14143 and ppr1.structure_version_id is null
14144 and ppr1.structure_Type = 'WORKPLAN'
14145 AND current_flag <> 'W' -- Bug 3879461
14146 and ppr1.as_of_date < l_temp_as_of_Date
14147 and not exists (select 1 ---4871809 performance bug
14148 from pa_progress_rollup ppr2
14149 where ppr2.project_id = l_project_id
14150 and ppr2.object_type = 'PA_ASSIGNMENTS'
14151 and ppr2.object_id = ppr.object_id
14152 and ppr2.proj_element_id = ppr.proj_element_id
14153 and ppr2.structure_version_id is null
14154 and ppr2.structure_Type = 'WORKPLAN'
14155 AND current_flag <> 'W' -- Bug 3879461
14156 and ppr2.as_of_date = l_temp_as_of_Date));
14157
14158 -- cursor to get all objects from summ temp table
14159 cursor all_objects_in_temp is
14160 select
14161 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Bug # 4162534.
14162 *
14163 from pji_fm_xbs_accum_tmp1
14164 where project_id = l_project_id
14165 and struct_version_id = l_latest_wp_struct_ver_id
14166 and nvl(plan_version_id,-1) = decode(p_plan_res_level,'Y',-1,nvl(plan_version_id,-1))
14167 and project_element_id > 0
14168 -- and nvl(act_labor_hrs,0)+nvl(act_equip_hrs,0)+nvl(act_prj_raw_cost,0) > 0 --4654495,5091800
14169 order by project_id,struct_version_id,project_element_id,res_list_member_id,period_name;
14170
14171 -- cursor to get resource_list_member_id's resource_class code
14172 cursor get_resource_class_code is
14173 select resource_class_code
14174 from pa_resource_list_members
14175 where resource_list_member_id = l_res_list_member_id;
14176
14177 -- cursor to check if resource_list_memebr_id is that of a planned assignment
14178 cursor get_assignment_info is
14179 select resource_assignment_id,
14180 rbs_element_id,
14181 resource_class_code,
14182 rate_based_flag,
14183 txn_currency_code,
14184 assignment_start_date,
14185 assignment_end_date,
14186 planned_quantity,
14187 planned_bur_cost_txn_cur,
14188 planned_bur_cost_projfunc,
14189 planned_bur_cost_proj_cur,
14190 planned_raw_cost_txn_cur,
14191 planned_raw_cost_projfunc,
14192 planned_raw_cost_proj_cur,
14193 --CBS Change in Get_Summarized_Actuals
14194 cbs_element_id
14195 -- End CBS Change in Get_Summarized_Actuals
14196 from pa_task_asgmts_v
14197 where project_id = l_project_id
14198 and structure_version_id = l_latest_wp_struct_ver_id
14199 and task_id = l_task_id
14200 and resource_list_member_id = l_res_list_member_id
14201 -- CBS Change in Get_Summarized_Actuals
14202 and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1) ; -- Bug 16743324
14203 -- End CBS Change in Get_Summarized_Actuals
14204
14205 l_get_assignment_info get_assignment_info%rowtype;
14206
14207 -- cursor to get task information
14208 cursor task_info(l_obj number) is
14209 select ppev.element_version_id,
14210 decode(ppe.base_percent_comp_deriv_code,null,ptt.BASE_PERCENT_COMP_DERIV_CODE,'^',ptt.BASE_PERCENT_COMP_DERIV_CODE,ppe.base_percent_comp_deriv_code) base_percent_comp_deriv_code,
14211 ptt.initial_progress_status_code,
14212 ppevs.scheduled_start_date,
14213 ppevs.scheduled_finish_date
14214 from pa_proj_elements ppe,
14215 pa_proj_element_versions ppev,
14216 pa_proj_elem_ver_schedule ppevs,
14217 pa_task_types ptt
14218 where ppev.proj_element_id = l_obj
14219 and ppev.parent_structure_version_id = l_latest_wp_struct_ver_id
14220 and ppev.proj_element_id = ppe.proj_element_id
14221 and ppevs.element_version_id = ppev.element_version_id
14222 and ppe.type_id = ptt.task_type_id(+);
14223
14224 -- cursor to get progress rollup attrs
14225 cursor rollup_method is
14226 select TASK_WEIGHT_BASIS_CODE
14227 from pa_proj_progress_attr
14228 where project_id = l_project_id
14229 and structure_type = 'WORKPLAN';
14230
14231 -- cursor to get planned value for task
14232 cursor get_planned_val_for_task is
14233 select labor_effort, labor_brdn_cost
14234 from pji_xbs_plans_v
14235 where project_id = l_project_id
14236 and structure_version_id = l_latest_wp_struct_ver_id
14237 and proj_element_id = l_object_id
14238 and structure_type = 'WORKPLAN';
14239
14240 /* Begin: Fix for Bug # 4018249. */
14241
14242 cursor cur_record_count(l_cur_project_id NUMBER) is
14243 select
14244 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
14245 count(*)
14246 from pji_fm_xbs_accum_tmp1
14247 where project_id = l_cur_project_id;
14248
14249 l_record_count NUMBER := null;
14250
14251 /* End: Fix for Bug # 4018249. CURSOR NOT USED ANYMORE, PJI passes period dates*/
14252 --- this cursor is used to get start_date for periods
14253 --- need this for converting act txn curr to plan txn curr
14254 CURSOR get_gl_pa_st_date_csr IS
14255 SELECT gp.START_DATE
14256 FROM gl_periods gp,
14257 gl_sets_of_books gsb,
14258 pa_implementations_all pia,
14259 pa_projects_all ppa
14260 WHERE ppa.project_id = l_project_id
14261 and nvl(ppa.org_id,-99) = nvl(pia.org_id,-99)
14262 and gsb.set_of_books_id = pia.set_of_books_id
14263 and gp.period_set_name = gsb.period_set_name
14264 AND gp.period_name = l_period_name
14265 AND gp.period_type = decode(l_plan_type,'G',gsb.accounted_period_type,'P',pia.pa_period_type)
14266 AND gp.adjustment_period_flag = 'N'
14267 ORDER BY gp.start_date;
14268
14269 CURSOR cur_prog_setup(c_proj_element_id NUMBER, c_project_id number)
14270 IS
14271 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N'),initial_progress_status_code
14272 from pa_task_types ttype
14273 , pa_proj_elements elem
14274 where elem.project_id = c_project_id
14275 and elem.proj_element_id = c_proj_element_id
14276 and elem.object_type = 'PA_TASKS'
14277 and elem.type_id = ttype.task_type_id;
14278 l_prog_stat_code varchar2(240);
14279 l_prog_enable_flag varchar2(30);
14280
14281 -- Added for Bug 6917961
14282
14283 CURSOR c_get_prog_roll(c_progress_rollup_id NUMBER) IS
14284 SELECT ppr.progress_status_code
14285 , ppr.actual_start_date
14286 , ppr.actual_finish_date
14287 , ppr.proj_element_id
14288 , ppr.object_type
14289 , ppr.project_id
14290 FROM pa_progress_rollup ppr
14291 , pa_proj_elements ppe
14292 WHERE ppr.progress_rollup_id = c_progress_rollup_id
14293 AND ppr.proj_element_id = ppe.proj_element_id
14294 ;
14295
14296 l_t_progress_status_code varchar2(240);
14297 l_t_actual_start_date date;
14298 l_t_actual_finish_date date;
14299 l_t_proj_element_id number;
14300 l_t_object_type varchar2(100);
14301 l_t_project_id number;
14302
14303 U_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
14304
14305 -- Added for Bug 6917961
14306
14307 l_get_summ_call_contxt VARCHAR2(1) := 'W'; -- 4415960
14308
14309 -- 4533112 Begin
14310 -- jjkumar : added c_proj_element_id parameter for bug 9778012
14311 CURSOR c_get_dates_overrides(c_project_id number, c_object_id number, c_object_type varchar2, c_as_of_date Date, c_proj_element_id number) IS
14312 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
14313 , ppr.estimated_start_date
14314 , ppr.estimated_finish_date
14315 , ppr.actual_start_date
14316 , ppr.actual_finish_date
14317 , ppe.status_code
14318 FROM pa_progress_rollup ppr
14319 , pa_proj_elements ppe
14320 WHERE ppr.project_id = c_project_id
14321 AND ppr.object_id = c_object_id
14322 AND ppr.object_type = c_object_type
14323 AND ppr.structure_type = 'WORKPLAN'
14324 AND ppr.structure_version_id is null
14325 AND trunc(ppr.as_of_date) <= trunc(c_as_of_date)
14326 AND ppr.current_flag IN ('Y', 'N')
14327 AND ppr.proj_element_id = ppe.proj_element_id
14328 AND ppe.proj_element_id = c_proj_element_id -- added c_proj_element_id for bug 9778012
14329 ORDER by as_of_date desc;
14330
14331 CURSOR c_get_rec_overrides(c_progress_rollup_id NUMBER) IS
14332 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
14333 , ppr.estimated_start_date
14334 , ppr.estimated_finish_date
14335 , ppr.actual_start_date
14336 , ppr.actual_finish_date
14337 , ppe.status_code
14338 , ppr.object_id
14339 , ppr.object_version_id
14340 , ppr.proj_element_id
14341 , ppr.object_type
14342 , ppr.as_of_date
14343 , ppr.project_id
14344 , ppr.current_flag
14345 FROM pa_progress_rollup ppr
14346 , pa_proj_elements ppe
14347 WHERE ppr.progress_rollup_id = c_progress_rollup_id
14348 AND ppr.proj_element_id = ppe.proj_element_id
14349 ;
14350
14351 l_date_override_flag VARCHAR2(1):='N';
14352 l_db_date_override_flag VARCHAR2(1):='N';
14353 l_db_estimated_start_date DATE;
14354 l_db_estimated_finish_date DATE;
14355 l_db_actual_start_date DATE;
14356 l_db_actual_finish_date DATE;
14357 l_clex_estimated_start_date DATE;
14358 l_clex_estimated_finish_date DATE;
14359 l_clex_actual_start_date DATE;
14360 l_clex_actual_finish_date DATE;
14361 l_task_status_code VARCHAR2(150);
14362 u_actual_start_date PA_PLSQL_DATATYPES.DateTabTyp;
14363 u_estimated_start_date PA_PLSQL_DATATYPES.DateTabTyp;
14364 u_estimated_finish_date PA_PLSQL_DATATYPES.DateTabTyp;
14365 u_base_progress_status_code PA_PLSQL_DATATYPES.Char150TabTyp;
14366 l_db_object_id NUMBER;
14367 l_db_object_version_id NUMBER;
14368 l_db_proj_element_id NUMBER;
14369 l_db_object_type VARCHAR2(30);
14370 l_db_as_of_date DATE;
14371 l_db_project_id NUMBER;
14372 l_db_current_flag VARCHAR2(1);
14373 l_clex_pc NUMBER;
14374 -- 4533112 End
14375
14376 -- 4654495
14377 cursor some_progress_exists is
14378 select 'Y'
14379 from pa_progress_rollup
14380 where project_id = l_project_id
14381 and proj_element_id = l_task_id
14382 and object_type in ('PA_TASKS','PA_ASSIGNMENTS');
14383
14384 l_some_progress_exists some_progress_exists%rowtype;
14385 -- Bug 6321238
14386 cursor check_pup_pue(c_project_id number,
14387 c_latest_published_version_id number) is
14388 select 'Y'
14389 from pa_proj_elem_ver_structure
14390 where project_id = c_project_id
14391 and element_version_id = c_latest_published_version_id
14392 and process_code = 'PUE';
14393
14394 l_check_pup_pue VARCHAR2(1);
14395
14396
14397 l_data VARCHAR2(1000);-- 4746476
14398 l_msg_index_out NUMBER; -- 4746476
14399
14400 l_conc_request_id NUMBER; -- Added for Bug#5659575
14401 l_multi_curr_flag pa_proj_fp_options.PLAN_IN_MULTI_CURR_FLAG%TYPE := 'N'; --Bug 13823145
14402
14403 --added for the Bug 13640836
14404 CURSOR get_element_number (l_proj_element_id NUMBER)
14405 IS
14406 SELECT element_number
14407 FROM pa_proj_elements p
14408 WHERE proj_element_id=l_proj_element_id;
14409 CURSOR get_res_assignment_name (l_resource_assignment_id NUMBER)
14410 IS
14411 SELECT rlm.ALIAS
14412 FROM pa_resource_assignments ra,
14413 pa_resource_list_members rlm
14414 WHERE ra.resource_list_member_id=rlm.resource_list_member_id
14415 AND ra.resource_assignment_id =l_resource_assignment_id;
14416 CURSOR get_budget_version_name(l_budget_version_id NUMBER)
14417 IS
14418 SELECT version_name
14419 FROM pa_budget_versions
14420 WHERE budget_version_id=l_budget_version_id;
14421 l_element_number pa_proj_elements.element_number%type;
14422 l_res_assignment_name pa_resource_list_members.alias%type;
14423 l_plan_version_name pa_budget_versions.version_name%type;
14424 --added for the Bug 13640836
14425 BEGIN
14426 pa_debug.set_process('PLSQL');
14427 pa_debug.log_message('Begin GET_SUMM_ACT: p_extraction: '||p_extraction_type||' p_res_level: '||p_plan_res_level, 1);
14428
14429 x_return_status := 'S';
14430 l_return_status := 'S';
14431 l_index := 0;
14432 l_extraction_type := p_extraction_type;
14433 if (p_extraction_type = 'INITIAL' OR p_extraction_type = 'PUBLISH') then -- 4415960 Added PUBLISH
14434 l_extraction_type := 'FULL';
14435 end if;
14436 -- 4415960
14437 if p_extraction_type = 'PUBLISH' then
14438 l_get_summ_call_contxt := 'P';
14439 end if;
14440
14441 for l_index2 in 1..p_project_id_list.COUNT loop
14442 l_project_id := p_project_id_list(l_index2);
14443 l_org_id := to_number(null);
14444 l_shared_structure := 'N';
14445
14446 open projects_in_range;
14447 fetch projects_in_range into l_org_id, l_proj_curr_code, l_proj_func_curr_code, l_shared_structure;
14448 close projects_in_range;
14449
14450 if l_shared_structure = 'SHARE_FULL' then
14451
14452 /* Commented for Bug 6414995 and reverted as above.
14453
14454 if p_extraction_type = 'PUBLISH' then -- Added If block for bug#5659575
14455 l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id);
14456 else
14457 l_latest_wp_struct_ver_id := pa_project_structure_utils.GET_LATEST_FIN_STRUC_VER_ID(l_project_id);
14458 end if;
14459 Bug 6414995 */
14460 l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id); -- Bug 6414995
14461 if l_latest_wp_struct_ver_id is not null then
14462 IF g1_debug_mode = 'Y' THEN
14463 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14464 x_Msg => 'Project:'||l_project_id||' Structure:'||l_latest_wp_struct_ver_id,
14465 x_Log_Level=> 3);
14466 END IF;
14467 l_index := l_index + 1;
14468 --- find the max published as_of_date for all lowest level tasks
14469 open max_as_of_date;
14470 fetch max_as_of_date into l_max_as_of_Date;
14471 close max_as_of_date;
14472
14473 open max_as_of_date_assign;
14474 fetch max_as_of_date_assign into l_max_as_of_Date_assign;
14475 close max_as_of_date_assign;
14476
14477 if (l_max_as_of_Date is null and l_max_as_of_Date_assign is null) then
14478 if (p_plan_res_level = 'Y') then
14479 open max_as_of_date_rollup;
14480 fetch max_as_of_date_rollup into l_max_as_of_Date;
14481 if (l_max_as_of_Date is not null) then
14482 l_max_as_of_Date := l_max_as_of_Date; ---5226910(5212999)
14483 end if;
14484 close max_as_of_date_rollup;
14485 else
14486 open max_as_of_date_rollup_tsk;
14487 fetch max_as_of_date_rollup_tsk into l_max_as_of_Date;
14488 if (l_max_as_of_Date is not null) then
14489 l_max_as_of_Date := l_max_as_of_Date; ---5226910(5212999)
14490 end if;
14491 close max_as_of_date_rollup_tsk;
14492 end if;
14493 end if;
14494
14495 if nvl(l_max_as_of_date,trunc(sysdate)) <= trunc(sysdate) then
14496 l_max_as_of_date := trunc(sysdate) - 1;
14497 end if;
14498
14499 if nvl(l_max_as_of_Date_assign,l_max_as_of_date) > l_max_as_of_date then
14500 l_max_as_of_date := l_max_as_of_Date_assign;
14501 end if;
14502
14503 --- 5226910(5212999)
14504 if (l_max_as_of_date >= trunc(sysdate)) then
14505 l_temp_as_of_date := l_max_as_of_date;
14506 else
14507 --- get next cycle date after l_max_as_of_date
14508 l_temp_as_of_date := trunc(pa_progress_utils.get_next_progress_cycle(p_project_id => l_project_id,
14509 p_task_id => to_number(null),
14510 p_start_date => l_max_as_of_date));
14511 end if;
14512 proj_ids_tbl.extend;
14513 latest_wp_struct_ver_ids_tbl.extend;
14514 res_list_ids_tbl.extend;
14515 proj_org_ids_tbl.extend;
14516 proj_thru_dates_tbl.extend;
14517 calendar_type_tbl.extend;
14518 proj_curr_code_tbl.extend;
14519 proj_func_curr_code_tbl.extend;
14520 proj_pgm_level_tbl.extend;
14521 base_struct_ver_ids_tbl.extend; -- Added for bug 5464875
14522
14523 proj_ids_tbl(l_index) := l_project_id;
14524 latest_wp_struct_ver_ids_tbl(l_index) := l_latest_wp_struct_ver_id;
14525 res_list_ids_tbl(l_index) := pa_fin_plan_utils.Get_wp_bv_res_list_id(l_latest_wp_struct_ver_id);
14526 proj_org_ids_tbl(l_index) := l_org_id;
14527 proj_thru_dates_tbl(l_index) := trunc(l_temp_as_of_date);
14528 calendar_type_tbl(l_index) := pa_progress_utils.get_time_phase_period(l_latest_wp_struct_ver_id, l_project_id);
14529 proj_curr_code_tbl(l_index) := l_proj_curr_code;
14530 proj_func_curr_code_tbl(l_index) := l_proj_func_curr_code;
14531 if (p_proj_pgm_level.exists(l_index2)) then
14532 proj_pgm_level_tbl(l_index) := p_proj_pgm_level(l_index2);
14533 else
14534 proj_pgm_level_tbl(l_index) := 1;
14535 end if;
14536
14537 -- Added for bug 5464875
14538 if (p_plan_res_level = 'N') then
14539 base_struct_ver_ids_tbl(l_index) := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14540 if (base_struct_ver_ids_tbl(l_index) = -1) then
14541 base_struct_ver_ids_tbl(l_index) := null;
14542 end if;
14543 end if;
14544 end if;
14545 end if;
14546 end loop;
14547
14548 --- update next_progress_cycle_date column to stamp the date upto which
14549 --- actuals are pulled in
14550 forall l_index in 1..proj_ids_tbl.count
14551 update pa_proj_progress_attr
14552 set next_progress_update_date = proj_thru_dates_tbl(l_index)
14553 where project_id = proj_ids_tbl(l_index)
14554 and object_type = 'PA_STRUCTURES'
14555 and structure_type = 'WORKPLAN';
14556
14557 begin
14558 if (p_plan_res_level = 'Y') then
14559 pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.get_summarized_data', 1);
14560 --- Call Reporting API to populate temp table with summarized actuals
14561 pji_fm_xbs_accum_utils.get_summarized_data(p_project_ids => proj_ids_tbl,
14562 p_resource_list_ids => res_list_ids_tbl,
14563 p_struct_ver_ids => latest_wp_struct_ver_ids_tbl,
14564 p_end_Date => proj_thru_dates_tbl,
14565 p_calendar_type => calendar_type_tbl,
14566 p_record_type => 'NYN',
14567 p_currency_type => 6,
14568 --p_calling_context => 'W',
14569 p_calling_context => l_get_summ_call_contxt, -- 4415960
14570 p_extraction_type => l_extraction_type,
14571 x_return_status => x_return_status,
14572 x_msg_code => x_msg_code);
14573
14574 /* Begin: Added for bug 5526638*/
14575 /* Added and condition for bug#5659575*/
14576 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') then
14577 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14578 p_msg_name => x_msg_code);
14579 x_msg_data := x_msg_code;
14580 x_return_status := 'E';
14581 pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.get_summarized_data', 1);
14582 RAISE l_pji_wp_exception;
14583 END IF;
14584 /* End: Added for bug 5526638*/
14585
14586 IF g1_debug_mode = 'Y' THEN
14587 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14588 x_Msg => 'Done with pji_fm_xbs_accum_utils.get_summarized_data',
14589 x_Log_Level=> 3);
14590 END IF;
14591 end if;
14592 exception when others then
14593 pa_debug.log_message('GET_SUMM_ACT: get_summarized_data failed with exception', 1);
14594 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14595 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14596 p_error_text => SUBSTRB('pji_fm_xbs_accum_utils.get_summarized_data:'||SQLERRM,1,120));
14597 raise;
14598 end;
14599
14600 -- Added for bug 5464875. Used Bulk Processing
14601 --- here call populate_workplan_data when plan_res_level is 'N'
14602 if (p_plan_res_level = 'N') then
14603 begin
14604 for i in 1..proj_ids_tbl.COUNT loop
14605 populate_in_tbl(i).project_id := proj_ids_tbl(i);
14606 populate_in_tbl(i).struct_ver_id := latest_wp_struct_ver_ids_tbl(i);
14607 populate_in_tbl(i).base_struct_ver_id := base_struct_ver_ids_tbl(i);
14608 populate_in_tbl(i).plan_version_id := Null;
14609 populate_in_tbl(i).as_of_date := proj_thru_dates_tbl(i);
14610 populate_in_tbl(i).project_element_id := Null;
14611
14612 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
14613 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).project_id='||populate_in_tbl(i).project_id, x_Log_Level=> 3);
14614 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).struct_ver_id='||populate_in_tbl(i).struct_ver_id, x_Log_Level=> 3);
14615 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).base_struct_ver_id='||populate_in_tbl(i).base_struct_ver_id, x_Log_Level=>3);
14616 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).plan_version_id='||populate_in_tbl(i).plan_version_id, x_Log_Level=> 3);
14617 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).as_of_date='||populate_in_tbl(i).as_of_date, x_Log_Level=> 3);
14618 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).project_element_id='||populate_in_tbl(i).project_element_id, x_Log_Level=> 3);
14619
14620 end loop;
14621
14622 pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14623 --- Call Reporting API to populate temp table with workplan data
14624 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_populate_in_tbl => populate_in_tbl,
14625 p_calling_context => 'SUMMARIZE',
14626 p_program_rollup_flag => 'Y',
14627 x_return_status => x_return_status,
14628 x_msg_code => x_msg_code );
14629 /* Begin: Added for bug 5526638*/
14630 /* Added and condition for bug#5659575*/
14631 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') THEN
14632 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14633 p_msg_name => x_msg_code);
14634 x_msg_data := x_msg_code;
14635 x_return_status := 'E';
14636 pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14637 RAISE l_pji_wp_exception;
14638 END IF;
14639 /* End: Added for bug 5526638*/
14640
14641 IF g1_debug_mode = 'Y' THEN
14642 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14643 x_Msg => 'Done with pji_fm_xbs_accum_utils.populate_workplan_data',
14644 x_Log_Level=> 3);
14645 END IF;
14646 exception when others then
14647 pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14648 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14649 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14650 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14651 raise;
14652 end;
14653 end if;
14654
14655 --- Once the temp table is populated we need to update progress rollup
14656 --- records with the summarized actuals.
14657
14658 if (x_return_status = 'S') then
14659
14660 l_t_index := 0; -- init here because this can be for range of projects
14661 l_index_etc := 0; -- init here because this can be for range of projects
14662 l_sri_index_etc := 0; -- for bug 6266824: init here because this can be for range of projects
14663
14664 for l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
14665 /* Begin: Fix for Bug # 5526638. */
14666 Begin
14667 l_act_err_flag.extend;
14668 l_act_err_msg.extend;
14669 l_err_msg := null;
14670 l_act_err_flag(l_index) := 0;
14671 l_act_err_msg(l_index) := l_err_msg;
14672 SAVEPOINT ACT_PROJECT;
14673 /* End: Fix for Bug # 5526638. */
14674
14675 l_project_id := proj_ids_tbl(l_index);
14676 l_wp_prl_res_class_flag := PA_PROJECT_STRUCTURE_UTILS.get_resource_class_flag(l_project_id); -- CBS Changes
14677 l_temp_as_of_date := proj_thru_dates_tbl(l_index);
14678 pa_debug.log_message('GET_SUMM_ACT: Project Id: '||l_project_id||' As of Date: '||l_temp_as_of_date||' Project Level: '||proj_pgm_level_tbl(l_index), 1);
14679 l_latest_wp_struct_ver_id := latest_wp_struct_ver_ids_tbl(l_index);
14680
14681 /* Added for Bug 6414995 */
14682 l_check_pup_pue := 'N';
14683 if p_extraction_type <> 'PUBLISH' then
14684 open check_pup_pue(l_project_id, l_latest_wp_struct_ver_id);
14685 fetch check_pup_pue into l_check_pup_pue;
14686 close check_pup_pue;
14687
14688 if (l_check_pup_pue = 'Y') then
14689 l_err_msg := 'Workplan publish for this project has failed.';
14690 raise l_skip_exception;
14691 end if;
14692 end if;
14693 /* End for Bug 6414995 */
14694
14695 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(l_project_id); --Bug 3801745
14696 l_plan_type := calendar_type_tbl(l_index);
14697 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => l_project_id);
14698 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
14699 p_project_id => l_project_id,
14700 p_plan_type_id => -1,
14701 p_proj_str_ver_id => l_latest_wp_struct_ver_id) ;
14702 --added for the Bug 13640836
14703 l_plan_version_name:=null;
14704 open get_budget_version_name(l_plan_version_id);
14705 fetch get_budget_version_name into l_plan_version_name;
14706 close get_budget_version_name;
14707 --added for the Bug 13640836
14708 l_proj_curr_code := proj_curr_code_tbl(l_index);
14709 l_proj_func_curr_code := proj_func_curr_code_tbl(l_index);
14710 l_multi_curr_flag := PA_FIN_PLAN_UTILS.Get_Multi_Curr_Flag(l_plan_version_id); --Bug 13823145
14711 /* Begin: Fix for Bug # 4018249. */
14712
14713 open cur_record_count(l_project_id);
14714 fetch cur_record_count into l_record_count;
14715 close cur_record_count;
14716
14717 if (nvl(l_record_count,0) <> 0) then
14718
14719 /* End: Fix for Bug # 4018249. */
14720
14721 --- call api to get pa and gl period names for this date
14722
14723 begin
14724
14725 l_pa_period_name := pa_utils2.get_pa_period_name(P_TXN_DATE => l_temp_as_of_date,
14726 p_org_id => proj_org_ids_tbl(l_index));
14727 l_gl_period_name := pa_utils2.get_gl_period_name(p_gl_date => l_temp_as_of_date,
14728 p_org_id => proj_org_ids_tbl(l_index));
14729
14730 exception when others then
14731 pa_debug.log_message('GET_SUMM_ACT: Project Id:'||l_project_id||' Issue in finding periods.', 1);
14732 /* Begin: Fix for Bug # 5526638. */
14733 -- l_return_status := 'W';
14734 -- l_project_id := -99999; --- so that the next loop won't get executed
14735
14736 /* Added If condition for Bug#5659575*/
14737 if p_extraction_type = 'PUBLISH' then
14738 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14739 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14740 p_error_text => SUBSTRB('Call of pa_utils2.get_gl_period_name failed: x_msg_data='||SQLERRM,1,120));
14741 x_return_status := 'E';
14742 RAISE;
14743 else
14744 l_err_msg := 'Periods are not defined for the transaction date :'||l_temp_as_of_date;
14745 raise l_skip_exception;
14746 end if;
14747 /* End: Fix for Bug # 5526638. */
14748 end;
14749
14750 end if;
14751
14752 IF g1_debug_mode = 'Y' THEN
14753 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14754 x_Msg => 'project id:'||l_project_id||'structure_id:'||l_latest_wp_struct_ver_id||'as of date:'||to_char(l_temp_as_of_date),
14755 x_Log_Level=> 3);
14756 END IF;
14757
14758 /**** Commented for bug 5464875 and moved above for batch processing
14759 --- here call populate_workplan_data when plan_res_level is 'N'
14760 if (p_plan_res_level = 'N' and l_return_status = 'S') then
14761 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14762 if (l_base_struct_ver_id = -1) then
14763 l_base_struct_ver_id := null;
14764 end if;
14765 begin
14766 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_project_id => l_project_id,
14767 p_struct_ver_id => l_latest_wp_struct_ver_id,
14768 p_base_struct_ver_id => l_base_struct_ver_id,
14769 p_as_of_date => l_temp_as_of_date,
14770 p_program_rollup_flag => 'Y',
14771 p_calling_context => 'SUMMARIZE',
14772 x_return_status => x_return_status,
14773 x_msg_code => x_msg_code );
14774 exception when others then
14775 pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14776 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14777 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14778 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14779 raise;
14780 end;
14781 end if;
14782 ****/
14783 --- here check if resource_list assigned to project is 'None' i.e. uncategorized
14784 --- ignore all RLMIds for such project other than 'PEOPLE' class RLMId.
14785 begin
14786 select uncategorized_flag
14787 into l_uncategorized_flag
14788 from pa_resource_lists_all_bg ---4355004
14789 where resource_list_id = res_list_ids_tbl(l_index);
14790
14791 if (l_uncategorized_flag = 'Y') then
14792 select resource_list_member_id
14793 into l_ppl_res_list_mem_id
14794 from pa_resource_list_members
14795 where resource_class_code = 'PEOPLE'
14796 and resource_class_flag = 'Y'
14797 and resource_list_id = res_list_ids_tbl(l_index);
14798 end if;
14799 exception
14800 when others then
14801 l_uncategorized_flag := 'N';
14802 end;
14803
14804 --- for all objects in summ temp table
14805 l_index2 := 0;
14806 l_index3 := 0;
14807 l_index4 := 0;
14808 l_temp_index2 := 0;
14809 l_db_case := '0';
14810
14811 for all_objects_in_temp_rec in all_objects_in_temp loop -- FOR each OBJECT
14812 pa_debug.log_message('Inside loop', 1);
14813 l_ignore_rec := 'N';
14814 l_latest_wp_struct_ver_id := all_objects_in_temp_rec.struct_version_id;
14815 l_period_flag := all_objects_in_temp_rec.period_flag;
14816 l_period_name := all_objects_in_temp_rec.period_name;
14817
14818 if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id) then
14819 open task_info(all_objects_in_temp_rec.project_element_id);
14820 fetch task_info into l_object_version_id, l_base_pc_deriv_code, l_init_prog_stat_code, l_sch_start_date, l_sch_end_date;
14821 close task_info;
14822 end if;
14823 L_PPL_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14824 L_PPL_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14825 L_EQPMT_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14826 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14827 L_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_brdn_cost;
14828 L_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_raw_cost;
14829 l_task_id := all_objects_in_temp_rec.project_element_id;
14830 l_txn_curr_code := all_objects_in_temp_rec.txn_currency_code;
14831 l_percent_comp := to_number(null);
14832 l_earned_val := to_number(null);
14833 l_planned_eff := 0;
14834 l_planned_cost := 0;
14835 --added for the Bug 13640836
14836 l_element_number:=null;
14837 open get_element_number(all_objects_in_temp_rec.project_element_id);
14838 fetch get_element_number into l_element_number;
14839 close get_element_number;
14840 --added for the Bug 13640836
14841
14842 -- 4654495
14843 if (p_plan_res_level = 'N' and
14844 (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) = 0)) then
14845 --- check in pa_progress_rollup table if data already exists for this task
14846 open some_progress_exists;
14847 fetch some_progress_exists into l_some_progress_exists;
14848 if (some_progress_exists%notfound) then
14849 l_ignore_rec := 'Y';
14850 end if;
14851 close some_progress_exists;
14852 end if;
14853
14854
14855 if (all_objects_in_temp_rec.res_list_member_id is not null and
14856 l_uncategorized_flag = 'Y' and
14857 all_objects_in_temp_rec.res_list_member_id <> l_ppl_res_list_mem_id) then
14858 l_ignore_rec := 'Y';
14859 end if;
14860
14861 pa_debug.log_message('Inside loop res_list_member_id '||all_objects_in_temp_rec.res_list_member_id, 1);
14862 pa_debug.log_message('Inside loop l_ignore_rec '||l_ignore_rec, 1);
14863 if (l_ignore_rec = 'N') then
14864 if (all_objects_in_temp_rec.res_list_member_id is not null) then --11
14865 l_res_list_member_id := all_objects_in_temp_rec.res_list_member_id;
14866 --CBS Change in Get_Summarized_Actuals
14867 l_cbs_element_id := all_objects_in_temp_rec.cbs_element_id;
14868 --End CBS Change in Get_Summarized_Actuals
14869
14870 -- check if assignment exists
14871 open get_assignment_info;
14872 fetch get_assignment_info into l_get_assignment_info;
14873
14874 if get_assignment_info%found then
14875 l_object_type := 'PA_ASSIGNMENTS';
14876 l_object_id := l_res_list_member_id;
14877 l_res_assignment_id := l_get_assignment_info.resource_assignment_id;
14878 l_txn_curr_code := l_get_assignment_info.txn_currency_code;
14879 l_new_res_list_member_id := l_res_list_member_id;
14880 l_task_version_id := l_object_version_id;
14881 l_rate_based_flag := l_get_assignment_info.rate_based_flag;
14882 l_res_class_code := l_get_assignment_info.resource_class_code;
14883 l_rbs_element_id := l_get_assignment_info.rbs_element_id;
14884 l_asgn_sch_start_date := l_get_assignment_info.assignment_start_date;
14885 l_asgn_sch_finish_date := l_get_assignment_info.assignment_end_date;
14886 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
14887 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
14888 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
14889 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
14890 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
14891 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
14892 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
14893 close get_assignment_info; -- Bug 6595475
14894
14895 else
14896 close get_assignment_info; -- Bug 6595475
14897 open get_resource_class_code;
14898 fetch get_resource_class_code into l_res_class_code;
14899 close get_resource_class_code;
14900
14901 begin
14902 pa_task_assignments_pvt.Derive_Task_Assignments
14903 ( p_project_id => l_project_id
14904 ,p_extraction_type => l_extraction_type /* Added for bug 13419867*/
14905 ,p_task_version_id => l_object_version_id
14906 ,p_scheduled_start => l_sch_start_date
14907 ,p_scheduled_end => l_sch_end_date
14908 ,p_resource_class_code => l_res_class_code
14909 ,p_resource_list_member_id => l_res_list_member_id
14910 --CBS Change in Get_Summarized_Actuals
14911 ,p_cbs_element_id => l_cbs_element_id
14912 --End CBS Change in Get_Summarized_Actuals
14913 ,p_unplanned_flag => 'Y'
14914 ,x_resource_assignment_id => l_res_assignment_id
14915 ,x_task_version_id => l_task_version_id
14916 ,x_currency_code => l_txn_curr_code
14917 ,x_resource_list_member_id => l_new_res_list_member_id -- Bug 3764224 RLM ID Changes
14918 ,x_rate_based_flag => l_rate_based_flag
14919 ,x_rbs_element_id => l_rbs_element_id
14920 ,x_msg_count => x_msg_count
14921 ,x_msg_data => x_msg_data
14922 ,x_return_status => x_return_status);
14923 exception when others then
14924 x_return_status := 'E';
14925 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14926 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14927 p_error_text => SUBSTRB('pa_task_assignments_pvt.Derive_Task_Assignments:'||SQLERRM,1,120));
14928 -- Added for Bug # 5526638
14929 l_err_msg := substrb('Derive task assignment to track actuals failed:'||SQLERRM,1,240) ;
14930 raise;
14931 end;
14932
14933 if (x_return_status = 'S' and l_res_assignment_id is not null) then
14934 l_object_type := 'PA_ASSIGNMENTS';
14935 l_object_id := l_new_res_list_member_id; ---l_res_assignment_id;
14936 l_asgn_sch_start_date := l_sch_start_date;
14937 l_asgn_sch_finish_date := l_sch_end_date;
14938 l_asgn_plan_quantity := 0;
14939 l_asgn_plan_bur_cost_tc := 0;
14940 l_asgn_plan_bur_cost_fc := 0;
14941 l_asgn_plan_bur_cost_pc := 0;
14942 l_asgn_plan_raw_cost_tc := 0;
14943 l_asgn_plan_raw_cost_fc := 0;
14944 l_asgn_plan_raw_cost_pc := 0;
14945 else
14946 l_ignore_rec := 'Y';
14947 --- l_return_status := 'W'; bug 5526638
14948 l_return_status := 'E'; -- Added for bug#5659575
14949 pa_debug.log_message('GET_SUMM_ACT: Derive task assignment failed for Res Id: '||l_res_list_member_id||' Task version id: '||l_object_version_id, 1);
14950 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14951 p_msg_name => 'Derive Task Assignment failed for RLMId: '||l_res_list_member_id);
14952 /* Begin: Fix for Bug # 5526638. */
14953 if p_extraction_type <> 'PUBLISH' then
14954 l_err_msg := 'Derive task assignment to track actuals failed for resource list member id :'||l_res_list_member_id||' and Task version id :'||l_object_version_id;
14955 raise l_skip_exception;
14956 end if;
14957 /* End: Fix for Bug # 5526638. */
14958 end if;
14959
14960 end if;
14961 --added for the Bug 13640836
14962 l_res_assignment_name:=null;
14963 open get_res_assignment_name(l_res_assignment_id);
14964 fetch get_res_assignment_name into l_res_assignment_name;
14965 close get_res_assignment_name;
14966 --added for the Bug 13640836
14967 -- close get_assignment_info; Commented for bug 6730979
14968 --- assignment is found but check if txn curr is same or not
14969 if l_txn_curr_code <> all_objects_in_temp_rec.txn_currency_code
14970 and l_ignore_rec = 'N' then --33
14971
14972 if (l_txn_curr_code <> l_proj_curr_code) THEN -- Added an extra check to stop the conversion if the transaction currency code is the same as project currency code. -- 7282850
14973
14974 l_conv_rate_date := l_temp_as_of_date;
14975 --- find period_start_date to be used for currency conversion
14976 if (l_plan_type = 'G' or l_plan_type = 'P') then
14977 l_conv_rate_date := all_objects_in_temp_rec.min_start_date;
14978 end if;
14979
14980 --- convert txn curr into planned txn curr and then process
14981 if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
14982 all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
14983 l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14984 l_txn_raw_cost := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14985 else
14986 l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14987 l_txn_raw_cost := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14988 end if;
14989 l_txn_brdn_cost_tot := all_objects_in_temp_rec.act_txn_brdn_cost;
14990 l_txn_raw_cost_tot := all_objects_in_temp_rec.act_txn_raw_cost;
14991 -- convert both raw and burdened costs
14992 begin
14993 pa_progress_utils.convert_currency_amounts(
14994 p_project_id => l_project_id
14995 ,p_task_id => all_objects_in_temp_rec.project_element_id
14996 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14997 ,p_as_of_date => l_conv_rate_date
14998 ,P_txn_cost => l_txn_brdn_cost
14999 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
15000 ,P_project_curr_code => l_txn_curr_code
15001 ,P_project_rate_type => x_txn_rate_type
15002 ,P_project_rate_date => x_txn_rate_date
15003 ,P_project_exch_rate => x_txn_exch_rate
15004 ,P_project_raw_cost => x_txn_brdn_cost
15005 ,P_projfunc_curr_code => x_projfunc_curr_code
15006 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15007 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15008 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15009 ,P_projfunc_raw_cost => x_projfunc_raw_cost
15010 ,x_return_status => x_return_status
15011 ,x_msg_count => x_msg_count
15012 ,x_msg_data => x_msg_data) ;
15013
15014 pa_progress_utils.convert_currency_amounts(
15015 p_project_id => l_project_id
15016 ,p_task_id => all_objects_in_temp_rec.project_element_id
15017 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15018 ,p_as_of_date => l_conv_rate_date
15019 ,P_txn_cost => l_txn_raw_cost
15020 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
15021 ,P_project_curr_code => l_txn_curr_code
15022 ,P_project_rate_type => x_txn_rate_type
15023 ,P_project_rate_date => x_txn_rate_date
15024 ,P_project_exch_rate => x_txn_exch_rate
15025 ,P_project_raw_cost => x_txn_raw_cost
15026 ,P_projfunc_curr_code => x_projfunc_curr_code
15027 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15028 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15029 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15030 ,P_projfunc_raw_cost => x_projfunc_raw_cost
15031 ,x_return_status => x_return_status
15032 ,x_msg_count => x_msg_count
15033 ,x_msg_data => x_msg_data) ;
15034
15035 pa_progress_utils.convert_currency_amounts(
15036 p_project_id => l_project_id
15037 ,p_task_id => all_objects_in_temp_rec.project_element_id
15038 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15039 ,p_as_of_date => l_conv_rate_date
15040 ,P_txn_cost => l_txn_raw_cost_tot
15041 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
15042 ,P_project_curr_code => l_txn_curr_code
15043 ,P_project_rate_type => x_txn_rate_type
15044 ,P_project_rate_date => x_txn_rate_date
15045 ,P_project_exch_rate => x_txn_exch_rate
15046 ,P_project_raw_cost => x_txn_raw_cost_tot
15047 ,P_projfunc_curr_code => x_projfunc_curr_code
15048 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15049 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15050 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15051 ,P_projfunc_raw_cost => x_projfunc_raw_cost
15052 ,x_return_status => x_return_status
15053 ,x_msg_count => x_msg_count
15054 ,x_msg_data => x_msg_data) ;
15055
15056 pa_progress_utils.convert_currency_amounts(
15057 p_project_id => l_project_id
15058 ,p_task_id => all_objects_in_temp_rec.project_element_id
15059 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15060 ,p_as_of_date => l_conv_rate_date
15061 ,P_txn_cost => l_txn_brdn_cost_tot
15062 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
15063 ,P_project_curr_code => l_txn_curr_code
15064 ,P_project_rate_type => x_txn_rate_type
15065 ,P_project_rate_date => x_txn_rate_date
15066 ,P_project_exch_rate => x_txn_exch_rate
15067 ,P_project_raw_cost => x_txn_brdn_cost_tot
15068 ,P_projfunc_curr_code => x_projfunc_curr_code
15069 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15070 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15071 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15072 ,P_projfunc_raw_cost => x_projfunc_raw_cost
15073 ,x_return_status => x_return_status
15074 ,x_msg_count => x_msg_count
15075 ,x_msg_data => x_msg_data) ;
15076 exception when others then
15077 l_err_msg := substrb('Currency conversion failed '||sqlerrm,1,240); -- Added for bug 5526638
15078 raise;
15079 end;
15080
15081 if (x_return_status <> 'S') then
15082 ----l_return_status := 'W'; 5526638
15083 l_return_status := 'E'; -- Added for Bug #5659575
15084 pa_debug.log_message('GET_SUMM_ACT: Currency conversion failed for Project Id: '||l_project_id||' Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15085 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
15086 pa_debug.log_message('GET_SUMM_ACT: Currency conversion failed for Project Id: '||l_project_id||' Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15087 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
15088 l_ignore_rec := 'Y';
15089 /* Begin: Fix for Bug # 5526638. */
15090 /* Added for Bug #5659575 */
15091 if p_extraction_type <> 'PUBLISH' then
15092 l_err_msg := 'Currency conversion failed for Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15093 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code;
15094 raise l_skip_exception;
15095 end if;
15096 /* End: Fix for Bug # 5526638. */
15097 else
15098 if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
15099 all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
15100 L_PPL_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15101 L_PPL_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
15102 else
15103 L_EQPMT_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15104 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
15105 end if;
15106 L_ACT_COST_TO_DATE_TC := x_txn_brdn_cost_tot;
15107 L_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost_Tot;
15108 end if;
15109 else -- 7282850
15110
15111 if (all_objects_in_temp_rec.txn_labor_brdn_cost > 0 or
15112 all_objects_in_temp_rec.txn_labor_raw_cost > 0) then
15113
15114 /*L_PPL_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15115 L_PPL_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;*/
15116 --Bug 13864209 Changes start here
15117 --If l_txn_curr_code is equal to l_proj_curr_code, then assign the project currency
15118 --related columns to L_PPL_ACT_COST_TO_DATE_TC & L_PPL_ACT_RAWCOST_TO_DATE_TC variable
15119 --instead of actuals transaction currency columns.
15120
15121 L_PPL_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.prj_labor_brdn_cost;
15122 L_PPL_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.prj_labor_raw_cost;
15123 --Bug 13864209 Changes end here
15124 else
15125 /*L_EQPMT_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15126 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;*/
15127 --Bug 13864209 Changes start here
15128 --If l_txn_curr_code is equal to l_proj_curr_code, then assign the project currency
15129 --related columns to L_EQPMT_ACT_COST_TO_DATE_TC & L_EQPMT_ACT_RAWCOST_TO_DATE_TC variable
15130 --instead of actuals transaction currency columns.
15131
15132 L_EQPMT_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.prj_equip_brdn_cost;
15133 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.prj_equip_raw_cost;
15134 --Bug 13864209 Changes end here
15135
15136
15137 end if;
15138 /* L_ACT_COST_TO_DATE_TC := x_txn_brdn_cost_tot;
15139 L_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost_Tot;*/
15140
15141 L_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.PRJ_BRDN_COST;
15142 L_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.PRJ_RAW_COST;
15143
15144
15145
15146 end if; --7282850
15147
15148 end if; --33
15149 else --11 res_list_mem_id is null
15150 l_object_id := all_objects_in_temp_rec.project_element_id;
15151 l_object_type := 'PA_TASKS';
15152 --- here get the planned value if task is lowest level and PC deriv is EFFORT based and no assignments for the task
15153 if (l_base_pc_deriv_code = 'EFFORT' or l_base_pc_deriv_code = 'COST') and
15154 (PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_object_version_id ) = 'Y') and
15155 (PA_PROGRESS_UTILS.check_assignment_exists(l_project_id,l_object_version_id,'PA_TASKS') <> 'Y') then
15156 open get_planned_val_for_task;
15157 fetch get_planned_val_for_task into l_planned_eff, l_planned_cost;
15158 close get_planned_val_for_task;
15159 end if;
15160 end if; --11
15161
15162 if (l_object_version_id = l_latest_wp_struct_ver_id) then
15163 l_object_type := 'PA_STRUCTURES';
15164 end if;
15165 end if;
15166
15167 if (l_ignore_rec = 'N') then --11
15168
15169 if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id or
15170 l_object_type <> l_last_object_Type or
15171 nvl(l_period_flag,'N') <> nvl(l_last_period_flag,'N') or
15172 (l_object_Type = 'PA_ASSIGNMENTS' and (nvl(l_last_res_list_mem_id,-99) <> nvl(l_new_res_list_member_id,-99))) or
15173 (l_object_Type = 'PA_ASSIGNMENTS' and (nvl(l_last_cbs_element_id,-99) <> nvl(l_cbs_element_id,-99)))) then --22 -- CBS Check
15174
15175 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
15176
15177 if (l_object_Type = 'PA_ASSIGNMENTS') then
15178
15179 -- create a new record in the temp table:
15180 l_db_case := '0';
15181 l_t_index := l_t_index + 1;
15182
15183 t_PROJECT_ID(l_t_index) := l_project_id;
15184 t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
15185 t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
15186 t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
15187 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15188 t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
15189 if (l_rate_based_flag = 'N') then
15190 t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15191 (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15192 else
15193 t_ACTUAL_EFFORT(l_t_index) := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15194 (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15195 end if;
15196 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15197 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15198 t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
15199 t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
15200 t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
15201 t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
15202 t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
15203 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15204 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15205 t_CURRENT_FLAG(l_t_index) := 'Y';
15206 t_OBJECT_TYPE(l_t_index) := l_object_type;
15207 t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
15208 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15209 t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
15210 t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
15211
15212 end if;
15213
15214 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
15215
15216 open w_rollup_rec_asofdate;
15217 fetch w_rollup_rec_asofdate into l_w_rollup_rec_asofdate;
15218 if w_rollup_rec_asofdate%notfound then
15219 l_working_rec_found := 'N';
15220 else
15221 l_working_rec_found := 'Y';
15222 l_index3 := l_index3 + 1;
15223 if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
15224 u_ppl_act_effort_to_date(l_index3) :=0;
15225 u_eqpmt_act_effort_to_date(l_index3) :=0;
15226 u_oth_qty(l_index3) :=0;
15227 u_oth_act_cost_to_date_tc(l_index3) :=0;
15228 u_oth_act_rawcost_to_date_tc(l_index3) :=0;
15229 u_oth_act_cost_to_date_pc(l_index3) :=0;
15230 u_oth_act_rawcost_to_date_pc(l_index3) :=0;
15231 u_oth_act_cost_to_date_fc(l_index3) :=0;
15232 u_oth_act_rawcost_to_date_fc(l_index3) :=0;
15233 u_ppl_act_cost_to_date_tc(l_index3) :=0;
15234 u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
15235 u_ppl_act_cost_to_date_pc(l_index3) :=0;
15236 u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
15237 u_ppl_act_cost_to_date_fc(l_index3) :=0;
15238 u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
15239 u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
15240 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
15241 u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
15242 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
15243 u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
15244 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
15245 u_oth_etc_qty(l_index3) :=0;
15246 u_oth_etc_cost_to_date_tc(l_index3) :=0;
15247 u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
15248 u_oth_etc_cost_to_date_pc(l_index3) :=0;
15249 u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
15250 u_oth_etc_cost_to_date_fc(l_index3) :=0;
15251 u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
15252 u_ppl_etc_cost_to_date_tc(l_index3) :=0;
15253 u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
15254 u_ppl_etc_cost_to_date_pc(l_index3) :=0;
15255 u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
15256 u_ppl_etc_cost_to_date_fc(l_index3) :=0;
15257 u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
15258 u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
15259 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
15260 u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
15261 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
15262 u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
15263 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
15264 else
15265 u_ppl_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_effort_to_date;
15266 u_eqpmt_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15267 u_oth_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_quantity_to_date;
15268 u_oth_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15269 u_oth_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15270 u_oth_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15271 u_oth_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15272 u_oth_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15273 u_oth_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15274 u_ppl_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15275 u_ppl_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15276 u_ppl_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15277 u_ppl_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15278 u_ppl_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15279 u_ppl_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15280 u_eqpmt_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15281 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15282 u_eqpmt_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15283 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15284 u_eqpmt_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15285 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15286 u_oth_etc_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_quantity;
15287 u_oth_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_tc;
15288 u_oth_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
15289 u_oth_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_pc;
15290 u_oth_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
15291 u_oth_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_fc;
15292 u_oth_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
15293 u_ppl_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15294 u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15295 u_ppl_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15296 u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15297 u_ppl_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15298 u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15299 u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15300 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15301 u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15302 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15303 u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15304 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15305 --Bug 13823145 changes start here
15306 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
15307 u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_pc(l_index3);
15308 u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_pc(l_index3);
15309 u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_pc(l_index3);
15310 ELSIF (l_wp_prl_res_class_flag = 'N') then
15311 u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_tc(l_index3);
15312 u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_tc(l_index3);
15313 u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_tc(l_index3);
15314 end if;
15315 --Bug 13823145 changes end here
15316 end if;
15317 end if;
15318 close w_rollup_rec_asofdate;
15319
15320 -- End fix for bug # 4041048.
15321
15322 pa_debug.log_message('Before l_rollup_rec_asofdate '|| l_object_Type, 1);
15323 pa_debug.log_message('Before l_rollup_rec_asofdate l_cbs_element_id '|| l_cbs_element_id, 1);
15324 open rollup_rec_asofdate;
15325 fetch rollup_rec_asofdate into l_rollup_rec_asofdate;
15326 pa_debug.log_message('l_rollup_rec_asofdate '|| l_rollup_rec_asofdate.cbs_element_id , 1);
15327 if rollup_rec_asofdate%notfound then --44
15328
15329 --- if it is an assignment rec we should check if it is
15330 --- already processed or not. if it is then just update for that index
15331 --- and reset the index back
15332 l_temp_index2 := l_index2;
15333 l_init_vars := 'Y';
15334 if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
15335 --- find the assignment
15336 l_index2 := 1;
15337 loop
15338 if project_id(l_index2) = l_project_id and
15339 object_id(l_index2) = l_object_id and
15340 object_type(l_index2) = l_object_Type and
15341 -- Add cbs_element_id
15342 nvl(cbs_element_id(l_index2),-1) = nvl(l_cbs_element_id,-1) and
15343 proj_element_id(l_index2) = l_task_id then
15344 l_init_vars := 'N';
15345 exit;
15346 end if;
15347 if l_index2 >= l_temp_index2 then
15348 exit;
15349 end if;
15350 l_index2 := l_index2 + 1;
15351 end loop;
15352 l_sri_index_etc := l_sri_index_etc + 1; -- for bug 6266824
15353 elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
15354 l_sri_index_etc := l_sri_index_etc + 1; -- for bug 6266824
15355 end if;
15356 --- set l_index2 to index of found assignment
15357 if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
15358 l_index2 := l_index2 + 1;
15359 l_temp_index2 := l_index2;
15360 l_db_case := '1';
15361 if (l_init_vars = 'Y') then
15362 ppl_act_effort_to_date(l_index2) :=0;
15363 eqpmt_act_effort_to_date(l_index2) :=0;
15364 oth_qty(l_index2) :=0;
15365 oth_act_cost_to_date_tc(l_index2) :=0;
15366 oth_act_rawcost_to_date_tc(l_index2) :=0;
15367 oth_act_cost_to_date_pc(l_index2) :=0;
15368 oth_act_rawcost_to_date_pc(l_index2) :=0;
15369 oth_act_cost_to_date_fc(l_index2) :=0;
15370 oth_act_rawcost_to_date_fc(l_index2) :=0;
15371 ppl_act_cost_to_date_tc(l_index2) :=0;
15372 ppl_act_rawcost_to_date_tc(l_index2) :=0;
15373 ppl_act_cost_to_date_pc(l_index2) :=0;
15374 ppl_act_rawcost_to_date_pc(l_index2) :=0;
15375 ppl_act_cost_to_date_fc(l_index2) :=0;
15376 ppl_act_rawcost_to_date_fc(l_index2) :=0;
15377 eqpmt_act_cost_to_date_tc(l_index2) :=0;
15378 eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
15379 eqpmt_act_cost_to_date_pc(l_index2) :=0;
15380 eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
15381 eqpmt_act_cost_to_date_fc(l_index2) :=0;
15382 eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
15383 end if;
15384 end if;
15385 else --44
15386 if trunc(l_rollup_rec_asofdate.as_of_Date) = trunc(l_temp_as_of_date) then --55
15387 l_index3 := l_index3 + 1;
15388 if (l_object_Type = 'PA_ASSIGNMENTS') then
15389 l_sri_index_etc := l_sri_index_etc + 1; -- for bug 6266824
15390 end if;
15391 l_db_case := '2';
15392 if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
15393 u_ppl_act_effort_to_date(l_index3) :=0;
15394 u_eqpmt_act_effort_to_date(l_index3) :=0;
15395 u_oth_qty(l_index3) :=0;
15396 u_oth_act_cost_to_date_tc(l_index3) :=0;
15397 u_oth_act_rawcost_to_date_tc(l_index3) :=0;
15398 u_oth_act_cost_to_date_pc(l_index3) :=0;
15399 u_oth_act_rawcost_to_date_pc(l_index3) :=0;
15400 u_oth_act_cost_to_date_fc(l_index3) :=0;
15401 u_oth_act_rawcost_to_date_fc(l_index3) :=0;
15402 u_ppl_act_cost_to_date_tc(l_index3) :=0;
15403 u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
15404 u_ppl_act_cost_to_date_pc(l_index3) :=0;
15405 u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
15406 u_ppl_act_cost_to_date_fc(l_index3) :=0;
15407 u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
15408 u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
15409 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
15410 u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
15411 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
15412 u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
15413 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
15414 u_oth_etc_qty(l_index3) :=0;
15415 u_oth_etc_cost_to_date_tc(l_index3) :=0;
15416 u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
15417 u_oth_etc_cost_to_date_pc(l_index3) :=0;
15418 u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
15419 u_oth_etc_cost_to_date_fc(l_index3) :=0;
15420 u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
15421 u_ppl_etc_cost_to_date_tc(l_index3) :=0;
15422 u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
15423 u_ppl_etc_cost_to_date_pc(l_index3) :=0;
15424 u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
15425 u_ppl_etc_cost_to_date_fc(l_index3) :=0;
15426 u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
15427 u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
15428 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
15429 u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
15430 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
15431 u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
15432 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
15433 else
15434 u_ppl_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
15435 u_eqpmt_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15436 u_oth_qty(l_index3) :=l_rollup_rec_asofdate.oth_quantity_to_date;
15437 u_oth_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15438 u_oth_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15439 u_oth_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15440 u_oth_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15441 u_oth_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15442 u_oth_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15443 u_ppl_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15444 u_ppl_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15445 u_ppl_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15446 u_ppl_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15447 u_ppl_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15448 u_ppl_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15449 u_eqpmt_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15450 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15451 u_eqpmt_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15452 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15453 u_eqpmt_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15454 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15455 u_oth_etc_qty(l_index3) :=l_rollup_rec_asofdate.oth_etc_quantity;
15456 u_oth_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_tc;
15457 u_oth_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15458 u_oth_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_pc;
15459 u_oth_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15460 u_oth_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_fc;
15461 u_oth_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15462 u_ppl_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_tc;
15463 u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15464 u_ppl_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_pc;
15465 u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15466 u_ppl_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_fc;
15467 u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15468 u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15469 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15470 u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15471 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15472 u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15473 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15474 --Bug 13823145 changes start here
15475 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes:
15476 u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_pc(l_index3);
15477 u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_pc(l_index3);
15478 u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_pc(l_index3);
15479 ELSif (l_wp_prl_res_class_flag = 'N') then
15480 u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_tc(l_index3);
15481 u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_tc(l_index3);
15482 u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_tc(l_index3);
15483 end if;
15484 --Bug 13823145 changes end here
15485
15486 end if;
15487 else --55
15488 --- if it is an assignment rec we should check if it is
15489 --- already processed or not. if it is, just update for that index
15490 --- and reset the index back
15491 l_temp_index2 := l_index2;
15492 l_init_vars := 'Y';
15493 if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
15494 --- find the assignment
15495 l_index2 := 1;
15496 loop
15497 if project_id(l_index2) = l_project_id and
15498 object_id(l_index2) = l_object_id and
15499 OBJECT_TYPE(l_index2) = l_object_Type and
15500 -- Add cbs_element_id
15501 nvl(cbs_element_id(l_index2),-1) = nvl(l_cbs_element_id,-1) and
15502 proj_element_id(l_index2) = l_task_id then
15503 l_init_vars := 'N';
15504 exit;
15505 end if;
15506 if l_index2 >= l_temp_index2 then
15507 exit;
15508 end if;
15509 l_index2 := l_index2 + 1;
15510 end loop;
15511 l_sri_index_etc := l_sri_index_etc + 1; -- for bug 6266824
15512 elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
15513 l_sri_index_etc := l_sri_index_etc + 1; -- for bug 6266824
15514 end if;
15515 --- set l_index2 to index of found assignment
15516 if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
15517 l_index2 := l_index2 + 1;
15518 l_temp_index2 := l_index2;
15519 l_db_case := '3';
15520 if (l_init_vars = 'Y' and (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL')) then
15521 ppl_act_effort_to_date(l_index2) :=0;
15522 eqpmt_act_effort_to_date(l_index2) :=0;
15523 oth_qty(l_index2) := 0;
15524 oth_act_cost_to_date_tc(l_index2) :=0;
15525 oth_act_rawcost_to_date_tc(l_index2) :=0;
15526 oth_act_cost_to_date_pc(l_index2) := 0;
15527 oth_act_rawcost_to_date_pc(l_index2) := 0;
15528 oth_act_cost_to_date_fc(l_index2) := 0;
15529 oth_act_rawcost_to_date_fc(l_index2) := 0;
15530 ppl_act_cost_to_date_tc(l_index2) :=0;
15531 ppl_act_rawcost_to_date_tc(l_index2) :=0;
15532 ppl_act_cost_to_date_pc(l_index2) :=0;
15533 ppl_act_rawcost_to_date_pc(l_index2) :=0;
15534 ppl_act_cost_to_date_fc(l_index2) :=0;
15535 ppl_act_rawcost_to_date_fc(l_index2) :=0;
15536 eqpmt_act_cost_to_date_tc(l_index2) :=0;
15537 eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
15538 eqpmt_act_cost_to_date_pc(l_index2) :=0;
15539 eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
15540 eqpmt_act_cost_to_date_fc(l_index2) :=0;
15541 eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
15542 elsif (l_init_vars = 'Y') then
15543 ppl_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
15544 eqpmt_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15545 oth_qty(l_index2) := l_rollup_rec_asofdate.oth_quantity_to_date;
15546 oth_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15547 oth_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15548 oth_act_cost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15549 oth_act_rawcost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15550 oth_act_cost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15551 oth_act_rawcost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15552 ppl_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15553 ppl_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15554 ppl_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15555 ppl_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15556 ppl_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15557 ppl_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15558 eqpmt_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15559 eqpmt_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15560 eqpmt_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15561 eqpmt_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15562 eqpmt_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15563 eqpmt_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15564 --Bug 13823145 changes start here
15565 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
15566 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
15567 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_pc(l_index2);
15568 oth_qty(l_index2) := oth_act_rawcost_to_date_pc(l_index2);
15569 ELSif (l_wp_prl_res_class_flag = 'N') then
15570 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
15571 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_tc(l_index2);
15572 oth_qty(l_index2) := oth_act_rawcost_to_date_tc(l_index2);
15573 end if;
15574 --Bug 13823145 changes end here
15575 end if;
15576 end if; --55
15577 end if; --44
15578 end if; --33
15579 close rollup_rec_asofdate;
15580 else --22
15581 if (l_period_flag = 'Y') then
15582 -- or (l_plan_type = 'N' and l_object_Type = 'PA_ASSIGNMENTS')) then
15583 -- Check if the period name is the same as the current record.
15584 if (t_period_name(l_t_index) <> all_objects_in_temp_rec.period_name) then
15585 -- create a new record in the temp table:
15586 l_t_index := l_t_index + 1;
15587 t_PROJECT_ID(l_t_index) := l_project_id;
15588 t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
15589 t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
15590 t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
15591 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15592 t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
15593 if (l_rate_based_flag = 'N') then
15594 t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15595 (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15596 else
15597 t_ACTUAL_EFFORT(l_t_index) := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15598 (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15599 end if;
15600 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15601 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15602 t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
15603 t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
15604 t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
15605 t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
15606 t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
15607 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15608 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15609 t_CURRENT_FLAG(l_t_index) := 'Y';
15610 t_OBJECT_TYPE(l_t_index) := l_object_type;
15611 t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
15612 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15613 t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
15614 t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
15615
15616 else
15617
15618 -- Update the current record in the temp table.
15619
15620 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15621 t_ACTUAL_COST(l_t_index) := (t_ACTUAL_COST(l_t_index) + L_ACT_COST_TO_DATE_TC);
15622 if (l_rate_based_flag = 'N') then
15623 t_ACTUAL_EFFORT(l_t_index) := t_ACTUAL_EFFORT(l_t_index) + (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15624 (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15625 else
15626 t_ACTUAL_EFFORT(l_t_index) := t_ACTUAL_EFFORT(l_t_index) + (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15627 (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15628 end if;
15629 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15630 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15631 t_ACTUAL_COST_PC(l_t_index) := (t_ACTUAL_COST_PC(l_t_index) + nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0));
15632 t_ACTUAL_COST_FC(l_t_index) := (t_ACTUAL_COST_FC(l_t_index) + nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0));
15633 t_ACTUAL_RAWCOST(l_t_index) := (t_ACTUAL_RAWCOST(l_t_index) + L_ACT_RAWCOST_TO_DATE_TC);
15634 t_ACTUAL_RAWCOST_PC(l_t_index) := (t_ACTUAL_RAWCOST_PC(l_t_index) + nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0));
15635 t_ACTUAL_RAWCOST_FC(l_t_index) := (t_ACTUAL_RAWCOST_FC(l_t_index) + nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0));
15636 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15637 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15638 t_CURRENT_FLAG(l_t_index) := 'Y';
15639 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15640 end if;
15641 end if;
15642 end if; -- 44
15643
15644 -- Begin fix for bug # 4041048.
15645 if (l_working_rec_found = 'Y') then
15646 --- update working record on that date
15647 l_working_rec_found := 'N';
15648 if (l_db_case = '2') then
15649 l_index3 := l_index3 - 1;
15650 end if;
15651 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15652 u_earned_val(l_index3) := l_earned_val;
15653 u_progress_rollup_id(l_index3) := l_w_rollup_rec_asofdate.progress_rollup_id;
15654 u_object_version_id(l_index3) := l_object_version_id;
15655 if (l_object_Type = 'PA_ASSIGNMENTS') then
15656 if ((l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N') ) then -- CBS Changes
15657 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15658 else
15659 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
15660 end if;
15661 end if;
15662 u_oth_act_cost_to_date_tc(l_index3) := nvl(u_oth_act_cost_to_date_tc(l_index3),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
15663 u_oth_act_rawcost_to_date_tc(l_index3) := nvl(u_oth_act_rawcost_to_date_tc(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15664 u_oth_act_cost_to_date_pc(l_index3) := nvl(u_oth_act_cost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
15665 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
15666 u_oth_act_rawcost_to_date_pc(l_index3) := nvl(u_oth_act_rawcost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
15667 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
15668 u_oth_act_cost_to_date_fc(l_index3) := nvl(u_oth_act_cost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
15669 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
15670 u_oth_act_rawcost_to_date_fc(l_index3) := nvl(u_oth_act_rawcost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
15671 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
15672 u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15673 u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_TC;
15674 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
15675 u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_FC;
15676 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
15677 u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_PC;
15678 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
15679 if l_object_type = 'PA_ASSIGNMENTS' and
15680 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
15681 ---5726773
15682 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.oth_quantity_to_date,l_w_rollup_rec_asofdate.oth_etc_quantity) = 'N') then
15683 u_oth_etc_qty(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_oth_qty(l_index3));
15684 if (u_oth_etc_qty(l_index3) <> 0) then
15685 u_oth_etc_qty(l_index3) := l_asgn_plan_quantity - u_oth_qty(l_index3);
15686 pa_progress_utils.get_plan_costs_for_qty
15687 ( p_resource_list_mem_id => l_object_id
15688 ,p_project_id => l_project_id
15689 ,p_task_id => all_objects_in_temp_rec.project_element_id
15690 ,p_as_of_date => l_temp_as_of_date
15691 ,p_structure_version_id => l_latest_wp_struct_ver_id
15692 ,p_txn_currency_code => l_txn_curr_code
15693 ,p_rate_based_flag => l_rate_based_flag
15694 ,p_quantity => u_oth_etc_qty(l_index3)
15695 ,p_budget_version_id => l_plan_version_id --4372462
15696 ,p_res_assignment_id => l_res_assignment_id
15697 ,x_rawcost_tc => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
15698 ,x_brdncost_tc => u_OTH_ETC_COST_to_date_TC(l_index3)
15699 ,x_rawcost_pc => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
15700 ,x_brdncost_pc => u_OTH_ETC_COST_to_date_PC(l_index3)
15701 ,x_rawcost_fc => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
15702 ,x_brdncost_fc => u_OTH_ETC_COST_to_date_FC(l_index3)
15703 ,x_return_status => x_return_status
15704 ,x_msg_count => x_msg_count
15705 ,x_msg_data => x_msg_data);
15706 if (x_return_status <> 'S') then -- bug 6712595
15707 if (u_OTH_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15708 --Modified the error message for the Bug 13640836
15709 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15710 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15711 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15712 -- Added for bug 5526638
15713 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15714 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
15715 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15716 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15717 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15718 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15719 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15720 --Bug 13640836 end
15721 else
15722 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15723 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15724 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15725 -- Added for bug 5526638
15726 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15727 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15728 end if;
15729 raise l_no_rate_exception;
15730 end if;
15731 u_actual_finish_date(l_index3) := to_date(null);
15732 else
15733 u_oth_etc_qty(l_index3) := 0;
15734 u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
15735 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15736 u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
15737 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15738 u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
15739 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15740 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15741 end if;
15742 else
15743 u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15744 u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_tc;
15745 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
15746 u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_fc;
15747 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
15748 u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_pc;
15749 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
15750 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15751 end if;
15752 end if;
15753 u_ppl_act_effort_to_date(l_index3) := nvl(u_ppl_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
15754 u_ppl_act_cost_to_date_tc(l_index3) := nvl(u_ppl_act_cost_to_date_tc(l_index3),0) + nvl(l_ppl_act_cost_to_date_tc,0);
15755 u_ppl_act_rawcost_to_date_tc(l_index3) := nvl(u_ppl_act_rawcost_to_date_tc(l_index3),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
15756 u_ppl_act_cost_to_date_pc(l_index3) := nvl(u_ppl_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
15757 u_ppl_act_rawcost_to_date_pc(l_index3) := nvl(u_ppl_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
15758 u_ppl_act_cost_to_date_fc(l_index3) := nvl(u_ppl_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
15759 u_ppl_act_rawcost_to_date_fc(l_index3) := nvl(u_ppl_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
15760 u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15761 u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15762 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15763 u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15764 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15765 u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15766 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15767 --Bug 13823145 changes start here
15768 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
15769 u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_pc(l_index3);
15770 ELSif (l_wp_prl_res_class_flag = 'N') then
15771 u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_tc(l_index3);
15772 end if;
15773 --Bug 13823145 changes end here
15774 if l_object_type = 'PA_ASSIGNMENTS' and
15775 l_res_class_code = 'PEOPLE' then
15776 ---5726773
15777 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.ppl_act_effort_to_date,l_w_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
15778 u_ppl_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_ppl_act_effort_to_date(l_index3));
15779 if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
15780 pa_progress_utils.get_plan_costs_for_qty
15781 (p_resource_list_mem_id => l_object_id
15782 ,p_project_id => l_project_id
15783 ,p_task_id => all_objects_in_temp_rec.project_element_id
15784 ,p_as_of_date => l_temp_as_of_date
15785 ,p_structure_version_id => l_latest_wp_struct_ver_id
15786 ,p_txn_currency_code => l_txn_curr_code
15787 ,p_rate_based_flag => l_rate_based_flag
15788 ,p_quantity => u_ppl_etc_effort_to_date(l_index3)
15789 ,p_budget_version_id => l_plan_version_id --4372462
15790 ,p_res_assignment_id => l_res_assignment_id
15791 ,x_rawcost_tc => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
15792 ,x_brdncost_tc => u_ppl_ETC_COST_to_date_TC(l_index3)
15793 ,x_rawcost_pc => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
15794 ,x_brdncost_pc => u_ppl_ETC_COST_to_date_PC(l_index3)
15795 ,x_rawcost_fc => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
15796 ,x_brdncost_fc => u_ppl_ETC_COST_to_date_FC(l_index3)
15797 ,x_return_status => x_return_status
15798 ,x_msg_count => x_msg_count
15799 ,x_msg_data => x_msg_data);
15800 if (x_return_status <> 'S') then -- bug 6712595
15801 if (u_ppl_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15802 --Modified the error message for the Bug 13640836
15803 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15804 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15805 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15806 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15807 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
15808 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15809 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15810 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15811 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15812 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15813 --Bug 13640836 end
15814 else
15815 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15816 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15817 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15818 -- Added for bug 5526638
15819 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15820 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15821 end if;
15822 raise l_no_rate_exception;
15823 end if;
15824 u_actual_finish_date(l_index3) := to_date(null);
15825 else
15826 u_ppl_etc_effort_to_date(l_index3) := 0;
15827 u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
15828 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15829 u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
15830 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15831 u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
15832 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15833 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15834 end if;
15835 else
15836 u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15837 u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15838 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15839 u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15840 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15841 u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15842 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15843 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15844 end if;
15845 end if;
15846 u_eqpmt_act_effort_to_date(l_index3) := nvl(u_eqpmt_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
15847 u_eqpmt_act_cost_to_date_tc(l_index3) := nvl(u_eqpmt_act_cost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
15848 u_eqpmt_act_rawcost_to_date_tc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
15849 u_eqpmt_act_cost_to_date_pc(l_index3) := nvl(u_eqpmt_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
15850 u_eqpmt_act_rawcost_to_date_pc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
15851 u_eqpmt_act_cost_to_date_fc(l_index3) := nvl(u_eqpmt_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
15852 u_eqpmt_act_rawcost_to_date_fc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
15853 u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15854 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15855 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15856 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15857 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15858 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15859 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15860 --Bug 13823145 changes start here
15861 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes:
15862 u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_pc(l_index3);
15863 ELSif (l_wp_prl_res_class_flag = 'N') then
15864 u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_tc(l_index3);
15865 end if;
15866 --Bug 13823145 changes end here
15867 if l_object_type = 'PA_ASSIGNMENTS' and
15868 l_res_class_code = 'EQUIPMENT' then
15869 ---5726773
15870 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_w_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
15871 u_eqpmt_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_eqpmt_act_effort_to_date(l_index3));
15872 if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
15873 pa_progress_utils.get_plan_costs_for_qty
15874 (p_resource_list_mem_id => l_object_id
15875 ,p_project_id => l_project_id
15876 ,p_task_id => all_objects_in_temp_rec.project_element_id
15877 ,p_as_of_date => l_temp_as_of_date
15878 ,p_structure_version_id => l_latest_wp_struct_ver_id
15879 ,p_txn_currency_code => l_txn_curr_code
15880 ,p_rate_based_flag => l_rate_based_flag
15881 ,p_quantity => u_eqpmt_etc_effort_to_date(l_index3)
15882 ,p_budget_version_id => l_plan_version_id --4372462
15883 ,p_res_assignment_id => l_res_assignment_id
15884 ,x_rawcost_tc => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
15885 ,x_brdncost_tc => u_eqpmt_ETC_COST_to_date_TC(l_index3)
15886 ,x_rawcost_pc => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
15887 ,x_brdncost_pc => u_eqpmt_ETC_COST_to_date_PC(l_index3)
15888 ,x_rawcost_fc => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
15889 ,x_brdncost_fc => u_eqpmt_ETC_COST_to_date_FC(l_index3)
15890 ,x_return_status => x_return_status
15891 ,x_msg_count => x_msg_count
15892 ,x_msg_data => x_msg_data);
15893 if (x_return_status <> 'S') then-- bug 6712595
15894 if (u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15895 --Modified the error message for the Bug 13640836
15896 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15897 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15898 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15899 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15900 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
15901 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15902 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15903 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15904 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15905 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15906 --Bug 13640836 end
15907 else
15908 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15909 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15910 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15911 -- Added for bug 5526638
15912 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15913 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15914 end if;
15915 raise l_no_rate_exception;
15916 end if;
15917 u_actual_finish_date(l_index3) := to_date(null);
15918 else
15919 u_eqpmt_etc_effort_to_date(l_index3) := 0;
15920 u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
15921 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15922 u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
15923 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15924 u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
15925 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15926 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15927 end if;
15928 else
15929 u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15930 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15931 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15932 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15933 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15934 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15935 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15936 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15937 end if;
15938 end if;
15939 --5726773
15940 --since ETC is already calculated we can calculate % complete as
15941 --(act / act + etc)
15942 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
15943 l_percent_comp := (u_ppl_act_effort_to_date(l_index3)/(u_ppl_act_effort_to_date(l_index3) + u_ppl_etc_effort_to_date(l_index3)))*100;
15944 if (l_percent_comp > 100) then
15945 l_percent_comp := 100;
15946 elsif (l_percent_comp < 0) then
15947 l_percent_comp := 0;
15948 end if;
15949 l_earned_val := l_percent_comp * l_planned_eff;
15950 l_eff_rollup_pc := l_percent_comp;
15951 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COSTbased
15952 l_percent_comp := (u_ppl_act_cost_to_date_pc(l_index3)/(u_ppl_act_cost_to_date_pc(l_index3) + u_ppl_etc_cost_to_date_pc(l_index3)))*100;
15953 if (l_percent_comp > 100) then
15954 l_percent_comp := 100;
15955 elsif (l_percent_comp < 0) then
15956 l_percent_comp := 0;
15957 end if;
15958 l_earned_val := l_percent_comp * l_planned_cost;
15959 l_eff_rollup_pc := l_percent_comp;
15960 else
15961 l_percent_comp := l_w_rollup_rec_asofdate.completed_percentage;
15962 l_eff_rollup_pc := l_w_rollup_rec_asofdate.eff_rollup_percent_comp;
15963 l_earned_val := l_w_rollup_rec_asofdate.earned_value;
15964 end if;
15965 u_completed_percentage(l_index3) := l_w_rollup_rec_asofdate.completed_percentage;
15966 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
15967 u_earned_val(l_index3) := l_earned_val;
15968 if (l_db_case = '2') then
15969 l_index3 := l_index3 + 1;
15970 end if;
15971 end if;
15972
15973 -- End fix for bug # 4041048.
15974
15975 --- if rollup record exists on the as_of_date then populate the
15976 --- u_ tables else populate the insert tables, for bulk processing
15977 --- call an api to check if a record exists on that date
15978
15979 if (l_db_case = '1') then
15980 --- insert with defaults
15981 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
15982 percent_complete_id(l_index2) := to_number(null);
15983 project_id(l_index2) := l_project_id;
15984 object_id(l_index2) := l_object_id;
15985 pa_debug.log_message('Inside loop object_id '|| object_id(l_index2), 1);
15986 OBJECT_TYPE(l_index2) := l_object_Type;
15987 as_of_Date(l_index2) := l_temp_as_of_date;
15988 object_version_id(l_index2) := l_object_version_id;
15989 LAST_UPDATE_DATE(l_index2) := sysdate;
15990 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
15991 CREATION_DATE(l_index2) := sysdate;
15992 CREATED_BY(l_index2) := fnd_global.user_id;
15993 PROGRESS_STATUS_CODE(l_index2) := null;
15994 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
15995 INCREMENTAL_WORK_QUANTITY(l_index2) := to_number(null);
15996 CUMULATIVE_WORK_QUANTITY(l_index2) := to_number(null);
15997 base_percent_complete(l_index2) := to_number(null);
15998 ESTIMATED_START_DATE(l_index2) := to_date(null);
15999 ESTIMATED_FINISH_DATE(l_index2) := to_date(null);
16000 if (l_object_Type = 'PA_ASSIGNMENTS') then
16001 actual_start_date(l_index2) := l_asgn_sch_start_date;
16002 -- Add cbs_element_id
16003 pa_debug.log_message('Inside loop cbs_element_id '|| all_objects_in_temp_rec.cbs_element_id, 1);
16004 cbs_element_id(l_index2) := all_objects_in_temp_rec.cbs_element_id;
16005
16006 -- Bug 6917961
16007 OPEN cur_prog_setup(all_objects_in_temp_rec.project_element_id,l_project_id);
16008 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
16009 CLOSE cur_prog_setup;
16010 if (l_prog_enable_flag = 'Y') then
16011 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
16012 end if;
16013 -- Bug 6917961
16014 else
16015 actual_start_date(l_index2) := l_sch_start_date; -- set actual start
16016 end if;
16017 actual_finish_date(l_index2) := to_date(null);
16018 RECORD_VERSION_NUMBER(l_index2) := 1;
16019 base_percent_comp_deriv_code(l_index2) := l_base_pc_deriv_code;
16020 BASE_PROGRESS_STATUS_CODE(l_index2) := null;
16021 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := null;
16022 STRUCTURE_TYPE(l_index2) := 'WORKPLAN';
16023 PROJ_ELEMENT_ID(l_index2) := all_objects_in_temp_rec.project_element_id;
16024 STRUCTURE_VERSION_ID(l_index2) := to_number(null);
16025 if (l_object_type = 'PA_ASSIGNMENTS') then
16026 if ( (l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N') ) then -- CBS Changes
16027 oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16028 else
16029 oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0));
16030 end if;
16031 end if;
16032 oth_act_cost_to_date_tc(l_index2) := nvl(oth_act_cost_to_date_tc(l_index2),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
16033 oth_act_rawcost_to_date_tc(l_index2) := nvl(oth_act_rawcost_to_date_tc(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16034 oth_act_cost_to_date_pc(l_index2) := nvl(oth_act_cost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
16035 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
16036 oth_act_rawcost_to_date_pc(l_index2) := nvl(oth_act_rawcost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
16037 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
16038 oth_act_cost_to_date_fc(l_index2) := nvl(oth_act_cost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
16039 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
16040 oth_act_rawcost_to_date_fc(l_index2) := nvl(oth_act_rawcost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
16041 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
16042 oth_etc_qty(l_index2) := to_number(null);
16043 OTH_ETC_COST_TC(l_index2) := to_number(null);
16044 OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
16045 OTH_ETC_COST_FC(l_index2) := to_number(null);
16046 OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
16047 OTH_ETC_COST_PC(l_index2) := to_number(null);
16048 OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
16049 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
16050 ---5726773
16051 oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
16052 if (oth_etc_qty(l_index2) <> 0) then
16053 oth_etc_qty(l_index2) := l_asgn_plan_quantity - oth_qty(l_index2);
16054 pa_progress_utils.get_plan_costs_for_qty
16055 ( p_resource_list_mem_id => l_object_id
16056 ,p_project_id => l_project_id
16057 ,p_task_id => all_objects_in_temp_rec.project_element_id
16058 ,p_as_of_date => l_temp_as_of_date
16059 ,p_structure_version_id => l_latest_wp_struct_ver_id
16060 ,p_txn_currency_code => l_txn_curr_code
16061 ,p_rate_based_flag => l_rate_based_flag
16062 ,p_quantity => oth_etc_qty(l_index2)
16063 ,p_budget_version_id => l_plan_version_id --4372462
16064 ,p_res_assignment_id => l_res_assignment_id
16065 ,x_rawcost_tc => OTH_ETC_RAWCOST_TC(l_index2)
16066 ,x_brdncost_tc => OTH_ETC_COST_TC(l_index2)
16067 ,x_rawcost_pc => OTH_ETC_RAWCOST_PC(l_index2)
16068 ,x_brdncost_pc => OTH_ETC_COST_PC(l_index2)
16069 ,x_rawcost_fc => OTH_ETC_RAWCOST_FC(l_index2)
16070 ,x_brdncost_fc => OTH_ETC_COST_FC(l_index2)
16071 ,x_return_status => x_return_status
16072 ,x_msg_count => x_msg_count
16073 ,x_msg_data => x_msg_data);
16074 if (x_return_status <> 'S') then -- bug 6712595
16075 if (OTH_ETC_RAWCOST_TC(l_index2) is null) then
16076 --Modified the error message for the Bug 13640836
16077 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16078 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16079 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16080 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16081 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16082 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16083 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16084 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16085 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16086 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16087 --Bug 13640836 end
16088 else
16089 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16090 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16091 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16092 -- Added for bug 5526638
16093 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16094 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16095 end if;
16096 raise l_no_rate_exception;
16097 end if;
16098 actual_finish_date(l_index2) := to_date(null);
16099 else
16100 oth_etc_qty(l_index2) := 0;
16101 OTH_ETC_COST_TC(l_index2) := 0;
16102 OTH_ETC_RAWCOST_TC(l_index2) := 0;
16103 OTH_ETC_COST_FC(l_index2) := 0;
16104 OTH_ETC_RAWCOST_FC(l_index2) := 0;
16105 OTH_ETC_COST_PC(l_index2) := 0;
16106 OTH_ETC_RAWCOST_PC(l_index2) := 0;
16107 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16108 end if;
16109 -- here insert in PJI temp table for ETC
16110
16111 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16112 l_index_etc := l_index_etc + 1; -- for bug 6266824
16113 ELSE
16114 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16115 l_index_etc := l_index_etc + 1;
16116 ELSE
16117 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16118 l_index_etc := l_index_etc + 1;
16119 END IF;
16120 END IF;
16121 END IF;
16122
16123 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16124 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16125 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16126 --CBS Change in Get_Summarized_Actuals
16127 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16128 -- End CBS Change in Get_Summarized_Actuals
16129 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16130 if (l_plan_type = 'P') then
16131 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16132 elsif (l_plan_type = 'G') then
16133 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16134 else
16135 ETC_PERIOD_NAME(l_index_etc) := null;
16136 end if;
16137 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16138 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16139 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16140 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16141 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16142 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16143 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16144 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16145 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
16146 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16147 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16148 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16149 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16150 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
16151 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
16152 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16153 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16154 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16155 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16156 end if;
16157 ppl_act_effort_to_date(l_index2) := nvl(ppl_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
16158 ppl_act_cost_to_date_tc(l_index2) := nvl(ppl_act_cost_to_date_tc(l_index2),0) + nvl(l_ppl_act_cost_to_date_tc,0);
16159 ppl_act_rawcost_to_date_tc(l_index2) := nvl(ppl_act_rawcost_to_date_tc(l_index2),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
16160 ppl_act_cost_to_date_pc(l_index2) := nvl(ppl_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
16161 ppl_act_rawcost_to_date_pc(l_index2) := nvl(ppl_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
16162 ppl_act_cost_to_date_fc(l_index2) := nvl(ppl_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
16163 ppl_act_rawcost_to_date_fc(l_index2) := nvl(ppl_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
16164 ESTIMATED_REMAINING_EFFORT(l_index2) := to_number(null);
16165 PPL_ETC_COST_TC(l_index2) := to_number(null);
16166 PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
16167 PPL_ETC_COST_PC(l_index2) := to_number(null);
16168 PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
16169 PPL_ETC_COST_FC(l_index2) := to_number(null);
16170 PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
16171 --Bug 13823145 changes start here
16172 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
16173 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
16174 ELSif (l_wp_prl_res_class_flag = 'N') then
16175 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
16176 end if;
16177 --Bug 13823145 changes end here
16178 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
16179 ---5726773
16180 ESTIMATED_REMAINING_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,ppl_act_effort_to_date(l_index2));
16181 if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
16182 pa_progress_utils.get_plan_costs_for_qty
16183 ( p_resource_list_mem_id => l_object_id
16184 ,p_project_id => l_project_id
16185 ,p_task_id => all_objects_in_temp_rec.project_element_id
16186 ,p_as_of_date => l_temp_as_of_date
16187 ,p_structure_version_id => l_latest_wp_struct_ver_id
16188 ,p_txn_currency_code => l_txn_curr_code
16189 ,p_rate_based_flag => l_rate_based_flag
16190 ,p_quantity => ESTIMATED_REMAINING_EFFORT(l_index2)
16191 ,p_budget_version_id => l_plan_version_id --4372462
16192 ,p_res_assignment_id => l_res_assignment_id
16193 ,x_rawcost_tc => PPL_ETC_RAWCOST_TC(l_index2)
16194 ,x_brdncost_tc => PPL_ETC_COST_TC(l_index2)
16195 ,x_rawcost_pc => PPL_ETC_RAWCOST_PC(l_index2)
16196 ,x_brdncost_pc => PPL_ETC_COST_PC(l_index2)
16197 ,x_rawcost_fc => PPL_ETC_RAWCOST_FC(l_index2)
16198 ,x_brdncost_fc => PPL_ETC_COST_FC(l_index2)
16199 ,x_return_status => x_return_status
16200 ,x_msg_count => x_msg_count
16201 ,x_msg_data => x_msg_data);
16202 if (x_return_status <> 'S') then -- bug 6712595
16203 if (PPL_ETC_RAWCOST_TC(l_index2) is null) then
16204 --Modified the error message for the Bug 13640836
16205 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16206 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16207 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16208 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16209 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16210 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16211 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16212 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16213 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16214 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16215 --Bug 13640836 end
16216 else
16217 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16218 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16219 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16220 -- Added for bug 5526638
16221 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16222 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16223 end if;
16224 raise l_no_rate_exception;
16225 end if;
16226 actual_finish_date(l_index2) := to_date(null);
16227 else
16228 ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
16229 PPL_ETC_COST_TC(l_index2) := 0;
16230 PPL_ETC_RAWCOST_TC(l_index2) := 0;
16231 PPL_ETC_COST_PC(l_index2) := 0;
16232 PPL_ETC_RAWCOST_PC(l_index2) := 0;
16233 PPL_ETC_COST_FC(l_index2) := 0;
16234 PPL_ETC_RAWCOST_FC(l_index2) := 0;
16235 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16236 end if;
16237
16238 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16239 l_index_etc := l_index_etc + 1; -- for bug 6266824
16240 ELSE
16241 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16242 l_index_etc := l_index_etc + 1;
16243 ELSE
16244 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16245 l_index_etc := l_index_etc + 1;
16246 END IF;
16247
16248 END IF;
16249 END IF;
16250
16251 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16252 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16253 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16254 --CBS Change in Get_Summarized_Actuals
16255 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16256 -- End CBS Change in Get_Summarized_Actuals
16257 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16258 if (l_plan_type = 'P') then
16259 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16260 elsif (l_plan_type = 'G') then
16261 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16262 else
16263 ETC_PERIOD_NAME(l_index_etc) := null;
16264 end if;
16265 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16266 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16267 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16268 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16269 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16270 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16271 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16272 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16273 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
16274 ETC_TXN_BURDENED_COST(l_index_etc) := PPL_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16275 ETC_PRJ_BURDENED_COST(l_index_etc) := PPL_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16276 ETC_PFC_BURDENED_COST(l_index_etc) := PPL_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16277 ETC_TXN_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16278 ETC_PRJ_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
16279 ETC_PFC_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
16280 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16281 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16282 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16283 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16284 end if;
16285 eqpmt_act_effort_to_date(l_index2) := nvl(eqpmt_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16286 eqpmt_act_cost_to_date_tc(l_index2) := nvl(eqpmt_act_cost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
16287 eqpmt_act_rawcost_to_date_tc(l_index2) := nvl(eqpmt_act_rawcost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
16288 eqpmt_act_cost_to_date_pc(l_index2) := nvl(eqpmt_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
16289 eqpmt_act_rawcost_to_date_pc(l_index2) := nvl(eqpmt_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
16290 eqpmt_act_cost_to_date_fc(l_index2) := nvl(eqpmt_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
16291 eqpmt_act_rawcost_to_date_fc(l_index2) := nvl(eqpmt_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
16292 EQPMT_ETC_EFFORT(l_index2) := to_number(null);
16293 EQPMT_ETC_COST_TC(l_index2) := to_number(null);
16294 EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
16295 EQPMT_ETC_COST_PC(l_index2) := to_number(null);
16296 EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
16297 EQPMT_ETC_COST_FC(l_index2) := to_number(null);
16298 EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
16299
16300 --Bug 13823145 changes start here
16301 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
16302 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_pc(l_index2);
16303 ELSif (l_wp_prl_res_class_flag = 'N') then
16304 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_tc(l_index2);
16305 end if;
16306 --Bug 13823145 changes end here
16307 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
16308 ---5726773
16309 EQPMT_ETC_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,eqpmt_act_effort_to_date(l_index2));
16310 if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
16311 pa_progress_utils.get_plan_costs_for_qty
16312 ( p_resource_list_mem_id => l_object_id
16313 ,p_project_id => l_project_id
16314 ,p_task_id => all_objects_in_temp_rec.project_element_id
16315 ,p_as_of_date => l_temp_as_of_date
16316 ,p_structure_version_id => l_latest_wp_struct_ver_id
16317 ,p_txn_currency_code => l_txn_curr_code
16318 ,p_rate_based_flag => l_rate_based_flag
16319 ,p_quantity => EQPMT_ETC_EFFORT(l_index2)
16320 ,p_budget_version_id => l_plan_version_id --4372462
16321 ,p_res_assignment_id => l_res_assignment_id
16322 ,x_rawcost_tc => EQPMT_ETC_RAWCOST_TC(l_index2)
16323 ,x_brdncost_tc => EQPMT_ETC_COST_TC(l_index2)
16324 ,x_rawcost_pc => EQPMT_ETC_RAWCOST_PC(l_index2)
16325 ,x_brdncost_pc => EQPMT_ETC_COST_PC(l_index2)
16326 ,x_rawcost_fc => EQPMT_ETC_RAWCOST_FC(l_index2)
16327 ,x_brdncost_fc => EQPMT_ETC_COST_FC(l_index2)
16328 ,x_return_status => x_return_status
16329 ,x_msg_count => x_msg_count
16330 ,x_msg_data => x_msg_data);
16331 if (x_return_status <> 'S') then
16332 if (EQPMT_ETC_RAWCOST_TC(l_index2) is null) then
16333 --Modified the error message for the Bug 13640836
16334 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16335 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16336 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16337 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16338 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16339 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16340 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16341 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16342 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16343 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16344 --Bug 13640836 end
16345 else
16346 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16347 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16348 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16349 -- Added for bug 5526638
16350 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16351 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16352 end if;
16353 raise l_no_rate_exception;
16354 end if;
16355 actual_finish_date(l_index2) := to_date(null);
16356 else
16357 EQPMT_ETC_EFFORT(l_index2) := 0;
16358 EQPMT_ETC_COST_TC(l_index2) := 0;
16359 EQPMT_ETC_RAWCOST_TC(l_index2) := 0;
16360 EQPMT_ETC_COST_PC(l_index2) := 0;
16361 EQPMT_ETC_RAWCOST_PC(l_index2) := 0;
16362 EQPMT_ETC_COST_FC(l_index2) := 0;
16363 EQPMT_ETC_RAWCOST_FC(l_index2) := 0;
16364 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16365 end if;
16366
16367 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16368 l_index_etc := l_index_etc + 1; -- for bug 6266824
16369 ELSE
16370 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16371 l_index_etc := l_index_etc + 1;
16372 ELSE
16373 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16374 l_index_etc := l_index_etc + 1;
16375 END IF;
16376
16377 END IF;
16378 END IF;
16379
16380 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16381 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16382 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16383 --CBS Change in Get_Summarized_Actuals
16384 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16385 -- End CBS Change in Get_Summarized_Actuals
16386 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16387 if (l_plan_type = 'P') then
16388 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16389 elsif (l_plan_type = 'G') then
16390 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16391 else
16392 ETC_PERIOD_NAME(l_index_etc) := null;
16393 end if;
16394 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16395 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16396 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16397 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16398 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16399 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16400 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16401 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16402 ETC_QUANTITY(l_index_etc) := EQPMT_ETC_EFFORT(l_index2) - l_asgn_plan_quantity;
16403 ETC_TXN_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16404 ETC_PRJ_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16405 ETC_PFC_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16406 ETC_TXN_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16407 ETC_PRJ_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
16408 ETC_PFC_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
16409 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16410 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16411 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16412 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16413 end if;
16414 --- if task is lowest and flag for calc PC and EV is true then
16415 --- 5726773 changed > 0 condition to <> 0
16416 if (l_base_pc_deriv_code = 'EFFORT' and l_planned_eff <> 0) then
16417 -- Bug 3830673 : Calculate % Complete, multiplication with 100 was missing
16418 l_percent_comp := (ppl_act_effort_to_date(l_index2)/l_planned_eff)*100;
16419 if (l_percent_comp > 100) then
16420 l_percent_comp := 100;
16421 elsif (l_percent_comp < 0) then
16422 l_percent_comp := 0;
16423 end if;
16424 l_earned_val := l_percent_comp * l_planned_eff;
16425 elsif (l_base_pc_deriv_code = 'COST' and l_planned_cost <> 0) then
16426 l_percent_comp := (ppl_act_cost_to_date_pc(l_index2)/l_planned_cost)*100;
16427 if (l_percent_comp > 100) then
16428 l_percent_comp := 100;
16429 elsif (l_percent_comp < 0) then
16430 l_percent_comp := 0;
16431 end if;
16432 l_earned_val := l_percent_comp * l_planned_cost;
16433 else
16434 l_percent_comp := to_number(null);
16435 l_earned_val := to_number(null);
16436 end if;
16437 completed_percentage(l_index2) := to_number(null);
16438 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_percent_comp;
16439 earned_value(l_index2) := l_earned_val;
16440 TASK_WT_BASIS_CODE(l_index2) := null;
16441 SUBPRJ_PPL_ACT_EFFORT(l_index2) := to_number(null);
16442 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := to_number(null);
16443 SUBPRJ_PPL_ETC_EFFORT(l_index2) := to_number(null);
16444 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := to_number(null);
16445 SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := to_number(null);
16446 SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := to_number(null);
16447 SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := to_number(null);
16448 SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := to_number(null);
16449 SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := to_number(null);
16450 SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := to_number(null);
16451 SUBPRJ_PPL_ACT_COST_TC(l_index2) := to_number(null);
16452 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := to_number(null);
16453 SUBPRJ_PPL_ACT_COST_FC(l_index2) := to_number(null);
16454 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := to_number(null);
16455 SUBPRJ_PPL_ACT_COST_PC(l_index2) := to_number(null);
16456 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := to_number(null);
16457 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := to_number(null);
16458 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := to_number(null);
16459 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := to_number(null);
16460 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := to_number(null);
16461 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := to_number(null);
16462 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := to_number(null);
16463 SUBPRJ_OTH_ETC_COST_TC(l_index2) := to_number(null);
16464 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
16465 SUBPRJ_OTH_ETC_COST_FC(l_index2) := to_number(null);
16466 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
16467 SUBPRJ_OTH_ETC_COST_PC(l_index2) := to_number(null);
16468 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
16469 SUBPRJ_PPL_ETC_COST_TC(l_index2) := to_number(null);
16470 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
16471 SUBPRJ_PPL_ETC_COST_FC(l_index2) := to_number(null);
16472 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
16473 SUBPRJ_PPL_ETC_COST_PC(l_index2) := to_number(null);
16474 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
16475 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := to_number(null);
16476 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
16477 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := to_number(null);
16478 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
16479 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := to_number(null);
16480 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
16481 SUBPRJ_EARNED_VALUE(l_index2) := to_number(null);
16482 PROJFUNC_COST_RATE_TYPE(l_index2) := null;
16483 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := to_number(null);
16484 PROJFUNC_COST_RATE_DATE(l_index2) := to_date(null);
16485 PROJ_COST_RATE_TYPE(l_index2) := null;
16486 PROJ_COST_EXCHANGE_RATE(l_index2) := to_number(null);
16487 PROJ_COST_RATE_DATE(l_index2) := to_date(null);
16488 TXN_CURRENCY_CODE(l_index2) := l_txn_curr_code;
16489 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
16490 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
16491 --- here we check if future rollup records exist. if they do current_flag
16492 --- should be 'N' else 'Y'
16493 open future_rollup_recs;
16494 fetch future_rollup_recs into l_future_rollup_recs;
16495 if future_rollup_recs%found then
16496 CURRENT_FLAG(l_index2) := 'N';
16497 else
16498 CURRENT_FLAG(l_index2) := 'Y';
16499 end if;
16500 close future_rollup_recs;
16501 l_index2 := l_temp_index2;
16502 else
16503 if (l_db_case = '2') then
16504 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16505 u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
16506 u_object_version_id(l_index3) := l_object_version_id;
16507 u_ppl_act_effort_to_date(l_index3) := nvl(u_ppl_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
16508 u_eqpmt_act_effort_to_date(l_index3) := nvl(u_eqpmt_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16509
16510 if (l_object_Type = 'PA_ASSIGNMENTS') then
16511 if ((l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N')) then -- CBS changes
16512 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16513 else
16514 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16515 end if;
16516 end if;
16517 u_oth_act_cost_to_date_tc(l_index3) := nvl(u_oth_act_cost_to_date_tc(l_index3),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
16518 u_oth_act_rawcost_to_date_tc(l_index3) := nvl(u_oth_act_rawcost_to_date_tc(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16519 u_oth_act_cost_to_date_pc(l_index3) := nvl(u_oth_act_cost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
16520 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
16521 u_oth_act_rawcost_to_date_pc(l_index3) := nvl(u_oth_act_rawcost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
16522 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
16523 u_oth_act_cost_to_date_fc(l_index3) := nvl(u_oth_act_cost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
16524 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
16525 u_oth_act_rawcost_to_date_fc(l_index3) := nvl(u_oth_act_rawcost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0) +
16526 nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
16527 u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
16528 u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
16529 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16530 u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
16531 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16532 u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
16533 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16534 if (l_object_type = 'PA_ASSIGNMENTS' and
16535 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS')) then
16536 ---5726773
16537 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.oth_quantity_to_date,l_rollup_rec_asofdate.oth_etc_quantity) = 'N') then
16538 u_oth_etc_qty(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_oth_qty(l_index3));
16539 if (u_oth_etc_qty(l_index3) <> 0) then
16540 pa_progress_utils.get_plan_costs_for_qty
16541 ( p_resource_list_mem_id => l_object_id
16542 ,p_project_id => l_project_id
16543 ,p_task_id => all_objects_in_temp_rec.project_element_id
16544 ,p_as_of_date => l_temp_as_of_date
16545 ,p_structure_version_id => l_latest_wp_struct_ver_id
16546 ,p_txn_currency_code => l_txn_curr_code
16547 ,p_rate_based_flag => l_rate_based_flag
16548 ,p_quantity => u_oth_etc_qty(l_index3)
16549 ,p_budget_version_id => l_plan_version_id --4372462
16550 ,p_res_assignment_id => l_res_assignment_id
16551 ,x_rawcost_tc => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
16552 ,x_brdncost_tc => u_OTH_ETC_COST_to_date_TC(l_index3)
16553 ,x_rawcost_pc => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
16554 ,x_brdncost_pc => u_OTH_ETC_COST_to_date_PC(l_index3)
16555 ,x_rawcost_fc => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
16556 ,x_brdncost_fc => u_OTH_ETC_COST_to_date_FC(l_index3)
16557 ,x_return_status => x_return_status
16558 ,x_msg_count => x_msg_count
16559 ,x_msg_data => x_msg_data);
16560 if (x_return_status <> 'S') then -- bug 6712595
16561 if (u_OTH_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16562 --Modified the error message for the Bug 13640836
16563 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16564 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16565 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16566 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16567 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16568 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16569 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16570 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16571 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16572 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16573 --Bug 13640836 end
16574 else
16575 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16576 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16577 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16578 -- Added for bug 5526638
16579 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16580 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16581 end if;
16582 raise l_no_rate_exception;
16583 end if;
16584 u_actual_finish_date(l_index3) := to_date(null);
16585 else
16586 u_oth_etc_qty(l_index3) := 0;
16587 u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
16588 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
16589 u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
16590 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
16591 u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
16592 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
16593 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
16594 end if;
16595
16596 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16597 l_index_etc := l_index_etc + 1; -- for bug 6266824
16598 ELSE
16599 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16600 l_index_etc := l_index_etc + 1;
16601 ELSE
16602 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16603 l_index_etc := l_index_etc + 1;
16604 END IF;
16605
16606 END IF;
16607 END IF;
16608
16609 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16610 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16611 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16612 --CBS Change in Get_Summarized_Actuals
16613 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16614 -- End CBS Change in Get_Summarized_Actuals
16615 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16616 if (l_plan_type = 'P') then
16617 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16618 elsif (l_plan_type = 'G') then
16619 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16620 else
16621 ETC_PERIOD_NAME(l_index_etc) := null;
16622 end if;
16623 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16624 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16625 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16626 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16627 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16628 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16629 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16630 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16631 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16632 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16633 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16634 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16635 -- here if extraction type is FULL we pass to_date values otherwise
16636 -- incremental values only
16637 if (p_extraction_type = 'FULL') then
16638 ---5726773 ETC_QUANTITY(l_index_etc) := -u_oth_qty(l_index3);
16639 ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_asgn_plan_quantity;
16640 ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
16641 ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
16642 ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
16643 ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
16644 ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
16645 ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
16646 else
16647 if (u_oth_qty(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_oth_qty(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
16648 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
16649 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
16650 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
16651 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
16652 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16653 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16654 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16655 else
16656 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_quantity_to_date - u_oth_qty(l_index3);
16657 ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_rollup_rec_asofdate.oth_etc_quantity;
16658 ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_tc;
16659 ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_pc;
16660 ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_fc;
16661 ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16662 ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16663 ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16664 end if;
16665 end if;
16666 else
16667 u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
16668 u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
16669 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16670 u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
16671 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16672 u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
16673 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16674 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16675 if (p_extraction_type = 'FULL') then
16676 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16677 l_index_etc := l_index_etc + 1; -- for bug 6266824
16678 ELSE
16679 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16680 l_index_etc := l_index_etc + 1;
16681 ELSE
16682 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16683 l_index_etc := l_index_etc + 1;
16684 END IF;
16685
16686 END IF;
16687 END IF;
16688
16689
16690 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16691 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16692 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16693 --CBS Change in Get_Summarized_Actuals
16694 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16695 -- End CBS Change in Get_Summarized_Actuals
16696 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16697 if (l_plan_type = 'P') then
16698 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16699 elsif (l_plan_type = 'G') then
16700 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16701 else
16702 ETC_PERIOD_NAME(l_index_etc) := null;
16703 end if;
16704 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16705 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16706 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16707 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16708 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16709 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16710 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16711 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16712 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16713 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16714 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16715 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16716 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
16717 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16718 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16719 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16720 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16721 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16722 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16723 else
16724 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
16725 end if;
16726 end if;
16727 end if;
16728 u_ppl_act_cost_to_date_tc(l_index3) := nvl(u_ppl_act_cost_to_date_tc(l_index3),0) + nvl(l_ppl_act_cost_to_date_tc,0);
16729 u_ppl_act_rawcost_to_date_tc(l_index3) := nvl(u_ppl_act_rawcost_to_date_tc(l_index3),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
16730 u_ppl_act_cost_to_date_pc(l_index3) := nvl(u_ppl_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
16731 u_ppl_act_rawcost_to_date_pc(l_index3) := nvl(u_ppl_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
16732 u_ppl_act_cost_to_date_fc(l_index3) := nvl(u_ppl_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
16733 u_ppl_act_rawcost_to_date_fc(l_index3) := nvl(u_ppl_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
16734 u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
16735 u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
16736 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16737 u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
16738 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16739 u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
16740 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16741 --Bug 13823145 changes start here
16742 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes
16743 u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_pc(l_index3);
16744 ELSif (l_wp_prl_res_class_flag = 'N') then
16745 u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_tc(l_index3);
16746 end if;
16747 --Bug 13823145 changes end here
16748 if l_object_type = 'PA_ASSIGNMENTS' and
16749 l_res_class_code = 'PEOPLE' then
16750 ---5726773
16751 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.ppl_act_effort_to_date,l_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
16752 u_ppl_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_ppl_act_effort_to_date(l_index3));
16753 if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
16754 pa_progress_utils.get_plan_costs_for_qty
16755 (p_resource_list_mem_id => l_object_id
16756 ,p_project_id => l_project_id
16757 ,p_task_id => all_objects_in_temp_rec.project_element_id
16758 ,p_as_of_date => l_temp_as_of_date
16759 ,p_structure_version_id => l_latest_wp_struct_ver_id
16760 ,p_txn_currency_code => l_txn_curr_code
16761 ,p_rate_based_flag => l_rate_based_flag
16762 ,p_quantity => u_ppl_etc_effort_to_date(l_index3)
16763 ,p_budget_version_id => l_plan_version_id --4372462
16764 ,p_res_assignment_id => l_res_assignment_id
16765 ,x_rawcost_tc => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
16766 ,x_brdncost_tc => u_ppl_ETC_COST_to_date_TC(l_index3)
16767 ,x_rawcost_pc => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
16768 ,x_brdncost_pc => u_ppl_ETC_COST_to_date_PC(l_index3)
16769 ,x_rawcost_fc => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
16770 ,x_brdncost_fc => u_ppl_ETC_COST_to_date_FC(l_index3)
16771 ,x_return_status => x_return_status
16772 ,x_msg_count => x_msg_count
16773 ,x_msg_data => x_msg_data);
16774 if (x_return_status <> 'S') then -- bug 6712595
16775 if (u_ppl_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16776 --Modified the error message for the Bug 13640836
16777 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16778 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16779 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16780 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16781 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16782 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16783 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16784 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16785 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16786 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16787 --Bug 13640836 end
16788 else
16789 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16790 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16791 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16792 -- Added for bug 5526638
16793 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16794 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16795 end if;
16796 raise l_no_rate_exception;
16797 end if;
16798 u_actual_finish_date(l_index3) := to_date(null);
16799 else
16800 u_ppl_etc_effort_to_date(l_index3) := 0;
16801 u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
16802 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
16803 u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
16804 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
16805 u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
16806 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
16807 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
16808 end if;
16809
16810 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16811 l_index_etc := l_index_etc + 1; -- for bug 6266824
16812 ELSE
16813 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16814 l_index_etc := l_index_etc + 1;
16815 ELSE
16816 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16817 l_index_etc := l_index_etc + 1;
16818 END IF;
16819
16820 END IF;
16821 END IF;
16822
16823
16824
16825 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16826 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16827 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16828 --CBS Change in Get_Summarized_Actuals
16829 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16830 -- End CBS Change in Get_Summarized_Actuals
16831 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16832 if (l_plan_type = 'P') then
16833 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16834 elsif (l_plan_type = 'G') then
16835 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16836 else
16837 ETC_PERIOD_NAME(l_index_etc) := null;
16838 end if;
16839 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16840 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16841 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16842 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16843 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16844 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16845 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16846 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16847 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16848 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16849 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16850 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16851 -- here if extraction type is FULL we pass to_date values otherwise
16852 -- incremental values only
16853 if (p_extraction_type = 'FULL') then
16854 ---5726773 ETC_QUANTITY(l_index_etc) := -u_ppl_act_effort_to_date(l_index3);
16855 ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
16856 ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
16857 ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
16858 ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
16859 ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
16860 ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
16861 ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
16862 else
16863 if (u_ppl_act_effort_to_date(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_ppl_act_effort_to_date(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
16864 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
16865 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
16866 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
16867 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
16868 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16869 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16870 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16871 else
16872 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - u_ppl_act_effort_to_date(l_index3);
16873 ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.estimated_remaining_effort;
16874 ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
16875 ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
16876 ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
16877 ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16878 ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16879 ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16880 end if;
16881 end if;
16882 else
16883 u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
16884 u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
16885 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16886 u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
16887 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16888 u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
16889 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16890 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16891 if (p_extraction_type = 'FULL') then
16892
16893 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16894 l_index_etc := l_index_etc + 1; -- for bug 6266824
16895 ELSE
16896 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16897 l_index_etc := l_index_etc + 1;
16898 ELSE
16899 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16900 l_index_etc := l_index_etc + 1;
16901 END IF;
16902
16903 END IF;
16904 END IF;
16905
16906
16907 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16908 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16909 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16910 --CBS Change in Get_Summarized_Actuals
16911 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16912 -- End CBS Change in Get_Summarized_Actuals
16913 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16914 if (l_plan_type = 'P') then
16915 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16916 elsif (l_plan_type = 'G') then
16917 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16918 else
16919 ETC_PERIOD_NAME(l_index_etc) := null;
16920 end if;
16921 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16922 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16923 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16924 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16925 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16926 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16927 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16928 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16929 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16930 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16931 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16932 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16933 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
16934 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16935 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16936 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16937 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16938 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16939 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16940 else
16941 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
16942 end if;
16943 end if;
16944 end if;
16945 u_eqpmt_act_cost_to_date_tc(l_index3) := nvl(u_eqpmt_act_cost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
16946 u_eqpmt_act_rawcost_to_date_tc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
16947 u_eqpmt_act_cost_to_date_pc(l_index3) := nvl(u_eqpmt_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
16948 u_eqpmt_act_rawcost_to_date_pc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
16949 u_eqpmt_act_cost_to_date_fc(l_index3) := nvl(u_eqpmt_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
16950 u_eqpmt_act_rawcost_to_date_fc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
16951 u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
16952 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16953 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16954 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16955 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16956 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16957 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16958 --Bug 13823145 changes start here
16959 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes
16960 u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_pc(l_index3);
16961 ELSif (l_wp_prl_res_class_flag = 'N') then
16962 u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_tc(l_index3);
16963 end if;
16964 --Bug 13823145 changes end here
16965 if l_object_type = 'PA_ASSIGNMENTS' and
16966 l_res_class_code = 'EQUIPMENT' then
16967 ---5726773
16968 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
16969 u_eqpmt_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_eqpmt_act_effort_to_date(l_index3));
16970 if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
16971 pa_progress_utils.get_plan_costs_for_qty
16972 (p_resource_list_mem_id => l_object_id
16973 ,p_project_id => l_project_id
16974 ,p_task_id => all_objects_in_temp_rec.project_element_id
16975 ,p_as_of_date => l_temp_as_of_date
16976 ,p_structure_version_id => l_latest_wp_struct_ver_id
16977 ,p_txn_currency_code => l_txn_curr_code
16978 ,p_rate_based_flag => l_rate_based_flag
16979 ,p_quantity => u_eqpmt_etc_effort_to_date(l_index3)
16980 ,p_budget_version_id => l_plan_version_id --4372462
16981 ,p_res_assignment_id => l_res_assignment_id
16982 ,x_rawcost_tc => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
16983 ,x_brdncost_tc => u_eqpmt_ETC_COST_to_date_TC(l_index3)
16984 ,x_rawcost_pc => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
16985 ,x_brdncost_pc => u_eqpmt_ETC_COST_to_date_PC(l_index3)
16986 ,x_rawcost_fc => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
16987 ,x_brdncost_fc => u_eqpmt_ETC_COST_to_date_FC(l_index3)
16988 ,x_return_status => x_return_status
16989 ,x_msg_count => x_msg_count
16990 ,x_msg_data => x_msg_data);
16991 if (x_return_status <> 'S') then -- bug 6712595
16992 if (u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16993 --Modified the error message for the Bug 13640836
16994 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16995 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16996 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16997 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16998 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16999 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17000 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17001 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17002 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17003 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17004 --Bug 13640836 end
17005 else
17006 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17007 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17008 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17009 -- Added for bug 5526638
17010 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17011 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17012 end if;
17013 raise l_no_rate_exception;
17014 end if;
17015 u_actual_finish_date(l_index3) := to_date(null);
17016 else
17017 u_eqpmt_etc_effort_to_date(l_index3) := 0;
17018 u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
17019 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
17020 u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
17021 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
17022 u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
17023 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
17024 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
17025 end if;
17026
17027 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17028 l_index_etc := l_index_etc + 1; -- for bug 6266824
17029 ELSE
17030 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17031 l_index_etc := l_index_etc + 1;
17032 ELSE
17033 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17034 l_index_etc := l_index_etc + 1;
17035 END IF;
17036
17037 END IF;
17038 END IF;
17039
17040 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17041 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17042 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17043 --CBS Change in Get_Summarized_Actuals
17044 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17045 -- End CBS Change in Get_Summarized_Actuals
17046 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17047 if (l_plan_type = 'P') then
17048 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17049 elsif (l_plan_type = 'G') then
17050 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17051 else
17052 ETC_PERIOD_NAME(l_index_etc) := null;
17053 end if;
17054 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17055 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17056 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17057 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17058 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17059 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17060 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17061 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17062 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17063 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17064 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17065 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17066 -- here if extraction type is FULL we pass to_date values otherwise
17067 -- incremental values only
17068 if (p_extraction_type = 'FULL') then
17069 ---5726773 ETC_QUANTITY(l_index_etc) := -u_eqpmt_act_effort_to_date(l_index3);
17070 ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
17071 ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
17072 ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
17073 ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
17074 ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
17075 ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
17076 ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
17077 else
17078 if (u_eqpmt_act_effort_to_date(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_eqpmt_act_effort_to_date(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
17079 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
17080 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17081 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17082 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17083 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17084 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17085 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17086 else
17087 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - u_eqpmt_act_effort_to_date(l_index3);
17088 ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_effort;
17089 ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17090 ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17091 ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17092 ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17093 ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17094 ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17095 end if;
17096 end if;
17097 else
17098 u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
17099 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17100 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17101 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17102 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17103 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17104 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17105 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
17106 if (p_extraction_type = 'FULL') then
17107
17108 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17109 l_index_etc := l_index_etc + 1; -- for bug 6266824
17110 ELSE
17111 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17112 l_index_etc := l_index_etc + 1;
17113 ELSE
17114 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17115 l_index_etc := l_index_etc + 1;
17116 END IF;
17117
17118 END IF;
17119 END IF;
17120
17121 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17122 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17123 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17124 --CBS Change in Get_Summarized_Actuals
17125 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17126 -- End CBS Change in Get_Summarized_Actuals
17127 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17128 if (l_plan_type = 'P') then
17129 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17130 elsif (l_plan_type = 'G') then
17131 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17132 else
17133 ETC_PERIOD_NAME(l_index_etc) := null;
17134 end if;
17135 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17136 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17137 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17138 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17139 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17140 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17141 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17142 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17143 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17144 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17145 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17146 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17147 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
17148 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17149 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17150 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17151 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17152 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17153 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17154 else
17155 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
17156 end if;
17157 end if;
17158 end if;
17159 --- here we need to calc PC and EV
17160 --- 5726773
17161 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
17162 l_percent_comp := (u_ppl_act_effort_to_date(l_index3)/(u_ppl_act_effort_to_date(l_index3) + u_ppl_etc_effort_to_date(l_index3)))*100;
17163 if (l_percent_comp > 100) then
17164 l_percent_comp := 100;
17165 elsif (l_percent_comp < 0) then
17166 l_percent_comp := 0;
17167 end if;
17168 l_eff_rollup_pc := l_percent_comp;
17169 l_earned_val := l_percent_comp * l_planned_eff;
17170 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COST based
17171 l_percent_comp := (u_ppl_act_cost_to_date_pc(l_index3)/(u_ppl_act_cost_to_date_pc(l_index3) + u_ppl_etc_cost_to_date_pc(l_index3)))*100;
17172 if (l_percent_comp > 100) then
17173 l_percent_comp := 100;
17174 elsif (l_percent_comp < 0) then
17175 l_percent_comp := 0;
17176 end if;
17177 l_eff_rollup_pc := l_percent_comp;
17178 l_earned_val := l_percent_comp * l_planned_cost;
17179 else
17180 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
17181 l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
17182 l_earned_val := l_rollup_rec_asofdate.earned_value;
17183 end if;
17184 u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
17185 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
17186 u_earned_val(l_index3) := l_earned_val;
17187
17188 elsif (l_db_case = '3') then
17189 --- get progress attrs for the task/assignment
17190
17191 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
17192 percent_complete_id(l_index2) := to_number(null);
17193 project_id(l_index2) := l_project_id;
17194 object_id(l_index2) := l_object_id;
17195 OBJECT_TYPE(l_index2) := l_rollup_rec_asofdate.object_Type;
17196 as_of_Date(l_index2) := l_temp_as_of_date;
17197 object_version_id(l_index2) := l_object_version_id;
17198 LAST_UPDATE_DATE(l_index2) := sysdate;
17199 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
17200 CREATION_DATE(l_index2) := sysdate;
17201 CREATED_BY(l_index2) := fnd_global.user_id;
17202 PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.progress_status_code;
17203 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
17204 INCREMENTAL_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.INCREMENTAL_WORK_QUANTITY;
17205 CUMULATIVE_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.CUMULATIVE_WORK_QUANTITY;
17206 base_percent_complete(l_index2) := l_rollup_rec_asofdate.base_percent_complete;
17207 ESTIMATED_START_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_START_DATE;
17208 ESTIMATED_FINISH_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_FINISH_DATE;
17209 actual_start_date(l_index2) := l_rollup_rec_asofdate.actual_start_date;
17210 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17211 RECORD_VERSION_NUMBER(l_index2) := 1;
17212 base_percent_comp_deriv_code(l_index2) := l_rollup_rec_asofdate.base_percent_comp_deriv_code;
17213 BASE_PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.BASE_PROGRESS_STATUS_CODE;
17214 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := l_rollup_rec_asofdate.EFF_ROLLUP_PROG_STAT_CODE;
17215 STRUCTURE_TYPE(l_index2) := l_rollup_rec_asofdate.STRUCTURE_TYPE;
17216 PROJ_ELEMENT_ID(l_index2) := l_rollup_rec_asofdate.PROJ_ELEMENT_ID;
17217 STRUCTURE_VERSION_ID(l_index2) := l_rollup_rec_asofdate.STRUCTURE_VERSION_ID;
17218 if (l_object_Type = 'PA_ASSIGNMENTS') then
17219 -- Add cbs_element_id
17220 cbs_element_id(l_index2) := all_objects_in_temp_rec.cbs_element_id;
17221 if (l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N' ) then -- CBS Changes
17222 oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0)));
17223 else
17224 oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
17225 end if;
17226 -- Bug 6917961
17227 if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
17228 and actual_finish_date(l_index2) is null) then
17229 l_prog_enable_flag := 'N';
17230 l_prog_stat_code := null;
17231 OPEN cur_prog_setup(l_rollup_rec_asofdate.PROJ_ELEMENT_ID,l_project_id);
17232 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
17233 CLOSE cur_prog_setup;
17234 if (l_prog_enable_flag = 'Y') then
17235 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
17236 end if;
17237 end if;
17238 -- Bug 6917961
17239 end if;
17240 oth_act_cost_to_date_tc(l_index2) := nvl(oth_act_cost_to_date_tc(l_index2),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(all_objects_in_temp_rec.act_txn_equip_brdn_cost,0)));
17241 oth_act_rawcost_to_date_tc(l_index2) := nvl(oth_act_rawcost_to_date_tc(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0)));
17242 oth_act_cost_to_date_pc(l_index2) := nvl(oth_act_cost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
17243 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
17244 oth_act_rawcost_to_date_pc(l_index2) := nvl(oth_act_rawcost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
17245 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
17246 oth_act_cost_to_date_fc(l_index2) := nvl(oth_act_cost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
17247 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
17248 oth_act_rawcost_to_date_fc(l_index2) := nvl(oth_act_rawcost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
17249 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
17250 oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
17251 OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
17252 OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
17253 OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
17254 OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
17255 OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
17256 OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
17257 if l_object_type = 'PA_ASSIGNMENTS' and
17258 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
17259 ---5726773
17260 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.oth_quantity_to_date,l_rollup_rec_asofdate.OTH_ETC_QUANTITY) = 'N') then
17261 oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
17262 if (oth_etc_qty(l_index2) <> 0) then
17263 pa_progress_utils.get_plan_costs_for_qty
17264 ( p_resource_list_mem_id => l_object_id
17265 ,p_project_id => l_project_id
17266 ,p_task_id => all_objects_in_temp_rec.project_element_id
17267 ,p_as_of_date => l_temp_as_of_date
17268 ,p_structure_version_id => l_latest_wp_struct_ver_id
17269 ,p_txn_currency_code => l_txn_curr_code
17270 ,p_rate_based_flag => l_rate_based_flag
17271 ,p_quantity => oth_etc_qty(l_index2)
17272 ,p_budget_version_id => l_plan_version_id --4372462
17273 ,p_res_assignment_id => l_res_assignment_id
17274 ,x_rawcost_tc => OTH_ETC_RAWCOST_TC(l_index2)
17275 ,x_brdncost_tc => OTH_ETC_COST_TC(l_index2)
17276 ,x_rawcost_pc => OTH_ETC_RAWCOST_PC(l_index2)
17277 ,x_brdncost_pc => OTH_ETC_COST_PC(l_index2)
17278 ,x_rawcost_fc => OTH_ETC_RAWCOST_FC(l_index2)
17279 ,x_brdncost_fc => OTH_ETC_COST_FC(l_index2)
17280 ,x_return_status => x_return_status
17281 ,x_msg_count => x_msg_count
17282 ,x_msg_data => x_msg_data);
17283 if (x_return_status <> 'S') then -- bug 6712595
17284 if (OTH_ETC_RAWCOST_TC(l_index2) is null) then
17285 --Modified the error message for the Bug 13640836
17286 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17287 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17288 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17289 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17290 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
17291 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17292 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17293 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17294 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17295 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17296 --Bug 13640836 end
17297 else
17298 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17299 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17300 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17301 -- Added for bug 5526638
17302 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17303 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17304 end if;
17305 raise l_no_rate_exception;
17306 end if;
17307 actual_finish_date(l_index2) := to_date(null);
17308 else
17309 oth_etc_qty(l_index2) := 0;
17310 OTH_ETC_COST_TC(l_index2) := 0;
17311 OTH_ETC_RAWCOST_TC(l_index2) := 0;
17312 OTH_ETC_COST_FC(l_index2) := 0;
17313 OTH_ETC_RAWCOST_FC(l_index2) := 0;
17314 OTH_ETC_COST_PC(l_index2) := 0;
17315 OTH_ETC_RAWCOST_PC(l_index2) := 0;
17316 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17317 end if;
17318 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17319 l_index_etc := l_index_etc + 1; -- for bug 6266824
17320 ELSE
17321 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17322 l_index_etc := l_index_etc + 1;
17323 ELSE
17324 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17325 l_index_etc := l_index_etc + 1;
17326 END IF;
17327
17328 END IF;
17329 END IF;
17330
17331 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17332 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17333 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17334 --CBS Change in Get_Summarized_Actuals
17335 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17336 -- End CBS Change in Get_Summarized_Actuals
17337 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17338 if (l_plan_type = 'P') then
17339 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17340 elsif (l_plan_type = 'G') then
17341 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17342 else
17343 ETC_PERIOD_NAME(l_index_etc) := null;
17344 end if;
17345 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17346 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17347 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17348 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17349 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17350 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17351 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17352 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17353 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17354 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17355 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17356 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17357 -- here if extraction type is FULL we pass to_date values otherwise
17358 -- incremental values only
17359 if (p_extraction_type = 'FULL') then
17360 --- 5726773 ETC_QUANTITY(l_index_etc) := -oth_qty(l_index2);
17361 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
17362 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17363 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17364 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17365 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17366 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17367 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17368 else
17369 if (oth_qty(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (oth_qty(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
17370 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
17371 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
17372 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
17373 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
17374 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
17375 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
17376 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
17377 else
17378 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_rollup_rec_asofdate.oth_etc_quantity;
17379 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_tc;
17380 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_pc;
17381 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_fc;
17382 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
17383 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
17384 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
17385 end if;
17386 end if;
17387 else
17388 oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
17389 OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
17390 OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
17391 OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
17392 OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
17393 OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
17394 OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
17395 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17396 if (p_extraction_type = 'FULL') then
17397
17398 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17399 l_index_etc := l_index_etc + 1; -- for bug 6266824
17400 ELSE
17401 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17402 l_index_etc := l_index_etc + 1;
17403 ELSE
17404 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17405 l_index_etc := l_index_etc + 1;
17406 END IF;
17407
17408 END IF;
17409 END IF;
17410
17411 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17412 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17413 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17414 --CBS Change in Get_Summarized_Actuals
17415 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17416 -- End CBS Change in Get_Summarized_Actuals
17417 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17418 if (l_plan_type = 'P') then
17419 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17420 elsif (l_plan_type = 'G') then
17421 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17422 else
17423 ETC_PERIOD_NAME(l_index_etc) := null;
17424 end if;
17425 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17426 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17427 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17428 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17429 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17430 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17431 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17432 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17433 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17434 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17435 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17436 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17437 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
17438 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17439 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17440 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17441 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17442 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17443 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17444 else
17445 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
17446 end if;
17447 end if;
17448 end if;
17449 ppl_act_effort_to_date(l_index2) := nvl(ppl_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
17450 ppl_act_cost_to_date_tc(l_index2) := nvl(ppl_act_cost_to_date_tc(l_index2),0) + nvl(l_ppl_act_cost_to_date_tc,0);
17451 ppl_act_rawcost_to_date_tc(l_index2) := nvl(ppl_act_rawcost_to_date_tc(l_index2),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
17452 ppl_act_cost_to_date_pc(l_index2) := nvl(ppl_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
17453 ppl_act_rawcost_to_date_pc(l_index2) := nvl(ppl_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
17454 ppl_act_cost_to_date_fc(l_index2) := nvl(ppl_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
17455 ppl_act_rawcost_to_date_fc(l_index2) := nvl(ppl_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
17456 ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
17457 PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
17458 PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
17459 PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
17460 PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
17461 PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
17462 PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
17463 --Bug 13823145 changes start here
17464 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
17465 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
17466 ELSif (l_wp_prl_res_class_flag = 'N') then
17467 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
17468 end if;
17469 --Bug 13823145 changes end here
17470 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
17471 ---5726773
17472 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.ppl_act_effort_to_date,l_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
17473 ESTIMATED_REMAINING_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,ppl_act_effort_to_date(l_index2));
17474 if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
17475 pa_progress_utils.get_plan_costs_for_qty
17476 ( p_resource_list_mem_id => l_object_id
17477 ,p_project_id => l_project_id
17478 ,p_task_id => all_objects_in_temp_rec.project_element_id
17479 ,p_as_of_date => l_temp_as_of_date
17480 ,p_structure_version_id => l_latest_wp_struct_ver_id
17481 ,p_txn_currency_code => l_txn_curr_code
17482 ,p_rate_based_flag => l_rate_based_flag
17483 ,p_quantity => ESTIMATED_REMAINING_EFFORT(l_index2)
17484 ,p_budget_version_id => l_plan_version_id --4372462
17485 ,p_res_assignment_id => l_res_assignment_id
17486 ,x_rawcost_tc => PPL_ETC_RAWCOST_TC(l_index2)
17487 ,x_brdncost_tc => PPL_ETC_COST_TC(l_index2)
17488 ,x_rawcost_pc => PPL_ETC_RAWCOST_PC(l_index2)
17489 ,x_brdncost_pc => PPL_ETC_COST_PC(l_index2)
17490 ,x_rawcost_fc => PPL_ETC_RAWCOST_FC(l_index2)
17491 ,x_brdncost_fc => PPL_ETC_COST_FC(l_index2)
17492 ,x_return_status => x_return_status
17493 ,x_msg_count => x_msg_count
17494 ,x_msg_data => x_msg_data);
17495 if (x_return_status <> 'S') then -- bug 6712595
17496 if (PPL_ETC_RAWCOST_TC(l_index2) is null) then
17497 --Modified the error message for the Bug 13640836
17498 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17499 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17500 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17501 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17502 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
17503 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17504 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17505 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17506 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17507 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17508 --Bug 13640836 end
17509 else
17510 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17511 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17512 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17513 -- Added for bug 5526638
17514 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17515 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17516 end if;
17517 raise l_no_rate_exception;
17518 end if;
17519 actual_finish_date(l_index2) := to_date(null);
17520 else
17521 ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
17522 PPL_ETC_COST_TC(l_index2) := 0;
17523 PPL_ETC_RAWCOST_TC(l_index2) := 0;
17524 PPL_ETC_COST_PC(l_index2) := 0;
17525 PPL_ETC_RAWCOST_PC(l_index2) := 0;
17526 PPL_ETC_COST_FC(l_index2) := 0;
17527 PPL_ETC_RAWCOST_FC(l_index2) := 0;
17528 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17529 end if;
17530 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17531 l_index_etc := l_index_etc + 1; -- for bug 6266824
17532 ELSE
17533 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17534 l_index_etc := l_index_etc + 1;
17535 ELSE
17536 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17537 l_index_etc := l_index_etc + 1;
17538 END IF;
17539
17540 END IF;
17541 END IF;
17542
17543 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17544 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17545 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17546 --CBS Change in Get_Summarized_Actuals
17547 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17548 -- End CBS Change in Get_Summarized_Actuals
17549 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17550 if (l_plan_type = 'P') then
17551 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17552 elsif (l_plan_type = 'G') then
17553 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17554 else
17555 ETC_PERIOD_NAME(l_index_etc) := null;
17556 end if;
17557 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17558 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17559 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17560 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17561 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17562 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17563 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17564 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17565 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17566 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17567 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17568 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17569 -- here if extraction type is FULL we pass to_date values otherwise
17570 -- incremental values only
17571 if (p_extraction_type = 'FULL') then
17572 ---5726773 ETC_QUANTITY(l_index_etc) := -ppl_act_effort_to_date(l_index2);
17573 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
17574 ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17575 ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17576 ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17577 ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17578 ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17579 ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17580 else
17581 if (ppl_act_effort_to_date(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (ppl_act_effort_to_date(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
17582 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
17583 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
17584 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
17585 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
17586 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
17587 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
17588 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
17589 else
17590 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - ppl_act_effort_to_date(l_index2);
17591 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_rollup_rec_asofdate.estimated_remaining_effort;
17592 ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
17593 ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
17594 ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
17595 ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
17596 ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
17597 ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
17598 end if;
17599 end if;
17600 else
17601 ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
17602 PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
17603 PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
17604 PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
17605 PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
17606 PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
17607 PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
17608 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17609 if (p_extraction_type = 'FULL') then
17610
17611 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17612 l_index_etc := l_index_etc + 1; -- for bug 6266824
17613 ELSE
17614 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17615 l_index_etc := l_index_etc + 1;
17616 ELSE
17617 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17618 l_index_etc := l_index_etc + 1;
17619 END IF;
17620
17621 END IF;
17622 END IF;
17623
17624 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17625 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17626 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17627 --CBS Change in Get_Summarized_Actuals
17628 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17629 -- End CBS Change in Get_Summarized_Actuals
17630 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17631 if (l_plan_type = 'P') then
17632 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17633 elsif (l_plan_type = 'G') then
17634 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17635 else
17636 ETC_PERIOD_NAME(l_index_etc) := null;
17637 end if;
17638 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17639 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17640 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17641 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17642 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17643 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17644 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17645 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17646 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17647 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17648 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17649 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17650 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
17651 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17652 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17653 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17654 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17655 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17656 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17657 else
17658 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
17659 end if;
17660 end if;
17661 end if;
17662 eqpmt_act_effort_to_date(l_index2) := nvl(eqpmt_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
17663 eqpmt_act_cost_to_date_tc(l_index2) := nvl(eqpmt_act_cost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
17664 eqpmt_act_rawcost_to_date_tc(l_index2) := nvl(eqpmt_act_rawcost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
17665 eqpmt_act_cost_to_date_pc(l_index2) := nvl(eqpmt_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
17666 eqpmt_act_rawcost_to_date_pc(l_index2) := nvl(eqpmt_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
17667 eqpmt_act_cost_to_date_fc(l_index2) := nvl(eqpmt_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
17668 eqpmt_act_rawcost_to_date_fc(l_index2) := nvl(eqpmt_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
17669 EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
17670 EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
17671 EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
17672 EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
17673 EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
17674 EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
17675 EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
17676
17677 --Bug 13823145 changes start here
17678 if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
17679 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_pc(l_index2);
17680 ELSif (l_wp_prl_res_class_flag = 'N') then
17681 eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_tc(l_index2);
17682 end if;
17683 --Bug 13823145 changes end here
17684 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
17685 ---5726773
17686 if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
17687 EQPMT_ETC_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,eqpmt_act_effort_to_date(l_index2));
17688 if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
17689 pa_progress_utils.get_plan_costs_for_qty
17690 ( p_resource_list_mem_id => l_object_id
17691 ,p_project_id => l_project_id
17692 ,p_task_id => all_objects_in_temp_rec.project_element_id
17693 ,p_as_of_date => l_temp_as_of_date
17694 ,p_structure_version_id => l_latest_wp_struct_ver_id
17695 ,p_txn_currency_code => l_txn_curr_code
17696 ,p_rate_based_flag => l_rate_based_flag
17697 ,p_quantity => EQPMT_ETC_EFFORT(l_index2)
17698 ,p_budget_version_id => l_plan_version_id --4372462
17699 ,p_res_assignment_id => l_res_assignment_id
17700 ,x_rawcost_tc => EQPMT_ETC_RAWCOST_TC(l_index2)
17701 ,x_brdncost_tc => EQPMT_ETC_COST_TC(l_index2)
17702 ,x_rawcost_pc => EQPMT_ETC_RAWCOST_PC(l_index2)
17703 ,x_brdncost_pc => EQPMT_ETC_COST_PC(l_index2)
17704 ,x_rawcost_fc => EQPMT_ETC_RAWCOST_FC(l_index2)
17705 ,x_brdncost_fc => EQPMT_ETC_COST_FC(l_index2)
17706 ,x_return_status => x_return_status
17707 ,x_msg_count => x_msg_count
17708 ,x_msg_data => x_msg_data);
17709 if (x_return_status <> 'S') then -- bug 6712595
17710 if (EQPMT_ETC_RAWCOST_TC(l_index2) is null) then
17711 --Modified the error message for the Bug 13640836
17712 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17713 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17714 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17715 l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17716 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
17717 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17718 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17719 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17720 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17721 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>. Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17722 --Bug 13640836 end
17723 else
17724 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17725 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17726 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17727 -- Added for bug 5526638
17728 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17729 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17730 end if;
17731 raise l_no_rate_exception;
17732 end if;
17733 actual_finish_date(l_index2) := to_date(null);
17734 else
17735 EQPMT_ETC_EFFORT(l_index2) := 0;
17736 eqpmt_ETC_COST_TC(l_index2) := 0;
17737 eqpmt_ETC_RAWCOST_TC(l_index2) := 0;
17738 eqpmt_ETC_COST_PC(l_index2) := 0;
17739 eqpmt_ETC_RAWCOST_PC(l_index2) := 0;
17740 eqpmt_ETC_COST_FC(l_index2) := 0;
17741 eqpmt_ETC_RAWCOST_FC(l_index2) := 0;
17742 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17743 end if;
17744 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17745 l_index_etc := l_index_etc + 1; -- for bug 6266824
17746 ELSE
17747 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17748 l_index_etc := l_index_etc + 1;
17749 ELSE
17750 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17751 l_index_etc := l_index_etc + 1;
17752 END IF;
17753
17754 END IF;
17755 END IF;
17756
17757
17758 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17759 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17760 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17761 --CBS Change in Get_Summarized_Actuals
17762 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17763 -- End CBS Change in Get_Summarized_Actuals
17764 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17765 if (l_plan_type = 'P') then
17766 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17767 elsif (l_plan_type = 'G') then
17768 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17769 else
17770 ETC_PERIOD_NAME(l_index_etc) := null;
17771 end if;
17772 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17773 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17774 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17775 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17776 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17777 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17778 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17779 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17780 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17781 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17782 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17783 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17784 -- here if extraction type is FULL we pass to_date values otherwise
17785 -- incremental values only
17786 if (p_extraction_type = 'FULL') then
17787 ---5726773 ETC_QUANTITY(l_index_etc) := -eqpmt_act_effort_to_date(l_index2);
17788 ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_asgn_plan_quantity;
17789 ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17790 ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17791 ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17792 ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17793 ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17794 ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17795 else
17796 if (eqpmt_act_effort_to_date(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (eqpmt_act_effort_to_date(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then ---5726773
17797 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
17798 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17799 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17800 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17801 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17802 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17803 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17804 else
17805 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - eqpmt_act_effort_to_date(l_index2);
17806 ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_effort;
17807 ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17808 ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17809 ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17810 ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17811 ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17812 ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17813 end if;
17814 end if;
17815 else
17816 EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
17817 EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
17818 EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
17819 EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
17820 EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
17821 EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
17822 EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
17823 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17824 if (p_extraction_type = 'FULL') then
17825 IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17826 l_index_etc := l_index_etc + 1; -- for bug 6266824
17827 ELSE
17828 IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17829 l_index_etc := l_index_etc + 1;
17830 ELSE
17831 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17832 l_index_etc := l_index_etc + 1;
17833 END IF;
17834
17835 END IF;
17836 END IF;
17837
17838 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17839 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17840 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17841 --CBS Change in Get_Summarized_Actuals
17842 ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17843 -- End CBS Change in Get_Summarized_Actuals
17844 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17845 if (l_plan_type = 'P') then
17846 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17847 elsif (l_plan_type = 'G') then
17848 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17849 else
17850 ETC_PERIOD_NAME(l_index_etc) := null;
17851 end if;
17852 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17853 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17854 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17855 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17856 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17857 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17858 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17859 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17860 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17861 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17862 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17863 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17864 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
17865 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17866 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17867 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17868 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17869 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17870 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17871 else
17872 l_sri_index_etc := l_sri_index_etc - 1; -- for bug 6266824
17873 end if;
17874 end if;
17875 end if;
17876 --- here we need to calc PC and EV
17877 --- 5726773
17878 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
17879 l_percent_comp := (ppl_act_effort_to_date(l_index2)/(ppl_act_effort_to_date(l_index2) + estimated_remaining_effort(l_index2)))*100;
17880 if (l_percent_comp > 100) then
17881 l_percent_comp := 100;
17882 elsif (l_percent_comp < 0) then
17883 l_percent_comp := 0;
17884 end if;
17885 l_earned_val := l_percent_comp * l_planned_eff;
17886 l_eff_rollup_pc := l_percent_comp;
17887 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COST based
17888 l_percent_comp := (ppl_act_cost_to_date_pc(l_index2)/(ppl_act_cost_to_date_pc(l_index2) + ppl_etc_cost_pc(l_index2)))*100;
17889 if (l_percent_comp > 100) then
17890 l_percent_comp := 100;
17891 elsif (l_percent_comp < 0) then
17892 l_percent_comp := 0;
17893 end if;
17894 l_earned_val := l_percent_comp * l_planned_cost;
17895 l_eff_rollup_pc := l_percent_comp;
17896 else
17897 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
17898 l_earned_val := l_rollup_rec_asofdate.earned_value;
17899 l_eff_rollup_pc := l_rollup_rec_asofdate.EFF_ROLLUP_PERCENT_COMP;
17900 end if;
17901 completed_percentage(l_index2) := l_rollup_rec_asofdate.completed_percentage;
17902 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_eff_rollup_pc;
17903 earned_value(l_index2) := l_earned_val;
17904 TASK_WT_BASIS_CODE(l_index2) := l_rollup_rec_asofdate.TASK_WT_BASIS_CODE;
17905 SUBPRJ_PPL_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_EFFORT;
17906 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_EFFORT;
17907 SUBPRJ_PPL_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_EFFORT;
17908 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_EFFORT;
17909 SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_TC;
17910 SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_TC;
17911 SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_FC;
17912 SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_FC;
17913 SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_PC;
17914 SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_PC;
17915 SUBPRJ_PPL_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_TC;
17916 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_TC;
17917 SUBPRJ_PPL_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_FC;
17918 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_FC;
17919 SUBPRJ_PPL_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_PC;
17920 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_PC;
17921 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_TC;
17922 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
17923 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_FC;
17924 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
17925 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_PC;
17926 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
17927 SUBPRJ_OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_TC;
17928 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_TC;
17929 SUBPRJ_OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_FC;
17930 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_FC;
17931 SUBPRJ_OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_PC;
17932 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_PC;
17933 SUBPRJ_PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_TC;
17934 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_TC;
17935 SUBPRJ_PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_FC;
17936 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_FC;
17937 SUBPRJ_PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_PC;
17938 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_PC;
17939 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_TC;
17940 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
17941 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_FC;
17942 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
17943 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_PC;
17944 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
17945 SUBPRJ_EARNED_VALUE(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EARNED_VALUE;
17946 CURRENT_FLAG(l_index2) := l_rollup_rec_asofdate.CURRENT_FLAG; -- if last rec is 'Y' this should be 'Y' else it should be 'N'
17947 if (l_rollup_rec_asofdate.CURRENT_FLAG = 'Y') then
17948 l_index4 := l_index4 + 1;
17949 u1_progress_rollup_id(l_index4) := l_rollup_rec_asofdate.PROGRESS_ROLLUP_ID;
17950 end if;
17951 PROJFUNC_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_TYPE;
17952 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_EXCHANGE_RATE;
17953 PROJFUNC_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_DATE;
17954 PROJ_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_TYPE;
17955 PROJ_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_EXCHANGE_RATE;
17956 PROJ_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_DATE;
17957 TXN_CURRENCY_CODE(l_index2) := l_rollup_rec_asofdate.TXN_CURRENCY_CODE;
17958 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
17959 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
17960 l_index2 := l_temp_index2;
17961 end if;
17962 end if;
17963 /*
17964 --- here just update the future rollup recs if exist.
17965 open future_rollup_recs;
17966 loop
17967 fetch future_rollup_recs into l_rollup_rec_asofdate;
17968 if future_rollup_recs%notfound then
17969 exit;
17970 else
17971 l_index3 := l_index3 + 1;
17972 if (l_planned_eff > 0 and l_base_pc_deriv_code = 'EFFORT') then
17973 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
17974 nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
17975 l_percent_comp := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)/l_planned_eff)*100;
17976 else
17977 l_percent_comp := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)/(nvl(all_objects_in_temp_rec.act_labor_hrs,0) + l_rollup_rec_asofdate.estimated_remaining_effort))*100;
17978 end if;
17979 if (l_percent_comp > 100) then
17980 l_percent_comp := 100;
17981 elsif (l_percent_comp < 0) then
17982 l_percent_comp := 0;
17983 end if;
17984 l_earned_val := l_percent_comp * l_planned_eff;
17985 l_eff_rollup_pc := l_percent_comp;
17986 elsif (l_planned_cost > 0 and l_base_pc_deriv_code = 'COST') then -- COST based
17987 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
17988 nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
17989 l_percent_comp := (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)/l_planned_cost)*100;
17990 else
17991 l_percent_comp := (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)/(nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0) + l_rollup_rec_asofdate.ppl_etc_cost_pc))*100;
17992 end if;
17993 if (l_percent_comp > 100) then
17994 l_percent_comp := 100;
17995 elsif (l_percent_comp < 0) then
17996 l_percent_comp := 0;
17997 end if;
17998 l_earned_val := l_percent_comp * l_planned_cost;
17999 l_eff_rollup_pc := l_percent_comp;
18000 else
18001 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
18002 l_earned_val := l_rollup_rec_asofdate.earned_value;
18003 l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
18004 end if;
18005 u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
18006 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
18007 u_earned_val(l_index3) := l_earned_val;
18008 u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
18009 u_object_version_id(l_index3) := l_object_version_id;
18010 u_ppl_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_labor_hrs;
18011 u_eqpmt_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_equip_hrs;
18012 if (l_object_Type = 'PA_ASSIGNMENTS') then
18013 if (l_rate_based_flag = 'N') then
18014 u_oth_qty(l_index3) := all_objects_in_temp_rec.act_txn_raw_cost - (all_objects_in_temp_rec.act_txn_labor_raw_cost + all_objects_in_temp_rec.act_txn_equip_raw_cost);
18015 else
18016 u_oth_qty(l_index3) := all_objects_in_temp_rec.quantity - all_objects_in_temp_rec.act_labor_hrs - all_objects_in_temp_rec.act_equip_hrs;
18017 end if;
18018 end if;
18019 u_oth_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_brdn_cost - (all_objects_in_temp_rec.act_txn_labor_brdn_cost + all_objects_in_temp_rec.act_txn_equip_brdn_cost);
18020 u_oth_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_raw_cost - (all_objects_in_temp_rec.act_txn_labor_raw_cost + all_objects_in_temp_rec.act_txn_equip_raw_cost);
18021 u_oth_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_brdn_cost - (all_objects_in_temp_rec.act_prj_labor_brdn_cost + all_objects_in_temp_rec.act_prj_equip_brdn_cost);
18022 u_oth_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_raw_cost - (all_objects_in_temp_rec.act_prj_labor_raw_cost + all_objects_in_temp_rec.act_prj_equip_raw_cost);
18023 u_oth_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_brdn_cost - (all_objects_in_temp_rec.act_pou_labor_brdn_cost + all_objects_in_temp_rec.act_pou_equip_brdn_cost);
18024 u_oth_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_raw_cost - (all_objects_in_temp_rec.act_pou_labor_raw_cost + all_objects_in_temp_rec.act_pou_equip_raw_cost);
18025 u_ppl_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
18026 u_ppl_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_raw_cost;
18027 u_ppl_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_brdn_cost;
18028 u_ppl_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_raw_cost;
18029 u_ppl_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_brdn_cost;
18030 u_ppl_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_raw_cost;
18031 u_eqpmt_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
18032 u_eqpmt_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_raw_cost;
18033 u_eqpmt_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_brdn_cost;
18034 u_eqpmt_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_raw_cost;
18035 u_eqpmt_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_brdn_cost;
18036 u_eqpmt_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_raw_cost;
18037 end if;
18038 end loop;
18039 close future_rollup_recs;
18040 */
18041 l_last_projelemid := all_objects_in_temp_rec.project_element_id;
18042 l_last_res_list_mem_id := l_new_res_list_member_id; ---all_objects_in_temp_rec.res_list_member_id;
18043 l_last_cbs_element_id := l_cbs_element_id; -- CBS Check
18044 l_last_object_Type := l_object_Type;
18045 l_last_period_flag := l_period_flag;
18046 end if; --- 33 ignore rec
18047 end loop;
18048 pa_debug.log_message('GET_SUMM_ACT: Done looping thru all the records. Inserts = '||l_index2||' Updates = '||l_index3, 1);
18049 /* Bug 13419867 starts */
18050 select count(*) into l_asgmt_count from pa_asgmt_plan_change_t where project_id = l_project_id;
18051 IF l_asgmt_count > 0 then
18052 PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP
18053 ( p_calling_context => 'ASGMT_PLAN_CHANGE'
18054 ,p_project_id => l_project_id
18055 ,p_structure_version_id => pa_project_structure_utils.get_latest_wp_version(l_project_id)
18056 ,p_pub_struc_ver_id => pa_project_structure_utils.get_latest_wp_version(l_project_id)
18057 ,x_return_status => x_return_status
18058 ,x_msg_count => x_msg_count
18059 ,x_msg_data => x_msg_data);
18060
18061 pa_task_assignment_utils.g_require_progress_rollup := 'N';
18062 END IF;
18063
18064 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
18065 pa_debug.log_message('PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS: Error in PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP', 1);
18066 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
18067 p_msg_name => x_msg_data);
18068 x_msg_data := x_msg_data;
18069 x_return_status := 'E';
18070
18071 RAISE FND_API.G_EXC_ERROR;
18072 END IF;
18073 /* Bug 13419867 ends */
18074
18075 IF g1_debug_mode = 'Y' THEN
18076 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18077 x_Msg => 'Done with updating pl/sql tables for summarized actuals',
18078 x_Log_Level=> 3);
18079 END IF;
18080 --- here we check if any actuals are mapped to a different assignment
18081 --- from last time.
18082 if (p_plan_res_level = 'Y' and p_extraction_type = 'FULL') then
18083 for all_assignments_asofdate_rec in all_assignments_asofdate loop
18084 l_match_found := 'N';
18085 for l_index1 in 1..l_index3 loop
18086 if all_assignments_asofdate_rec.progress_rollup_id = u_progress_rollup_id(l_index1) then
18087 l_match_found := 'Y';
18088 exit;
18089 end if;
18090 end loop;
18091 if (l_match_found = 'N') then
18092 if (nvl(all_assignments_asofdate_rec.ppl_act_effort_to_date,0) + nvl(all_assignments_asofdate_rec.eqpmt_act_effort_to_date,0) + nvl(all_assignments_asofdate_rec.oth_quantity_to_date,0)
18093 + nvl(all_assignments_asofdate_rec.ppl_act_cost_to_date_tc,0) + nvl(all_assignments_asofdate_rec.eqpmt_act_cost_to_date_tc,0) + nvl(all_assignments_asofdate_rec.oth_act_cost_to_date_tc,0) <> 0) then ---4461052
18094 l_index3 := l_index3 + 1;
18095 u_completed_percentage(l_index3) := to_number(null);
18096 u_eff_rollup_percent_comp(l_index3) := to_number(null);
18097 u_earned_val(l_index3) := to_number(null);
18098 u_actual_finish_date(l_index3) := to_date(null);
18099 u_progress_rollup_id(l_index3) := all_assignments_asofdate_rec.progress_rollup_id;
18100 u_object_version_id(l_index3) := all_assignments_asofdate_rec.object_version_id;
18101 u_ppl_act_effort_to_date(l_index3) := 0;
18102 u_eqpmt_act_effort_to_date(l_index3) := 0;
18103 u_oth_qty(l_index3) := 0;
18104 u_oth_act_cost_to_date_tc(l_index3) := 0;
18105 u_oth_act_rawcost_to_date_tc(l_index3) := 0;
18106 u_oth_act_cost_to_date_pc(l_index3) := 0;
18107 u_oth_act_rawcost_to_date_pc(l_index3) := 0;
18108 u_oth_act_cost_to_date_fc(l_index3) := 0;
18109 u_oth_act_rawcost_to_date_fc(l_index3) := 0;
18110 u_ppl_act_cost_to_date_tc(l_index3) := 0;
18111 u_ppl_act_rawcost_to_date_tc(l_index3) := 0;
18112 u_ppl_act_cost_to_date_pc(l_index3) := 0;
18113 u_ppl_act_rawcost_to_date_pc(l_index3) := 0;
18114 u_ppl_act_cost_to_date_fc(l_index3) := 0;
18115 u_ppl_act_rawcost_to_date_fc(l_index3) := 0;
18116 u_eqpmt_act_cost_to_date_tc(l_index3) := 0;
18117 u_eqpmt_act_rawcost_to_date_tc(l_index3) := 0;
18118 u_eqpmt_act_cost_to_date_pc(l_index3) := 0;
18119 u_eqpmt_act_rawcost_to_date_pc(l_index3) := 0;
18120 u_eqpmt_act_cost_to_date_fc(l_index3) := 0;
18121 u_eqpmt_act_rawcost_to_date_fc(l_index3) := 0;
18122 u_oth_etc_cost_to_date_tc(l_index3) := null;
18123 u_oth_etc_rawcost_to_date_tc(l_index3) := null;
18124 u_oth_etc_cost_to_date_pc(l_index3) := null;
18125 u_oth_etc_rawcost_to_date_pc(l_index3) := null;
18126 u_oth_etc_cost_to_date_fc(l_index3) := null;
18127 u_oth_etc_rawcost_to_date_fc(l_index3) := null;
18128 u_ppl_etc_cost_to_date_tc(l_index3) := null;
18129 u_ppl_etc_rawcost_to_date_tc(l_index3) := null;
18130 u_ppl_etc_cost_to_date_pc(l_index3) := null;
18131 u_ppl_etc_rawcost_to_date_pc(l_index3) := null;
18132 u_ppl_etc_cost_to_date_fc(l_index3) := null;
18133 u_ppl_etc_rawcost_to_date_fc(l_index3) := null;
18134 u_eqpmt_etc_cost_to_date_tc(l_index3) := null;
18135 u_eqpmt_etc_rawcost_to_date_tc(l_index3) := null;
18136 u_eqpmt_etc_cost_to_date_pc(l_index3) := null;
18137 u_eqpmt_etc_rawcost_to_date_pc(l_index3) := null;
18138 u_eqpmt_etc_cost_to_date_fc(l_index3) := null;
18139 u_eqpmt_etc_rawcost_to_date_fc(l_index3) := null;
18140 u_ppl_etc_effort_to_date(l_index3) := null;
18141 u_eqpmt_etc_effort_to_date(l_index3) := null;
18142 u_oth_etc_qty(l_index3) := null;
18143 else
18144
18145 --- if a progress record is there and no actuals exist then this means maybe --- ETC is overridden. We will pass ETC to PJI if this is FULL mode.
18146 if (p_extraction_type = 'FULL') then
18147 l_index_etc := l_index_etc + 1;
18148 ETC_PROJECT_ID(l_index_etc) := l_project_id;
18149 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
18150 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assignments_asofdate_rec.proj_element_id;
18151 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
18152 if (l_plan_type = 'P') then
18153 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
18154 elsif (l_plan_type = 'G') then
18155 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
18156 else
18157 ETC_PERIOD_NAME(l_index_etc) := null;
18158 end if;
18159 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
18160 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
18161 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
18162 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
18163 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
18164 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
18165 l_task_id := all_assignments_asofdate_rec.proj_element_id;
18166 l_res_list_member_id := all_assignments_asofdate_rec.object_id;
18167 open get_assignment_info;
18168 fetch get_assignment_info into l_get_assignment_info;
18169 close get_assignment_info;
18170 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
18171 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
18172 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
18173 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
18174 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
18175 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
18176 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
18177 ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
18178 --CBS Change in Get_Summarized_Actuals
18179 ETC_CBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.cbs_element_id;
18180 -- End CBS Change in Get_Summarized_Actuals
18181 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
18182 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
18183
18184 ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
18185 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
18186 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
18187 if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
18188 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
18189 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18190 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18191 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18192 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18193 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18194 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18195 elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
18196 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
18197 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18198 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18199 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18200 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18201 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18202 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18203 else
18204 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
18205 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18206 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18207 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18208 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18209 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18210 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18211 end if;
18212 end if;
18213 end if;
18214 end if;
18215 end loop;
18216
18217
18218 for all_assign_prev_asofdate_rec in all_assign_prev_asofdate loop
18219 l_match_found := 'N';
18220 for l_index1 in 1..l_index2 loop
18221 if all_assign_prev_asofdate_rec.object_id = object_id(l_index1) and
18222 -- Add cbs_element_id
18223 nvl(all_assign_prev_asofdate_rec.cbs_element_id,-1) = nvl(cbs_element_id(l_index1),-1) and
18224 all_assign_prev_asofdate_rec.proj_element_id = proj_element_id(l_index1) and
18225 all_assign_prev_asofdate_rec.object_type = object_type(l_index1) then
18226 l_match_found := 'Y';
18227 exit;
18228 end if;
18229 end loop;
18230 if (l_match_found = 'N') then
18231 if (nvl(all_assign_prev_asofdate_rec.ppl_act_effort_to_date,0) + nvl(all_assign_prev_asofdate_rec.eqpmt_act_effort_to_date,0) + nvl(all_assign_prev_asofdate_rec.oth_quantity_to_date,0)
18232 + nvl(all_assign_prev_asofdate_rec.ppl_act_cost_to_date_tc,0) + nvl(all_assign_prev_asofdate_rec.eqpmt_act_cost_to_date_tc,0) + nvl(all_assign_prev_asofdate_rec.oth_act_cost_to_date_tc,0) <> 0) then ---4461052
18233 l_index2 := l_index2 + 1;
18234 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
18235 percent_complete_id(l_index2) := to_number(null);
18236 project_id(l_index2) := l_project_id;
18237 object_id(l_index2) := all_assign_prev_asofdate_rec.object_id;
18238 OBJECT_TYPE(l_index2) := all_assign_prev_asofdate_rec.object_Type;
18239 as_of_Date(l_index2) := l_temp_as_of_date;
18240 object_version_id(l_index2) := all_assign_prev_asofdate_rec.object_version_id;
18241 LAST_UPDATE_DATE(l_index2) := sysdate;
18242 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
18243 CREATION_DATE(l_index2) := sysdate;
18244 CREATED_BY(l_index2) := fnd_global.user_id;
18245 PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.progress_status_code;
18246 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
18247 INCREMENTAL_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.INCREMENTAL_WORK_QUANTITY;
18248 CUMULATIVE_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.CUMULATIVE_WORK_QUANTITY;
18249 base_percent_complete(l_index2) := all_assign_prev_asofdate_rec.base_percent_complete;
18250 EFF_ROLLUP_PERCENT_COMP(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PERCENT_COMP;
18251 completed_percentage(l_index2) := 0;
18252 ESTIMATED_START_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_START_DATE;
18253 ESTIMATED_FINISH_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_FINISH_DATE;
18254 actual_start_date(l_index2) := all_assign_prev_asofdate_rec.actual_start_date;
18255 actual_finish_date(l_index2) := all_assign_prev_asofdate_rec.actual_finish_date;
18256 ESTIMATED_REMAINING_EFFORT(l_index2) := null;
18257 RECORD_VERSION_NUMBER(l_index2) := 1;
18258 base_percent_comp_deriv_code(l_index2) := all_assign_prev_asofdate_rec.base_percent_comp_deriv_code;
18259 BASE_PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.BASE_PROGRESS_STATUS_CODE;
18260 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PROG_STAT_CODE;
18261 STRUCTURE_TYPE(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_TYPE;
18262 PROJ_ELEMENT_ID(l_index2) := all_assign_prev_asofdate_rec.PROJ_ELEMENT_ID;
18263 STRUCTURE_VERSION_ID(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_VERSION_ID;
18264
18265 -- Bug 6917961
18266 if (OBJECT_TYPE(l_index2) = 'PA_ASSIGNMENTS') then
18267 -- Add cbs_element_id
18268 cbs_element_id(l_index2) := all_assign_prev_asofdate_rec.cbs_element_id;
18269 if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
18270 and actual_finish_date(l_index2) is null) then
18271 l_prog_enable_flag := 'N';
18272 l_prog_stat_code := null;
18273 OPEN cur_prog_setup(PROJ_ELEMENT_ID(l_index2),l_project_id);
18274 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
18275 CLOSE cur_prog_setup;
18276 if (l_prog_enable_flag = 'Y') then
18277 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
18278 end if;
18279 end if;
18280 end if;
18281 -- Bug 6917961
18282
18283 ppl_act_effort_to_date(l_index2) := 0;
18284 eqpmt_act_effort_to_date(l_index2) := 0;
18285 oth_qty(l_index2) := 0;
18286 EQPMT_ETC_EFFORT(l_index2) := null;
18287 oth_etc_qty(l_index2) := null;
18288 oth_act_cost_to_date_tc(l_index2) := 0;
18289 oth_act_rawcost_to_date_tc(l_index2) := 0;
18290 oth_act_cost_to_date_pc(l_index2) := 0;
18291 oth_act_rawcost_to_date_pc(l_index2) := 0;
18292 oth_act_cost_to_date_fc(l_index2) := 0;
18293 oth_act_rawcost_to_date_fc(l_index2) := 0;
18294 OTH_ETC_COST_TC(l_index2) := null;
18295 OTH_ETC_RAWCOST_TC(l_index2) := null;
18296 OTH_ETC_COST_FC(l_index2) := null;
18297 OTH_ETC_RAWCOST_FC(l_index2) := null;
18298 OTH_ETC_COST_PC(l_index2) := null;
18299 OTH_ETC_RAWCOST_PC(l_index2) := null;
18300 ppl_act_cost_to_date_tc(l_index2) := 0;
18301 ppl_act_rawcost_to_date_tc(l_index2) := 0;
18302 ppl_act_cost_to_date_pc(l_index2) := 0;
18303 ppl_act_rawcost_to_date_pc(l_index2) := 0;
18304 ppl_act_cost_to_date_fc(l_index2) := 0;
18305 ppl_act_rawcost_to_date_fc(l_index2) := 0;
18306 PPL_ETC_COST_TC(l_index2) := null;
18307 PPL_ETC_RAWCOST_TC(l_index2) := null;
18308 PPL_ETC_COST_PC(l_index2) := null;
18309 PPL_ETC_RAWCOST_PC(l_index2) := null;
18310 PPL_ETC_COST_FC(l_index2) := null;
18311 PPL_ETC_RAWCOST_FC(l_index2) := null;
18312 eqpmt_act_cost_to_date_tc(l_index2) := 0;
18313 eqpmt_act_rawcost_to_date_tc(l_index2) := 0;
18314 eqpmt_act_cost_to_date_pc(l_index2) := 0;
18315 eqpmt_act_rawcost_to_date_pc(l_index2) := 0;
18316 eqpmt_act_cost_to_date_fc(l_index2) := 0;
18317 eqpmt_act_rawcost_to_date_fc(l_index2) := 0;
18318 EQPMT_ETC_COST_TC(l_index2) := null;
18319 EQPMT_ETC_RAWCOST_TC(l_index2) := null;
18320 EQPMT_ETC_COST_PC(l_index2) := null;
18321 EQPMT_ETC_RAWCOST_PC(l_index2) := null;
18322 EQPMT_ETC_COST_FC(l_index2) := null;
18323 EQPMT_ETC_RAWCOST_FC(l_index2) := null;
18324 earned_value(l_index2) := 0;
18325 TASK_WT_BASIS_CODE(l_index2) := all_assign_prev_asofdate_rec.TASK_WT_BASIS_CODE;
18326 SUBPRJ_PPL_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_EFFORT;
18327 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_EFFORT;
18328 SUBPRJ_PPL_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_EFFORT;
18329 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_EFFORT;
18330 SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC;
18331 SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC;
18332 SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC;
18333 SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC;
18334 SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC;
18335 SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC;
18336 SUBPRJ_PPL_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_TC;
18337 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_TC;
18338 SUBPRJ_PPL_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_FC;
18339 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_FC;
18340 SUBPRJ_PPL_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_PC;
18341 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_PC;
18342 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_TC;
18343 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
18344 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_FC;
18345 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
18346 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_PC;
18347 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
18348 SUBPRJ_OTH_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_TC;
18349 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_TC;
18350 SUBPRJ_OTH_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_FC;
18351 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_FC;
18352 SUBPRJ_OTH_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_PC;
18353 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_PC;
18354 SUBPRJ_PPL_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_TC;
18355 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_TC;
18356 SUBPRJ_PPL_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_FC;
18357 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_FC;
18358 SUBPRJ_PPL_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_PC;
18359 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_PC;
18360 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_TC;
18361 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
18362 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_FC;
18363 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
18364 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_PC;
18365 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
18366 SUBPRJ_EARNED_VALUE(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EARNED_VALUE;
18367 CURRENT_FLAG(l_index2) := all_assign_prev_asofdate_rec.CURRENT_FLAG; -- if last rec is 'Y' this should be 'Y' else it should be 'N'
18368 if (all_assign_prev_asofdate_rec.CURRENT_FLAG = 'Y') then
18369 l_index4 := l_index4 + 1;
18370 u1_progress_rollup_id(l_index4) := all_assign_prev_asofdate_rec.PROGRESS_ROLLUP_ID;
18371 end if;
18372 PROJFUNC_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_TYPE;
18373 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_EXCHANGE_RATE;
18374 PROJFUNC_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_DATE;
18375 PROJ_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_TYPE;
18376 PROJ_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_EXCHANGE_RATE;
18377 PROJ_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_DATE;
18378 TXN_CURRENCY_CODE(l_index2) := all_assign_prev_asofdate_rec.TXN_CURRENCY_CODE;
18379 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
18380 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
18381 else
18382 --- if a progress record is there and no actuals exist then this means maybe --- ETC is overridden. We will pass ETC to PJI if this is FULL mode.
18383 if (p_extraction_type = 'FULL') then
18384
18385 l_index_etc := l_index_etc + 1;
18386 ETC_PROJECT_ID(l_index_etc) := l_project_id;
18387 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
18388 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assign_prev_asofdate_rec.proj_element_id;
18389 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
18390 if (l_plan_type = 'P') then
18391 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
18392 elsif (l_plan_type = 'G') then
18393 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
18394 else
18395 ETC_PERIOD_NAME(l_index_etc) := null;
18396 end if;
18397 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
18398 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
18399 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
18400 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
18401 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
18402 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
18403 l_task_id := all_assign_prev_asofdate_rec.proj_element_id;
18404 l_res_list_member_id := all_assign_prev_asofdate_rec.object_id;
18405 open get_assignment_info;
18406 fetch get_assignment_info into l_get_assignment_info;
18407 close get_assignment_info;
18408 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
18409 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
18410 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
18411 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
18412 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
18413 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
18414 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
18415 ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
18416 --CBS Change in Get_Summarized_Actuals
18417 ETC_CBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.cbs_element_id;
18418 -- End CBS Change in Get_Summarized_Actuals
18419 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
18420 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
18421
18422 ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
18423 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
18424 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
18425 if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
18426 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
18427 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18428 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18429 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18430 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18431 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18432 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18433 elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
18434 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
18435 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18436 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18437 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18438 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18439 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18440 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18441 else
18442 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
18443 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18444 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18445 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18446 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18447 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18448 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18449 end if;
18450 end if;
18451 end if;
18452 end if;
18453 end loop;
18454 end if;
18455
18456 pa_debug.log_message('GET_SUMM_ACT: Done looping thru all assignments which are now re-mapped.', 1);
18457
18458 -- Bug 4533112 Begin
18459 pa_debug.log_message('GET_SUMM_ACT: Calling Progress Client Extension.', 1);
18460 FOR l_index1 IN 1..l_index2 LOOP
18461
18462 IF OBJECT_TYPE(l_index1) = 'PA_ASSIGNMENTS' OR (OBJECT_TYPE(l_index1) = 'PA_TASKS' AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(OBJECT_VERSION_ID(l_index1))= 'N')
18463 THEN
18464
18465 l_db_date_override_flag := 'N';
18466 l_db_estimated_start_date := null;
18467 l_db_estimated_finish_date := null;
18468 l_db_actual_start_date := null;
18469 l_db_actual_finish_date := null;
18470 l_clex_estimated_start_date := null;
18471 l_clex_estimated_finish_date := null;
18472 l_clex_actual_start_date := null;
18473 l_clex_actual_finish_date := null;
18474 l_task_status_code := null;
18475 l_clex_pc := null;
18476
18477 OPEN c_get_dates_overrides(PROJECT_ID(l_index1),OBJECT_ID(l_index1),OBJECT_TYPE(l_index1),AS_OF_DATE(l_index1), proj_element_id(l_index1)); --bug 9778012
18478 FETCH c_get_dates_overrides INTO
18479 l_db_date_override_flag
18480 , l_db_estimated_start_date
18481 , l_db_estimated_finish_date
18482 , l_db_actual_start_date
18483 , l_db_actual_finish_date
18484 , l_task_status_code;
18485 CLOSE c_get_dates_overrides;
18486
18487 IF g1_debug_mode = 'Y' THEN
18488 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Insert Case : Client Extension Logic starts here', x_Log_Level=> 3);
18489 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18490 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
18491 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
18492 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
18493 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
18494 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
18495 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ESTIMATED_START_DATE(l_index1)='||ESTIMATED_START_DATE(l_index1), x_Log_Level=> 3);
18496 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ESTIMATED_FINISH_DATE(l_index1)='||ESTIMATED_FINISH_DATE(l_index1), x_Log_Level=> 3);
18497 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ACTUAL_START_DATE(l_index1)='||ACTUAL_START_DATE(l_index1), x_Log_Level=> 3);
18498 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ACTUAL_FINISH_DATE(l_index1)='||ACTUAL_FINISH_DATE(l_index1), x_Log_Level=> 3);
18499 END IF;
18500
18501
18502 l_date_override_flag := 'N';
18503 l_clex_pc := null;
18504 IF OBJECT_TYPE(l_index1) = 'PA_TASKS' THEN
18505 l_clex_pc := nvl(COMPLETED_PERCENTAGE(l_index1), EFF_ROLLUP_PERCENT_COMP(l_index1));
18506 END IF;
18507
18508 IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
18509 l_date_override_flag := 'Y';
18510 ESTIMATED_START_DATE(l_index1) := l_db_estimated_start_date;
18511 ESTIMATED_FINISH_DATE(l_index1) := l_db_estimated_finish_date;
18512 ACTUAL_START_DATE(l_index1) := l_db_actual_start_date;
18513 ACTUAL_FINISH_DATE(l_index1) := l_db_actual_finish_date;
18514 END IF;
18515
18516 IF g1_debug_mode = 'Y' THEN
18517 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
18518 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18519 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'PROJECT_ID(l_index1)='||PROJECT_ID(l_index1), x_Log_Level=> 3);
18520 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'latest_wp_struct_ver_ids_tbl(l_index)='||latest_wp_struct_ver_ids_tbl(l_index), x_Log_Level=> 3);
18521 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_TYPE(l_index1)='||OBJECT_TYPE(l_index1), x_Log_Level=> 3);
18522 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_ID(l_index1)='||OBJECT_ID(l_index1), x_Log_Level=> 3);
18523 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_VERSION_ID(l_index1)='||OBJECT_VERSION_ID(l_index1), x_Log_Level=> 3);
18524 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'PROJ_ELEMENT_ID(l_index1)='||PROJ_ELEMENT_ID(l_index1), x_Log_Level=> 3);
18525 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
18526 END IF;
18527
18528
18529 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
18530 p_project_id => PROJECT_ID(l_index1),
18531 p_structure_type => 'WORKPLAN',
18532 p_structure_version_id => latest_wp_struct_ver_ids_tbl(l_index),
18533 p_object_type => OBJECT_TYPE(l_index1),
18534 p_object_id => OBJECT_ID(l_index1),
18535 p_object_version_id => OBJECT_VERSION_ID(l_index1),
18536 p_proj_element_id => PROJ_ELEMENT_ID(l_index1),
18537 p_task_status => l_task_status_code,
18538 p_percent_complete => l_clex_pc,
18539 p_estimated_start_date => ESTIMATED_START_DATE(l_index1),
18540 p_estimated_finish_date => ESTIMATED_FINISH_DATE(l_index1),
18541 p_actual_start_date => ACTUAL_START_DATE(l_index1),
18542 p_actual_finish_date => ACTUAL_FINISH_DATE(l_index1),
18543 x_estimated_start_date => l_clex_estimated_start_date,
18544 x_estimated_finish_date => l_clex_estimated_finish_date,
18545 x_actual_start_date => l_clex_actual_start_date,
18546 x_actual_finish_date => l_clex_actual_finish_date,
18547 x_return_status => x_return_status,
18548 x_msg_count => x_msg_count,
18549 x_msg_data => x_msg_data
18550 );
18551
18552 IF g1_debug_mode = 'Y' THEN
18553 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
18554 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
18555 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
18556 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
18557 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
18558 END IF;
18559
18560 IF x_return_status <> 'S' THEN
18561 pa_debug.log_message('GET_SUMM_ACT: For Insert GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
18562 -- Added for bug 5526638
18563 l_err_msg := 'Progress Client extension returned error for object_id='||OBJECT_ID(l_index1);
18564 raise FND_API.G_EXC_ERROR;
18565 END IF;
18566
18567 IF nvl(ESTIMATED_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
18568 OR nvl(ESTIMATED_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
18569 OR nvl(ACTUAL_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
18570 OR nvl(ACTUAL_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
18571 THEN
18572 l_date_override_flag := 'Y';
18573 ESTIMATED_START_DATE(l_index1) := l_clex_estimated_start_date;
18574 ESTIMATED_FINISH_DATE(l_index1) := l_clex_estimated_finish_date;
18575 ACTUAL_START_DATE(l_index1) := l_clex_actual_start_date;
18576 ACTUAL_FINISH_DATE(l_index1) := l_clex_actual_finish_date;
18577 IF ESTIMATED_REMAINING_EFFORT(l_index1) > 0 OR EQPMT_ETC_EFFORT(l_index1) > 0 OR oth_etc_qty(l_index1) > 0 THEN
18578 ACTUAL_FINISH_DATE(l_index1) := null;
18579 END IF;
18580 END IF;
18581
18582 BASE_PROGRESS_STATUS_CODE(l_index1) := l_date_override_flag;
18583 IF g1_debug_mode = 'Y' THEN
18584 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
18585 END IF;
18586 END IF;
18587 END LOOP;
18588
18589 FOR l_index1 IN 1..l_index3 LOOP
18590
18591 l_db_date_override_flag := 'N';
18592 l_db_estimated_start_date := null;
18593 l_db_estimated_finish_date := null;
18594 l_db_actual_start_date := null;
18595 l_db_actual_finish_date := null;
18596 l_clex_estimated_start_date := null;
18597 l_clex_estimated_finish_date := null;
18598 l_clex_actual_start_date := null;
18599 l_clex_actual_finish_date := null;
18600 l_task_status_code := null;
18601 l_date_override_flag := 'N';
18602 l_db_object_id := null;
18603 l_db_object_version_id := null;
18604 l_db_proj_element_id := null;
18605 l_db_object_type := null;
18606 l_db_as_of_date := null;
18607 l_db_project_id := null;
18608 l_db_current_flag := null;
18609 l_clex_pc := null;
18610
18611 OPEN c_get_rec_overrides(u_progress_rollup_id(l_index1));
18612 FETCH c_get_rec_overrides INTO
18613 l_db_date_override_flag
18614 , l_db_estimated_start_date
18615 , l_db_estimated_finish_date
18616 , l_db_actual_start_date
18617 , l_db_actual_finish_date
18618 , l_task_status_code
18619 , l_db_object_id
18620 , l_db_object_version_id
18621 , l_db_proj_element_id
18622 , l_db_object_type
18623 , l_db_as_of_date
18624 , l_db_project_id
18625 , l_db_current_flag;
18626 CLOSE c_get_rec_overrides;
18627
18628 IF g1_debug_mode = 'Y' THEN
18629 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Update Case : Client Extension Logic starts here', x_Log_Level=> 3);
18630 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_progress_rollup_id(l_index1)='||u_progress_rollup_id(l_index1), x_Log_Level=> 3);
18631 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18632 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
18633 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
18634 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
18635 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
18636 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
18637 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_id='||l_db_object_id, x_Log_Level=> 3);
18638 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_version_id='||l_db_object_version_id, x_Log_Level=> 3);
18639 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_proj_element_id='||l_db_proj_element_id, x_Log_Level=> 3);
18640 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_type='||l_db_object_type, x_Log_Level=> 3);
18641 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_as_of_date='||l_db_as_of_date, x_Log_Level=> 3);
18642 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_project_id='||l_db_project_id, x_Log_Level=> 3);
18643 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_current_flag='||l_db_current_flag, x_Log_Level=> 3);
18644 END IF;
18645
18646
18647 u_estimated_start_date(l_index1) := l_db_estimated_start_date;
18648 u_estimated_finish_date(l_index1) := l_db_estimated_finish_date;
18649 u_actual_start_date(l_index1) := l_db_actual_start_date;
18650 u_base_progress_status_code(l_index1) := l_db_date_override_flag;
18651
18652
18653 IF (l_db_object_type = 'PA_ASSIGNMENTS' OR (l_db_object_type = 'PA_TASKS' AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_db_object_version_id)= 'N'))
18654 AND l_db_current_flag IN ('Y','N')
18655 THEN
18656
18657 IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
18658 l_date_override_flag := 'Y';
18659 u_actual_finish_date(l_index1) := l_db_actual_finish_date;
18660 END IF;
18661
18662 IF l_db_object_type = 'PA_TASKS' THEN
18663 l_clex_pc := nvl(u_completed_percentage(l_index1), u_eff_rollup_percent_comp(l_index1));
18664 END IF;
18665
18666 IF g1_debug_mode = 'Y' THEN
18667 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
18668 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18669 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'latest_wp_struct_ver_ids_tbl(l_index)='||latest_wp_struct_ver_ids_tbl(l_index), x_Log_Level=> 3);
18670 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
18671 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_estimated_start_date(l_index1)='||u_estimated_start_date(l_index1), x_Log_Level=> 3);
18672 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_estimated_finish_date(l_index1)='||u_estimated_finish_date(l_index1), x_Log_Level=> 3);
18673 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_actual_start_date(l_index1)='||u_actual_start_date(l_index1), x_Log_Level=> 3);
18674 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => ' u_actual_finish_date(l_index1)='|| u_actual_finish_date(l_index1), x_Log_Level=> 3);
18675 END IF;
18676
18677 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
18678 p_project_id => l_db_project_id,
18679 p_structure_type => 'WORKPLAN',
18680 p_structure_version_id => latest_wp_struct_ver_ids_tbl(l_index),
18681 p_object_type => l_db_object_type,
18682 p_object_id => l_db_object_id,
18683 p_object_version_id => l_db_object_version_id,
18684 p_proj_element_id => l_db_proj_element_id,
18685 p_task_status => l_task_status_code,
18686 p_percent_complete => l_clex_pc,
18687 p_estimated_start_date => u_estimated_start_date(l_index1),
18688 p_estimated_finish_date => u_estimated_finish_date(l_index1),
18689 p_actual_start_date => u_actual_start_date(l_index1),
18690 p_actual_finish_date => u_actual_finish_date(l_index1),
18691 x_estimated_start_date => l_clex_estimated_start_date,
18692 x_estimated_finish_date => l_clex_estimated_finish_date,
18693 x_actual_start_date => l_clex_actual_start_date,
18694 x_actual_finish_date => l_clex_actual_finish_date,
18695 x_return_status => x_return_status,
18696 x_msg_count => x_msg_count,
18697 x_msg_data => x_msg_data
18698 );
18699
18700 IF g1_debug_mode = 'Y' THEN
18701 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
18702 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
18703 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
18704 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
18705 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
18706 END IF;
18707
18708 IF x_return_status <> 'S' THEN
18709 pa_debug.log_message('GET_SUMM_ACT: For Update GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
18710 -- Added for bug 5526638
18711 l_err_msg := 'Progress client extension returned error for object_id='||OBJECT_ID(l_index1);
18712 raise FND_API.G_EXC_ERROR;
18713 END IF;
18714
18715 IF nvl(u_estimated_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
18716 OR nvl(u_estimated_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
18717 OR nvl(u_actual_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
18718 OR nvl(u_actual_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
18719 THEN
18720 l_date_override_flag := 'Y';
18721 u_estimated_start_date(l_index1) := l_clex_estimated_start_date;
18722 u_estimated_finish_date(l_index1) := l_clex_estimated_finish_date;
18723 u_actual_start_date(l_index1) := l_clex_actual_start_date;
18724 u_actual_finish_date(l_index1) := l_clex_actual_finish_date;
18725 IF u_ppl_etc_effort_to_date(l_index1) > 0 OR u_eqpmt_etc_effort_to_date(l_index1) > 0 OR u_oth_etc_qty(l_index1) > 0 THEN
18726 u_actual_finish_date(l_index1) := null;
18727 END IF;
18728 END IF;
18729
18730 u_base_progress_status_code(l_index1) := l_date_override_flag;
18731 IF g1_debug_mode = 'Y' THEN
18732 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
18733 END IF;
18734 END IF;
18735 END LOOP;
18736
18737 pa_debug.log_message('GET_SUMM_ACT: End Progress Client Extension.', 1);
18738 -- Bug 4533112 End
18739
18740
18741 if p_plan_res_level = 'Y' then
18742 --- do bulk insert
18743 forall l_index1 in 1..l_index2
18744 insert into pa_progress_rollup(
18745 PROGRESS_ROLLUP_ID
18746 ,PROJECT_ID
18747 ,OBJECT_ID
18748 ,OBJECT_TYPE
18749 ,AS_OF_DATE
18750 ,OBJECT_VERSION_ID
18751 ,LAST_UPDATE_DATE
18752 ,LAST_UPDATED_BY
18753 ,CREATION_DATE
18754 ,CREATED_BY
18755 ,PROGRESS_STATUS_CODE
18756 ,LAST_UPDATE_LOGIN
18757 ,INCREMENTAL_WORK_QUANTITY
18758 ,CUMULATIVE_WORK_QUANTITY
18759 ,BASE_PERCENT_COMPLETE
18760 ,EFF_ROLLUP_PERCENT_COMP
18761 ,COMPLETED_PERCENTAGE
18762 ,ESTIMATED_START_DATE
18763 ,ESTIMATED_FINISH_DATE
18764 ,ACTUAL_START_DATE
18765 ,ACTUAL_FINISH_DATE
18766 ,ESTIMATED_REMAINING_EFFORT
18767 ,RECORD_VERSION_NUMBER
18768 ,BASE_PERCENT_COMP_DERIV_CODE
18769 ,BASE_PROGRESS_STATUS_CODE
18770 ,EFF_ROLLUP_PROG_STAT_CODE
18771 ,PERCENT_COMPLETE_ID
18772 ,STRUCTURE_TYPE
18773 ,PROJ_ELEMENT_ID
18774 ,STRUCTURE_VERSION_ID
18775 ,PPL_ACT_EFFORT_TO_DATE
18776 ,EQPMT_ACT_EFFORT_TO_DATE
18777 ,EQPMT_ETC_EFFORT
18778 ,OTH_ACT_COST_TO_DATE_TC
18779 ,OTH_ACT_RAWCOST_TO_DATE_TC
18780 ,OTH_ACT_COST_TO_DATE_FC
18781 ,OTH_ACT_RAWCOST_TO_DATE_FC
18782 ,OTH_ACT_COST_TO_DATE_PC
18783 ,OTH_ACT_RAWCOST_TO_DATE_PC
18784 ,OTH_ETC_COST_TC
18785 ,OTH_ETC_RAWCOST_TC
18786 ,OTH_ETC_COST_FC
18787 ,OTH_ETC_RAWCOST_FC
18788 ,OTH_ETC_COST_PC
18789 ,OTH_ETC_RAWCOST_PC
18790 ,PPL_ACT_COST_TO_DATE_TC
18791 ,PPL_ACT_RAWCOST_TO_DATE_TC
18792 ,PPL_ACT_COST_TO_DATE_FC
18793 ,PPL_ACT_RAWCOST_TO_DATE_FC
18794 ,PPL_ACT_COST_TO_DATE_PC
18795 ,PPL_ACT_RAWCOST_TO_DATE_PC
18796 ,PPL_ETC_COST_TC
18797 ,PPL_ETC_RAWCOST_TC
18798 ,PPL_ETC_COST_FC
18799 ,PPL_ETC_RAWCOST_FC
18800 ,PPL_ETC_COST_PC
18801 ,PPL_ETC_RAWCOST_PC
18802 ,EQPMT_ACT_COST_TO_DATE_TC
18803 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
18804 ,EQPMT_ACT_COST_TO_DATE_FC
18805 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
18806 ,EQPMT_ACT_COST_TO_DATE_PC
18807 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
18808 ,EQPMT_ETC_COST_TC
18809 ,EQPMT_ETC_RAWCOST_TC
18810 ,EQPMT_ETC_COST_FC
18811 ,EQPMT_ETC_RAWCOST_FC
18812 ,EQPMT_ETC_COST_PC
18813 ,EQPMT_ETC_RAWCOST_PC
18814 ,EARNED_VALUE
18815 ,TASK_WT_BASIS_CODE
18816 ,SUBPRJ_PPL_ACT_EFFORT
18817 ,SUBPRJ_EQPMT_ACT_EFFORT
18818 ,SUBPRJ_PPL_ETC_EFFORT
18819 ,SUBPRJ_EQPMT_ETC_EFFORT
18820 ,SUBPRJ_OTH_ACT_COST_TO_DT_TC
18821 ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC
18822 ,SUBPRJ_OTH_ACT_COST_TO_DT_FC
18823 ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC
18824 ,SUBPRJ_OTH_ACT_COST_TO_DT_PC
18825 ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC
18826 ,SUBPRJ_PPL_ACT_COST_TC
18827 ,SUBPRJ_PPL_ACT_RAWCOST_TC
18828 ,SUBPRJ_PPL_ACT_COST_FC
18829 ,SUBPRJ_PPL_ACT_RAWCOST_FC
18830 ,SUBPRJ_PPL_ACT_COST_PC
18831 ,SUBPRJ_PPL_ACT_RAWCOST_PC
18832 ,SUBPRJ_EQPMT_ACT_COST_TC
18833 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC
18834 ,SUBPRJ_EQPMT_ACT_COST_FC
18835 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC
18836 ,SUBPRJ_EQPMT_ACT_COST_PC
18837 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC
18838 ,SUBPRJ_OTH_ETC_COST_TC
18839 ,SUBPRJ_OTH_ETC_RAWCOST_TC
18840 ,SUBPRJ_OTH_ETC_COST_FC
18841 ,SUBPRJ_OTH_ETC_RAWCOST_FC
18842 ,SUBPRJ_OTH_ETC_COST_PC
18843 ,SUBPRJ_OTH_ETC_RAWCOST_PC
18844 ,SUBPRJ_PPL_ETC_COST_TC
18845 ,SUBPRJ_PPL_ETC_RAWCOST_TC
18846 ,SUBPRJ_PPL_ETC_COST_FC
18847 ,SUBPRJ_PPL_ETC_RAWCOST_FC
18848 ,SUBPRJ_PPL_ETC_COST_PC
18849 ,SUBPRJ_PPL_ETC_RAWCOST_PC
18850 ,SUBPRJ_EQPMT_ETC_COST_TC
18851 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC
18852 ,SUBPRJ_EQPMT_ETC_COST_FC
18853 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC
18854 ,SUBPRJ_EQPMT_ETC_COST_PC
18855 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC
18856 ,SUBPRJ_EARNED_VALUE
18857 ,CURRENT_FLAG
18858 ,PROJFUNC_COST_RATE_TYPE
18859 ,PROJFUNC_COST_EXCHANGE_RATE
18860 ,PROJFUNC_COST_RATE_DATE
18861 ,PROJ_COST_RATE_TYPE
18862 ,PROJ_COST_EXCHANGE_RATE
18863 ,PROJ_COST_RATE_DATE
18864 ,TXN_CURRENCY_CODE
18865 ,PROG_PA_PERIOD_NAME
18866 ,PROG_GL_PERIOD_NAME
18867 ,OTH_QUANTITY_TO_DATE
18868 ,OTH_ETC_QUANTITY
18869 -- Add cbs_element_id
18870 ,CBS_ELEMENT_ID
18871 ) VALUES (PROGRESS_ROLLUP_ID(l_index1)
18872 ,PROJECT_ID(l_index1)
18873 ,OBJECT_ID(l_index1)
18874 ,OBJECT_TYPE(l_index1)
18875 ,AS_OF_DATE(l_index1)
18876 ,OBJECT_VERSION_ID(l_index1)
18877 ,LAST_UPDATE_DATE(l_index1)
18878 ,LAST_UPDATED_BY(l_index1)
18879 ,CREATION_DATE(l_index1)
18880 ,CREATED_BY(l_index1)
18881 ,PROGRESS_STATUS_CODE(l_index1)
18882 ,LAST_UPDATE_LOGIN(l_index1)
18883 ,INCREMENTAL_WORK_QUANTITY(l_index1)
18884 ,CUMULATIVE_WORK_QUANTITY(l_index1)
18885 ,BASE_PERCENT_COMPLETE(l_index1)
18886 ,EFF_ROLLUP_PERCENT_COMP(l_index1)
18887 ,COMPLETED_PERCENTAGE(l_index1)
18888 ,ESTIMATED_START_DATE(l_index1)
18889 ,ESTIMATED_FINISH_DATE(l_index1)
18890 ,ACTUAL_START_DATE(l_index1)
18891 ,ACTUAL_FINISH_DATE(l_index1)
18892 ,ESTIMATED_REMAINING_EFFORT(l_index1)
18893 ,record_version_number(l_index1)
18894 ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
18895 ,BASE_PROGRESS_STATUS_CODE(l_index1)
18896 ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
18897 ,PERCENT_COMPLETE_ID(l_index1)
18898 ,STRUCTURE_TYPE(l_index1)
18899 ,PROJ_ELEMENT_ID(l_index1)
18900 ,STRUCTURE_VERSION_ID(l_index1)
18901 ,PPL_ACT_EFFORT_TO_DATE(l_index1)
18902 ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
18903 ,EQPMT_ETC_EFFORT(l_index1)
18904 --Bug 3801745 Begin
18905 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_TC(l_index1), null)
18906 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18907 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_FC(l_index1), null)
18908 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18909 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_PC(l_index1), null)
18910 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18911 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_TC(l_index1), null)
18912 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_TC(l_index1), null)
18913 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_FC(l_index1), null)
18914 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_FC(l_index1), null)
18915 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_PC(l_index1), null)
18916 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_PC(l_index1), null)
18917 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_TC(l_index1), null)
18918 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18919 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_FC(l_index1), null)
18920 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18921 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_PC(l_index1), null)
18922 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18923 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_TC(l_index1), null)
18924 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_TC(l_index1), null)
18925 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_FC(l_index1), null)
18926 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_FC(l_index1), null)
18927 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_PC(l_index1), null)
18928 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_PC(l_index1), null)
18929 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
18930 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18931 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
18932 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18933 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
18934 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18935 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_TC(l_index1), null)
18936 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_TC(l_index1), null)
18937 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_FC(l_index1), null)
18938 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_FC(l_index1), null)
18939 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_PC(l_index1), null)
18940 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_PC(l_index1), null)
18941 --Bug 3801745 End
18942 ,EARNED_VALUE(l_index1)
18943 ,TASK_WT_BASIS_CODE(l_index1)
18944 ,SUBPRJ_PPL_ACT_EFFORT(l_index1)
18945 ,SUBPRJ_EQPMT_ACT_EFFORT(l_index1)
18946 ,SUBPRJ_PPL_ETC_EFFORT(l_index1)
18947 ,SUBPRJ_EQPMT_ETC_EFFORT(l_index1)
18948 ,SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index1)
18949 ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index1)
18950 ,SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index1)
18951 ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index1)
18952 ,SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index1)
18953 ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index1)
18954 ,SUBPRJ_PPL_ACT_COST_TC(l_index1)
18955 ,SUBPRJ_PPL_ACT_RAWCOST_TC(l_index1)
18956 ,SUBPRJ_PPL_ACT_COST_FC(l_index1)
18957 ,SUBPRJ_PPL_ACT_RAWCOST_FC(l_index1)
18958 ,SUBPRJ_PPL_ACT_COST_PC(l_index1)
18959 ,SUBPRJ_PPL_ACT_RAWCOST_PC(l_index1)
18960 ,SUBPRJ_EQPMT_ACT_COST_TC(l_index1)
18961 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index1)
18962 ,SUBPRJ_EQPMT_ACT_COST_FC(l_index1)
18963 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index1)
18964 ,SUBPRJ_EQPMT_ACT_COST_PC(l_index1)
18965 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index1)
18966 ,SUBPRJ_OTH_ETC_COST_TC(l_index1)
18967 ,SUBPRJ_OTH_ETC_RAWCOST_TC(l_index1)
18968 ,SUBPRJ_OTH_ETC_COST_FC(l_index1)
18969 ,SUBPRJ_OTH_ETC_RAWCOST_FC(l_index1)
18970 ,SUBPRJ_OTH_ETC_COST_PC(l_index1)
18971 ,SUBPRJ_OTH_ETC_RAWCOST_PC(l_index1)
18972 ,SUBPRJ_PPL_ETC_COST_TC(l_index1)
18973 ,SUBPRJ_PPL_ETC_RAWCOST_TC(l_index1)
18974 ,SUBPRJ_PPL_ETC_COST_FC(l_index1)
18975 ,SUBPRJ_PPL_ETC_RAWCOST_FC(l_index1)
18976 ,SUBPRJ_PPL_ETC_COST_PC(l_index1)
18977 ,SUBPRJ_PPL_ETC_RAWCOST_PC(l_index1)
18978 ,SUBPRJ_EQPMT_ETC_COST_TC(l_index1)
18979 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index1)
18980 ,SUBPRJ_EQPMT_ETC_COST_FC(l_index1)
18981 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index1)
18982 ,SUBPRJ_EQPMT_ETC_COST_PC(l_index1)
18983 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index1)
18984 ,SUBPRJ_EARNED_VALUE(l_index1)
18985 ,CURRENT_FLAG(l_index1)
18986 ,PROJFUNC_COST_RATE_TYPE(l_index1)
18987 ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
18988 ,PROJFUNC_COST_RATE_DATE(l_index1)
18989 ,PROJ_COST_RATE_TYPE(l_index1)
18990 ,PROJ_COST_EXCHANGE_RATE(l_index1)
18991 ,PROJ_COST_RATE_DATE(l_index1)
18992 ,TXN_CURRENCY_CODE(l_index1)
18993 ,PROG_PA_PERIOD_NAME(l_index1)
18994 ,PROG_GL_PERIOD_NAME(l_index1)
18995 ,oth_qty(l_index1)
18996 ,oth_etc_qty(l_index1)
18997 -- Add cbs_element_id
18998 ,CBS_ELEMENT_ID(l_index1)
18999 );
19000 else
19001
19002 forall l_index1 in 1..l_index2
19003 insert into pa_progress_rollup(
19004 PROGRESS_ROLLUP_ID
19005 ,PROJECT_ID
19006 ,OBJECT_ID
19007 ,OBJECT_TYPE
19008 ,AS_OF_DATE
19009 ,OBJECT_VERSION_ID
19010 ,LAST_UPDATE_DATE
19011 ,LAST_UPDATED_BY
19012 ,CREATION_DATE
19013 ,CREATED_BY
19014 ,PROGRESS_STATUS_CODE
19015 ,LAST_UPDATE_LOGIN
19016 ,INCREMENTAL_WORK_QUANTITY
19017 ,CUMULATIVE_WORK_QUANTITY
19018 ,BASE_PERCENT_COMPLETE
19019 ,EFF_ROLLUP_PERCENT_COMP
19020 ,COMPLETED_PERCENTAGE
19021 ,ESTIMATED_START_DATE
19022 ,ESTIMATED_FINISH_DATE
19023 ,ACTUAL_START_DATE
19024 ,ACTUAL_FINISH_DATE
19025 ,ESTIMATED_REMAINING_EFFORT
19026 ,RECORD_VERSION_NUMBER
19027 ,BASE_PERCENT_COMP_DERIV_CODE
19028 ,BASE_PROGRESS_STATUS_CODE
19029 ,EFF_ROLLUP_PROG_STAT_CODE
19030 ,PERCENT_COMPLETE_ID
19031 ,STRUCTURE_TYPE
19032 ,PROJ_ELEMENT_ID
19033 ,STRUCTURE_VERSION_ID
19034 ,PPL_ACT_EFFORT_TO_DATE
19035 ,EQPMT_ACT_EFFORT_TO_DATE
19036 ,EQPMT_ETC_EFFORT
19037 ,OTH_ACT_COST_TO_DATE_TC
19038 ,OTH_ACT_RAWCOST_TO_DATE_TC
19039 ,OTH_ACT_COST_TO_DATE_FC
19040 ,OTH_ACT_RAWCOST_TO_DATE_FC
19041 ,OTH_ACT_COST_TO_DATE_PC
19042 ,OTH_ACT_RAWCOST_TO_DATE_PC
19043 ,OTH_ETC_COST_TC
19044 ,OTH_ETC_RAWCOST_TC
19045 ,OTH_ETC_COST_FC
19046 ,OTH_ETC_RAWCOST_FC
19047 ,OTH_ETC_COST_PC
19048 ,OTH_ETC_RAWCOST_PC
19049 ,PPL_ACT_COST_TO_DATE_TC
19050 ,PPL_ACT_RAWCOST_TO_DATE_TC
19051 ,PPL_ACT_COST_TO_DATE_FC
19052 ,PPL_ACT_RAWCOST_TO_DATE_FC
19053 ,PPL_ACT_COST_TO_DATE_PC
19054 ,PPL_ACT_RAWCOST_TO_DATE_PC
19055 ,PPL_ETC_COST_TC
19056 ,PPL_ETC_RAWCOST_TC
19057 ,PPL_ETC_COST_FC
19058 ,PPL_ETC_RAWCOST_FC
19059 ,PPL_ETC_COST_PC
19060 ,PPL_ETC_RAWCOST_PC
19061 ,EQPMT_ACT_COST_TO_DATE_TC
19062 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
19063 ,EQPMT_ACT_COST_TO_DATE_FC
19064 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
19065 ,EQPMT_ACT_COST_TO_DATE_PC
19066 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
19067 ,EQPMT_ETC_COST_TC
19068 ,EQPMT_ETC_RAWCOST_TC
19069 ,EQPMT_ETC_COST_FC
19070 ,EQPMT_ETC_RAWCOST_FC
19071 ,EQPMT_ETC_COST_PC
19072 ,EQPMT_ETC_RAWCOST_PC
19073 ,EARNED_VALUE
19074 ,TASK_WT_BASIS_CODE
19075 ,SUBPRJ_PPL_ACT_EFFORT
19076 ,SUBPRJ_EQPMT_ACT_EFFORT
19077 ,SUBPRJ_PPL_ETC_EFFORT
19078 ,SUBPRJ_EQPMT_ETC_EFFORT
19079 ,SUBPRJ_OTH_ACT_COST_TO_DT_TC
19080 ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC
19081 ,SUBPRJ_OTH_ACT_COST_TO_DT_FC
19082 ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC
19083 ,SUBPRJ_OTH_ACT_COST_TO_DT_PC
19084 ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC
19085 ,SUBPRJ_PPL_ACT_COST_TC
19086 ,SUBPRJ_PPL_ACT_RAWCOST_TC
19087 ,SUBPRJ_PPL_ACT_COST_FC
19088 ,SUBPRJ_PPL_ACT_RAWCOST_FC
19089 ,SUBPRJ_PPL_ACT_COST_PC
19090 ,SUBPRJ_PPL_ACT_RAWCOST_PC
19091 ,SUBPRJ_EQPMT_ACT_COST_TC
19092 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC
19093 ,SUBPRJ_EQPMT_ACT_COST_FC
19094 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC
19095 ,SUBPRJ_EQPMT_ACT_COST_PC
19096 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC
19097 ,SUBPRJ_OTH_ETC_COST_TC
19098 ,SUBPRJ_OTH_ETC_RAWCOST_TC
19099 ,SUBPRJ_OTH_ETC_COST_FC
19100 ,SUBPRJ_OTH_ETC_RAWCOST_FC
19101 ,SUBPRJ_OTH_ETC_COST_PC
19102 ,SUBPRJ_OTH_ETC_RAWCOST_PC
19103 ,SUBPRJ_PPL_ETC_COST_TC
19104 ,SUBPRJ_PPL_ETC_RAWCOST_TC
19105 ,SUBPRJ_PPL_ETC_COST_FC
19106 ,SUBPRJ_PPL_ETC_RAWCOST_FC
19107 ,SUBPRJ_PPL_ETC_COST_PC
19108 ,SUBPRJ_PPL_ETC_RAWCOST_PC
19109 ,SUBPRJ_EQPMT_ETC_COST_TC
19110 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC
19111 ,SUBPRJ_EQPMT_ETC_COST_FC
19112 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC
19113 ,SUBPRJ_EQPMT_ETC_COST_PC
19114 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC
19115 ,SUBPRJ_EARNED_VALUE
19116 ,CURRENT_FLAG
19117 ,PROJFUNC_COST_RATE_TYPE
19118 ,PROJFUNC_COST_EXCHANGE_RATE
19119 ,PROJFUNC_COST_RATE_DATE
19120 ,PROJ_COST_RATE_TYPE
19121 ,PROJ_COST_EXCHANGE_RATE
19122 ,PROJ_COST_RATE_DATE
19123 ,TXN_CURRENCY_CODE
19124 ,PROG_PA_PERIOD_NAME
19125 ,PROG_GL_PERIOD_NAME
19126 ,OTH_QUANTITY_TO_DATE
19127 ,OTH_ETC_QUANTITY
19128 ) VALUES (PROGRESS_ROLLUP_ID(l_index1)
19129 ,PROJECT_ID(l_index1)
19130 ,OBJECT_ID(l_index1)
19131 ,OBJECT_TYPE(l_index1)
19132 ,AS_OF_DATE(l_index1)
19133 ,OBJECT_VERSION_ID(l_index1)
19134 ,LAST_UPDATE_DATE(l_index1)
19135 ,LAST_UPDATED_BY(l_index1)
19136 ,CREATION_DATE(l_index1)
19137 ,CREATED_BY(l_index1)
19138 ,PROGRESS_STATUS_CODE(l_index1)
19139 ,LAST_UPDATE_LOGIN(l_index1)
19140 ,INCREMENTAL_WORK_QUANTITY(l_index1)
19141 ,CUMULATIVE_WORK_QUANTITY(l_index1)
19142 ,BASE_PERCENT_COMPLETE(l_index1)
19143 ,EFF_ROLLUP_PERCENT_COMP(l_index1)
19144 ,COMPLETED_PERCENTAGE(l_index1)
19145 ,ESTIMATED_START_DATE(l_index1)
19146 ,ESTIMATED_FINISH_DATE(l_index1)
19147 ,ACTUAL_START_DATE(l_index1)
19148 ,ACTUAL_FINISH_DATE(l_index1)
19149 ,ESTIMATED_REMAINING_EFFORT(l_index1)
19150 ,record_version_number(l_index1)
19151 ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
19152 ,BASE_PROGRESS_STATUS_CODE(l_index1)
19153 ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
19154 ,PERCENT_COMPLETE_ID(l_index1)
19155 ,STRUCTURE_TYPE(l_index1)
19156 ,PROJ_ELEMENT_ID(l_index1)
19157 ,STRUCTURE_VERSION_ID(l_index1)
19158 ,PPL_ACT_EFFORT_TO_DATE(l_index1)
19159 ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
19160 ,EQPMT_ETC_EFFORT(l_index1)
19161 --Bug 3801745 Begin
19162 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_TC(l_index1), null)
19163 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19164 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_FC(l_index1), null)
19165 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19166 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_PC(l_index1), null)
19167 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19168 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_TC(l_index1), null)
19169 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_TC(l_index1), null)
19170 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_FC(l_index1), null)
19171 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_FC(l_index1), null)
19172 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_PC(l_index1), null)
19173 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_PC(l_index1), null)
19174 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_TC(l_index1), null)
19175 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19176 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_FC(l_index1), null)
19177 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19178 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_PC(l_index1), null)
19179 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19180 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_TC(l_index1), null)
19181 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_TC(l_index1), null)
19182 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_FC(l_index1), null)
19183 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_FC(l_index1), null)
19184 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_PC(l_index1), null)
19185 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_PC(l_index1), null)
19186 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
19187 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19188 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
19189 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19190 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
19191 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19192 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_TC(l_index1), null)
19193 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_TC(l_index1), null)
19194 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_FC(l_index1), null)
19195 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_FC(l_index1), null)
19196 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_PC(l_index1), null)
19197 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_PC(l_index1), null)
19198 --Bug 3801745 End
19199 ,EARNED_VALUE(l_index1)
19200 ,TASK_WT_BASIS_CODE(l_index1)
19201 ,SUBPRJ_PPL_ACT_EFFORT(l_index1)
19202 ,SUBPRJ_EQPMT_ACT_EFFORT(l_index1)
19203 ,SUBPRJ_PPL_ETC_EFFORT(l_index1)
19204 ,SUBPRJ_EQPMT_ETC_EFFORT(l_index1)
19205 ,SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index1)
19206 ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index1)
19207 ,SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index1)
19208 ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index1)
19209 ,SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index1)
19210 ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index1)
19211 ,SUBPRJ_PPL_ACT_COST_TC(l_index1)
19212 ,SUBPRJ_PPL_ACT_RAWCOST_TC(l_index1)
19213 ,SUBPRJ_PPL_ACT_COST_FC(l_index1)
19214 ,SUBPRJ_PPL_ACT_RAWCOST_FC(l_index1)
19215 ,SUBPRJ_PPL_ACT_COST_PC(l_index1)
19216 ,SUBPRJ_PPL_ACT_RAWCOST_PC(l_index1)
19217 ,SUBPRJ_EQPMT_ACT_COST_TC(l_index1)
19218 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index1)
19219 ,SUBPRJ_EQPMT_ACT_COST_FC(l_index1)
19220 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index1)
19221 ,SUBPRJ_EQPMT_ACT_COST_PC(l_index1)
19222 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index1)
19223 ,SUBPRJ_OTH_ETC_COST_TC(l_index1)
19224 ,SUBPRJ_OTH_ETC_RAWCOST_TC(l_index1)
19225 ,SUBPRJ_OTH_ETC_COST_FC(l_index1)
19226 ,SUBPRJ_OTH_ETC_RAWCOST_FC(l_index1)
19227 ,SUBPRJ_OTH_ETC_COST_PC(l_index1)
19228 ,SUBPRJ_OTH_ETC_RAWCOST_PC(l_index1)
19229 ,SUBPRJ_PPL_ETC_COST_TC(l_index1)
19230 ,SUBPRJ_PPL_ETC_RAWCOST_TC(l_index1)
19231 ,SUBPRJ_PPL_ETC_COST_FC(l_index1)
19232 ,SUBPRJ_PPL_ETC_RAWCOST_FC(l_index1)
19233 ,SUBPRJ_PPL_ETC_COST_PC(l_index1)
19234 ,SUBPRJ_PPL_ETC_RAWCOST_PC(l_index1)
19235 ,SUBPRJ_EQPMT_ETC_COST_TC(l_index1)
19236 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index1)
19237 ,SUBPRJ_EQPMT_ETC_COST_FC(l_index1)
19238 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index1)
19239 ,SUBPRJ_EQPMT_ETC_COST_PC(l_index1)
19240 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index1)
19241 ,SUBPRJ_EARNED_VALUE(l_index1)
19242 ,CURRENT_FLAG(l_index1)
19243 ,PROJFUNC_COST_RATE_TYPE(l_index1)
19244 ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
19245 ,PROJFUNC_COST_RATE_DATE(l_index1)
19246 ,PROJ_COST_RATE_TYPE(l_index1)
19247 ,PROJ_COST_EXCHANGE_RATE(l_index1)
19248 ,PROJ_COST_RATE_DATE(l_index1)
19249 ,TXN_CURRENCY_CODE(l_index1)
19250 ,PROG_PA_PERIOD_NAME(l_index1)
19251 ,PROG_GL_PERIOD_NAME(l_index1)
19252 ,oth_qty(l_index1)
19253 ,oth_etc_qty(l_index1)
19254 );
19255 end if;
19256
19257 IF g1_debug_mode = 'Y' THEN
19258 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19259 x_Msg => 'Done with bulk insert into pa_progress_rollup',
19260 x_Log_Level=> 3);
19261 END IF;
19262
19263 -- Bug 6917961
19264 FOR l_index1 IN 1..l_index3 LOOP
19265 l_t_progress_status_code := null;
19266 l_t_actual_start_date := null;
19267 l_t_actual_finish_date := null;
19268 l_t_proj_element_id := null;
19269 l_t_object_type := null;
19270 l_t_project_id := null;
19271
19272 OPEN c_get_prog_roll(u_progress_rollup_id(l_index1));
19273 FETCH c_get_prog_roll INTO
19274 l_t_progress_status_code
19275 , l_t_actual_start_date
19276 , l_t_actual_finish_date
19277 , l_t_proj_element_id
19278 , l_t_object_type
19279 , l_t_project_id;
19280 CLOSE c_get_prog_roll;
19281 u_progress_status_code(l_index1) := l_t_progress_status_code;
19282
19283 if (l_t_object_type = 'PA_ASSIGNMENTS') then
19284 if (l_t_progress_status_code is null and l_t_actual_start_date is not null
19285 and l_t_actual_finish_date is null) then
19286 l_prog_enable_flag := 'N';
19287 l_prog_stat_code := null;
19288 OPEN cur_prog_setup(l_t_proj_element_id,l_t_project_id);
19289 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
19290 CLOSE cur_prog_setup;
19291 if (l_prog_enable_flag = 'Y') then
19292 u_progress_status_code(l_index1) := l_prog_stat_code;
19293 end if;
19294 end if;
19295 end if;
19296
19297 end loop;
19298 -- Bug 6917961
19299
19300 --- do bulk update
19301 forall l_index1 in 1..l_index3
19302 update pa_progress_rollup set
19303 OBJECT_VERSION_ID = u_object_version_id(l_index1)
19304 ,LAST_UPDATE_DATE = sysdate
19305 ,LAST_UPDATED_BY = fnd_global.user_id
19306 ,LAST_UPDATE_LOGIN = fnd_global.login_id
19307 ,record_version_number = record_version_number + 1
19308 ,completed_percentage = u_completed_percentage(l_index1)
19309 ,progress_status_code = u_progress_status_code(l_index1) -- Bug 6917961
19310 ,eff_rollup_percent_comp = u_eff_rollup_percent_comp(l_index1)
19311 ,earned_value = u_earned_val(l_index1)
19312 --4533112
19313 ,actual_start_date = u_actual_start_date(l_index1)
19314 ,estimated_start_date = u_estimated_start_date(l_index1)
19315 ,estimated_finish_date = u_estimated_finish_date(l_index1)
19316 ,base_progress_status_code = u_base_progress_status_code(l_index1)
19317 --4533112
19318 ,actual_finish_date = u_actual_finish_date(l_index1)
19319 ,PPL_ACT_EFFORT_TO_DATE = u_PPL_ACT_EFFORT_TO_DATE(l_index1)
19320 ,EQPMT_ACT_EFFORT_TO_DATE = u_EQPMT_ACT_EFFORT_TO_DATE(l_index1)
19321 --Bug 3801745 Begin
19322 ,OTH_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_TC(l_index1), null)
19323 ,OTH_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19324 ,OTH_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_FC(l_index1), null)
19325 ,OTH_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19326 ,OTH_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_PC(l_index1), null)
19327 ,OTH_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19328 ,PPL_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_TC(l_index1), null)
19329 ,PPL_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19330 ,PPL_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_FC(l_index1), null)
19331 ,PPL_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19332 ,PPL_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_PC(l_index1), null)
19333 ,PPL_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19334 ,EQPMT_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
19335 ,EQPMT_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19336 ,EQPMT_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
19337 ,EQPMT_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19338 ,EQPMT_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
19339 ,EQPMT_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19340 --Bug 3801745 End
19341 ,OTH_QUANTITY_TO_DATE = u_oth_qty(l_index1)
19342 ,oth_etc_cost_tc = u_oth_etc_cost_to_date_tc(l_index1)
19343 ,oth_etc_rawcost_tc = u_oth_etc_rawcost_to_date_tc(l_index1)
19344 ,oth_etc_cost_pc = u_oth_etc_cost_to_date_pc(l_index1)
19345 ,oth_etc_rawcost_pc = u_oth_etc_rawcost_to_date_pc(l_index1)
19346 ,oth_etc_cost_fc = u_oth_etc_cost_to_date_fc(l_index1)
19347 ,oth_etc_rawcost_fc = u_oth_etc_rawcost_to_date_fc(l_index1)
19348 ,ppl_etc_cost_tc = u_ppl_etc_cost_to_date_tc(l_index1)
19349 ,ppl_etc_rawcost_tc = u_ppl_etc_rawcost_to_date_tc(l_index1)
19350 ,ppl_etc_cost_pc = u_ppl_etc_cost_to_date_pc(l_index1)
19351 ,ppl_etc_rawcost_pc = u_ppl_etc_rawcost_to_date_pc(l_index1)
19352 ,ppl_etc_cost_fc = u_ppl_etc_cost_to_date_fc(l_index1)
19353 ,ppl_etc_rawcost_fc = u_ppl_etc_rawcost_to_date_fc(l_index1)
19354 ,eqpmt_etc_cost_tc = u_eqpmt_etc_cost_to_date_tc(l_index1)
19355 ,eqpmt_etc_rawcost_tc = u_eqpmt_etc_rawcost_to_date_tc(l_index1)
19356 ,eqpmt_etc_cost_pc = u_eqpmt_etc_cost_to_date_pc(l_index1)
19357 ,eqpmt_etc_rawcost_pc = u_eqpmt_etc_rawcost_to_date_pc(l_index1)
19358 ,eqpmt_etc_cost_fc = u_eqpmt_etc_cost_to_date_fc(l_index1)
19359 ,eqpmt_etc_rawcost_fc = u_eqpmt_etc_rawcost_to_date_fc(l_index1)
19360 ,estimated_remaining_effort = u_ppl_etc_effort_to_date(l_index1)
19361 ,eqpmt_etc_effort = u_eqpmt_etc_effort_to_date(l_index1)
19362 ,oth_etc_quantity = u_oth_etc_qty(l_index1)
19363 where progress_rollup_id = u_progress_rollup_id(l_index1);
19364
19365 IF g1_debug_mode = 'Y' THEN
19366 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19367 x_Msg => 'Done with bulk update into pa_progress_rollup',
19368 x_Log_Level=> 3);
19369 END IF;
19370
19371 forall l_index1 in 1..l_index4
19372 update pa_progress_rollup set
19373 CURRENT_FLAG = 'N'
19374 where progress_rollup_id = u1_progress_rollup_id(l_index1);
19375
19376 IF g1_debug_mode = 'Y' THEN
19377 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19378 x_Msg => 'Done with bulk update of current flag in pa_progress_rollup',
19379 x_Log_Level=> 3);
19380 END IF;
19381
19382 pa_debug.log_message('GET_SUMM_ACT: Done insert/update of pa_progress_rollup.', 1);
19383
19384 if ((l_index2 > 0 or l_index3 > 0) and p_plan_res_level = 'N') then
19385 --- now we are done with updating all actuals
19386 --- we need to rollup data for the l_temp_as_of_date
19387 open rollup_method;
19388 fetch rollup_method into l_task_wt_basis_code;
19389 close rollup_method;
19390
19391 begin
19392 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19393 x_Msg => 'Calling rollup_progress_pvt l_project_id='||l_project_id||', str ver id='||latest_wp_struct_ver_ids_tbl(l_index)||',l_temp_as_of_date='||l_temp_as_of_date ,
19394 x_Log_Level=> 3);
19395
19396 pa_progress_pub.rollup_progress_pvt(P_INIT_MSG_LIST => FND_API.G_FALSE,
19397 P_VALIDATE_ONLY => FND_API.G_FALSE,
19398 P_PROGRESS_MODE => 'FUTURE',
19399 P_PROJECT_ID => l_project_id,
19400 P_OBJECT_TYPE => 'PA_STRUCTURES',
19401 P_AS_OF_DATE => l_temp_as_of_date,
19402 P_PROCESS_WHOLE_TREE => 'Y',
19403 P_STRUCTURE_VERSION_ID => latest_wp_struct_ver_ids_tbl(l_index),
19404 P_STRUCTURE_TYPE => 'WORKPLAN',
19405 P_WP_ROLLUP_METHOD => l_task_wt_basis_code,
19406 P_ROLLUP_ENTIRE_WBS => 'Y',
19407 X_RETURN_STATUS => x_return_status,
19408 X_MSG_COUNT => x_msg_count,
19409 X_MSG_DATA => x_msg_data);
19410 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19411 x_Msg => 'After call x_return_status='||x_return_status ,
19412 x_Log_Level=> 3);
19413
19414
19415 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19416 pa_debug.log_message('GET_SUMM_ACT: Rollup_Progress_Pvt returned error.', 1);
19417 -- Added for bug 5526638
19418 l_err_msg := 'Error in rollup of progress attributes';
19419 RAISE FND_API.G_EXC_ERROR;
19420 END IF;
19421
19422 IF g1_debug_mode = 'Y' THEN
19423 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19424 x_Msg => 'Done with rollup for this project.',
19425 x_Log_Level=> 3);
19426 END IF;
19427 EXCEPTION when others then
19428 x_return_status := 'E';
19429 pa_debug.log_message('GET_SUMM_ACT: Exception in rollup of progress attributes.', 1);
19430 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19431 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19432 p_error_text => SUBSTRB('pa_progress_pub.rollup_progress_pvt:'||SQLERRM,1,120));
19433 -- Added for bug 5526638
19434 l_err_msg := substrb('Exception in rollup of progress attributes :'||SQLERRM,1,240);
19435 raise;
19436 end;
19437 if (proj_pgm_level_tbl(l_index) > 1) then
19438 begin
19439 --- call program rollup api only when project level is > 1
19440 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19441 x_Msg => 'Calling program_rollup_pvt l_project_id='||l_project_id||', str ver id='||latest_wp_struct_ver_ids_tbl(l_index)||',l_temp_as_of_date='||l_temp_as_of_date ,
19442 x_Log_Level=> 3);
19443
19444 pa_progress_pvt.program_rollup_pvt(p_init_msg_list => 'F'
19445 ,p_validate_only => 'F'
19446 ,p_project_id => l_project_id
19447 ,p_as_of_date => l_temp_as_of_date
19448 ,p_structure_type => 'WORKPLAN'
19449 ,p_structure_ver_id => latest_wp_struct_ver_ids_tbl(l_index)
19450 ,x_return_status => x_return_status
19451 ,x_msg_count => x_msg_count
19452 ,x_msg_data => x_msg_data);
19453 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19454 x_Msg => 'After call x_return_status='||x_return_status ,
19455 x_Log_Level=> 3);
19456
19457
19458 IF g1_debug_mode = 'Y' THEN
19459 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.GET_SUMMMARIZED_ACTUALS',
19460 x_Msg => 'After Calling program_rollup_pvt return_status='||x_return_status, x_Log_Level=> 3);
19461 END IF;
19462 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19463 pa_debug.log_message('GET_SUMM_ACT: Program_Rollup_Pvt returned error.', 1);
19464 -- Added for bug 5526638
19465 l_err_msg := 'Error in program rollup';
19466 RAISE FND_API.G_EXC_ERROR;
19467 END IF;
19468 EXCEPTION when others then
19469 x_return_status := 'E';
19470 pa_debug.log_message('GET_SUMM_ACT: Exception in program rollup.', 1);
19471 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19472 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19473 p_error_text => SUBSTRB('pa_progress_pub.program_rollup_pvt:'||SQLERRM,1,120));
19474 -- Added for bug 5526638
19475 l_err_msg := substrb('Exception in program rollup :'||SQLERRM,1,240);
19476 raise;
19477 end;
19478 end if;
19479 end if;
19480 --- and also for future as of dates, call future rollup api ??
19481 --- we insert ETC in plan lines table for those assignments which have progress records but no actuals
19482
19483 /* Begin: Fix for Bug # 5526638. */
19484 EXCEPTION when others then
19485 /* Added for Bug #5659575 */
19486 if p_extraction_type = 'PUBLISH' then
19487 raise;
19488 else
19489 l_act_err_flag(l_index) := 1;
19490 /* Commented and Modified for Bug #6156129
19491 l_act_err_msg(l_index) := l_err_msg; */
19492 l_act_err_msg(l_index) := nvl(l_err_msg, SUBSTRB('PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS: '|| SQLERRM,1,240));
19493 l_act_out_report := 'Y';
19494 Rollback to ACT_PROJECT;
19495 end if;
19496 END; --- Skipping Begin
19497 /* End: Fix for Bug # 5526638. */
19498
19499 end loop; --- for each project
19500
19501 else
19502 pa_debug.log_message('GET_SUMM_ACT: Get_summarized_data returned error.', 1);
19503 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19504 x_Msg => 'pji_fm_xbs_accum_utils.get_summarized_data returned error',
19505 x_Log_Level=> 3);
19506 end if; -- if status is not success
19507
19508 ---here call the budget lines api
19509 IF g1_debug_mode = 'Y' THEN
19510 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19511 x_Msg => 'Calling PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
19512 x_Log_Level=> 3);
19513 END IF;
19514
19515 -- FORALL i IN 1..l_index_etc
19516 -- 6266824 change : changed the source of i for the for loop
19517 -- as i was not getting set properly
19518
19519 if ( etc_project_id.count > 0 ) then
19520 FORALL i IN ETC_PROJECT_ID.first..ETC_PROJECT_ID.last
19521 INSERT INTO PJI_FM_EXTR_PLAN_LINES(
19522 PROJECT_ID
19523 ,PROJECT_ORG_ID
19524 ,PROJECT_ELEMENT_ID
19525 ,STRUCT_VER_ID
19526 ,PERIOD_NAME
19527 ,CALENDAR_TYPE
19528 ,END_DATE
19529 ,RBS_ELEMENT_ID
19530 ,PLAN_VERSION_ID
19531 ,PLAN_TYPE_ID
19532 ,WP_VERSION_FLAG
19533 ,ROLLUP_TYPE
19534 ,TXN_CURRENCY_CODE
19535 ,ETC_QUANTITY
19536 ,ETC_TXN_BURDENED_COST
19537 ,ETC_PRJ_BURDENED_COST
19538 ,ETC_PFC_BURDENED_COST
19539 ,ETC_TXN_RAW_COST
19540 ,ETC_PRJ_RAW_COST
19541 ,ETC_PFC_RAW_COST
19542 ,RESOURCE_CLASS_CODE
19543 ,RATE_BASED_FLAG
19544 ,PRJ_CURRENCY_CODE
19545 ,PFC_CURRENCY_CODE
19546 ,CBS_ELEMENT_ID)
19547 VALUES( ETC_PROJECT_ID(i)
19548 ,ETC_PROJECT_ORG_ID(i)
19549 ,ETC_PROJECT_ELEMENT_ID(i)
19550 ,ETC_STRUCT_VER_ID(i)
19551 ,ETC_PERIOD_NAME(i)
19552 ,ETC_CALENDAR_TYPE(i)
19553 ,ETC_END_DATE(i)
19554 ,ETC_RBS_ELEMENT_ID(i)
19555 ,ETC_PLAN_VERSION_ID(i)
19556 ,ETC_PLAN_TYPE_ID(i)
19557 ,ETC_WP_VERSION_FLAG(i)
19558 ,ETC_ROLLUP_TYPE(i)
19559 ,ETC_TXN_CURRENCY_CODE(i)
19560 ,ETC_QUANTITY(i)
19561 ,ETC_TXN_BURDENED_COST(i)
19562 ,ETC_PRJ_BURDENED_COST(i)
19563 ,ETC_PFC_BURDENED_COST(i)
19564 ,ETC_TXN_RAW_COST(i)
19565 ,ETC_PRJ_RAW_COST(i)
19566 ,ETC_PFC_RAW_COST(i)
19567 ,ETC_RESOURCE_CLASS_CODE(i)
19568 ,ETC_RATE_BASED_FLAG(i)
19569 ,ETC_PRJ_CURRENCY_CODE(i)
19570 ,ETC_PFC_CURRENCY_CODE(i)
19571 ,ETC_CBS_ELEMENT_ID(i));
19572 end if;
19573
19574
19575 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
19576
19577 -- Bulk insert into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
19578 pa_debug.log_message('GET_SUMM_ACT: Before inserting records in PA_PROG_ACT_BY_PERIOD_TEMP. Record Count = '||l_t_index, 1);
19579
19580 delete from PA_PROG_ACT_BY_PERIOD_TEMP;
19581
19582 FORALL i IN 1..l_t_index
19583 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
19584 project_id
19585 ,structure_version_id
19586 ,task_id
19587 ,resource_assignment_id
19588 ,as_of_date
19589 ,actual_cost
19590 ,actual_effort
19591 ,period_name
19592 ,txn_currency_code
19593 ,actual_cost_pc
19594 ,actual_cost_fc
19595 ,actual_rawcost
19596 ,actual_rawcost_pc
19597 ,actual_rawcost_fc
19598 ,hidden_res_assgn_id
19599 ,resource_list_member_id
19600 ,current_flag
19601 ,object_type
19602 ,percent_complete_id
19603 ,attribute1
19604 ,attribute2
19605 ,attribute3
19606 ,attribute4
19607 ,attribute5
19608 ,attribute6
19609 ,start_date
19610 ,finish_date)
19611 VALUES (
19612 t_PROJECT_ID(i)
19613 ,t_STRUCTURE_VERSION_ID(i)
19614 ,t_TASK_ID(i)
19615 ,t_RESOURCE_ASSIGNMENT_ID(i)
19616 ,t_AS_OF_DATE(i)
19617 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST(i), null)
19618 ,t_ACTUAL_EFFORT(i)
19619 ,t_PERIOD_NAME(i)
19620 ,t_TXN_CURRENCY_CODE(i)
19621 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_PC(i), null)
19622 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_FC(i), null)
19623 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST(i), null)
19624 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_PC(i), null)
19625 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_FC(i), null)
19626 ,t_HIDDEN_RES_ASSGN_ID(i)
19627 ,t_RESOURCE_LIST_MEMBER_ID(i)
19628 ,t_CURRENT_FLAG(i)
19629 ,t_OBJECT_TYPE(i)
19630 ,t_PERCENT_COMPLETE_ID(i)
19631 ,to_char(null)
19632 ,to_char(null)
19633 ,to_char(null)
19634 ,to_number(null)
19635 ,to_number(null)
19636 ,to_number(null)
19637 ,t_min_start_date(i)
19638 ,t_max_end_date(i));
19639
19640 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
19641
19642 /* Begin: Fix for Bug # 5526638. */
19643 /* Added If for Bug # 5659575*/
19644 if p_extraction_type <> 'PUBLISH' then
19645 FOR i IN 1..proj_ids_tbl.COUNT loop
19646 if l_act_err_flag(i) = 0 and (l_t_index <> 0) then /* Added (l_t_index <> 0) for bug 6163049 */
19647 BEGIN
19648 SAVEPOINT ACT_FP_PROJECT;
19649
19650 skip_proj_ids_tbl.delete;
19651 skip_latest_wp_str_ver_id_tbl.delete;
19652 skip_proj_thru_dates_tbl.delete;
19653
19654 skip_proj_ids_tbl.extend;
19655 skip_latest_wp_str_ver_id_tbl.extend;
19656 skip_proj_thru_dates_tbl.extend;
19657
19658 skip_proj_ids_tbl(1) := proj_ids_tbl(i);
19659 skip_latest_wp_str_ver_id_tbl(1) := latest_wp_struct_ver_ids_tbl(i);
19660 skip_proj_thru_dates_tbl(1) := proj_thru_dates_tbl(i);
19661 /* Call this Api in single project mode */
19662 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
19663 (P_PROJECT_ID_TAB => skip_proj_ids_tbl,
19664 P_WP_STR_VERSION_ID_TAB => skip_latest_wp_str_ver_id_tbl,
19665 P_ACTUALS_THRU_DATE => skip_proj_thru_dates_tbl,
19666 P_CALLING_CONTEXT => 'WP_SUMMARIZED_ACTUAL',
19667 P_extraction_type => l_extraction_type,
19668 P_COMMIT_FLAG => 'N',
19669 P_INIT_MSG_FLAG => 'N',
19670 x_RETURN_STATUS => x_return_status,
19671 x_MSG_COUNT => x_msg_count,
19672 x_MSG_DATA => x_msg_data);
19673 if (x_return_status <> 'S') then
19674 l_err_msg := x_msg_data ;
19675 l_act_err_flag(i) := 1;
19676 l_act_err_msg(i) := l_err_msg;
19677 l_act_out_report := 'Y';
19678 Rollback to ACT_FP_PROJECT;
19679 end if;
19680
19681 EXCEPTION WHEN OTHERS THEN
19682 l_err_msg := SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP: '||SQLERRM,1,120);
19683 l_act_err_flag(i) := 1;
19684 l_act_err_msg(i) := l_err_msg;
19685 l_act_out_report := 'Y';
19686 Rollback to ACT_FP_PROJECT;
19687 END;
19688
19689 end if;
19690
19691 END LOOP;
19692 x_return_status := 'S';
19693 /* Commented an moved out of if block for bug#5659575
19694 if NVL(l_act_out_report,'N') = 'Y' then
19695 For l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
19696 if l_act_err_flag(l_index) = 1 then
19697 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19698 p_err_flag => l_act_err_flag(l_index),
19699 p_err_msg => l_act_err_msg(l_index));
19700 DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
19701 DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
19702 else
19703 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
19704 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19705 p_calendar_type => calendar_type_tbl(l_index),
19706 p_end_Date => proj_thru_dates_tbl(l_index));
19707 end if;
19708 end if;
19709 End Loop;
19710 else
19711 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
19712 For l_index in 1..proj_ids_tbl.COUNT loop
19713 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19714 p_calendar_type => calendar_type_tbl(l_index),
19715 p_end_Date => proj_thru_dates_tbl(l_index));
19716 End Loop;
19717 end if;
19718
19719 end if;*/
19720 /* End: Fix for Bug # 5526638. */
19721 else /* Uncommented for Bug #5659575*/
19722 /* Commented for bug 5526638
19723 Begin: Fix for Bug # 4018249. */
19724
19725 if (l_t_index <> 0) then
19726
19727 -- End: Fix for Bug # 4018249.
19728
19729 begin
19730 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
19731 (P_PROJECT_ID_TAB => proj_ids_tbl,
19732 P_WP_STR_VERSION_ID_TAB => latest_wp_struct_ver_ids_tbl,
19733 P_ACTUALS_THRU_DATE => proj_thru_dates_tbl,
19734 P_CALLING_CONTEXT => 'WP_SUMMARIZED_ACTUAL',
19735 P_extraction_type => l_extraction_type,
19736 P_COMMIT_FLAG => 'N',
19737 P_INIT_MSG_FLAG => 'N',
19738 x_RETURN_STATUS => x_return_status,
19739 x_MSG_COUNT => x_msg_count,
19740 x_MSG_DATA => x_msg_data);
19741
19742 if (x_return_status <> 'S') then
19743 pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned error.', 1);
19744 end if;
19745
19746 IF g1_debug_mode = 'Y' THEN
19747 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19748 x_Msg => 'Done PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
19749 x_Log_Level=> 3);
19750 END IF;
19751
19752 EXCEPTION when others then
19753 pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned exception.', 1);
19754 x_return_status := 'E';
19755 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19756 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19757 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
19758 raise;
19759 end;
19760
19761 -- Begin: Fix for Bug # 4018249.
19762
19763 end if;
19764
19765 /* Added for Bug #5659575 */
19766 if l_return_status = 'E' then
19767 x_return_status := 'E';
19768 end if;
19769
19770 --End: Fix for Bug # 4018249.
19771 end if;
19772
19773 if p_extraction_type <> 'PUBLISH' then
19774 l_conc_request_id := FND_GLOBAL.CONC_REQUEST_ID;
19775 end if;
19776 /* Added for bug #5659575 If block executes only in PJI flow*/
19777 if NVL(l_act_out_report,'N') = 'Y' then
19778 For l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
19779 if l_act_err_flag(l_index) = 1 then
19780 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19781 p_err_flag => l_act_err_flag(l_index),
19782 p_err_msg => l_act_err_msg(l_index));
19783 DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
19784 DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
19785 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19786 latest_wp_struct_ver_ids_tbl(l_index),
19787 'PRE',
19788 l_conc_request_id,
19789 l_return_status);
19790
19791 else
19792 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
19793 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19794 p_calendar_type => calendar_type_tbl(l_index),
19795 p_end_Date => proj_thru_dates_tbl(l_index));
19796 end if;
19797 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19798 latest_wp_struct_ver_ids_tbl(l_index),
19799 NULL,
19800 l_conc_request_id,
19801 l_return_status);
19802
19803 end if;
19804 End Loop;
19805 else
19806 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
19807 For l_index in 1..proj_ids_tbl.COUNT loop
19808 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
19809 p_calendar_type => calendar_type_tbl(l_index),
19810 p_end_Date => proj_thru_dates_tbl(l_index));
19811 if p_extraction_type <> 'PUBLISH' then
19812 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19813 latest_wp_struct_ver_ids_tbl(l_index),
19814 NULL,
19815 l_conc_request_id,
19816 l_return_status);
19817 end if;
19818
19819 End Loop;
19820 end if;
19821 end if;
19822
19823 pa_debug.log_message('GET_SUMM_ACT: Done with Get_Summarized_Actuals.', 1);
19824 --- assigning l_return_status so that if any of the project had issues the program
19825 --- should finish with a warning
19826 /* Commented and moved above for bug#5659575
19827 x_return_status := l_return_status; */
19828 pa_debug.set_process('IGNORE');
19829 EXCEPTION
19830 when l_pji_wp_exception then /* Bug 5526638*/
19831 pa_debug.log_message('GET_SUMM_ACT: Error while calling PJI api', 1);
19832 x_return_status :='E' ;
19833 when others then
19834 x_return_status := 'E';
19835 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19836 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19837 p_error_text => SUBSTRB('pa_progress_pub.get_summarized_actuals:'||SQLERRM,1,120));
19838 -- 4746476 : Priniting stack
19839 FOR i in 1..fnd_msg_pub.count_msg LOOP
19840 pa_interface_utils_pub.get_messages (
19841 p_encoded => Fnd_Api.G_FALSE
19842 ,p_data => l_data
19843 ,p_msg_index => i
19844 ,p_msg_index_out => l_msg_index_out );
19845 pa_debug.log_message('GET_SUMM_ACT: Error '||i||' ='||substr(l_data,1,200), 1);
19846 END LOOP;
19847 pa_debug.set_process('IGNORE');
19848 /* Added if condition for bug#5659575 */
19849 if p_extraction_type = 'PUBLISH' then
19850 RAISE;
19851 end if;
19852
19853 END GET_SUMMARIZED_ACTUALS;
19854 -- Start of comments
19855 -- API name : UPDATE_FINANCIAL_TASK_PROGRESS
19856 -- Type : Public
19857 -- Purpose : Updates Financial Percent Complete
19858 -- Parameters Desc :
19859 -- p_object_type PA_TASKS
19860 -- p_as_of_date The as_of_date for which progress to be entered
19861 -- p_object_version_id The task version id
19862 -- p_structure_version_id Structure version id of the publsihed or working structure version
19863 -- p_progress_comment Progress comment
19864 -- p_brief_overview Brief Overview
19865 -- p_structure_type FINANCIAL
19866 -- p_rollup_entire_wbs To indicate if it requires the whole structure rollup, in this
19867 -- case it will ignore the passed object and starts with the lowest
19868 -- task
19869 -- History : 29-MAR-04 sdnambia Written For FPM Development Tracking Bug 3420093
19870 -- End of comments
19871
19872 --FPM Dev CR 1 : Added following procedure
19873
19874 PROCEDURE UPDATE_FINANCIAL_TASK_PROGRESS(
19875 p_api_version IN NUMBER :=1.0
19876 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
19877 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
19878 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
19879 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
19880 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
19881 ,p_debug_mode IN VARCHAR2 :='N'
19882 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19883 ,p_action IN VARCHAR2 :='SAVE'
19884 ,P_rollup_entire_wbs_flag IN VARCHAR2 :='N'
19885 ,p_progress_mode IN VARCHAR2 :='FUTURE'
19886 ,p_percent_complete_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19887 ,p_project_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19888 ,p_object_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19889 ,p_object_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19890 ,p_object_type IN VARCHAR2 :='PA_TASKS'
19891 ,p_as_of_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
19892 ,p_percent_complete IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19893 ,p_progress_status_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19894 ,p_progress_comment IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19895 ,p_brief_overview IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19896 ,p_record_version_number IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19897 ,p_pm_product_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19898 ,p_structure_type IN VARCHAR2 :='FINANCIAL'
19899 ,p_task_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19900 ,p_structure_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19901 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19902 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
19903 ,x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
19904 IS
19905
19906 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_FINANCIAL_TASK_PROGRESS' ;
19907 l_api_version CONSTANT NUMBER := 1.0 ;
19908 l_return_status VARCHAR2(1) ;
19909 l_msg_count NUMBER ;
19910 l_msg_data VARCHAR2(250) ;
19911 l_data VARCHAR2(250) ;
19912 l_msg_index_out NUMBER ;
19913 l_error_msg_code VARCHAR2(250) ;
19914 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
19915 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
19916 l_task_id NUMBER ;
19917 l_object_id NUMBER ;
19918 l_project_id NUMBER ;
19919 l_percent_complete_id NUMBER ;
19920 l_PROGRESS_ROLLUP_ID NUMBER ;
19921 l_last_progress_date DATE ;
19922 l_progress_exists_on_aod VARCHAR2(15) ;
19923 l_db_action VARCHAR2(10) ;
19924 l_published_flag VARCHAR2(1) ;
19925 l_current_flag VARCHAR2(1) ;
19926 l_actual_start_date DATE ;
19927 l_actual_finish_date DATE ;
19928 l_estimated_start_date DATE ;
19929 l_estimated_finish_date DATE ;
19930 l_rollup_rec_ver_number NUMBER ;
19931 l_published_by_party_id NUMBER := PA_UTILS.get_party_id( l_user_id ) ;
19932 l_object_type VARCHAR2(15) := p_object_type ;
19933 -- Bug 3595585 : Initialized l_object_type to p_object_type instead of PA_TASKS
19934 l_structure_version_id NUMBER ;
19935 l_published_structure VARCHAR2(1) ;
19936 l_object_version_id NUMBER ;
19937 g1_debug_mode VARCHAR2(1) ;
19938 l_structure_shared VARCHAR2(1) ;
19939 l_brief_overview VARCHAR2(250) ;
19940 l_progress_comment VARCHAR2(4000) ;
19941 l_pm_product_code VARCHAR2(30) ;
19942 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
19943 l_lowest_level_task VARCHAR2(1) ;
19944
19945
19946 l_prog_pa_period_name VARCHAR2(30) ;
19947 l_prog_gl_period_name VARCHAR2(30) ;
19948
19949 -- required for compilation
19950 l_percent_complete NUMBER ;
19951 l_progress_status_code VARCHAR2(30) ;
19952 l_task_status VARCHAR2(150) ;
19953 l_rollup_progress_status VARCHAR2(150) ;
19954 l_INCREMENTAL_WORK_QTY NUMBER ;
19955 l_CUMULATIVE_WORK_QTY NUMBER ;
19956 l_BASE_PERCENT_COMPLETE NUMBER ;
19957 l_EFF_ROLLUP_PERCENT_COMP NUMBER ;
19958 l_rollup_completed_percentage NUMBER ;
19959 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30) ;
19960 l_BASE_PROGRESS_STATUS_CODE VARCHAR2(30) ;
19961 l_EFF_ROLLUP_PROG_STAT_CODE VARCHAR2(150) ;
19962 l_ACTUAL_WQ_ENTRY_CODE VARCHAR2(30) ;
19963 l_wq_enabled_flag VARCHAR2(1) ;
19964 l_percent_complete_flag VARCHAR2(1) ;
19965 l_allow_collab_prog_entry VARCHAR2(1) ;
19966 l_allw_phy_prcnt_cmp_overrides VARCHAR2(1) ;
19967 l_task_weight_basis_code VARCHAR2(30) ;
19968
19969
19970 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
19971 IS
19972 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
19973 FROM pa_proj_elem_ver_structure str, pa_project_statuses status
19974 where str.element_version_id = c_structure_version_id
19975 AND str.project_id = c_project_id
19976 AND str.status_code = status.project_status_code;
19977
19978 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
19979 IS
19980 SELECT task_weight_basis_code
19981 FROM pa_proj_progress_attr
19982 WHERE project_id = c_project_id
19983 AND structure_type = c_structure_type;
19984
19985
19986 l_record_version_number NUMBER ; -- FPM Dev CR 6
19987 BEGIN
19988
19989 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
19990 IF g1_debug_mode = 'Y' THEN
19991 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'ENTERED', x_Log_Level=> 3);
19992 END IF;
19993
19994 IF g1_debug_mode = 'Y' THEN
19995 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS');
19996 END IF;
19997
19998 IF (p_commit = FND_API.G_TRUE) THEN
19999 savepoint UPDATE_FINANCIAL_TASK_PROGRESS;
20000 END IF;
20001
20002 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
20003 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20004 END IF;
20005
20006 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
20007 FND_MSG_PUB.initialize;
20008 END IF;
20009
20010 IF g1_debug_mode = 'Y' THEN
20011 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_task_id: '||p_task_id, x_Log_Level=> 3);
20012 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_object_version_id: '||p_object_version_id, x_Log_Level=> 3);
20013 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_project_id: '||p_project_id, x_Log_Level=> 3);
20014 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_object_id: '||p_object_id, x_Log_Level=> 3);
20015 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_as_of_date: '||p_as_of_date, x_Log_Level=> 3);
20016 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_percent_complete_id: '||p_percent_complete_id, x_Log_Level=> 3);
20017 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_percent_complete: '||p_percent_complete, x_Log_Level=> 3);
20018 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_record_version_number: '||p_record_version_number, x_Log_Level=> 3);
20019 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_structure_type: '||p_structure_type, x_Log_Level=> 3);
20020 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_structure_version_id: '||p_structure_version_id, x_Log_Level=> 3);
20021 END IF;
20022
20023
20024 x_return_status := FND_API.G_RET_STS_SUCCESS;
20025
20026
20027 IF p_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20028 THEN
20029 l_task_id := 0;
20030 ELSE
20031 -- Bug 3876091 : Added IF for STRUCTURES
20032 IF p_object_type = 'PA_STRUCTURES' THEN
20033 l_task_id := 0;
20034 ELSE
20035 l_task_id := nvl(p_task_id, 0);
20036 END IF;
20037 END IF;
20038
20039 -- Bug 3919211
20040 IF p_object_type = 'PA_STRUCTURES' THEN
20041 l_task_id := 0;
20042 END IF;
20043
20044
20045 IF p_object_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20046 THEN
20047 l_object_id := 0;
20048 ELSE
20049 l_object_id := nvl(p_object_id, 0);
20050 END IF;
20051
20052 IF p_object_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20053 THEN
20054 l_object_version_id := 0;
20055 ELSE
20056 l_object_version_id := nvl(p_object_version_id, 0);
20057 END IF;
20058
20059 IF p_brief_overview = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20060 THEN
20061 l_brief_overview := null;
20062 ELSE
20063 l_brief_overview := p_brief_overview;
20064 END IF;
20065
20066 IF p_progress_comment = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20067 THEN
20068 l_progress_comment := null;
20069 ELSE
20070 l_progress_comment := p_progress_comment;
20071 END IF;
20072
20073 IF p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20074 THEN
20075 l_pm_product_code := null;
20076 ELSE
20077 l_pm_product_code := p_pm_product_code;
20078 END IF;
20079
20080 -- Bug 4938333 Begin
20081 -- In case of financial struture, no need to check for published version
20082 -- populate structure_version_id always null.
20083 /*
20084 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
20085 FETCH cur_check_published_version INTO l_published_structure;
20086 CLOSE cur_check_published_version;
20087
20088 IF l_published_structure = 'Y'
20089 THEN
20090 l_structure_version_id := null;
20091 ELSE
20092 l_structure_version_id := p_structure_version_id;
20093 END IF;
20094 */
20095 l_published_structure := 'Y';
20096 l_structure_version_id := null;
20097 -- Bug 4938333 End
20098 IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20099 THEN
20100 l_percent_complete := 0;
20101 ELSE
20102 l_percent_complete := nvl(p_percent_complete,0);
20103 --Changed for BIG 3950574, rtarway
20104 --l_percent_complete := round ( nvl(p_percent_complete,0),2 );
20105 END IF;
20106
20107 --bug 3850475, Percent complete should be between 0 and 100
20108 IF l_percent_complete < 0 OR l_percent_complete > 100
20109 THEN
20110 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20111 ,p_msg_name => 'PA_FIN_PERCENT_INVALID');
20112 x_msg_data := 'PA_FIN_PERCENT_INVALID';
20113 x_return_status := 'E';
20114 RAISE FND_API.G_EXC_ERROR;
20115 END IF;
20116
20117
20118 ---- if status is CANCELLED
20119 IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) = 'CANCELLED'
20120 THEN
20121 IF p_pm_product_code = 'MSPROJECT' OR p_calling_module <> 'AMG' --Bug:14537482
20122 THEN
20123 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20124 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL_MSP'
20125 ,p_token1 => 'TASK_NAME'
20126 ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
20127 ,p_token2 => 'TASK_NUMBER'
20128 ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
20129 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
20130 x_return_status := 'E';
20131 RAISE FND_API.G_EXC_ERROR;
20132 ELSE
20133 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20134 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL_AMG'
20135 ,p_token1 => 'TASK_ID'
20136 ,p_value1 => p_object_id
20137 );
20138 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
20139 x_return_status := 'E';
20140 RAISE FND_API.G_EXC_ERROR;
20141 END IF;
20142 END IF;
20143 ---- if status is CANCELLED
20144
20145 ----- Invalid DATE
20146 IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
20147 THEN
20148 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20149 ,p_msg_name => 'PA_TP_INV_AOD'
20150 ,p_token1 => 'AS_OF_DATE'
20151 ,p_value1 => p_as_of_date);
20152 x_msg_data := 'PA_TP_INV_AOD';
20153 x_return_status := 'E';
20154 RAISE FND_API.G_EXC_ERROR;
20155 END IF;
20156 ----- Wrong DATE
20157
20158
20159 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
20160 p_task_id => l_task_id--p_task_id Bug 3876091
20161 ,p_project_id => p_project_id
20162 ,p_object_id => l_object_id
20163 ,p_object_type => l_object_type
20164 ,p_structure_type => p_structure_type
20165 );
20166
20167
20168 IF g1_debug_mode = 'Y' THEN
20169 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_last_progress_date: '||l_last_progress_date, x_Log_Level=> 3);
20170 END IF;
20171
20172 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
20173 p_project_id => p_project_id
20174 ,p_object_type => l_object_type
20175 ,p_object_version_id => l_object_version_id
20176 ,p_task_id => l_task_id -- l_object_id Bug 3876091
20177 ,p_as_of_date => p_as_of_date
20178 ,p_structure_type => p_structure_type
20179 ,p_object_id => l_object_id -- Bug 3764224
20180 );
20181
20182 IF g1_debug_mode = 'Y' THEN
20183 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_progress_exists_on_aod: '||l_progress_exists_on_aod, x_Log_Level=> 3);
20184 END IF;
20185
20186 -- Bug 3603636 : IF record is already published then we maintain the history of changes.
20187 -- So percent complete will have data inserted and roll up table will be updated.
20188 --??? One issue here is tregaring the history_flag in ppc table. I think it shoul dbe updated with Y for the existing
20189 -- record on that as_of_date
20190 -- IF l_progress_exists_on_aod = 'PUBLISHED'
20191 -- THEN
20192 -- l_db_action := 'UPDATE';
20193 -- ELSE
20194 l_db_action := 'CREATE';
20195 -- END IF;
20196
20197 IF p_as_of_date >= NVL( l_last_progress_date, p_as_of_date ) -- FPM Dev CR 5 : Equal to was missing
20198 THEN
20199 l_current_flag := 'Y';
20200 UPDATE /*+ INDEX(pa_percent_completes PA_PERCENT_COMPLETES_N3)*/ pa_percent_completes --Added hint for 15876400
20201 SET current_flag = 'N'
20202 WHERE project_id = p_project_id
20203 AND object_id = l_object_id
20204 AND current_flag = 'Y'
20205 AND object_type = l_object_type
20206 AND structure_type = p_structure_type;
20207
20208 UPDATE pa_progress_rollup
20209 SET current_flag = 'N'
20210 WHERE project_id = p_project_id
20211 AND object_id = p_object_id
20212 AND object_type = p_object_type
20213 --AND as_of_date = p_as_of_date
20214 AND current_flag = 'Y'
20215 --AND object_version_id = p_object_version_id Bug 3603636, We shd not rely on object_version_id
20216 AND structure_version_id IS NULL
20217 AND structure_type = p_structure_type;
20218
20219 ELSIF p_as_of_date < NVL( l_last_progress_date, p_as_of_date )
20220 THEN
20221 l_current_flag := 'N';
20222 END IF;
20223
20224
20225
20226 l_published_flag := 'Y';
20227
20228 IF g1_debug_mode = 'Y' THEN
20229 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_db_action: '||l_db_action, x_Log_Level=> 3);
20230 END IF;
20231
20232 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
20233 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date);
20234
20235
20236 IF l_db_action = 'CREATE'
20237 THEN
20238 /* Bug 3603636 : Putiing the following code. After confirmation we will uncomment
20239 UPDATE pa_percent_completes
20240 SET history_flag = 'Y'
20241 WHERE project_id = p_project_id
20242 AND object_id = l_object_id
20243 AND trunc(date_computed) = trunc(p_as_of_date)
20244 AND object_type = l_object_type
20245 AND structure_type = p_structure_type;
20246 */
20247
20248 PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
20249 p_TASK_ID => l_task_id
20250 ,p_DATE_COMPUTED => p_as_of_date
20251 ,p_LAST_UPDATE_DATE => SYSDATE
20252 ,p_LAST_UPDATED_BY => l_user_id
20253 ,p_CREATION_DATE => SYSDATE
20254 ,p_CREATED_BY => l_user_id
20255 ,p_LAST_UPDATE_LOGIN => l_login_id
20256 ,p_COMPLETED_PERCENTAGE => l_percent_complete
20257 ,p_DESCRIPTION => l_brief_overview
20258 ,p_PROJECT_ID => p_project_id
20259 ,p_PM_PRODUCT_CODE => l_pm_product_code
20260 ,p_CURRENT_FLAG => l_current_flag
20261 ,p_OBJECT_TYPE => l_object_type
20262 ,p_OBJECT_ID => l_object_id
20263 ,p_OBJECT_VERSION_ID => l_object_version_id
20264 ,p_PROGRESS_STATUS_CODE => l_progress_status_code
20265 ,p_ACTUAL_START_DATE => l_actual_start_date
20266 ,p_ACTUAL_FINISH_DATE => l_actual_finish_date
20267 ,p_ESTIMATED_START_DATE => l_estimated_start_date
20268 ,p_ESTIMATED_FINISH_DATE => l_estimated_finish_date
20269 ,p_PUBLISHED_FLAG => l_published_flag
20270 ,p_PUBLISHED_BY_PARTY_ID => l_published_by_party_id
20271 ,p_PROGRESS_COMMENT => l_progress_comment
20272 ,p_HISTORY_FLAG => 'N'
20273 ,p_status_code => l_task_status
20274 ,x_PERCENT_COMPLETE_ID => l_percent_complete_id
20275 ,p_ATTRIBUTE_CATEGORY => null
20276 ,p_ATTRIBUTE1 => null
20277 ,p_ATTRIBUTE2 => null
20278 ,p_ATTRIBUTE3 => null
20279 ,p_ATTRIBUTE4 => null
20280 ,p_ATTRIBUTE5 => null
20281 ,p_ATTRIBUTE6 => null
20282 ,p_ATTRIBUTE7 => null
20283 ,p_ATTRIBUTE8 => null
20284 ,p_ATTRIBUTE9 => null
20285 ,p_ATTRIBUTE10 => null
20286 ,p_ATTRIBUTE11 => null
20287 ,p_ATTRIBUTE12 => null
20288 ,p_ATTRIBUTE13 => null
20289 ,p_ATTRIBUTE14 => null
20290 ,p_ATTRIBUTE15 => null
20291 ,p_structure_type => p_structure_type
20292 );
20293
20294 IF g1_debug_mode = 'Y' THEN
20295 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPC', x_Log_Level=> 3);
20296 END IF;
20297
20298 IF g1_debug_mode = 'Y' THEN
20299 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTING IN PPR', x_Log_Level=> 3);
20300 END IF;
20301
20302
20303 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
20304 p_project_id => p_project_id
20305 ,p_object_id => l_object_id
20306 ,p_object_type => l_object_type
20307 ,p_object_version_id => l_object_version_id
20308 ,p_as_of_date => p_as_of_date
20309 ,p_structure_type => p_structure_type
20310 ,p_structure_version_id => l_structure_version_id
20311 ,p_proj_element_id => l_task_id -- Bug 3919211 --l_object_id -- Bug 3764224
20312 ,x_record_version_number => l_rollup_rec_ver_number
20313 );
20314
20315 IF l_PROGRESS_ROLLUP_ID IS NULL
20316 THEN
20317 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
20318 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
20319 ,X_PROJECT_ID => p_project_id
20320 ,X_OBJECT_ID => l_object_id
20321 ,X_OBJECT_TYPE => l_object_type
20322 ,X_AS_OF_DATE => p_as_of_date
20323 ,X_OBJECT_VERSION_ID => l_object_version_id
20324 ,X_LAST_UPDATE_DATE => SYSDATE
20325 ,X_LAST_UPDATED_BY => l_user_id
20326 ,X_CREATION_DATE => SYSDATE
20327 ,X_CREATED_BY => l_user_id
20328 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
20329 ,X_LAST_UPDATE_LOGIN => l_login_id
20330 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
20331 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
20332 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
20333 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
20334 ,X_COMPLETED_PERCENTAGE => l_percent_complete
20335 ,X_ESTIMATED_START_DATE => l_estimated_start_date
20336 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
20337 ,X_ACTUAL_START_DATE => l_actual_start_date
20338 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
20339 ,X_EST_REMAINING_EFFORT => null
20340 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
20341 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
20342 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
20343 ,x_percent_complete_id => l_percent_complete_id
20344 ,X_STRUCTURE_TYPE => p_structure_type
20345 ,X_PROJ_ELEMENT_ID => l_task_id -- p_task_id Bug 3876091
20346 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
20347 ,X_PPL_ACT_EFFORT_TO_DATE => null
20348 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
20349 ,X_EQPMT_ETC_EFFORT => null
20350 ,X_OTH_ACT_COST_TO_DATE_TC => null
20351 ,X_OTH_ACT_COST_TO_DATE_FC => null
20352 ,X_OTH_ACT_COST_TO_DATE_PC => null
20353 ,X_OTH_ETC_COST_TC => null
20354 ,X_OTH_ETC_COST_FC => null
20355 ,X_OTH_ETC_COST_PC => null
20356 ,X_PPL_ACT_COST_TO_DATE_TC => null
20357 ,X_PPL_ACT_COST_TO_DATE_FC => null
20358 ,X_PPL_ACT_COST_TO_DATE_PC => null
20359 ,X_PPL_ETC_COST_TC => null
20360 ,X_PPL_ETC_COST_FC => null
20361 ,X_PPL_ETC_COST_PC => null
20362 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
20363 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
20364 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
20365 ,X_EQPMT_ETC_COST_TC => null
20366 ,X_EQPMT_ETC_COST_FC => null
20367 ,X_EQPMT_ETC_COST_PC => null
20368 ,X_EARNED_VALUE => null
20369 ,X_TASK_WT_BASIS_CODE => null
20370 ,X_SUBPRJ_PPL_ACT_EFFORT => null
20371 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
20372 ,X_SUBPRJ_PPL_ETC_EFFORT => null
20373 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
20374 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
20375 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
20376 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
20377 ,X_SUBPRJ_PPL_ACT_COST_TC => null
20378 ,X_SUBPRJ_PPL_ACT_COST_FC => null
20379 ,X_SUBPRJ_PPL_ACT_COST_PC => null
20380 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
20381 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
20382 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
20383 ,X_SUBPRJ_OTH_ETC_COST_TC => null
20384 ,X_SUBPRJ_OTH_ETC_COST_FC => null
20385 ,X_SUBPRJ_OTH_ETC_COST_PC => null
20386 ,X_SUBPRJ_PPL_ETC_COST_TC => null
20387 ,X_SUBPRJ_PPL_ETC_COST_FC => null
20388 ,X_SUBPRJ_PPL_ETC_COST_PC => null
20389 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
20390 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
20391 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
20392 ,X_SUBPRJ_EARNED_VALUE => null
20393 ,X_CURRENT_FLAG => l_current_flag
20394 ,X_PROJFUNC_COST_RATE_TYPE => null
20395 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
20396 ,X_PROJFUNC_COST_RATE_DATE => null
20397 ,X_PROJ_COST_RATE_TYPE => null
20398 ,X_PROJ_COST_EXCHANGE_RATE => null
20399 ,X_PROJ_COST_RATE_DATE => null
20400 ,X_TXN_CURRENCY_CODE => null
20401 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
20402 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
20403 ,X_OTH_QUANTITY_TO_DATE => null
20404 ,X_OTH_ETC_QUANTITY => null
20405 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
20406 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
20407 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
20408 ,X_OTH_ETC_RAWCOST_TC => null
20409 ,X_OTH_ETC_RAWCOST_FC => null
20410 ,X_OTH_ETC_RAWCOST_PC => null
20411 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
20412 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
20413 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
20414 ,X_PPL_ETC_RAWCOST_TC => null
20415 ,X_PPL_ETC_RAWCOST_FC => null
20416 ,X_PPL_ETC_RAWCOST_PC => null
20417 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
20418 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
20419 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
20420 ,X_EQPMT_ETC_RAWCOST_TC => null
20421 ,X_EQPMT_ETC_RAWCOST_FC => null
20422 ,X_EQPMT_ETC_RAWCOST_PC => null
20423 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
20424 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
20425 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
20426 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
20427 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
20428 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
20429 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
20430 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
20431 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
20432 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
20433 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
20434 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
20435 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
20436 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
20437 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
20438 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
20439 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
20440 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null);
20441 ELSE
20442 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
20443 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
20444 ,X_PROJECT_ID => p_project_id
20445 ,X_OBJECT_ID => l_object_id
20446 ,X_OBJECT_TYPE => l_object_type
20447 ,X_AS_OF_DATE => p_as_of_date
20448 ,X_OBJECT_VERSION_ID => l_object_version_id
20449 ,X_LAST_UPDATE_DATE => SYSDATE
20450 ,X_LAST_UPDATED_BY => l_user_id
20451 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
20452 ,X_LAST_UPDATE_LOGIN => l_login_id
20453 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
20454 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
20455 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
20456 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
20457 ,X_COMPLETED_PERCENTAGE => l_percent_complete
20458 ,X_ESTIMATED_START_DATE => l_estimated_start_date
20459 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
20460 ,X_ACTUAL_START_DATE => l_actual_start_date
20461 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
20462 ,X_EST_REMAINING_EFFORT => null
20463 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
20464 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
20465 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
20466 ,X_RECORD_VERSION_NUMBER => l_rollup_rec_ver_number
20467 ,x_percent_complete_id => l_percent_complete_id
20468 ,X_STRUCTURE_TYPE => p_structure_type
20469 ,X_PROJ_ELEMENT_ID => l_task_id --p_task_id Bug 3876091
20470 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
20471 ,X_PPL_ACT_EFFORT_TO_DATE => null
20472 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
20473 ,X_EQPMT_ETC_EFFORT => null
20474 ,X_OTH_ACT_COST_TO_DATE_TC => null
20475 ,X_OTH_ACT_COST_TO_DATE_FC => null
20476 ,X_OTH_ACT_COST_TO_DATE_PC => null
20477 ,X_OTH_ETC_COST_TC => null
20478 ,X_OTH_ETC_COST_FC => null
20479 ,X_OTH_ETC_COST_PC => null
20480 ,X_PPL_ACT_COST_TO_DATE_TC => null
20481 ,X_PPL_ACT_COST_TO_DATE_FC => null
20482 ,X_PPL_ACT_COST_TO_DATE_PC => null
20483 ,X_PPL_ETC_COST_TC => null
20484 ,X_PPL_ETC_COST_FC => null
20485 ,X_PPL_ETC_COST_PC => null
20486 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
20487 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
20488 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
20489 ,X_EQPMT_ETC_COST_TC => null
20490 ,X_EQPMT_ETC_COST_FC => null
20491 ,X_EQPMT_ETC_COST_PC => null
20492 ,X_EARNED_VALUE => null
20493 ,X_TASK_WT_BASIS_CODE => null
20494 ,X_SUBPRJ_PPL_ACT_EFFORT => null
20495 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
20496 ,X_SUBPRJ_PPL_ETC_EFFORT => null
20497 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
20498 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
20499 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
20500 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
20501 ,X_SUBPRJ_PPL_ACT_COST_TC => null
20502 ,X_SUBPRJ_PPL_ACT_COST_FC => null
20503 ,X_SUBPRJ_PPL_ACT_COST_PC => null
20504 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
20505 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
20506 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
20507 ,X_SUBPRJ_OTH_ETC_COST_TC => null
20508 ,X_SUBPRJ_OTH_ETC_COST_FC => null
20509 ,X_SUBPRJ_OTH_ETC_COST_PC => null
20510 ,X_SUBPRJ_PPL_ETC_COST_TC => null
20511 ,X_SUBPRJ_PPL_ETC_COST_FC => null
20512 ,X_SUBPRJ_PPL_ETC_COST_PC => null
20513 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
20514 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
20515 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
20516 ,X_SUBPRJ_EARNED_VALUE => null
20517 ,X_CURRENT_FLAG => l_current_flag
20518 ,X_PROJFUNC_COST_RATE_TYPE => null
20519 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
20520 ,X_PROJFUNC_COST_RATE_DATE => null
20521 ,X_PROJ_COST_RATE_TYPE => null
20522 ,X_PROJ_COST_EXCHANGE_RATE => null
20523 ,X_PROJ_COST_RATE_DATE => null
20524 ,X_TXN_CURRENCY_CODE => null
20525 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
20526 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
20527 ,X_OTH_QUANTITY_TO_DATE => null
20528 ,X_OTH_ETC_QUANTITY => null
20529 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
20530 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
20531 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
20532 ,X_OTH_ETC_RAWCOST_TC => null
20533 ,X_OTH_ETC_RAWCOST_FC => null
20534 ,X_OTH_ETC_RAWCOST_PC => null
20535 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
20536 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
20537 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
20538 ,X_PPL_ETC_RAWCOST_TC => null
20539 ,X_PPL_ETC_RAWCOST_FC => null
20540 ,X_PPL_ETC_RAWCOST_PC => null
20541 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
20542 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
20543 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
20544 ,X_EQPMT_ETC_RAWCOST_TC => null
20545 ,X_EQPMT_ETC_RAWCOST_FC => null
20546 ,X_EQPMT_ETC_RAWCOST_PC => null
20547 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
20548 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
20549 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
20550 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
20551 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
20552 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
20553 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
20554 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
20555 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
20556 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
20557 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
20558 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
20559 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
20560 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
20561 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
20562 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
20563 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
20564 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null);
20565
20566 -- FPM Dev CR 6
20567 IF Fnd_Msg_Pub.count_msg > 0 THEN
20568 RAISE FND_API.G_EXC_ERROR;
20569 END IF;
20570
20571
20572 END IF;
20573
20574 IF g1_debug_mode = 'Y' THEN
20575 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPR', x_Log_Level=> 3);
20576 END IF;
20577
20578 ELSIF l_db_action = 'UPDATE'
20579 THEN
20580
20581 IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20582 THEN
20583 l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
20584 p_project_id => p_project_id
20585 ,p_object_id => l_object_id
20586 ,p_task_id => l_task_id -- l_object_id -- Bug 3764224 Bug 3876091
20587 ,p_object_type => l_object_type
20588 ,p_object_version_id => l_object_version_id
20589 ,p_as_of_date => p_as_of_date
20590 ,p_structure_type => p_structure_type
20591 );
20592 -- FPM Dev CR 6 Getting Record Version Number too
20593 BEGIN
20594 SELECT record_version_number into l_record_version_number
20595 FROM pa_percent_completes
20596 where percent_complete_id = l_percent_complete_id;
20597 END;
20598
20599 ELSE
20600 l_percent_complete_id := p_percent_complete_id;
20601 l_record_version_number := p_record_version_number;
20602 END IF;
20603
20604 IF g1_debug_mode = 'Y' THEN
20605 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_percent_complete_id: '||l_percent_complete_id, x_Log_Level=> 3);
20606 END IF;
20607
20608
20609 PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
20610 p_TASK_ID => l_task_id
20611 ,p_DATE_COMPUTED => p_as_of_date
20612 ,p_LAST_UPDATE_DATE => SYSDATE
20613 ,p_LAST_UPDATED_BY => l_user_id
20614 ,p_LAST_UPDATE_LOGIN => l_login_id
20615 ,p_COMPLETED_PERCENTAGE => l_percent_complete
20616 ,p_DESCRIPTION => l_brief_overview
20617 ,p_PM_PRODUCT_CODE => l_pm_product_code
20618 ,p_CURRENT_FLAG => l_current_flag
20619 ,p_PERCENT_COMPLETE_ID => l_percent_complete_id
20620 ,p_project_id => p_project_id
20621 ,p_OBJECT_TYPE => l_object_type
20622 ,p_OBJECT_ID => l_object_id
20623 ,p_OBJECT_VERSION_ID => l_object_version_id
20624 ,p_PROGRESS_STATUS_CODE => l_progress_status_code
20625 ,p_ACTUAL_START_DATE => l_actual_start_date
20626 ,p_ACTUAL_FINISH_DATE => l_actual_finish_date
20627 ,p_ESTIMATED_START_DATE => l_estimated_start_date
20628 ,p_ESTIMATED_FINISH_DATE => l_estimated_finish_date
20629 ,p_PUBLISHED_FLAG => l_published_flag
20630 ,p_PUBLISHED_BY_PARTY_ID => l_published_by_party_id
20631 ,p_PROGRESS_COMMENT => l_progress_comment
20632 ,p_HISTORY_FLAG => 'N'
20633 ,p_status_code => l_task_status
20634 ,p_RECORD_VERSION_NUMBER => l_record_version_number -- FPM Dev CR 6
20635 ,p_ATTRIBUTE_CATEGORY => null
20636 ,p_ATTRIBUTE1 => null
20637 ,p_ATTRIBUTE2 => null
20638 ,p_ATTRIBUTE3 => null
20639 ,p_ATTRIBUTE4 => null
20640 ,p_ATTRIBUTE5 => null
20641 ,p_ATTRIBUTE6 => null
20642 ,p_ATTRIBUTE7 => null
20643 ,p_ATTRIBUTE8 => null
20644 ,p_ATTRIBUTE9 => null
20645 ,p_ATTRIBUTE10 => null
20646 ,p_ATTRIBUTE11 => null
20647 ,p_ATTRIBUTE12 => null
20648 ,p_ATTRIBUTE13 => null
20649 ,p_ATTRIBUTE14 => null
20650 ,p_ATTRIBUTE15 => null
20651 ,p_structure_type => p_structure_type
20652
20653 );
20654 -- FPM Dev CR 6
20655 IF Fnd_Msg_Pub.count_msg > 0 THEN
20656 RAISE FND_API.G_EXC_ERROR;
20657 END IF;
20658
20659
20660
20661 --update progress rollup
20662 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
20663 p_project_id => p_project_id
20664 ,p_object_id => l_object_id
20665 ,p_object_type => l_object_type
20666 ,p_object_version_id => l_object_version_id
20667 ,p_as_of_date => p_as_of_date
20668 ,p_structure_type => p_structure_type
20669 ,p_structure_version_id => l_structure_version_id
20670 ,p_proj_element_id => l_task_id -- Bug 3919211 l_object_id -- Bug 3764224
20671 ,x_record_version_number => l_rollup_rec_ver_number
20672 );
20673
20674 IF g1_debug_mode = 'Y' THEN
20675 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID: '||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
20676 END IF;
20677
20678
20679 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
20680 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
20681 ,X_PROJECT_ID => p_project_id
20682 ,X_OBJECT_ID => l_object_id
20683 ,X_OBJECT_TYPE => l_object_type
20684 ,X_AS_OF_DATE => p_as_of_date
20685 ,X_OBJECT_VERSION_ID => l_object_version_id
20686 ,X_LAST_UPDATE_DATE => SYSDATE
20687 ,X_LAST_UPDATED_BY => l_user_id
20688 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
20689 ,X_LAST_UPDATE_LOGIN => l_login_id
20690 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
20691 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
20692 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
20693 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
20694 ,X_COMPLETED_PERCENTAGE => l_percent_complete
20695 ,X_ESTIMATED_START_DATE => l_estimated_start_date
20696 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
20697 ,X_ACTUAL_START_DATE => l_actual_start_date
20698 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
20699 ,X_EST_REMAINING_EFFORT => null
20700 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
20701 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
20702 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
20703 ,X_RECORD_VERSION_NUMBER => l_rollup_rec_ver_number
20704 ,x_percent_complete_id => l_percent_complete_id
20705 ,X_STRUCTURE_TYPE => p_structure_type
20706 ,X_PROJ_ELEMENT_ID => l_task_id --p_task_id Bug 3876091
20707 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
20708 ,X_PPL_ACT_EFFORT_TO_DATE => null
20709 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
20710 ,X_EQPMT_ETC_EFFORT => null
20711 ,X_OTH_ACT_COST_TO_DATE_TC => null
20712 ,X_OTH_ACT_COST_TO_DATE_FC => null
20713 ,X_OTH_ACT_COST_TO_DATE_PC => null
20714 ,X_OTH_ETC_COST_TC => null
20715 ,X_OTH_ETC_COST_FC => null
20716 ,X_OTH_ETC_COST_PC => null
20717 ,X_PPL_ACT_COST_TO_DATE_TC => null
20718 ,X_PPL_ACT_COST_TO_DATE_FC => null
20719 ,X_PPL_ACT_COST_TO_DATE_PC => null
20720 ,X_PPL_ETC_COST_TC => null
20721 ,X_PPL_ETC_COST_FC => null
20722 ,X_PPL_ETC_COST_PC => null
20723 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
20724 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
20725 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
20726 ,X_EQPMT_ETC_COST_TC => null
20727 ,X_EQPMT_ETC_COST_FC => null
20728 ,X_EQPMT_ETC_COST_PC => null
20729 ,X_EARNED_VALUE => null
20730 ,X_TASK_WT_BASIS_CODE => null
20731 ,X_SUBPRJ_PPL_ACT_EFFORT => null
20732 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
20733 ,X_SUBPRJ_PPL_ETC_EFFORT => null
20734 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
20735 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
20736 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
20737 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
20738 ,X_SUBPRJ_PPL_ACT_COST_TC => null
20739 ,X_SUBPRJ_PPL_ACT_COST_FC => null
20740 ,X_SUBPRJ_PPL_ACT_COST_PC => null
20741 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
20742 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
20743 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
20744 ,X_SUBPRJ_OTH_ETC_COST_TC => null
20745 ,X_SUBPRJ_OTH_ETC_COST_FC => null
20746 ,X_SUBPRJ_OTH_ETC_COST_PC => null
20747 ,X_SUBPRJ_PPL_ETC_COST_TC => null
20748 ,X_SUBPRJ_PPL_ETC_COST_FC => null
20749 ,X_SUBPRJ_PPL_ETC_COST_PC => null
20750 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
20751 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
20752 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
20753 ,X_SUBPRJ_EARNED_VALUE => null
20754 ,X_CURRENT_FLAG => l_current_flag
20755 ,X_PROJFUNC_COST_RATE_TYPE => null
20756 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
20757 ,X_PROJFUNC_COST_RATE_DATE => null
20758 ,X_PROJ_COST_RATE_TYPE => null
20759 ,X_PROJ_COST_EXCHANGE_RATE => null
20760 ,X_PROJ_COST_RATE_DATE => null
20761 ,X_TXN_CURRENCY_CODE => null
20762 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
20763 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
20764 ,X_OTH_QUANTITY_TO_DATE => null
20765 ,X_OTH_ETC_QUANTITY => null
20766 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
20767 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
20768 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
20769 ,X_OTH_ETC_RAWCOST_TC => null
20770 ,X_OTH_ETC_RAWCOST_FC => null
20771 ,X_OTH_ETC_RAWCOST_PC => null
20772 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
20773 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
20774 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
20775 ,X_PPL_ETC_RAWCOST_TC => null
20776 ,X_PPL_ETC_RAWCOST_FC => null
20777 ,X_PPL_ETC_RAWCOST_PC => null
20778 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
20779 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
20780 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
20781 ,X_EQPMT_ETC_RAWCOST_TC => null
20782 ,X_EQPMT_ETC_RAWCOST_FC => null
20783 ,X_EQPMT_ETC_RAWCOST_PC => null
20784 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
20785 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
20786 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
20787 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
20788 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
20789 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
20790 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
20791 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
20792 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
20793 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
20794 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
20795 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
20796 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
20797 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
20798 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
20799 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
20800 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
20801 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
20802 );
20803 -- FPM Dev CR 6
20804 IF Fnd_Msg_Pub.count_msg > 0 THEN
20805 RAISE FND_API.G_EXC_ERROR;
20806 END IF;
20807
20808 IF g1_debug_mode = 'Y' THEN
20809 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'COMPLETED ', x_Log_Level=> 3);
20810 END IF;
20811
20812 END IF; --<l_db_action>
20813
20814
20815 IF g1_debug_mode = 'Y' THEN
20816 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'EXITING ', x_Log_Level=> 3);
20817 END IF;
20818
20819 EXCEPTION
20820 when FND_API.G_EXC_ERROR then
20821 x_return_status := FND_API.G_RET_STS_ERROR;
20822 l_msg_count := Fnd_Msg_Pub.count_msg;
20823
20824 if p_commit = FND_API.G_TRUE then
20825 rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
20826 end if;
20827
20828 IF l_msg_count = 1 AND x_msg_data IS NULL
20829 THEN
20830 Pa_Interface_Utils_Pub.get_messages
20831 ( p_encoded => Fnd_Api.G_TRUE
20832 , p_msg_index => 1
20833 , p_msg_count => l_msg_count
20834 , p_msg_data => l_msg_data
20835 , p_data => l_data
20836 , p_msg_index_out => l_msg_index_out);
20837 x_msg_data := l_data;
20838 x_msg_count := l_msg_count;
20839 ELSE
20840 x_msg_count := l_msg_count;
20841 END IF;
20842
20843 when FND_API.G_EXC_UNEXPECTED_ERROR then
20844 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
20845 x_msg_count := 1;
20846 x_msg_data := SQLERRM;
20847
20848 if p_commit = FND_API.G_TRUE then
20849 rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
20850 end if;
20851 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
20852 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
20853 p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
20854 p_error_text => SUBSTRB(SQLERRM,1,120));
20855 when OTHERS then
20856 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
20857 x_msg_count := 1;
20858 x_msg_data := SUBSTRB(SQLERRM,1,120);
20859 if p_commit = FND_API.G_TRUE then
20860 rollback to UPDATE_DELIVERABLE_PROGRESS;
20861 end if;
20862
20863 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
20864 p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
20865 p_error_text => SUBSTRB(SQLERRM,1,120));
20866 raise;
20867
20868
20869 END UPDATE_FINANCIAL_TASK_PROGRESS;
20870
20871 -- Progress Management Changes. Bug # 3420093.
20872
20873 PROCEDURE re_rollup_progress(
20874 p_api_version IN NUMBER :=1.0
20875 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
20876 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
20877 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
20878 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
20879 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
20880 ,p_debug_mode IN VARCHAR2 :='N'
20881 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20882 ,p_project_id IN NUMBER
20883 ,p_structure_version_id IN NUMBER
20884 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20885 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
20886 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20887 )
20888
20889 IS
20890 l_api_name CONSTANT VARCHAR2(30) := 'RE_ROLLUP_PROGRESS';
20891 l_api_version CONSTANT NUMBER := p_api_version;
20892 l_user_id NUMBER := FND_GLOBAL.USER_ID;
20893 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
20894 l_return_status VARCHAR2(1);
20895 l_msg_count NUMBER;
20896 l_msg_data VARCHAR2(250);
20897 l_msg_code VARCHAR2(12000);
20898
20899
20900 -- Bug 3693757 : This cursor is wrong as it may return wrong task_wt_basis_code of some other projects' task
20901
20902 cursor l_ve_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
20903 select as_of_date, task_wt_basis_code
20904 from pa_progress_rollup
20905 where project_id = p_project_id -- Bug 3693757
20906 and structure_version_id = p_structure_version_id -- Bug 3693757
20907 and object_type = 'PA_STRUCTURES' -- Bug 3693757
20908 ;
20909 /* Bug 3693757
20910 and as_of_date = (select max(as_of_date)
20911 from pa_progress_rollup
20912 where project_id = p_project_id
20913 and structure_version_id = p_structure_version_id
20914 and current_flag = 'Y');
20915 */
20916 --bug # 3792713 Satish start
20917 l_published_structure VARCHAR2(1) ;
20918
20919 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
20920 IS
20921 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
20922 FROM pa_proj_elem_ver_structure str
20923 , pa_project_statuses status
20924 where str.element_version_id = c_structure_version_id
20925 AND str.project_id = c_project_id
20926 AND str.status_code = status.project_status_code;
20927
20928 --bug # 3792713 Satish end
20929
20930 cursor l_vd_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
20931 select as_of_date, task_wt_basis_code
20932 from pa_progress_rollup
20933 where project_id = p_project_id
20934 and structure_version_id = p_structure_version_id;
20935
20936 --added by maansari for
20937 cursor cur_task_weight IS
20938 select pppa.task_weight_basis_code
20939 from pa_proj_progress_attr pppa
20940 where pppa.project_id = p_project_id
20941 and pppa.structure_type = 'WORKPLAN';
20942
20943 l_as_of_date DATE;
20944 l_task_wt_basis_code VARCHAR2(30);
20945 l_base_struct_ver_id NUMBER;
20946
20947 BEGIN
20948 IF g1_debug_mode = 'Y' THEN
20949 pa_debug.init_err_stack ('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
20950 END IF;
20951
20952 IF (p_debug_mode = 'Y') THEN
20953 IF g1_debug_mode = 'Y' THEN
20954 pa_debug.debug('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
20955 END IF;
20956 END IF;
20957 IF (p_commit = FND_API.G_TRUE) THEN
20958 savepoint RE_ROLLUP_PROGRESS;
20959 END IF;
20960
20961 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
20962 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20963 END IF;
20964
20965 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
20966 FND_MSG_PUB.initialize;
20967 END IF;
20968
20969 x_return_status := FND_API.G_RET_STS_SUCCESS;
20970
20971 -- Get as_of_date and task_wt_basis_code for the project.
20972
20973 /* replacing with cur_task_weight
20974 if (PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'Y') then
20975
20976 open l_ve_cur(p_project_id, p_structure_version_id);
20977 fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
20978 close l_ve_cur;
20979 else
20980
20981 open l_vd_cur(p_project_id, p_structure_version_id);
20982 fetch l_vd_cur into l_as_of_date, l_task_wt_basis_code;
20983 close l_vd_cur;
20984 end if;
20985 */
20986
20987 --bug # 3792713 Satish start
20988 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
20989 FETCH cur_check_published_version INTO l_published_structure;
20990 CLOSE cur_check_published_version;
20991
20992 IF l_published_structure = 'Y'
20993 THEN
20994 return;
20995 ELSE
20996 open l_ve_cur(p_project_id, p_structure_version_id);
20997 fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
20998 close l_ve_cur;
20999 END IF;
21000 --bug # 3792713 Satish end
21001
21002
21003
21004 --Added by rtarway for BUG # 3616810, check if as_of_date is null
21005 if (l_as_of_date IS NOT NULL ) then
21006 -- Call Rollup API for the whole structure.
21007
21008 -- Bug 3764224 : calling it here as this procedure gets called two times in publishing flow. One for
21009 -- Publsihed version and one for working version
21010 -- Bug 3693757 : 13-Jul-04 PJI tmp1 table shd be populated so that rollup API can access actuals values in RE_ROLLUP_PROGRESS
21011 BEGIN
21012 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
21013 pa_progress_pub.populate_pji_tab_for_plan(
21014 p_init_msg_list => FND_API.G_FALSE,
21015 p_project_id => p_project_id,
21016 p_structure_version_id => p_structure_version_id,
21017 p_baselined_str_ver_id => l_base_struct_ver_id,
21018 p_structure_type => 'WORKPLAN',
21019 x_return_status => x_return_status,
21020 x_msg_count => x_msg_count,
21021 x_msg_data => x_msg_data
21022 );
21023
21024 EXCEPTION
21025 WHEN OTHERS THEN
21026 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21027 p_procedure_name => 'RE_ROLLUP_PROGRESS',
21028 p_error_text => SUBSTRB('PA_PROGRESS_PUB.populate_pji_tab_for_plan:'||SQLERRM,1,240));
21029 RAISE FND_API.G_EXC_ERROR;
21030 END;
21031
21032
21033 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21034 Raise FND_API.G_EXC_ERROR;
21035 END IF;
21036
21037
21038 OPEN cur_task_weight;
21039 FETCH cur_task_weight INTO l_task_wt_basis_code;
21040 CLOSE cur_task_weight;
21041
21042 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
21043 p_init_msg_list => p_init_msg_list
21044 ,p_commit => p_commit
21045 ,p_validate_only => p_validate_only
21046 --Added by rtarway for BUG 3696263
21047 ,p_calling_module => p_calling_module
21048 ,p_project_id => p_project_id
21049 ,p_structure_version_id => p_structure_version_id
21050 ,p_as_of_date => l_as_of_date
21051 ,p_wp_rollup_method => l_task_wt_basis_code
21052 ,p_rollup_entire_wbs => 'Y'
21053 ,x_return_status => l_return_status
21054 ,x_msg_count => l_msg_count
21055 ,x_msg_data => l_msg_data);
21056
21057 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21058 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
21059 p_msg_name => l_msg_data);
21060 x_msg_data := l_msg_data;
21061 x_return_status := 'E';
21062 x_msg_count := l_msg_count;
21063 RAISE FND_API.G_EXC_ERROR;
21064 END IF;
21065 end if;
21066
21067 IF (p_commit = FND_API.G_TRUE) THEN
21068 COMMIT;
21069 END IF;
21070 EXCEPTION
21071 when FND_API.G_EXC_ERROR then
21072 if p_commit = FND_API.G_TRUE then
21073 rollback to RE_ROLLUP_PROGRESS;
21074 end if;
21075 x_return_status := FND_API.G_RET_STS_ERROR;
21076 when FND_API.G_EXC_UNEXPECTED_ERROR then
21077 if p_commit = FND_API.G_TRUE then
21078 rollback to RE_ROLLUP_PROGRESS;
21079 end if;
21080 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21081 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21082 p_procedure_name => 'RE_ROLLUP_PROGRESS',
21083 p_error_text => SUBSTRB(SQLERRM,1,120));
21084 when OTHERS then
21085 if p_commit = FND_API.G_TRUE then
21086 rollback to RE_ROLLUP_PROGRESS;
21087 end if;
21088 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21089 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21090 p_procedure_name => 'RE_ROLLUP_PROGRESS',
21091 p_error_text => SUBSTRB(SQLERRM,1,120));
21092 raise;
21093 END re_rollup_progress;
21094
21095 -- Bug 3633293 : Added populate_bulk_pji_tab_for_plan
21096 PROCEDURE populate_bulk_pji_tab_for_plan(
21097 p_api_version IN NUMBER :=1.0
21098 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
21099 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
21100 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
21101 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
21102 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
21103 ,p_debug_mode IN VARCHAR2 :='N'
21104 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21105 ,p_person_id NUMBER
21106 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21107 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
21108 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21109 ) AS
21110 l_api_name CONSTANT VARCHAR2(30) := 'populate_pji_tab_for_plan';
21111 l_api_version CONSTANT NUMBER := p_api_version;
21112 l_return_status VARCHAR2(1);
21113 l_msg_count NUMBER;
21114 l_msg_data VARCHAR2(250);
21115 l_baseline_version_id NUMBER;
21116
21117 CURSOR c_get_distinct_str_ver_id IS
21118 SELECT distinct asgn.project_id project_id, asgn.structure_version_id structure_version_id
21119 FROM pa_task_asgmts_v asgn
21120 , pa_proj_elem_ver_structure str
21121 , pa_proj_progress_attr prog
21122 , pa_proj_structure_types pstype
21123 WHERE asgn.person_id = p_person_id
21124 AND asgn.structure_version_id = str.element_version_id
21125 AND asgn.project_id = str.project_id
21126 AND str.latest_eff_published_flag = 'Y'
21127 AND str.proj_element_id = pstype.proj_element_id
21128 AND pstype.structure_type_id = 1
21129 AND asgn.project_id = prog.project_id
21130 AND prog.structure_type = 'WORKPLAN'
21131 AND prog.allow_collab_prog_entry = 'Y'
21132 UNION
21133 SELECT distinct elem.project_id project_id, str.element_version_id structure_version_id
21134 FROM pa_proj_elements elem
21135 , pa_proj_elem_ver_structure str
21136 , pa_proj_progress_attr prog
21137 , pa_proj_structure_types pstype
21138 WHERE elem.manager_person_id = p_person_id
21139 AND elem.object_type = 'PA_TASKS'
21140 AND elem.project_id = str.project_id
21141 AND str.latest_eff_published_flag = 'Y'
21142 AND str.proj_element_id = pstype.proj_element_id
21143 AND pstype.structure_type_id = 1
21144 AND elem.project_id = prog.project_id
21145 AND prog.structure_type = 'WORKPLAN'
21146 AND prog.allow_collab_prog_entry = 'Y';
21147 BEGIN
21148
21149 IF g1_debug_mode = 'Y' THEN
21150 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
21151 END IF;
21152
21153 IF (p_debug_mode = 'Y') THEN
21154 IF g1_debug_mode = 'Y' THEN
21155 pa_debug.debug('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
21156 END IF;
21157 END IF;
21158
21159 IF (p_commit = FND_API.G_TRUE) THEN
21160 savepoint populate_bulk_pji_tab_for_plan;
21161 END IF;
21162
21163 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21164 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21165 END IF;
21166
21167 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21168 FND_MSG_PUB.initialize;
21169 END IF;
21170
21171 x_return_status := FND_API.G_RET_STS_SUCCESS;
21172
21173 FOR rec IN c_get_distinct_str_ver_id LOOP
21174 l_baseline_version_id := null;
21175 l_baseline_version_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec.project_id);
21176 IF l_baseline_version_id = -1 THEN
21177 l_baseline_version_id := null;
21178 END IF;
21179
21180
21181 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
21182 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
21183 p_calling_module => p_calling_module
21184 ,p_project_id => rec.project_id
21185 ,p_structure_version_id => rec.structure_version_id
21186 ,p_baselined_str_ver_id => l_baseline_version_id
21187 ,p_program_rollup_flag => 'Y'
21188 ,p_calling_context => 'ROLLUP'
21189 ,x_return_status => l_return_status
21190 ,x_msg_count => l_msg_count
21191 ,x_msg_data => l_msg_data
21192 );
21193 /*
21194 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
21195 p_project_id => rec.project_id,
21196 p_struct_ver_id => rec.structure_version_id,
21197 p_base_struct_ver_id => l_baseline_version_id,
21198 x_return_status => l_return_status,
21199 x_msg_code => l_msg_data );
21200 */
21201 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21202 x_msg_data := l_msg_data;
21203 x_return_status := 'E';
21204 x_msg_count := l_msg_count;
21205 RAISE FND_API.G_EXC_ERROR;
21206 END IF;
21207 END LOOP;
21208
21209
21210 EXCEPTION
21211 when FND_API.G_EXC_ERROR then
21212 if p_commit = FND_API.G_TRUE then
21213 rollback to populate_bulk_pji_tab_for_plan;
21214 end if;
21215 x_return_status := FND_API.G_RET_STS_ERROR;
21216 when FND_API.G_EXC_UNEXPECTED_ERROR then
21217 if p_commit = FND_API.G_TRUE then
21218 rollback to populate_bulk_pji_tab_for_plan;
21219 end if;
21220 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21221 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21222 p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
21223 p_error_text => SUBSTRB(SQLERRM,1,120));
21224 when OTHERS then
21225 if p_commit = FND_API.G_TRUE then
21226 rollback to populate_bulk_pji_tab_for_plan;
21227 end if;
21228 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21229 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21230 p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
21231 p_error_text => SUBSTRB(SQLERRM,1,120));
21232 raise;
21233 END populate_bulk_pji_tab_for_plan;
21234
21235
21236 -- Bug 3614828 : Created this procedure for partial rollup.
21237 -- Start of comments
21238 -- API name : ASGN_DLV_TO_TASK_ROLLUP_PVT
21239 -- Type : Private
21240 -- Pre-reqs : None.
21241 -- Purpose : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
21242 -- : This does partial rollup of working progress records
21243 -- History : 15-JUNE-04 amksingh Rewritten For FPM Development Bug 3614828
21244 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
21245 -- PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT().
21246 -- End of comments
21247
21248 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
21249 p_api_version IN NUMBER :=1.0
21250 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- Since it is a private API so false
21251 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
21252 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
21253 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
21254 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
21255 ,p_debug_mode IN VARCHAR2 :='N'
21256 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21257 ,p_project_id IN NUMBER
21258 ,p_task_id IN NUMBER
21259 ,p_task_version_id IN NUMBER
21260 ,p_as_of_date IN DATE
21261 ,p_structure_version_id IN NUMBER
21262 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
21263 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21264 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
21265 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21266 )
21267 IS
21268
21269 l_api_name CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT' ;
21270 l_api_version CONSTANT NUMBER := 1.0 ;
21271 l_return_status VARCHAR2(1) ;
21272 l_msg_count NUMBER ;
21273 l_msg_data VARCHAR2(250) ;
21274 l_data VARCHAR2(250) ;
21275 l_msg_index_out NUMBER ;
21276 l_error_msg_code VARCHAR2(250) ;
21277 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
21278 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
21279 g1_debug_mode VARCHAR2(1) ;
21280
21281 BEGIN
21282
21283 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
21284
21285 IF g1_debug_mode = 'Y' THEN
21286 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT');
21287 END IF;
21288
21289 IF g1_debug_mode = 'Y' THEN
21290 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
21291 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
21292 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
21293 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
21294 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
21295 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
21296 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
21297 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
21298 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21299 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
21300 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
21301 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
21302 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
21303 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
21304 END IF;
21305
21306 IF p_structure_version_id IS NULL THEN
21307 return;
21308 END IF;
21309
21310 IF (p_commit = FND_API.G_TRUE) THEN
21311 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT;
21312 END IF;
21313
21314 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21315 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21316 END IF;
21317
21318 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21319 FND_MSG_PUB.initialize;
21320 END IF;
21321
21322 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
21323
21324 PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT(
21325 p_api_version => p_api_version
21326 ,p_init_msg_list => p_init_msg_list
21327 ,p_commit => p_commit
21328 ,p_validate_only => p_validate_only
21329 ,p_validation_level => p_validation_level
21330 ,p_calling_module => p_calling_module
21331 ,p_debug_mode => p_debug_mode
21332 ,p_max_msg_count => p_max_msg_count
21333 ,p_project_id => p_project_id
21334 ,p_task_id => p_task_id
21335 ,p_task_version_id => p_task_version_id
21336 ,p_as_of_date => p_as_of_date
21337 ,p_structure_version_id => p_structure_version_id
21338 ,p_wp_rollup_method => p_wp_rollup_method
21339 ,x_return_status => l_return_status
21340 ,x_msg_count => l_msg_count
21341 ,x_msg_data => l_msg_data);
21342
21343 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21344 x_msg_data := l_msg_data;
21345 x_return_status := 'E';
21346 x_msg_count := l_msg_count;
21347 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21348 END IF;
21349
21350 x_return_status := FND_API.G_RET_STS_SUCCESS;
21351
21352 IF (p_commit = FND_API.G_TRUE) THEN
21353 COMMIT;
21354 END IF;
21355
21356
21357 IF g1_debug_mode = 'Y' THEN
21358 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT END', x_Log_Level=> 3);
21359 END IF;
21360
21361 EXCEPTION
21362 WHEN FND_API.G_EXC_ERROR THEN
21363 IF p_commit = FND_API.G_TRUE THEN
21364 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21365 END IF;
21366 x_return_status := FND_API.G_RET_STS_ERROR;
21367 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
21368 IF p_commit = FND_API.G_TRUE THEN
21369 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21370 END IF;
21371 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21372 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21373 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
21374 p_error_text => SUBSTRB(SQLERRM,1,120));
21375 WHEN OTHERS THEN
21376 IF p_commit = FND_API.G_TRUE THEN
21377 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21378 END IF;
21379 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21380 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21381 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
21382 p_error_text => SUBSTRB(SQLERRM,1,120));
21383 raise;
21384 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
21385
21386 -- Start of comments
21387 -- API name : COPY_PROGRESS_ACT_ETC
21388 -- Type : Private
21389 -- Pre-reqs : None.
21390 -- Purpose : This API is intdended to be used for copying actuals and etc from one structure
21391 -- version to another. If there is no progress records exists then the api pass null
21392 -- for act and etc.
21393 -- History : 30-JUNE-04 Rakesh Raghavan Rewritten For FPM Development Bug
21394 -- 28-JUL-2004 Rakesh Raghavan Added parameter: p_last_pub_str_version_id
21395 -- and modified API.
21396 -- End of comments
21397
21398 PROCEDURE COPY_PROGRESS_ACT_ETC(
21399 p_api_version IN NUMBER :=1.0
21400 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- FALSE for private API.
21401 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
21402 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
21403 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
21404 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
21405 ,p_debug_mode IN VARCHAR2 :='N'
21406 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21407 ,p_project_id IN NUMBER
21408 ,p_src_str_ver_id IN NUMBER
21409 ,p_dst_str_ver_id IN NUMBER
21410 ,p_pub_wp_with_prog_flag IN VARCHAR2 := 'Y'
21411 ,p_calling_context IN VARCHAR2 := 'PUBLISH'
21412 ,p_last_pub_str_version_id IN NUMBER := NULL
21413 ,p_copy_actuals_flag IN VARCHAR2 := 'Y'
21414 ,p_copy_ETC_flag IN VARCHAR2 := 'Y'
21415 ,p_pji_conc_prog_context IN VARCHAR2 := 'N' -- Fix for Bug # 3996159.
21416 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21417 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
21418 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21419 ) IS
21420
21421 l_api_name CONSTANT VARCHAR(30) := 'COPY_PROGRESS_ACT_ETC';
21422 l_api_version CONSTANT NUMBER := 1.0;
21423 l_return_status VARCHAR2(1);
21424 l_msg_count NUMBER;
21425 l_msg_data VARCHAR2(250);
21426 l_data VARCHAR2(250);
21427 l_msg_index_out NUMBER;
21428 l_error_msg_code VARCHAR2(250);
21429 l_calling_context VARCHAR2(15);
21430
21431 -- This API will be called in three contexts.
21432 -- 1. From Publish structure API where it needs to get the progress data from published wp version and push to PJI API
21433 -- for the new workplan version which is going to be published.
21434 -- 2. PJI team sometimes truncates the data for a version. In thi scase they will call this API to push the progress data
21435 -- again back to PJI tables. Not sure about this context as how PJI will call. Majid is following up on this.
21436 -- 3. B7 F Team will pass the context as RBS. They need to resummarize the data when in working pw version RBS is made from
21437 -- null to not null. In this case only ETC needs to be pushed as PJi will derive actuals as planned-etc.
21438
21439 CURSOR cur_working_wp_progress is
21440 select *
21441 from pa_progress_rollup ppr
21442 where ppr.project_id = p_project_id
21443 and ppr.structure_version_id = p_src_str_ver_id
21444 and ppr.object_type = 'PA_ASSIGNMENTS'
21445 and structure_type = 'WORKPLAN'
21446 and current_flag = 'Y';
21447
21448
21449 CURSOR cur_lp_progress is
21450 select *
21451 from pa_progress_rollup ppr
21452 where ppr.project_id = p_project_id
21453 and ppr.structure_version_id is null
21454 and ppr.object_type = 'PA_ASSIGNMENTS'
21455 and structure_type = 'WORKPLAN'
21456 and current_flag = 'Y';
21457 -- Using current_flag = 'Y' may push data of working progress too. Is it fine?
21458
21459 l_working_prog VARCHAR2(1) := 'N';
21460
21461 l_ppr_rec pa_progress_rollup%rowtype;
21462
21463 -- Bug 3764224 : Changed the cusrsor def'n
21464 cursor cur_ptav (p_object_id NUMBER, p_task_id NUMBER) is
21465 select ptav2.resource_list_member_id, ptav2.txn_currency_code
21466 ,ptav2.resource_class_code, ptav2.rate_based_flag
21467 ,ptav2.rbs_element_id,planned_quantity,
21468 planned_bur_cost_txn_cur,
21469 planned_bur_cost_projfunc,
21470 planned_bur_cost_proj_cur,
21471 planned_raw_cost_txn_cur,
21472 planned_raw_cost_projfunc,
21473 planned_raw_cost_proj_cur
21474 from pa_task_asgmts_v ptav2
21475 where ptav2.resource_list_member_id = p_object_id
21476 and ptav2.structure_version_id = p_dst_str_ver_id
21477 and ptav2.task_id = p_task_id
21478 ;
21479
21480 l_ptav_rec cur_ptav%rowtype;
21481
21482 l_act_TXN_COST_this_period NUMBER := 0;
21483 l_act_PRJ_COST_this_period NUMBER := 0;
21484 l_act_POU_COST_this_period NUMBER := 0;
21485 l_act_effort_this_period NUMBER := 0;
21486 l_act_TXN_RAWCOST_this_period NUMBER := 0;
21487 l_act_PRJ_RAWCOST_this_period NUMBER := 0;
21488 l_act_POU_RAWCOST_this_period NUMBER := 0;
21489 l_etc_TXN_COST_this_period NUMBER := 0;
21490 l_etc_PRJ_COST_this_period NUMBER := 0;
21491 l_etc_POU_COST_this_period NUMBER := 0;
21492 l_etc_TXN_RAWCOST_this_period NUMBER := 0;
21493 l_etc_PRJ_RAWCOST_this_period NUMBER := 0;
21494 l_etc_POU_RAWCOST_this_period NUMBER := 0;
21495 l_etc_effort_this_period NUMBER := 0;
21496
21497 l_new_object_id NUMBER;
21498 l_actuals_pushed VARCHAR2(1) :='N';
21499 l_msg_code VARCHAR2(32);
21500 l_src_str_ver_publsihed VARCHAR2(1);
21501 l_resource_class_code pa_task_assignments_v.resource_class_code%TYPE;
21502 L_TXN_CURRENCY_CODE pa_task_assignments_v.txn_currency_code%TYPE;
21503 L_RATE_BASED_FLAG varchar2(1);
21504 L_RBS_ELEMENT_ID number;
21505 l_prog_mode varchar2(1);
21506
21507 cursor cur_task_assgn(p_project_id NUMBER, p_object_version_id NUMBER) is
21508 select count(*)
21509 from pa_progress_rollup ppr
21510 where ppr.project_id = p_project_id
21511 and ppr.object_version_id = p_object_version_id
21512 and ppr.object_type = 'PA_ASSIGNMENTS'
21513 and ppr.structure_version_id is null
21514 and ppr.structure_type = 'WORKPLAN'
21515 and ppr.current_flag = 'Y';
21516
21517 L_TASK_ASSGN number;
21518
21519 /* bug 4871809 this cursor is not used
21520 --bug 3968791
21521 CURSOR cur_select_all_assgns
21522 IS
21523 SELECT ptav.*
21524 FROM pa_progress_rollup ppr2
21525 --,pa_task_assignments_v ptav --bug 3967374
21526 ,pa_task_asgmts_v ptav
21527 WHERE ppr2.project_id=p_project_id
21528 AND ptav.project_id=p_project_id
21529 AND ppr2.object_id = ptav.task_id
21530 AND (ptav.resource_list_member_id ) not in (
21531 SELECT object_id
21532 FROM pa_progress_rollup ppr
21533 where ppr.project_id=p_project_id
21534 and ppr.structure_version_id is null
21535 and ppr.current_flag = 'Y'
21536 and ppr.object_type = 'PA_ASSIGNMENTS'
21537 and ppr.structure_type = 'WORKPLAN'
21538 and ppr.proj_element_id = ppr2.proj_element_id
21539 )
21540 AND ptav.structure_version_id = p_dst_str_ver_id
21541 and ppr2.structure_version_id is null
21542 and ppr2.current_flag = 'Y'
21543 and ppr2.structure_type = 'WORKPLAN'
21544 ;*/
21545 --end bug 3968791
21546 Cursor cur_Summerized_Actuals IS
21547 Select count(1)
21548 FROM PA_Proj_Elem_Ver_Structure ppevs,
21549 PA_Proj_Elements ppe,
21550 PA_Proj_Structure_Types ppst,
21551 PA_Structure_types pst
21552 WHERE ppevs.Project_ID = P_Project_ID
21553 AND ppevs.status_code = 'STRUCTURE_PUBLISHED'
21554 AND ppevs.proj_element_id = ppe.Proj_Element_ID
21555 AND ppe.Project_ID = ppevs.Project_ID
21556 AND ppe.Proj_Element_ID = ppst.Proj_Element_ID
21557 AND ppst.Structure_Type_ID = pst.Structure_Type_ID
21558 AND pst.structure_type = 'WORKPLAN';
21559
21560 l_count number;
21561 l_index number;
21562 l_plan_type_id number;
21563 l_plan_version_id number;
21564 l_period_type varchar2(15);
21565 l_org_id number;
21566 l_proj_curr_code varchar2(15);
21567 l_proj_func_curr_code varchar2(15);
21568 cursor proj_info is
21569 select org_id, project_currency_code, projfunc_currency_code
21570 from pa_projects_all
21571 where project_id = p_project_id;
21572
21573 ETC_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21574 ETC_PROJECT_ORG_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21575 ETC_PROJECT_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21576 ETC_STRUCT_VER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21577 ETC_PERIOD_NAME PA_PLSQL_DATATYPES.Char80TabTyp;
21578 ETC_CALENDAR_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
21579 ETC_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
21580 ETC_END_DATE PA_PLSQL_DATATYPES.DateTabTyp;
21581 ETC_RBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21582 ETC_RBS_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21583 ETC_PLAN_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21584 ETC_PLAN_TYPE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
21585 ETC_WP_VERSION_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
21586 ETC_ROLLUP_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
21587 ETC_PRJ_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
21588 ETC_PFC_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
21589 ETC_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
21590 ETC_QUANTITY PA_PLSQL_DATATYPES.AmtTabTyp;
21591 ETC_TXN_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21592 ETC_PRJ_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21593 ETC_PFC_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21594 ETC_TXN_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21595 ETC_PRJ_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21596 ETC_PFC_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
21597 ETC_RESOURCE_CLASS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
21598 ETC_RATE_BASED_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
21599
21600 BEGIN
21601
21602 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
21603
21604 IF g1_debug_mode = 'Y' THEN
21605 pa_debug.init_err_stack ('PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC');
21606 END IF;
21607
21608 IF (p_commit = FND_API.G_TRUE) THEN
21609 savepoint COPY_PROGRESS_ACT_ETC;
21610 END IF;
21611
21612 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21613 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21614 END IF;
21615
21616 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21617 FND_MSG_PUB.initialize;
21618 END IF;
21619
21620 IF g1_debug_mode = 'Y' THEN
21621 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC Passed Parameters', x_Log_Level=> 3);
21622 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21623 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_src_str_ver_id='||p_src_str_ver_id, x_Log_Level=> 3);
21624 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_dst_str_ver_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21625 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pub_wp_with_prog_flag='||p_pub_wp_with_prog_flag, x_Log_Level=> 3);
21626 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_calling_context='||p_calling_context, x_Log_Level=> 3);
21627 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_last_pub_str_version_id='||p_last_pub_str_version_id, x_Log_Level=> 3);
21628 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_copy_actuals_flag='||p_copy_actuals_flag, x_Log_Level=> 3);
21629 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_copy_ETC_flag='||p_copy_ETC_flag, x_Log_Level=> 3);
21630 END IF;
21631
21632
21633 x_return_status := FND_API.G_RET_STS_SUCCESS;
21634 l_calling_context := p_calling_context;
21635 -- code to make sure don't execute this procedure for first time publish structure
21636 if (l_calling_context = 'PUBLISH') then
21637 OPEN cur_Summerized_Actuals;
21638 FETCH cur_Summerized_Actuals INTO l_count;
21639 close cur_Summerized_Actuals;
21640 if l_count = 1 then
21641 l_calling_context := 'FIRST_PUBLISH';
21642 end if;
21643 end if;
21644
21645 -- 3627315 Issue 8, We should not open the cursor cur_working_wp_progress unneccesarily for PUBLSIH context
21646 -- as in this context there will never be working wp version progress
21647 -- For PJI context, it should first check whthere the source str version id is publihed or not.
21648
21649
21650 l_src_str_ver_publsihed := PA_PROJECT_STRUCTURE_UTILS.Check_Struc_Ver_Published(p_project_id, p_src_str_ver_id);
21651
21652
21653 open proj_info;
21654 fetch proj_info into l_org_id,l_proj_curr_code,l_proj_func_curr_code;
21655 close proj_info;
21656 l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase(p_dst_str_ver_id);
21657 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
21658 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
21659 p_project_id => p_project_id,
21660 p_plan_type_id => -1,
21661 p_proj_str_ver_id => p_dst_str_ver_id) ;
21662 IF ( l_calling_context = 'PUBLISH')
21663 OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
21664 l_prog_mode := 'P';
21665 OPEN cur_lp_progress;
21666 ELSIF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')
21667 OR l_calling_context = 'RBS') THEN
21668 l_prog_mode := 'W';
21669 OPEN cur_working_wp_progress;
21670 END IF;
21671
21672 l_index := 0;
21673 LOOP
21674 if (l_prog_mode = 'P') then
21675 FETCH cur_lp_progress INTO l_ppr_rec;
21676 EXIT WHEN cur_lp_progress%NOTFOUND;
21677 elsif (l_prog_mode = 'W') then
21678 FETCH cur_working_wp_progress INTO l_ppr_rec;
21679 EXIT WHEN cur_working_wp_progress%NOTFOUND;
21680 elsif (l_calling_context = 'FIRST_PUBLISH') then
21681 exit;
21682 end if;
21683
21684 -- 4417665 : We will delete assignment rollup records which are unplanned and got remapped to some
21685 -- other assignments after resource list modifications.
21686 -- Note that we could have deleted these in PA_TASK_ASSIGNMENTS_PVT.Copy_Missing_Unplanned_Asgmts too,
21687 -- But there it is difficult, so deleting here
21688
21689 -- Derive the value for l_new_object_id.
21690 l_ptav_rec := null;
21691 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21692 FETCH cur_ptav INTO l_ptav_rec;
21693 CLOSE cur_ptav;
21694
21695 -- 4417665 : Added Beloe IF and code inside the IF
21696 IF (l_ptav_rec.rbs_element_id IS NULL
21697 AND (((nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)
21698 +nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)) = 0 )
21699 AND
21700 ((nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)) = 0)
21701 AND
21702 ((nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)
21703 +nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)) = 0)
21704 AND
21705 ((nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)) = 0)
21706 )
21707 )
21708 THEN
21709 IF l_prog_mode = 'P' THEN
21710 DELETE from pa_progress_rollup
21711 WHERE project_id = p_project_id
21712 AND structure_version_id is null
21713 AND structure_type = 'WORKPLAN'
21714 AND object_type = 'PA_ASSIGNMENTS'
21715 AND object_id = l_ppr_rec.object_id
21716 AND proj_element_id = l_ppr_rec.proj_element_id;
21717 END IF;
21718 IF l_prog_mode = 'W' THEN
21719 DELETE from pa_progress_rollup
21720 WHERE project_id = p_project_id
21721 AND structure_version_id = p_src_str_ver_id
21722 AND structure_type = 'WORKPLAN'
21723 AND object_type = 'PA_ASSIGNMENTS'
21724 AND object_id = l_ppr_rec.object_id
21725 AND proj_element_id = l_ppr_rec.proj_element_id;
21726 END IF;
21727 ELSE
21728
21729 l_index := l_index + 1;
21730 ETC_PROJECT_ID(l_index) := p_project_id;
21731 ETC_PROJECT_ELEMENT_ID(l_index) := l_ppr_rec.proj_element_id;
21732 ETC_STRUCT_VER_ID(l_index) := p_dst_str_ver_id;
21733 if (l_period_type = 'P') then
21734 ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_pa_period_name;
21735 elsif (l_period_type = 'G') then
21736 ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_gl_period_name;
21737 else
21738 ETC_PERIOD_NAME(l_index) := null;
21739 end if;
21740 ETC_CALENDAR_TYPE(l_index) := l_period_type;
21741 ETC_START_DATE(l_index) := null;
21742 ETC_END_DATE(l_index) := l_ppr_rec.as_of_date;
21743 ETC_RBS_VERSION_ID(l_index) := null;
21744 ETC_PLAN_VERSION_ID(l_index) := l_plan_version_id;
21745 ETC_PLAN_TYPE_ID(l_index) := l_plan_type_id;
21746 ETC_WP_VERSION_FLAG(l_index) := 'Y';
21747 ETC_ROLLUP_TYPE(l_index) := 'W';
21748 ETC_PROJECT_ORG_ID(l_index) := l_org_id;
21749 ETC_PRJ_CURRENCY_CODE(l_index) := l_proj_curr_code;
21750 ETC_PFC_CURRENCY_CODE(l_index) := l_proj_func_curr_code;
21751
21752 -- 4417665 : Moving this code up
21753 /*
21754 -- Derive the value for l_new_object_id.
21755 l_ptav_rec := null;
21756 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21757 FETCH cur_ptav INTO l_ptav_rec;
21758 CLOSE cur_ptav;
21759 */
21760
21761 ETC_RBS_ELEMENT_ID(l_index) := l_ptav_rec.rbs_element_id;
21762 ETC_RATE_BASED_FLAG(l_index) := l_ptav_rec.rate_based_flag;
21763 etc_resource_class_code(l_index) := l_ptav_rec.resource_class_code;
21764 ETC_TXN_CURRENCY_CODE(l_index) := l_ptav_rec.txn_currency_code;
21765
21766 /*l_act_TXN_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)
21767 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
21768 l_act_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_pc,0)
21769 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
21770 l_act_POU_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_fc,0)
21771 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
21772 l_act_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_tc,0)
21773 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
21774 l_act_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_pc,0)
21775 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
21776 l_act_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_fc,0)
21777 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
21778 l_act_effort_this_period := (nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)--+nvl(l_ppr_rec.oth_quantity_to_date,0))Oth quantity is not required as it can be in diffrent UOM
21779 +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
21780 */
21781 ETC_TXN_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)) - l_ptav_rec.planned_bur_cost_txn_cur;
21782
21783 ETC_PRJ_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_pc,0)+nvl(l_ppr_rec.ppl_etc_cost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_pc,0)) - l_ptav_rec.planned_bur_cost_proj_cur;
21784 ETC_PFC_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_fc,0)+nvl(l_ppr_rec.ppl_etc_cost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_fc,0)) - l_ptav_rec.planned_bur_cost_projfunc;
21785 ETC_TXN_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_tc,0)) - l_ptav_rec.planned_raw_cost_txn_cur;
21786 ETC_PRJ_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_pc,0)) - l_ptav_rec.planned_raw_cost_proj_cur;
21787 ETC_PFC_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_fc,0)) - l_ptav_rec.planned_raw_cost_projfunc;
21788 if (l_ptav_rec.resource_class_code in ('PEOPLE','EQUIPMENT')) then
21789 ETC_QUANTITY(l_index) := (nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)) - l_ptav_rec.planned_quantity;
21790 else
21791 ETC_QUANTITY(l_index) := nvl(l_ppr_rec.oth_etc_quantity,0) - l_ptav_rec.planned_quantity;
21792 end if;
21793
21794 ---added logic to copy actuals and ETC selctively bug 3821122
21795
21796 IF p_copy_etc_flag = 'N' THEN
21797 ETC_TXN_BURDENED_COST(l_index) :=null;
21798 ETC_PRJ_BURDENED_COST(l_index) := null;
21799 ETC_PFC_BURDENED_COST(l_index) := null;
21800 ETC_QUANTITY(l_index) := null;
21801 ETC_TXN_RAW_COST(l_index) := null;
21802 ETC_PRJ_RAW_COST(l_index) := null;
21803 ETC_PFC_RAW_COST(l_index) := null;
21804 END IF;
21805 END IF; -- IF (l_ptav_rec.rbs_element_id IS NULL
21806 END LOOP;
21807 if (l_prog_mode = 'P') then
21808 CLOSE cur_lp_progress;
21809 elsif (l_prog_mode = 'W') then
21810 CLOSE cur_working_wp_progress;
21811 end if;
21812
21813 IF g1_debug_mode = 'Y' THEN
21814 for l_count in 1..l_index loop
21815 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : PUBLISH WP CASE', x_Log_Level=> 3);
21816 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21817 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21818 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||ETC_PROJECT_ELEMENT_ID(l_count), x_Log_Level=> 3);
21819 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||ETC_END_DATE(l_count), x_Log_Level=> 3);
21820 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||etc_rbs_element_id(l_count), x_Log_Level=> 3);
21821 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||etc_rate_based_flag(l_count), x_Log_Level=> 3);
21822 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||etc_resource_class_code(l_count), x_Log_Level=> 3);
21823 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||etc_TXN_CURRENCY_CODE(l_count), x_Log_Level=> 3);
21824 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||ETC_TXN_BURDENED_COST(l_count), x_Log_Level=> 3);
21825 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||etc_PRJ_BURDENED_COST(l_count), x_Log_Level=> 3);
21826 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||etc_Pfc_burdened_COST(l_count), x_Log_Level=> 3);
21827 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||etc_quantity(l_count), x_Log_Level=> 3);
21828 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||etc_TXN_RAW_COST(l_count), x_Log_Level=> 3);
21829 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||etc_PRJ_RAW_COST(l_count), x_Log_Level=> 3);
21830 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||etc_PFC_RAW_COST(l_count), x_Log_Level=> 3);
21831 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||etc_period_name(l_count), x_Log_Level=> 3);
21832 end loop;
21833 END IF;
21834
21835 FORALL l_count IN 1..l_index
21836 INSERT INTO PJI_FM_EXTR_PLAN_LINES(
21837 PROJECT_ID
21838 ,PROJECT_ORG_ID
21839 ,PROJECT_ELEMENT_ID
21840 ,STRUCT_VER_ID
21841 ,PERIOD_NAME
21842 ,CALENDAR_TYPE
21843 ,END_DATE
21844 ,RBS_ELEMENT_ID
21845 ,PLAN_VERSION_ID
21846 ,PLAN_TYPE_ID
21847 ,WP_VERSION_FLAG
21848 ,ROLLUP_TYPE
21849 ,TXN_CURRENCY_CODE
21850 ,ETC_QUANTITY
21851 ,ETC_TXN_BURDENED_COST
21852 ,ETC_PRJ_BURDENED_COST
21853 ,ETC_PFC_BURDENED_COST
21854 ,ETC_TXN_RAW_COST
21855 ,ETC_PRJ_RAW_COST
21856 ,ETC_PFC_RAW_COST
21857 ,RESOURCE_CLASS_CODE
21858 ,RATE_BASED_FLAG
21859 ,PRJ_CURRENCY_CODE
21860 ,PFC_CURRENCY_CODE)
21861 VALUES( ETC_PROJECT_ID(l_count)
21862 ,ETC_PROJECT_ORG_ID(l_count)
21863 ,ETC_PROJECT_ELEMENT_ID(l_count)
21864 ,ETC_STRUCT_VER_ID(l_count)
21865 ,ETC_PERIOD_NAME(l_count)
21866 ,ETC_CALENDAR_TYPE(l_count)
21867 ,ETC_END_DATE(l_count)
21868 ,ETC_RBS_ELEMENT_ID(l_count)
21869 ,ETC_PLAN_VERSION_ID(l_count)
21870 ,ETC_PLAN_TYPE_ID(l_count)
21871 ,ETC_WP_VERSION_FLAG(l_count)
21872 ,ETC_ROLLUP_TYPE(l_count)
21873 ,ETC_TXN_CURRENCY_CODE(l_count)
21874 ,ETC_QUANTITY(l_count)
21875 ,ETC_TXN_BURDENED_COST(l_count)
21876 ,ETC_PRJ_BURDENED_COST(l_count)
21877 ,ETC_PFC_BURDENED_COST(l_count)
21878 ,ETC_TXN_RAW_COST(l_count)
21879 ,ETC_PRJ_RAW_COST(l_count)
21880 ,ETC_PFC_RAW_COST(l_count)
21881 ,ETC_RESOURCE_CLASS_CODE(l_count)
21882 ,ETC_RATE_BASED_FLAG(l_count)
21883 ,ETC_PRJ_CURRENCY_CODE(l_count)
21884 ,ETC_PFC_CURRENCY_CODE(l_count));
21885 if (g1_debug_mode = 'Y') then
21886 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals' , x_Log_Level=> 3);
21887 END IF;
21888
21889 l_actuals_pushed := 'Y';
21890
21891 /******** NOT REQUIRED
21892 --bug 3968791
21893 --select all assignments' planned values whose progress does not exists in progress rollup table and pass them
21894 --to PJI as ETC. This is applicable if any of the assignments for a given task has progress overridden.
21895 --This change will NOT select assignments from those tasks for which there is no single assignment has ETC.
21896 --Also the cursor will not select hidden assignments.
21897
21898 --Push to PJI only if there is progress for some objects and also if copy ETC flag is yes.
21899 IF l_actuals_pushed = 'Y' AND p_copy_etc_flag = 'Y'
21900 THEN
21901 IF ( l_calling_context = 'PUBLISH')
21902 OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
21903 FOR cur_select_all_assgns_rec IN cur_select_all_assgns LOOP
21904
21905 IF g1_debug_mode = 'Y' THEN
21906 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : PUBLISH WP CASE with all assignments', x_Log_Level=> 3);
21907 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21908 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21909 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||cur_select_all_assgns_rec.task_id, x_Log_Level=> 3);
21910 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||cur_select_all_assgns_rec.resource_list_member_id, x_Log_Level=> 3);
21911 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'planning start date='||cur_select_all_assgns_rec.planning_start_date, x_Log_Level=> 3);
21912 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||cur_select_all_assgns_rec.rbs_element_id, x_Log_Level=> 3);
21913 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||cur_select_all_assgns_rec.rate_based_flag, x_Log_Level=> 3);
21914 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||cur_select_all_assgns_rec.resource_class_code, x_Log_Level=> 3);
21915 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||cur_select_all_assgns_rec.TXN_CURRENCY_CODE, x_Log_Level=> 3);
21916
21917 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_TXN_CUR, x_Log_Level=> 3);
21918 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJ_CUR, x_Log_Level=> 3);
21919 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJFUNC, x_Log_Level=> 3);
21920 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||cur_select_all_assgns_rec.PLANNED_QUANTITY, x_Log_Level=> 3);
21921 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_TXN_CUR, x_Log_Level=> 3);
21922 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJ_CUR, x_Log_Level=> 3);
21923 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJFUNC, x_Log_Level=> 3);
21924
21925 END IF;
21926 -- Call push workplan actuals.
21927 PA_PROGRESS_PUB.push_workplan_actuals(
21928 p_api_version => p_api_version
21929 ,p_init_msg_list => p_init_msg_list
21930 ,p_commit => p_commit
21931 ,p_validate_only => p_validate_only
21932 ,p_validation_level => p_validation_level
21933 ,p_calling_module => p_calling_module
21934 ,p_debug_mode => p_debug_mode
21935 ,p_max_msg_count => p_max_msg_count
21936 ,p_project_Id => p_project_Id
21937 ,p_structure_version_id => p_dst_str_ver_id
21938 ,p_proj_element_id => cur_select_all_assgns_rec.task_id
21939 ,p_object_id => cur_select_all_assgns_rec.resource_list_member_id
21940 ,p_object_type => 'PA_ASSIGNMENTS'
21941 ,p_as_of_date => cur_select_all_assgns_rec.planning_start_date
21942 ,p_rbs_element_id => cur_select_all_assgns_rec.rbs_element_id
21943 ,p_rate_based_flag => cur_select_all_assgns_rec.rate_based_flag
21944 ,p_resource_class_code => cur_select_all_assgns_rec.resource_class_code
21945 ,p_TXN_CURRENCY_CODE => cur_select_all_assgns_rec.TXN_CURRENCY_CODE
21946 ,p_call_pji_apis_flag => 'N'
21947 ,p_etc_TXN_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_TXN_CUR
21948 ,p_etc_PRJ_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJ_CUR
21949 ,p_etc_POU_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJFUNC
21950 ,p_etc_effort_this_period => cur_select_all_assgns_rec.PLANNED_QUANTITY
21951 ,p_etc_TXN_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_TXN_CUR
21952 ,p_etc_PRJ_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJ_CUR
21953 ,p_etc_POU_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJFUNC
21954 ,p_pa_period_name => null
21955 ,p_gl_period_name => null --pass null period name. let push workplan actual derive it based on planning start date
21956 ,x_return_status => l_return_status
21957 ,x_msg_count => l_msg_count
21958 ,x_msg_data => l_msg_data
21959 );
21960 END LOOP;
21961 END IF;
21962 END IF;
21963 --bug 3968791
21964
21965 IF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')OR l_calling_context = 'RBS') THEN
21966
21967 OPEN cur_working_wp_progress;
21968 LOOP
21969 FETCH cur_working_wp_progress INTO l_ppr_rec;
21970 EXIT WHEN cur_working_wp_progress%NOTFOUND;
21971
21972 -- Initialize the amount variables.
21973 l_act_TXN_COST_this_period := null;
21974 l_act_PRJ_COST_this_period := null;
21975 l_act_POU_COST_this_period := null;
21976 l_act_TXN_RAWCOST_this_period := null;
21977 l_act_PRJ_RAWCOST_this_period := null;
21978 l_act_POU_RAWCOST_this_period := null;
21979 l_etc_TXN_COST_this_period := null;
21980 l_etc_PRJ_COST_this_period := null;
21981 l_etc_POU_COST_this_period := null;
21982 l_etc_TXN_RAWCOST_this_period := null;
21983 l_etc_PRJ_RAWCOST_this_period := null;
21984 l_etc_POU_RAWCOST_this_period := null;
21985 l_act_effort_this_period := null;
21986 l_etc_effort_this_period := null;
21987
21988 -- Derive the value for l_new_object_id.
21989 l_ptav_rec := null;
21990 IF l_ppr_rec.object_type = 'PA_ASSIGNMENTS' then
21991 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21992 FETCH cur_ptav INTO l_ptav_rec;
21993 CLOSE cur_ptav;
21994
21995 --l_new_object_id := l_ptav_rec.resource_assignment_id; Bug 3764224
21996 l_new_object_id := l_ptav_rec.resource_list_member_id; -- Bug 3764224
21997 l_rbs_element_id := l_ptav_rec.rbs_element_id;
21998 l_rate_based_flag := l_ptav_rec.rate_based_flag;
21999 l_resource_class_code := l_ptav_rec.resource_class_code;
22000 l_TXN_CURRENCY_CODE := l_ptav_rec.txn_currency_code;
22001 END IF;
22002
22003 -- Names of these variables are this period but actually it is sending cumulative amounts
22004 l_act_TXN_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)
22005 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
22006 l_act_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_pc,0)
22007 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
22008 l_act_POU_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_fc,0)
22009 +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
22010 l_act_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_tc,0)
22011 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
22012 l_act_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_pc,0)
22013 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
22014 l_act_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_fc,0)
22015 +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
22016 l_etc_TXN_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)
22017 +nvl(l_ppr_rec.subprj_oth_etc_cost_tc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_tc,0));
22018 l_etc_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_pc,0)+nvl(l_ppr_rec.ppl_etc_cost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_pc,0)
22019 +nvl(l_ppr_rec.subprj_oth_etc_cost_pc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_pc,0));
22020 l_etc_POU_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_fc,0)+nvl(l_ppr_rec.ppl_etc_cost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_fc,0)
22021 +nvl(l_ppr_rec.subprj_oth_etc_cost_fc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_fc,0));
22022 l_etc_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_tc,0)
22023 +nvl(l_ppr_rec.subprj_oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_tc,0));
22024 l_etc_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_pc,0)
22025 +nvl(l_ppr_rec.subprj_oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_pc,0));
22026 l_etc_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_fc,0)
22027 +nvl(l_ppr_rec.subprj_oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_fc,0));
22028 l_act_effort_this_period := (nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)--+nvl(l_ppr_rec.oth_quantity_to_date,0))Oth quantity is not required as it can be in diffrent UOM
22029 +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
22030 l_etc_effort_this_period := (nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)--+nvl(l_ppr_rec.oth_etc_quantity,0))Oth quantity is not required as it can be in diffrent UOM
22031 +nvl(l_ppr_rec.subprj_ppl_etc_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_effort,0));
22032
22033 IF l_calling_context = 'RBS' THEN
22034 l_act_TXN_COST_this_period := null;
22035 l_act_PRJ_COST_this_period := null;
22036 l_act_POU_COST_this_period := null;
22037 l_act_effort_this_period := null;
22038 l_act_TXN_RAWCOST_this_period := null;
22039 l_act_PRJ_RAWCOST_this_period := null;
22040 l_act_POU_RAWCOST_this_period := null;
22041 END IF;
22042
22043
22044 ---added logic to copy actuals and ETC selctively bug 3821122
22045
22046 IF p_copy_actuals_flag = 'N'
22047 THEN
22048 l_act_TXN_COST_this_period := null;
22049 l_act_PRJ_COST_this_period := null;
22050 l_act_POU_COST_this_period := null;
22051 l_act_effort_this_period := null;
22052 l_act_TXN_RAWCOST_this_period := null;
22053 l_act_PRJ_RAWCOST_this_period := null;
22054 l_act_POU_RAWCOST_this_period := null;
22055 END IF;
22056
22057 IF p_copy_etc_flag = 'N'
22058 THEN
22059 l_etc_TXN_COST_this_period :=null;
22060 l_etc_PRJ_COST_this_period := null;
22061 l_etc_POU_COST_this_period := null;
22062 l_etc_effort_this_period := null;
22063 l_etc_TXN_RAWCOST_this_period := null;
22064 l_etc_PRJ_RAWCOST_this_period := null;
22065 l_etc_POU_RAWCOST_this_period := null;
22066 END IF;
22067
22068 IF g1_debug_mode = 'Y' THEN
22069 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : WORKING WP CASE', x_Log_Level=> 3);
22070 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22071 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22072 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||l_ppr_rec.proj_element_id, x_Log_Level=> 3);
22073 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||l_new_object_id, x_Log_Level=> 3);
22074 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_type='||l_ppr_rec.object_type, x_Log_Level=> 3);
22075 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||l_ppr_rec.as_of_date, x_Log_Level=> 3);
22076 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||l_rbs_element_id, x_Log_Level=> 3);
22077 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||l_rate_based_flag, x_Log_Level=> 3);
22078 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||l_resource_class_code, x_Log_Level=> 3);
22079 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||l_TXN_CURRENCY_CODE, x_Log_Level=> 3);
22080 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_COST_this_period='||l_act_TXN_COST_this_period, x_Log_Level=> 3);
22081 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_COST_this_period='||l_act_PRJ_COST_this_period, x_Log_Level=> 3);
22082 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_COST_this_period='||l_act_POU_COST_this_period, x_Log_Level=> 3);
22083 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_effort_this_period='||l_act_effort_this_period, x_Log_Level=> 3);
22084 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
22085 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_raw_COST_this_period='||l_act_TXN_RAWCOST_this_period, x_Log_Level=> 3);
22086 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_raw_COST_this_period='||l_act_PRJ_RAWCOST_this_period, x_Log_Level=> 3);
22087 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_raw_COST_this_period='||l_act_POU_RAWCOST_this_period, x_Log_Level=> 3);
22088 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||l_etc_TXN_COST_this_period, x_Log_Level=> 3);
22089 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||l_etc_PRJ_COST_this_period, x_Log_Level=> 3);
22090 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||l_etc_POU_COST_this_period, x_Log_Level=> 3);
22091 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||l_etc_effort_this_period, x_Log_Level=> 3);
22092 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||l_etc_TXN_rawCOST_this_period, x_Log_Level=> 3);
22093 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_rawCOST_this_period, x_Log_Level=> 3);
22094 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||l_etc_POU_rawCOST_this_period, x_Log_Level=> 3);
22095 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||l_ppr_rec.prog_pa_period_name, x_Log_Level=> 3);
22096 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_gl_period_name='||l_ppr_rec.prog_gl_period_name, x_Log_Level=> 3);
22097 END IF;
22098
22099 -- Call push workplan actuals.
22100 PA_PROGRESS_PUB.push_workplan_actuals(
22101 p_api_version => p_api_version
22102 ,p_init_msg_list => p_init_msg_list
22103 ,p_commit => p_commit
22104 ,p_validate_only => p_validate_only
22105 ,p_validation_level => p_validation_level
22106 ,p_calling_module => p_calling_module
22107 ,p_debug_mode => p_debug_mode
22108 ,p_max_msg_count => p_max_msg_count
22109 ,p_project_Id => p_project_Id
22110 ,p_structure_version_id => p_dst_str_ver_id
22111 ,p_proj_element_id => l_ppr_rec.proj_element_id
22112 ,p_object_id => l_new_object_id
22113 ,p_object_type => l_ppr_rec.object_type
22114 ,p_as_of_date => l_ppr_rec.as_of_date
22115 ,p_rbs_element_id => l_rbs_element_id--l_ptav_rec.rbs_element_id
22116 ,p_rate_based_flag => l_rate_based_flag--l_ptav_rec.rate_based_flag
22117 ,p_resource_class_code => l_resource_class_code--l_ptav_rec.resource_class_code
22118 ,p_TXN_CURRENCY_CODE => l_TXN_CURRENCY_CODE--l_ptav_rec.txn_currency_code
22119 ,p_act_TXN_COST_this_period => l_act_TXN_COST_this_period
22120 ,p_act_PRJ_COST_this_period => l_act_PRJ_COST_this_period
22121 ,p_act_POU_COST_this_period => l_act_POU_COST_this_period
22122 ,p_act_effort_this_period => l_act_effort_this_period
22123 ,p_call_pji_apis_flag => 'N'
22124 ,p_act_TXN_raw_COST_this_period => l_act_TXN_RAWCOST_this_period
22125 ,p_act_PRJ_raw_COST_this_period => l_act_PRJ_RAWCOST_this_period
22126 ,p_act_POU_raw_COST_this_period => l_act_POU_RAWCOST_this_period
22127 ,p_etc_TXN_COST_this_period => l_etc_TXN_COST_this_period
22128 ,p_etc_PRJ_COST_this_period => l_etc_PRJ_COST_this_period
22129 ,p_etc_POU_COST_this_period => l_etc_POU_COST_this_period
22130 ,p_etc_effort_this_period => l_etc_effort_this_period
22131 ,p_etc_TXN_raw_COST_this_period => l_etc_TXN_RAWCOST_this_period
22132 ,p_etc_PRJ_raw_COST_this_period => l_etc_PRJ_RAWCOST_this_period
22133 ,p_etc_POU_raw_COST_this_period => l_etc_POU_RAWCOST_this_period
22134 ,p_pa_period_name => l_ppr_rec.prog_pa_period_name
22135 ,p_gl_period_name => l_ppr_rec.prog_gl_period_name
22136 ,x_return_status => l_return_status
22137 ,x_msg_count => l_msg_count
22138 ,x_msg_data => l_msg_data);
22139
22140 IF g1_debug_mode = 'Y' THEN
22141 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals l_return_status='||l_return_status, x_Log_Level=> 3);
22142 END IF;
22143
22144
22145 l_actuals_pushed := 'Y';
22146 END LOOP;
22147 CLOSE cur_working_wp_progress;
22148 END IF;
22149 ************/
22150
22151 /*********** NOT REQUIRED as PJI will have ETC as planned
22152 -- This push is required when you do not have progress record. We want PJI to stamp ETC as PLANNED initially
22153 -- So next time onwards when we send +ve ETC, it will subtract that ETC from it.
22154
22155
22156 if NVL(l_actuals_pushed,'N') = 'N' and l_calling_context = 'PUBLISH'
22157 then
22158
22159 OPEN cur_ppev_ptav;
22160
22161 LOOP
22162
22163 FETCH cur_ppev_ptav INTO l_ppev_ptav_rec;
22164
22165 EXIT WHEN cur_ppev_ptav%NOTFOUND;
22166
22167
22168 -- Initialize the amount variables.
22169
22170 l_act_TXN_COST_this_period := null;
22171 l_act_PRJ_COST_this_period := null;
22172 l_act_POU_COST_this_period := null;
22173 l_act_TXN_RAWCOST_this_period := null;
22174 l_act_PRJ_RAWCOST_this_period := null;
22175 l_act_POU_RAWCOST_this_period := null;
22176 l_etc_TXN_COST_this_period := null;
22177 l_etc_PRJ_COST_this_period := null;
22178 l_etc_POU_COST_this_period := null;
22179 l_etc_TXN_RAWCOST_this_period := null;
22180 l_etc_PRJ_RAWCOST_this_period := null;
22181 l_etc_POU_RAWCOST_this_period := null;
22182 l_act_effort_this_period := null;
22183 l_etc_effort_this_period := null;
22184
22185
22186 -- Call push workplan actuals.
22187 IF g1_debug_mode = 'Y' THEN
22188 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : NO Actuals Case', x_Log_Level=> 3);
22189 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22190 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22191 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||l_ppev_ptav_rec.proj_element_id, x_Log_Level=> 3);
22192 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||l_ppev_ptav_rec.object_id, x_Log_Level=> 3);
22193 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_type='||l_ppev_ptav_rec.object_type, x_Log_Level=> 3);
22194 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||trunc(sysdate), x_Log_Level=> 3);
22195 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||l_ppev_ptav_rec.rbs_element_id, x_Log_Level=> 3);
22196 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||l_ppev_ptav_rec.rate_based_flag, x_Log_Level=> 3);
22197 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||l_ppev_ptav_rec.resource_class_code, x_Log_Level=> 3);
22198 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||l_ppev_ptav_rec.txn_currency_code, x_Log_Level=> 3);
22199 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_COST_this_period='||l_act_TXN_COST_this_period, x_Log_Level=> 3);
22200 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_COST_this_period='||l_act_PRJ_COST_this_period, x_Log_Level=> 3);
22201 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_COST_this_period='||l_act_POU_COST_this_period, x_Log_Level=> 3);
22202 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_effort_this_period='||l_act_effort_this_period, x_Log_Level=> 3);
22203 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
22204 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_raw_COST_this_period='||l_act_TXN_RAWCOST_this_period, x_Log_Level=> 3);
22205 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_raw_COST_this_period='||l_act_PRJ_RAWCOST_this_period, x_Log_Level=> 3);
22206 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_raw_COST_this_period='||l_act_POU_RAWCOST_this_period, x_Log_Level=> 3);
22207 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||l_etc_TXN_COST_this_period, x_Log_Level=> 3);
22208 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||l_etc_PRJ_COST_this_period, x_Log_Level=> 3);
22209 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||l_etc_POU_COST_this_period, x_Log_Level=> 3);
22210 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||l_etc_effort_this_period, x_Log_Level=> 3);
22211 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||l_etc_TXN_rawCOST_this_period, x_Log_Level=> 3);
22212 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_rawCOST_this_period, x_Log_Level=> 3);
22213 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||l_etc_POU_rawCOST_this_period, x_Log_Level=> 3);
22214 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||to_char(null), x_Log_Level=> 3);
22215 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_gl_period_name='||to_char(null), x_Log_Level=> 3);
22216 END IF;
22217
22218
22219 PA_PROGRESS_PUB.push_workplan_actuals(
22220 p_api_version => p_api_version
22221 ,p_init_msg_list => p_init_msg_list
22222 ,p_commit => p_commit
22223 ,p_validate_only => p_validate_only
22224 ,p_validation_level => p_validation_level
22225 ,p_calling_module => p_calling_module
22226 ,p_debug_mode => p_debug_mode
22227 ,p_max_msg_count => p_max_msg_count
22228 ,p_project_Id => p_project_Id
22229 ,p_structure_version_id => p_dst_str_ver_id
22230 ,p_proj_element_id => l_ppev_ptav_rec.proj_element_id
22231 ,p_object_id => l_ppev_ptav_rec.object_id
22232 ,p_object_type => l_ppev_ptav_rec.object_type
22233 ,p_as_of_date => trunc(sysdate) -- IS it OK to pass this as null, which period this will summarize into?
22234 ,p_rbs_element_id => l_ppev_ptav_rec.rbs_element_id
22235 ,p_rate_based_flag => l_ppev_ptav_rec.rate_based_flag
22236 ,p_resource_class_code => l_ppev_ptav_rec.resource_class_code
22237 ,p_TXN_CURRENCY_CODE => l_ppev_ptav_rec.txn_currency_code
22238 ,p_act_TXN_COST_this_period => l_act_TXN_COST_this_period
22239 ,p_act_PRJ_COST_this_period => l_act_PRJ_COST_this_period
22240 ,p_act_POU_COST_this_period => l_act_POU_COST_this_period
22241 ,p_act_effort_this_period => l_act_effort_this_period
22242 ,p_call_pji_apis_flag => 'N'
22243 ,p_act_TXN_raw_COST_this_period => l_act_TXN_RAWCOST_this_period
22244 ,p_act_PRJ_raw_COST_this_period => l_act_PRJ_RAWCOST_this_period
22245 ,p_act_POU_raw_COST_this_period => l_act_POU_RAWCOST_this_period
22246 ,p_etc_TXN_COST_this_period => l_etc_TXN_COST_this_period
22247 ,p_etc_PRJ_COST_this_period => l_etc_PRJ_COST_this_period
22248 ,p_etc_POU_COST_this_period => l_etc_POU_COST_this_period
22249 ,p_etc_effort_this_period => l_etc_effort_this_period
22250 ,p_etc_TXN_raw_COST_this_period => l_etc_TXN_RAWCOST_this_period
22251 ,p_etc_PRJ_raw_COST_this_period => l_etc_PRJ_RAWCOST_this_period
22252 ,p_etc_POU_raw_COST_this_period => l_etc_POU_RAWCOST_this_period
22253 ,x_return_status => l_return_status
22254 ,x_msg_count => l_msg_count
22255 ,x_msg_data => l_msg_data);
22256
22257 IF g1_debug_mode = 'Y' THEN
22258 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals l_return_status='||l_return_status, x_Log_Level=> 3);
22259 END IF;
22260
22261
22262 l_actuals_pushed := 'Y';
22263
22264 END LOOP;
22265 CLOSE cur_ppev_ptav;
22266
22267 END IF; --<<l_actuals_pushed>>
22268 ***************/
22269
22270 if nvl( l_actuals_pushed, 'N') = 'Y' and (p_pji_conc_prog_context = 'N') -- Fix for Bug # 3996159.
22271 then
22272 BEGIN
22273
22274 IF g1_debug_mode = 'Y' THEN
22275 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling PLAN_UPDATE_ACT_ETC', x_Log_Level=> 3);
22276 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_dst_str_ver_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22277 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_last_pub_str_version_id'||p_last_pub_str_version_id, x_Log_Level=> 3);
22278 END IF;
22279
22280
22281 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (p_plan_wbs_ver_id => p_dst_str_ver_id
22282 , p_prev_pub_wbs_ver_id => p_last_pub_str_version_id
22283 , x_msg_code => l_msg_code
22284 , x_return_status => l_return_status);
22285
22286 IF g1_debug_mode = 'Y' THEN
22287 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After PLAN_UPDATE_ACT_ETC l_return_status='||l_return_status, x_Log_Level=> 3);
22288 END IF;
22289
22290
22291 EXCEPTION
22292 WHEN OTHERS THEN
22293 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22294 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22295 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
22296 RAISE FND_API.G_EXC_ERROR;
22297 END;
22298
22299 -- populate_workplan_data is not called as it is called from page itself.
22300 end if;
22301
22302
22303 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22304 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
22305 p_msg_name => l_msg_data);
22306 x_msg_data := l_msg_data;
22307 x_return_status := 'E';
22308 x_msg_count := l_msg_count;
22309 RAISE FND_API.G_EXC_ERROR;
22310 END IF;
22311 /***********
22312 -- here we need to make ETC as null on assignment records
22313 if (l_calling_context = 'PUBLISH') then
22314 update pa_progress_rollup
22315 set oth_etc_quantity = to_number(null)
22316 ,oth_etc_rawcost_tc = to_number(null)
22317 ,oth_etc_rawcost_pc = to_number(null)
22318 ,oth_etc_rawcost_fc = to_number(null)
22319 ,oth_etc_cost_tc = to_number(null)
22320 ,oth_etc_cost_pc = to_number(null)
22321 ,oth_etc_cost_fc = to_number(null)
22322 ,estimated_remaining_effort = to_number(null)
22323 ,ppl_etc_rawcost_tc = to_number(null)
22324 ,ppl_etc_rawcost_pc = to_number(null)
22325 ,ppl_etc_rawcost_fc = to_number(null)
22326 ,ppl_etc_cost_tc = to_number(null)
22327 ,ppl_etc_cost_pc = to_number(null)
22328 ,ppl_etc_cost_fc = to_number(null)
22329 ,eqpmt_etc_effort = to_number(null)
22330 ,eqpmt_etc_rawcost_tc = to_number(null)
22331 ,eqpmt_etc_rawcost_pc = to_number(null)
22332 ,eqpmt_etc_rawcost_fc = to_number(null)
22333 ,eqpmt_etc_cost_tc = to_number(null)
22334 ,eqpmt_etc_cost_pc = to_number(null)
22335 ,eqpmt_etc_cost_fc = to_number(null)
22336 ,last_update_date = SYSDATE
22337 where project_id = p_project_id
22338 and object_type = 'PA_ASSIGNMENTS'
22339 and structure_version_id is null
22340 and structure_type = 'WORKPLAN'
22341 and current_flag = 'Y';
22342 end if;
22343 ************/
22344 IF (p_commit = FND_API.G_TRUE) THEN
22345 COMMIT;
22346 END IF;
22347
22348 EXCEPTION
22349
22350 when FND_API.G_EXC_ERROR then
22351 if p_commit = FND_API.G_TRUE then
22352 rollback to COPY_PROGRESS_ACT_ETC;
22353 end if;
22354 x_return_status := FND_API.G_RET_STS_ERROR;
22355
22356 when FND_API.G_EXC_UNEXPECTED_ERROR then
22357 if p_commit = FND_API.G_TRUE then
22358 rollback to COPY_PROGRESS_ACT_ETC;
22359 end if;
22360 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22361 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22362 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22363 p_error_text => SUBSTRB(SQLERRM,1,120));
22364 when OTHERS then
22365 if p_commit = FND_API.G_TRUE then
22366 rollback to COPY_PROGRESS_ACT_ETC;
22367 end if;
22368 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22369 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22370 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22371 p_error_text => SUBSTRB(SQLERRM,1,120));
22372 raise;
22373
22374 END COPY_PROGRESS_ACT_ETC;
22375
22376
22377
22378 -- Bug 3807299 : new API which will be called from update_progress and AMG pa_status_pub.update_progress
22379 PROCEDURE update_link_proj_rollup_dates(
22380 p_api_version IN NUMBER :=1.0
22381 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
22382 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
22383 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
22384 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
22385 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
22386 ,p_project_id IN NUMBER
22387 ,p_task_id IN NUMBER
22388 ,p_task_version_id IN NUMBER
22389 ,p_as_of_date IN DATE
22390 ,p_structure_version_id IN NUMBER
22391 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22392 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
22393 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22394 )
22395 IS
22396 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_LINK_PROJ_ROLLUP_DATES';
22397 l_api_version CONSTANT NUMBER := p_api_version;
22398 l_user_id NUMBER := FND_GLOBAL.USER_ID;
22399 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
22400 l_return_status VARCHAR2(1);
22401 l_msg_count NUMBER;
22402 l_msg_data VARCHAR2(250);
22403
22404 CURSOR c_get_min_max_dates(c_par_project_id NUMBER, c_par_task_id NUMBER, c_par_task_ver_id NUMBER, c_par_str_ver_id NUMBER, c_as_of_date DATE) IS
22405 select min(ppr.actual_start_date), max(ppr.actual_finish_date), min(ppr.estimated_start_date), max(ppr.estimated_finish_date)
22406 FROM
22407 --- removed join with pa_structures_links_v for performance improvement
22408 pa_proj_element_versions ppv1 --4871809
22409 ,pa_proj_element_versions ppv2
22410 ,pa_object_relationships por1
22411 ,pa_object_relationships por2
22412 ,pa_progress_rollup ppr
22413 WHERE
22414 ppv2.element_version_id = por1.object_id_to1
22415 AND ppv2.object_type = 'PA_STRUCTURES'
22416 AND por1.relationship_type in ( 'LW', 'LF' )
22417 AND por1.object_id_from1 = por2.object_id_to1
22418 AND por2.object_id_from1 = ppv1.element_version_id
22419 ANd por2.relationship_type = 'S'
22420 and por2.object_id_from2 = c_par_project_id
22421 and por2.object_id_from1 = c_par_task_ver_id
22422 and ppv1.parent_structure_version_id = c_par_str_ver_id
22423 AND por1.object_id_to2 = ppr.project_id
22424 and ppr.structure_type = 'WORKPLAN'
22425 and ppr.structure_version_id is null
22426 and ppr.object_type = 'PA_STRUCTURES'
22427 and ppr.current_flag <> 'W' -- Bug 3879461
22428 and trunc(ppr.as_of_date) <= trunc(c_as_of_date);
22429
22430 CURSOR c_get_sch_dates(c_project_id NUMBER, c_task_id NUMBER, c_task_ver_id NUMBER) IS
22431 select pev_schedule_id, actual_start_date, actual_finish_date, estimated_start_date, estimated_finish_date
22432 from pa_proj_elem_ver_schedule
22433 where project_id = c_project_id
22434 and proj_element_id = c_task_id
22435 and element_version_id = c_task_ver_id
22436 ;
22437
22438 l_min_act_st_date DATE;
22439 l_max_act_fin_date DATE;
22440 l_min_est_st_date DATE;
22441 l_max_est_fin_date DATE;
22442 l_pev_schedule_id NUMBER;
22443 l_act_st_date DATE;
22444 l_act_fin_date DATE;
22445 l_est_st_date DATE;
22446 l_est_fin_date DATE;
22447 l_actual_start_date_rollup NUMBER;
22448 l_actual_finish_date_rollup NUMBER;
22449 l_estimated_start_date_rollup NUMBER;
22450 l_estimated_finish_date_rollup NUMBER;
22451
22452 BEGIN
22453
22454 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
22455
22456 IF g1_debug_mode = 'Y' THEN
22457 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
22458 END IF;
22459
22460 IF g1_debug_mode = 'Y' THEN
22461 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES Start : Passed Parameters :', x_Log_Level=> 3);
22462 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22463 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
22464 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
22465 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
22466 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
22467 END IF;
22468
22469 IF g1_debug_mode = 'Y' THEN
22470 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
22471 END IF;
22472
22473 IF (p_commit = FND_API.G_TRUE) THEN
22474 savepoint UPDATE_LINK_PROJ_ROLLUP_DATES;
22475 END IF;
22476
22477 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
22478 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22479 END IF;
22480
22481 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
22482 FND_MSG_PUB.initialize;
22483 END IF;
22484
22485 x_return_status := FND_API.G_RET_STS_SUCCESS;
22486
22487 OPEN c_get_min_max_dates(p_project_id, p_task_id, p_task_version_id, p_structure_version_id, p_as_of_date);
22488 FETCH c_get_min_max_dates INTO l_min_act_st_date, l_max_act_fin_date, l_min_est_st_date, l_max_est_fin_date;
22489 CLOSE c_get_min_max_dates;
22490
22491 OPEN c_get_sch_dates(p_project_id, p_task_id, p_task_version_id);
22492 FETCH c_get_sch_dates INTO l_pev_schedule_id, l_act_st_date, l_act_fin_date, l_est_st_date, l_est_fin_date;
22493 CLOSE c_get_sch_dates;
22494
22495 IF l_min_act_st_date IS NOT NULL OR l_max_act_fin_date IS NOT NULL OR
22496 l_min_est_st_date IS NOT NULL OR l_max_est_fin_date IS NOT NULL THEN
22497
22498 IF l_min_act_st_date IS NOT NULL AND l_act_st_date IS NOT NULL THEN
22499 l_actual_start_date_rollup := l_act_st_date - l_min_act_st_date;
22500 END IF;
22501
22502 IF l_max_act_fin_date IS NOT NULL AND l_act_fin_date IS NOT NULL THEN
22503 l_actual_finish_date_rollup := l_act_fin_date - l_max_act_fin_date;
22504 END IF;
22505
22506 IF l_min_est_st_date IS NOT NULL AND l_est_st_date IS NOT NULL THEN
22507 l_estimated_start_date_rollup := l_est_st_date - l_min_est_st_date;
22508 END IF;
22509
22510 IF l_max_est_fin_date IS NOT NULL AND l_est_fin_date IS NOT NULL THEN
22511 l_estimated_finish_date_rollup := l_est_fin_date - l_max_est_fin_date;
22512 END IF;
22513
22514 UPDATE pa_proj_elem_ver_schedule
22515 SET actual_start_date_rollup= l_actual_start_date_rollup
22516 , actual_finish_date_rollup = l_actual_finish_date_rollup
22517 , estimated_start_date_rollup = l_estimated_start_date_rollup
22518 , estimated_finish_date_rollup = l_estimated_finish_date_rollup
22519 WHERE
22520 project_id = p_project_id
22521 and pev_schedule_id = l_pev_schedule_id
22522 and element_version_id = p_task_version_id
22523 and proj_element_id = p_task_id;
22524 END IF;
22525
22526 IF (p_commit = FND_API.G_TRUE) THEN
22527 COMMIT;
22528 END IF;
22529
22530
22531 EXCEPTION
22532 when FND_API.G_EXC_ERROR then
22533 if p_commit = FND_API.G_TRUE then
22534 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22535 end if;
22536 x_return_status := FND_API.G_RET_STS_ERROR;
22537 when FND_API.G_EXC_UNEXPECTED_ERROR then
22538 if p_commit = FND_API.G_TRUE then
22539 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22540 end if;
22541 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22542 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22543 p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
22544 p_error_text => SUBSTRB(SQLERRM,1,120));
22545 when OTHERS then
22546 if p_commit = FND_API.G_TRUE then
22547 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22548 end if;
22549 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22550 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22551 p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
22552 p_error_text => SUBSTRB(SQLERRM,1,120));
22553 raise;
22554 END update_link_proj_rollup_dates;
22555
22556 PROCEDURE UPDATE_PROGRESS_BULK(
22557 p_api_version IN NUMBER :=1.0
22558 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
22559 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
22560 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
22561 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
22562 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
22563 ,p_calling_mode IN VARCHAR2 := null
22564 ,p_debug_mode IN VARCHAR2 :='N'
22565 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
22566 ,p_action IN VARCHAR2 :='SAVE'
22567 ,p_rollup_entire_wbs_flag IN VARCHAR2 :='N'
22568 ,p_progress_mode IN VARCHAR2 :='FUTURE'
22569 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
22570 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
22571 ,p_project_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22572 ,p_object_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22573 ,p_object_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22574 ,p_object_type_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
22575 ,p_task_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22576 ,p_structure_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22577 ,p_as_of_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22578 ,p_rbs_element_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22579 ,p_resource_assignment_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22580 ,p_rate_based_flag_tbl IN SYSTEM.pa_varchar2_1_tbl_type := SYSTEM.pa_varchar2_1_tbl_type()
22581 ,p_resource_class_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
22582 ,p_txn_currency_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
22583 ,p_percent_complete_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22584 ,p_record_version_number_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22585 ,p_percent_complete_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22586 ,p_eff_rup_percent_complete_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22587 ,p_task_status_tbl IN SYSTEM.pa_varchar2_150_tbl_type := SYSTEM.pa_varchar2_150_tbl_type()
22588 ,p_progress_status_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
22589 ,p_progress_comment_tbl IN SYSTEM.pa_varchar2_4000_tbl_type2 := SYSTEM.pa_varchar2_4000_tbl_type2() /* 9754781 : Changes type */
22590 ,p_brief_overview_tbl IN SYSTEM.pa_varchar2_250_tbl_type := SYSTEM.pa_varchar2_250_tbl_type() /* 7709400 : Changed type */
22591 ,p_actual_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22592 ,p_actual_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22593 ,p_estimated_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22594 ,p_estimated_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22595 ,p_scheduled_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22596 ,p_scheduled_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
22597 ,p_est_remaining_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22598 ,p_etc_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22599 ,p_actual_work_quantity_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22600 ,p_actual_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22601 ,p_actual_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22602 ,p_act_eff_this_period_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22603 ,p_actual_cost_this_period_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22604 ,p_planned_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22605 ,p_planned_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
22606 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22607 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
22608 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22609 )
22610 IS
22611
22612 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PROGRESSES_BULK' ;
22613 l_api_version CONSTANT NUMBER := p_api_version ;
22614 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
22615 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
22616 l_return_status VARCHAR2(1) ;
22617 l_msg_count NUMBER ;
22618 l_msg_data VARCHAR2(250) ;
22619 l_object_type VARCHAR2(30) ;
22620 l_structure_version_id NUMBER ;
22621 l_task_version_id NUMBER ;
22622 l_wp_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
22623 l_fin_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
22624 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
22625 l_last_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
22626 L_LOWEST_LEVEL_TASK VARCHAR2(1);
22627 l_last_progress_date DATE;
22628 l_flag VARCHAR2(1);
22629
22630 CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
22631 IS
22632 SELECT element_version_id, parent_structure_version_id
22633 FROM pa_proj_element_versions
22634 WHERE proj_element_id = c_proj_element_id
22635 AND object_type = 'PA_TASKS'
22636 AND project_id = c_project_id
22637 AND parent_structure_version_id = c_structure_version_id;
22638
22639 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
22640 IS
22641 SELECT task_weight_basis_code
22642 FROM pa_proj_progress_attr
22643 WHERE project_id = c_project_id
22644 AND structure_type = c_structure_type;
22645
22646 CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
22647 IS
22648 SELECT elemver.element_version_id, elemver.parent_structure_version_id
22649 FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
22650 WHERE elemver.proj_element_id = c_proj_element_id
22651 AND elemver.object_type = 'PA_TASKS'
22652 AND elemver.project_id = c_project_id
22653 AND str.project_id = c_project_id
22654 AND elemver.parent_structure_version_id = str.element_version_id
22655 AND str.latest_eff_published_flag = 'Y';
22656
22657 CURSOR c_get_template_flag(c_project_id NUMBER)
22658 IS
22659 SELECT TEMPLATE_FLAG
22660 FROM PA_PROJECTS_ALL
22661 WHERE PROJECT_ID = c_project_id;
22662
22663 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE;
22664 l_last_str_sharing_code pa_projects_all.structure_sharing_code%TYPE;
22665 l_last_project_id NUMBER;
22666 l_last_sharing_Enabled VARCHAR2(1);
22667 l_last_split_workplan VARCHAR2(1);
22668 l_task_id NUMBER;
22669 L_SHARING_ENABLED VARCHAR2(1);
22670 L_SPLIT_WORKPLAN VARCHAR2(1);
22671 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22672 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22673 l_struture_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22674 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
22675 l_task_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22676 l_wp_rollup_method_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22677 l_fin_rollup_method_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22678 l_object_type_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22679 l_lowest_level_task_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22680 l_task_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22681 l_structure_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22682 l_rollup_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22683 l_budget_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22684 l_mass_rlp_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22685 l_action VARCHAR2(30);
22686 l_resource_list_member_id NUMBER;
22687 l_prog_pa_period_name VARCHAR2(30);
22688 l_prog_gl_period_name VARCHAR2(30);
22689 l_base_struct_ver_id NUMBER;
22690 l_msg_code VARCHAR2(32);
22691 l_record_count NUMBER;
22692 l_count_of_rollup_calls NUMBER;
22693 l_count_of_budget_calls NUMBER;
22694
22695 -- Bug 4218507
22696 l_mass_rollup_task_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22697 l_unique_rec_exists VARCHAR2(1);
22698 l_calling_mode VARCHAR2(15);
22699 l_check VARCHAR2(1);
22700
22701 -- Begin fix for Bug # 4524977.
22702
22703 cursor l_cur_publish(l_request_id NUMBER) is
22704 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
22705 from fnd_conc_req_summary_v fcrsv
22706 where fcrsv.request_id = l_request_id;
22707
22708 l_rec_publish l_cur_publish%ROWTYPE;
22709
22710 l_wp_ver_enabled_flag VARCHAR2(1):= null;
22711
22712 l_request_id NUMBER := null;
22713 l_process_code VARCHAR2(30) := null;
22714 l_str_version_id NUMBER := null;
22715
22716 -- End fix for Bug # 4524977.
22717
22718 l_plan_version_id NUMBER; -- 4587145
22719
22720 l_prev_prog_upd_date date; -- 7225884
22721
22722 -- MOAC Changes Bug 4698162 Begin
22723 CURSOR c_get_org_id(c_project_id NUMBER) IS
22724 select org_id
22725 from pa_projects_all
22726 where project_id = c_project_id;
22727
22728 l_org_id NUMBER;
22729 -- MOAC Changes Bug 4698162 End
22730 l_structure_id number;
22731
22732 BEGIN
22733 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
22734
22735 IF g1_debug_mode = 'Y' THEN
22736 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK');
22737 END IF;
22738
22739 --IF (p_commit = FND_API.G_TRUE) THEN
22740 savepoint UPDATE_PROGRESS_BULK;
22741 --END IF;
22742
22743 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
22744 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22745 END IF;
22746
22747 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
22748 FND_MSG_PUB.initialize;
22749 END IF;
22750
22751 x_return_status := FND_API.G_RET_STS_SUCCESS;
22752
22753 l_record_count := p_project_id_tbl.COUNT;
22754
22755 IF g1_debug_mode = 'Y' THEN
22756 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK l_record_count '||l_record_count, x_Log_Level=> 3);
22757 END IF;
22758
22759 IF( p_percent_complete_id_tbl.COUNT <> l_record_count OR
22760 p_object_id_tbl.COUNT <> l_record_count OR
22761 p_object_version_id_tbl.COUNT <> l_record_count OR
22762 p_object_type_tbl.COUNT <> l_record_count OR
22763 p_as_of_date_tbl.COUNT <> l_record_count OR
22764 p_percent_complete_tbl.COUNT <> l_record_count OR
22765 p_progress_status_code_tbl.COUNT <> l_record_count OR
22766 p_progress_comment_tbl.COUNT <> l_record_count OR
22767 p_brief_overview_tbl.COUNT <> l_record_count OR
22768 p_actual_start_date_tbl.COUNT <> l_record_count OR
22769 p_actual_finish_date_tbl.COUNT <> l_record_count OR
22770 p_estimated_start_date_tbl.COUNT <> l_record_count OR
22771 p_estimated_finish_date_tbl.COUNT <> l_record_count OR
22772 p_scheduled_start_date_tbl.COUNT <> l_record_count OR
22773 p_scheduled_finish_date_tbl.COUNT <> l_record_count OR
22774 p_record_version_number_tbl.COUNT <> l_record_count OR
22775 p_task_status_tbl.COUNT <> l_record_count OR
22776 p_ETC_cost_tbl.COUNT <> l_record_count OR
22777 p_est_remaining_effort_tbl.COUNT <> l_record_count OR
22778 p_actual_work_quantity_tbl.COUNT <> l_record_count OR
22779 p_actual_effort_tbl.COUNT <> l_record_count OR
22780 p_actual_cost_tbl.COUNT <> l_record_count OR
22781 p_act_eff_this_period_tbl.COUNT <> l_record_count OR
22782 p_actual_cost_this_period_tbl.COUNT <> l_record_count OR
22783 p_task_id_tbl.COUNT <> l_record_count OR
22784 p_structure_version_id_tbl.COUNT <> l_record_count OR
22785 p_planned_cost_tbl.COUNT <> l_record_count OR
22786 p_planned_effort_tbl.COUNT <> l_record_count OR
22787 p_rate_based_flag_tbl.COUNT <> l_record_count OR
22788 p_resource_class_code_tbl.COUNT <> l_record_count OR
22789 p_txn_currency_code_tbl.COUNT <> l_record_count OR
22790 p_rbs_element_id_tbl.COUNT <> l_record_count OR
22791 p_resource_assignment_id_tbl.COUNT <> l_record_count OR
22792 p_eff_rup_percent_complete_tbl.COUNT <> l_record_count )
22793 THEN
22794
22795 IF g1_debug_mode = 'Y' THEN
22796 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_percent_complete_id_tbl.COUNT '||p_percent_complete_id_tbl.COUNT, x_Log_Level=> 3);
22797 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_id_tbl.COUNT '||p_object_id_tbl.COUNT, x_Log_Level=> 3);
22798 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_version_id_tbl.COUNT '||p_object_version_id_tbl.COUNT, x_Log_Level=> 3);
22799 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_type_tbl.COUNT '||p_object_type_tbl.COUNT, x_Log_Level=> 3);
22800 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_as_of_date_tbl.COUNT '||p_as_of_date_tbl.COUNT, x_Log_Level=> 3);
22801 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_percent_complete_tbl.COUNT '||p_percent_complete_tbl.COUNT, x_Log_Level=> 3);
22802 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_progress_status_code_tbl.COUNT '||p_progress_status_code_tbl.COUNT, x_Log_Level=> 3);
22803 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_progress_comment_tbl.COUNT '||p_progress_comment_tbl.COUNT, x_Log_Level=> 3);
22804 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_brief_overview_tbl.COUNT '||p_brief_overview_tbl.COUNT, x_Log_Level=> 3);
22805 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_start_date_tbl.COUNT '||p_actual_start_date_tbl.COUNT, x_Log_Level=> 3);
22806 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_finish_date_tbl.COUNT '||p_actual_finish_date_tbl.COUNT, x_Log_Level=> 3);
22807 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_estimated_start_date_tbl.COUNT '||p_estimated_start_date_tbl.COUNT, x_Log_Level=> 3);
22808 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_estimated_finish_date_tbl.COUNT '||p_estimated_finish_date_tbl.COUNT, x_Log_Level=> 3);
22809 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_scheduled_start_date_tbl.COUNT '||p_scheduled_start_date_tbl.COUNT, x_Log_Level=> 3);
22810 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_scheduled_finish_date_tbl.COUNT '||p_scheduled_finish_date_tbl.COUNT, x_Log_Level=> 3);
22811 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_record_version_number_tbl.COUNT '||p_record_version_number_tbl.COUNT, x_Log_Level=> 3);
22812 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_task_status_tbl.COUNT '||p_task_status_tbl.COUNT, x_Log_Level=> 3);
22813 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_est_remaining_effort_tbl.COUNT '||p_est_remaining_effort_tbl.COUNT, x_Log_Level=> 3);
22814 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_ETC_cost_tbl.COUNT '||p_ETC_cost_tbl.COUNT, x_Log_Level=> 3);
22815 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_work_quantity_tbl.COUNT '||p_actual_work_quantity_tbl.COUNT, x_Log_Level=> 3);
22816 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_effort_tbl.COUNT '||p_actual_effort_tbl.COUNT, x_Log_Level=> 3);
22817 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_cost_tbl.COUNT '||p_actual_cost_tbl.COUNT, x_Log_Level=> 3);
22818 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_act_eff_this_period_tbl.COUNT '||p_act_eff_this_period_tbl.COUNT, x_Log_Level=> 3);
22819 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_cost_this_period_tbl.COUNT '||p_actual_cost_this_period_tbl.COUNT, x_Log_Level=> 3);
22820 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_task_id_tbl.COUNT '||p_task_id_tbl.COUNT, x_Log_Level=> 3);
22821 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_structure_version_id_tbl.COUNT '||p_structure_version_id_tbl.COUNT, x_Log_Level=> 3);
22822 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_planned_cost_tbl.COUNT '||p_planned_cost_tbl.COUNT, x_Log_Level=> 3);
22823 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_planned_effort_tbl.COUNT '||p_planned_effort_tbl.COUNT, x_Log_Level=> 3);
22824 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rate_based_flag_tbl.COUNT '||p_rate_based_flag_tbl.COUNT, x_Log_Level=> 3);
22825 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_resource_class_code_tbl.COUNT '||p_resource_class_code_tbl.COUNT, x_Log_Level=> 3);
22826 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_txn_currency_code_tbl.COUNT '||p_txn_currency_code_tbl.COUNT, x_Log_Level=> 3);
22827 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rbs_element_id_tbl.COUNT '||p_rbs_element_id_tbl.COUNT, x_Log_Level=> 3);
22828 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_resource_assignment_id_tbl.COUNT '||p_resource_assignment_id_tbl.COUNT, x_Log_Level=> 3);
22829 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rbs_element_id_tbl.COUNT '||p_rbs_element_id_tbl.COUNT, x_Log_Level=> 3);
22830 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_eff_rup_percent_complete_tbl.COUNT '||p_eff_rup_percent_complete_tbl.COUNT, x_Log_Level=> 3);
22831 END IF;
22832
22833 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
22834 ,p_msg_name => 'PA_INV_PARAM_PASSED');
22835 x_msg_data := 'PA_INV_PARAM_PASSED';
22836 x_return_status := FND_API.G_RET_STS_ERROR;
22837 RAISE FND_API.G_EXC_ERROR;
22838 END IF;
22839
22840
22841 l_action := p_action;
22842 l_last_str_sharing_code := 'ABC';
22843 l_last_project_id := -9999;
22844 PA_PROGRESS_PUB.G_PROJECT_ID := null; --Added for huawei
22845 l_last_sharing_Enabled := 'X';
22846 l_last_split_workplan := 'X';
22847 FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
22848 IF g1_debug_mode = 'Y' THEN
22849 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_project_id_tbl('||i||')='||p_project_id_tbl(i), x_Log_Level=> 3);
22850 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_type_tbl('||i||')='||p_object_type_tbl(i), x_Log_Level=> 3);
22851 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_id_tbl('||i||')='||p_object_id_tbl(i), x_Log_Level=> 3);
22852 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_version_id_tbl('||i||')='||p_object_version_id_tbl(i), x_Log_Level=> 3);
22853 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_task_id_tbl('||i||')='||p_task_id_tbl(i), x_Log_Level=> 3);
22854 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_structure_version_id_tbl('||i||')='||p_structure_version_id_tbl(i), x_Log_Level=> 3);
22855 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_as_of_date_tbl('||i||')='||p_as_of_date_tbl(i), x_Log_Level=> 3);
22856 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_task_status_tbl('||i||')='||p_task_status_tbl(i), x_Log_Level=> 3);
22857 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_percent_complete_tbl('||i||')='||p_percent_complete_tbl(i), x_Log_Level=> 3);
22858 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_progress_status_code_tbl('||i||')='||p_progress_status_code_tbl(i), x_Log_Level=> 3);
22859 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_progress_comment_tbl('||i||')='||p_progress_comment_tbl(i), x_Log_Level=> 3);
22860 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_brief_overview_tbl('||i||')='||p_brief_overview_tbl(i), x_Log_Level=> 3);
22861 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_start_date_tbl('||i||')='||p_actual_start_date_tbl(i), x_Log_Level=> 3);
22862 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_finish_date_tbl('||i||')='||p_actual_finish_date_tbl(i), x_Log_Level=> 3);
22863 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_estimated_start_date_tbl('||i||')='||p_estimated_start_date_tbl(i), x_Log_Level=> 3);
22864 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_estimated_finish_date_tbl('||i||')='||p_estimated_finish_date_tbl(i), x_Log_Level=> 3);
22865 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_scheduled_start_date_tbl('||i||')='||p_scheduled_start_date_tbl(i), x_Log_Level=> 3);
22866 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_scheduled_finish_date_tbl('||i||')='||p_scheduled_finish_date_tbl(i), x_Log_Level=> 3);
22867 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_percent_complete_id_tbl('||i||')='||p_percent_complete_id_tbl(i), x_Log_Level=> 3);
22868 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_record_version_number_tbl('||i||')='||p_record_version_number_tbl(i), x_Log_Level=> 3);
22869 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_ETC_cost_tbl('||i||')='||p_ETC_cost_tbl(i), x_Log_Level=> 3);
22870 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_est_remaining_effort_tbl('||i||')='||p_est_remaining_effort_tbl(i), x_Log_Level=> 3);
22871 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_work_quantity_tbl('||i||')='||p_actual_work_quantity_tbl(i), x_Log_Level=> 3);
22872 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_effort_tbl('||i||')='||p_actual_effort_tbl(i), x_Log_Level=> 3);
22873 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_cost_tbl('||i||')='||p_actual_cost_tbl(i), x_Log_Level=> 3);
22874 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_act_eff_this_period_tbl('||i||')='||p_act_eff_this_period_tbl(i), x_Log_Level=> 3);
22875 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_cost_this_period_tbl('||i||')='||p_actual_cost_this_period_tbl(i), x_Log_Level=> 3);
22876 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_planned_cost_tbl('||i||')='||p_planned_cost_tbl(i), x_Log_Level=> 3);
22877 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_planned_effort_tbl('||i||')='||p_planned_effort_tbl(i), x_Log_Level=> 3);
22878 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_rate_based_flag_tbl('||i||')='||p_rate_based_flag_tbl(i), x_Log_Level=> 3);
22879 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_resource_class_code_tbl('||i||')='||p_resource_class_code_tbl(i), x_Log_Level=> 3);
22880 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_txn_currency_code_tbl('||i||')='||p_txn_currency_code_tbl(i), x_Log_Level=> 3);
22881 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_rbs_element_id_tbl('||i||')='||p_rbs_element_id_tbl(i), x_Log_Level=> 3);
22882 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_resource_assignment_id_tbl('||i||')='||p_resource_assignment_id_tbl(i), x_Log_Level=> 3);
22883 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_eff_rup_percent_complete_tbl('||i||')='||p_eff_rup_percent_complete_tbl(i), x_Log_Level=> 3);
22884 END IF;
22885
22886 -- Begin fix for Bug # 4524977.
22887
22888 PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
22889 (p_project_id => p_project_id_tbl(i)
22890 ,p_structure_type => p_structure_type
22891 ,x_request_id => l_request_id
22892 ,x_process_code => l_process_code
22893 ,x_structure_version_id => l_str_version_id
22894 ,x_return_status => l_return_status
22895 ,x_msg_count => l_msg_count
22896 ,x_msg_data => l_msg_data);
22897
22898
22899 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
22900
22901 x_msg_data := l_msg_data;
22902 x_return_status := 'E';
22903 x_msg_count := l_msg_count;
22904
22905 raise FND_API.G_EXC_ERROR;
22906
22907 end if;
22908
22909 open l_cur_publish(l_request_id);
22910 fetch l_cur_publish into l_rec_publish;
22911 close l_cur_publish;
22912
22913
22914 l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id_tbl(i));
22915
22916 if ((l_rec_publish.process = 'CONC_PUBLISH')
22917 and (l_process_code in ('WUP', 'WUE'))
22918 and (l_wp_ver_enabled_flag = 'Y')) then
22919
22920 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22921 ,p_msg_name => 'PA_PS_PUBLISH_NO_PROG');
22922
22923 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
22924
22925 x_return_status := FND_API.G_RET_STS_ERROR;
22926
22927 raise FND_API.G_EXC_ERROR;
22928
22929 elsif ((l_rec_publish.process = 'CONC_UPDATE')
22930 and (l_process_code = 'WUP')
22931 and (l_wp_ver_enabled_flag = 'N')) then
22932
22933 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22934 ,p_msg_name => 'PA_PS_UPDATE_NO_PROG');
22935
22936 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
22937
22938 x_return_status := FND_API.G_RET_STS_ERROR;
22939
22940 raise FND_API.G_EXC_ERROR;
22941
22942 elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
22943 and (l_process_code = 'WUP')
22944 and (l_wp_ver_enabled_flag = 'N')) then
22945
22946 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22947 ,p_msg_name => 'PA_PS_APLPRG_NO_PROG');
22948
22949 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
22950
22951 x_return_status := FND_API.G_RET_STS_ERROR;
22952
22953 raise FND_API.G_EXC_ERROR;
22954
22955 end if;
22956
22957 -- End fix for Bug # 4524977.
22958
22959 -- Call repective update_task_progress, finc, assgn, dlv depdening on object_type
22960 IF (p_object_type_tbl(i) IS NULL OR p_object_id_tbl(i) IS NULL OR p_as_of_date_tbl(i) IS NULL ) THEN
22961 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
22962 ,p_msg_name => 'PA_INV_PARAM_PASSED');
22963 x_msg_data := 'PA_INV_PARAM_PASSED';
22964 x_return_status := FND_API.G_RET_STS_ERROR;
22965 RAISE FND_API.G_EXC_ERROR;
22966 END IF;
22967
22968 IF l_last_project_id <> p_project_id_tbl(i) THEN
22969 l_last_project_id := p_project_id_tbl(i);
22970 PA_PROGRESS_PUB.G_PROJECT_ID :=l_last_project_id; --Added for huawei
22971 l_last_str_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(l_last_project_id);
22972 l_last_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(l_last_project_id);
22973 IF (l_last_sharing_Enabled = 'N' OR (l_last_sharing_Enabled = 'Y' AND l_last_str_sharing_code <> 'SHARE_FULL'))
22974 AND p_structure_type = 'WORKPLAN'
22975 THEN
22976 l_last_split_workplan := 'Y';
22977 ELSE
22978 l_last_split_workplan := 'N';
22979 END IF;
22980
22981 OPEN c_get_task_weight_method(l_last_project_id, p_structure_type);
22982 FETCH c_get_task_weight_method INTO l_last_rollup_method;
22983 CLOSE c_get_task_weight_method;
22984
22985 l_structure_sharing_code := l_last_str_sharing_code;
22986 l_sharing_Enabled := l_last_sharing_Enabled;
22987 l_split_workplan := l_last_split_workplan;
22988 l_rollup_method := l_last_rollup_method;
22989
22990 -- MOAC Changes Bug 4698162 Begin
22991 OPEN c_get_org_id(p_project_id_tbl(i));
22992 FETCH c_get_org_id INTO l_org_id;
22993 CLOSE c_get_org_id;
22994
22995 IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <> l_org_id THEN
22996 PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
22997 END IF;
22998 -- MOAC Changes Bug 4698162 End
22999
23000 ELSE
23001 l_structure_sharing_code := l_last_str_sharing_code;
23002 l_sharing_Enabled := l_last_sharing_Enabled;
23003 l_split_workplan := l_last_split_workplan;
23004 l_rollup_method := l_last_rollup_method;
23005 END IF;
23006
23007 IF (p_calling_module = 'AMG') THEN
23008 OPEN c_get_template_flag(p_project_id_tbl(i));
23009 FETCH c_get_template_flag INTO l_flag;
23010 CLOSE c_get_template_flag;
23011 IF (l_flag = 'Y') THEN
23012 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
23013 ,p_msg_name => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
23014 x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
23015 x_return_status := FND_API.G_RET_STS_ERROR;
23016 RAISE FND_API.G_EXC_ERROR;
23017 END IF;
23018 END IF;
23019
23020 IF p_structure_type = 'WORKPLAN' THEN -- bug 7225884
23021 BEGIN
23022 SELECT next_progress_update_date
23023 INTO l_prev_prog_upd_date
23024 FROM pa_proj_progress_attr
23025 WHERE project_id = p_project_id_tbl(i)
23026 AND object_type = 'PA_STRUCTURES'
23027 AND structure_type = 'WORKPLAN';
23028 EXCEPTION
23029 WHEN OTHERS THEN
23030 l_prev_prog_upd_date := p_as_of_date_tbl(i)-1;
23031 END;
23032
23033 IF NVL(l_prev_prog_upd_date,p_as_of_date_tbl(i)-1) <> p_as_of_date_tbl(i) THEN
23034 UPDATE pa_proj_progress_attr
23035 SET next_progress_update_date = p_as_of_date_tbl(i)
23036 WHERE project_id = p_project_id_tbl(i)
23037 AND object_type = 'PA_STRUCTURES'
23038 AND structure_type = 'WORKPLAN';
23039 END IF;
23040
23041 END IF;
23042
23043
23044 IF (p_structure_type = 'FINANCIAL' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
23045 IF g1_debug_mode = 'Y' THEN
23046 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
23047 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
23048 END IF;
23049
23050
23051 PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
23052 p_api_version => l_api_version
23053 ,p_init_msg_list => p_init_msg_list
23054 ,p_commit => p_commit
23055 ,p_validate_only => p_validate_only
23056 ,p_validation_level => p_validation_level
23057 ,p_calling_module => p_calling_module
23058 ,p_action => l_action
23059 ,P_rollup_entire_wbs_flag => P_rollup_entire_wbs_flag
23060 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
23061 ,p_project_id => p_project_id_tbl(i)
23062 ,p_object_id => p_object_id_tbl(i)
23063 ,p_object_version_id => p_object_version_id_tbl(i)
23064 ,p_object_type => p_object_type_tbl(i)
23065 ,p_as_of_date => p_as_of_date_tbl(i)
23066 ,p_percent_complete => p_percent_complete_tbl(i)
23067 ,p_structure_type => p_structure_type
23068 ,p_task_id => p_task_id_tbl(i)
23069 ,p_structure_version_id => p_structure_version_id_tbl(i)
23070 ,p_record_version_number => p_record_version_number_tbl(i)
23071 ,p_progress_comment => p_progress_comment_tbl(i)
23072 ,p_brief_overview => p_brief_overview_tbl(i)
23073 ,x_return_status => l_return_status
23074 ,x_msg_count => l_msg_count
23075 ,x_msg_data => l_msg_data
23076 );
23077 IF g1_debug_mode = 'Y' THEN
23078 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_FINANCIAL_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23079 END IF;
23080 ELSIF (p_structure_type = 'WORKPLAN' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
23081 IF g1_debug_mode = 'Y' THEN
23082 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Workplan ', x_Log_Level=> 3);
23083 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
23084 END IF;
23085 PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
23086 p_api_version => l_api_version
23087 ,p_init_msg_list => p_init_msg_list
23088 ,p_commit => p_commit
23089 ,p_validate_only => p_validate_only
23090 ,p_validation_level => p_validation_level
23091 ,p_calling_module => p_calling_module
23092 ,p_calling_mode => p_calling_mode --bug 4287638
23093 ,p_debug_mode => p_debug_mode
23094 ,p_max_msg_count => p_max_msg_count
23095 ,p_action => l_action
23096 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
23097 ,p_progress_mode => p_progress_mode
23098 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
23099 ,p_project_id => p_project_id_tbl(i)
23100 ,p_object_id => p_object_id_tbl(i)
23101 ,p_object_version_id => p_object_version_id_tbl(i)
23102 ,p_object_type => p_object_type_tbl(i)
23103 ,p_as_of_date => p_as_of_date_tbl(i)
23104 ,p_percent_complete => p_percent_complete_tbl(i)
23105 ,p_progress_status_code => p_progress_status_code_tbl(i)
23106 ,p_progress_comment => p_progress_comment_tbl(i)
23107 ,p_brief_overview => p_brief_overview_tbl(i)
23108 ,p_actual_start_date => p_actual_start_date_tbl(i)
23109 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
23110 ,p_estimated_start_date => p_estimated_start_date_tbl(i)
23111 ,p_estimated_finish_date => p_estimated_finish_date_tbl(i)
23112 ,p_record_version_number => p_record_version_number_tbl(i)
23113 ,p_task_status => p_task_status_tbl(i)
23114 ,p_actual_work_quantity => p_actual_work_quantity_tbl(i)
23115 ,p_pm_product_code => p_pm_product_code
23116 ,p_structure_type => p_structure_type
23117 ,p_planned_cost => p_planned_cost_tbl(i)
23118 ,p_planned_effort => p_planned_effort_tbl(i)
23119 ,p_actual_effort => p_actual_effort_tbl(i)
23120 ,p_est_remaining_effort => p_est_remaining_effort_tbl(i)
23121 ,p_structure_version_id => p_structure_version_id_tbl(i)
23122 ,p_eff_rollup_percent_complete => p_eff_rup_percent_complete_tbl(i)
23123 ,x_resource_list_member_id => l_resource_list_member_id
23124 ,x_return_status => l_return_status
23125 ,x_msg_count => l_msg_count
23126 ,x_msg_data => l_msg_data
23127 );
23128
23129 IF g1_debug_mode = 'Y' THEN
23130 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23131 END IF;
23132 ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_ASSIGNMENTS' ) THEN
23133 IF g1_debug_mode = 'Y' THEN
23134 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
23135 END IF;
23136 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
23137 p_api_version => l_api_version
23138 ,p_init_msg_list => p_init_msg_list
23139 ,p_commit => p_commit
23140 ,p_validate_only => p_validate_only
23141 ,p_validation_level => p_validation_level
23142 ,p_calling_module => p_calling_module
23143 ,p_action => l_action
23144 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
23145 ,p_progress_mode => p_progress_mode
23146 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
23147 ,p_project_id => p_project_id_tbl(i)
23148 ,p_object_id => p_object_id_tbl(i)
23149 ,p_object_version_id => p_object_version_id_tbl(i)
23150 ,p_task_id => p_task_id_tbl(i)
23151 ,p_as_of_date => p_as_of_date_tbl(i)
23152 ,p_progress_comment => p_progress_comment_tbl(i)
23153 ,p_brief_overview => p_brief_overview_tbl(i)
23154 ,p_actual_start_date => p_actual_start_date_tbl(i)
23155 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
23156 ,p_estimated_start_date => p_estimated_start_date_tbl(i)
23157 ,p_estimated_finish_date => p_estimated_finish_date_tbl(i)
23158 ,p_record_version_number => p_record_version_number_tbl(i)
23159 ,p_pm_product_code => p_pm_product_code
23160 ,p_structure_type => p_structure_type
23161 ,p_structure_version_id => p_structure_version_id_tbl(i)
23162 ,p_actual_cost_this_period => p_actual_cost_this_period_tbl(i)
23163 ,p_actual_effort_this_period => p_act_eff_this_period_tbl(i)
23164 ,p_rate_based_flag => p_rate_based_flag_tbl(i)
23165 ,p_resource_class_code => p_resource_class_code_tbl(i)
23166 ,p_actual_cost => p_actual_cost_tbl(i)
23167 ,p_actual_effort => p_actual_effort_tbl(i)
23168 ,p_etc_cost_this_period => p_etc_cost_tbl(i)
23169 ,p_etc_effort_this_period => p_est_remaining_effort_tbl(i)
23170 ,p_txn_currency_code => p_txn_currency_code_tbl(i)
23171 ,p_rbs_element_id => p_rbs_element_id_tbl(i)
23172 ,p_resource_assignment_id => p_resource_assignment_id_tbl(i)
23173 ,p_scheduled_start_date => p_scheduled_start_date_tbl(i)
23174 ,p_scheduled_finish_date => p_scheduled_finish_date_tbl(i)
23175 ,x_return_status => l_return_status
23176 ,x_msg_count => l_msg_count
23177 ,x_msg_data => l_msg_data
23178 );
23179 IF g1_debug_mode = 'Y' THEN
23180 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_ASSIGNMENT_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23181 END IF;
23182 ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_DELIVERABLES' ) THEN
23183 IF g1_debug_mode = 'Y' THEN
23184 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
23185 END IF;
23186 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
23187 p_api_version => l_api_version
23188 ,p_init_msg_list => p_init_msg_list
23189 ,p_commit => p_commit
23190 ,p_validate_only => p_validate_only
23191 ,p_validation_level => p_validation_level
23192 ,p_calling_module => p_calling_module
23193 ,p_action => l_action
23194 ,p_bulk_load_flag => P_rollup_entire_wbs_flag
23195 ,p_progress_mode => p_progress_mode
23196 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
23197 ,p_project_id => p_project_id_tbl(i)
23198 ,p_object_id => p_object_id_tbl(i)
23199 ,p_object_type => p_object_type_tbl(i)
23200 ,p_object_version_id => p_object_version_id_tbl(i)
23201 ,p_del_status => p_task_status_tbl(i)
23202 ,p_task_id => p_task_id_tbl(i)
23203 ,p_as_of_date => p_as_of_date_tbl(i)
23204 ,p_percent_complete => p_percent_complete_tbl(i)
23205 ,p_progress_status_code => p_progress_status_code_tbl(i)
23206 ,p_progress_comment => p_progress_comment_tbl(i)
23207 ,p_brief_overview => p_brief_overview_tbl(i)
23208 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
23209 ,p_record_version_number => p_record_version_number_tbl(i)
23210 ,p_pm_product_code => p_pm_product_code
23211 ,p_structure_type => p_structure_type
23212 ,x_return_status => l_return_status
23213 ,x_msg_count => l_msg_count
23214 ,x_msg_data => l_msg_data
23215 );
23216 IF g1_debug_mode = 'Y' THEN
23217 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_DELIVERABLE_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23218 END IF;
23219 END IF;
23220
23221 IF g1_debug_mode = 'Y' THEN
23222 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After individual APIs are called l_return_status='||l_return_status, x_Log_Level=> 3);
23223 END IF;
23224
23225 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23226 x_msg_data := l_msg_data;
23227 x_return_status := 'E';
23228 x_msg_count := l_msg_count;
23229 RAISE FND_API.G_EXC_ERROR;
23230 END IF;
23231
23232 l_task_version_id_tbl.extend(1);
23233 l_object_type_tbl.extend(1);
23234 l_lowest_level_task_tbl.extend(1);
23235 l_structure_version_id_tbl.extend(1);
23236 l_task_id_tbl.extend(1);
23237 l_wp_rollup_method_tbl.extend(1);
23238 l_fin_rollup_method_tbl.extend(1);
23239 l_rollup_call_required_tbl.extend(1);
23240 l_mass_rlp_call_required_tbl.extend(1);
23241 l_budget_call_required_tbl.extend(1);
23242
23243 IF g1_debug_mode = 'Y' THEN
23244 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After building plsql tables', x_Log_Level=> 3);
23245 END IF;
23246
23247
23248 IF (p_object_type_tbl(i) = 'PA_ASSIGNMENTS' OR p_object_type_tbl(i) = 'PA_DELIVERABLES'
23249 OR (p_structure_type = 'FINANCIAL' and p_object_type_tbl(i) = 'PA_TASKS'))
23250 THEN
23251
23252 l_object_type_tbl(i) := 'PA_TASKS';
23253 l_task_version_id_tbl(i) := null;
23254 l_structure_version_id_tbl(i) := null;
23255
23256 IF p_object_type_tbl(i) = 'PA_DELIVERABLES' AND (p_task_id_tbl(i) IS NOT NULL)THEN
23257 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
23258 IF ( PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id_tbl(i), p_task_id_tbl(i))) <> 'CANCELLED' ) THEN
23259 OPEN c_get_latest_pub_task_ver(p_task_id_tbl(i), p_project_id_tbl(i));
23260 FETCH c_get_latest_pub_task_ver INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
23261 CLOSE c_get_latest_pub_task_ver;
23262 END IF;
23263
23264 ELSE
23265 OPEN c_get_task_version_id(p_task_id_tbl(i), p_project_id_tbl(i) ,p_structure_version_id_tbl(i));
23266 FETCH c_get_task_version_id INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
23267 CLOSE c_get_task_version_id;
23268 END IF;
23269 l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
23270 l_task_id_tbl(i) := p_task_id_tbl(i);
23271 ELSE
23272 l_object_type_tbl(i) := p_object_type_tbl(i);
23273 l_task_version_id_tbl(i) := p_object_version_id_tbl(i);
23274 l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
23275 l_structure_version_id_tbl(i) := p_structure_version_id_tbl(i);
23276 l_task_id_tbl(i) := p_object_id_tbl(i);
23277 END IF;
23278
23279 l_wp_rollup_method_tbl(i) := l_rollup_method;
23280 l_fin_rollup_method_tbl(i) := l_rollup_method;
23281 l_rollup_call_required_tbl(i) := 'Y';
23282 l_budget_call_required_tbl(i) := 'Y';
23283 l_mass_rlp_call_required_tbl(i) := 'N';
23284 END LOOP ; -- FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
23285
23286 IF g1_debug_mode = 'Y' THEN
23287 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After First loop', x_Log_Level=> 3);
23288 END IF;
23289
23290
23291 -- loop through to find out whether mass rollup should be called or individual rollup
23292 FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST-1 LOOP
23293 IF l_task_version_id_tbl(i) IS NULL THEN
23294 l_rollup_call_required_tbl(i) := 'N';
23295 l_budget_call_required_tbl(i) := 'N';
23296 ELSE
23297 IF l_rollup_call_required_tbl(i) = 'Y'
23298 THEN
23299 FOR j in i+1..p_project_id_tbl.count LOOP
23300 IF l_task_version_id_tbl(j) IS NULL THEN
23301 l_rollup_call_required_tbl(j) := 'N';
23302 l_budget_call_required_tbl(j) := 'N';
23303 ELSE
23304 IF p_project_id_tbl(i) = p_project_id_tbl(j) AND
23305 p_as_of_date_tbl(i) = p_as_of_date_tbl(j) AND
23306 l_structure_version_id_tbl(i) = l_structure_version_id_tbl(j)
23307 THEN
23308 l_budget_call_required_tbl(j) := 'N';
23309 IF l_task_version_id_tbl(i) = l_task_version_id_tbl(j)
23310 THEN
23311 l_rollup_call_required_tbl(j) := 'N';
23312 ELSE
23313 l_mass_rlp_call_required_tbl(i) := 'Y';
23314 l_rollup_call_required_tbl(i) := 'N';
23315 l_rollup_call_required_tbl(j) := 'N';
23316 END IF;
23317 END IF;
23318 END IF;
23319 END LOOP;
23320 END IF;
23321 END IF;
23322 END LOOP;
23323
23324 IF g1_debug_mode = 'Y' THEN
23325 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Second loop', x_Log_Level=> 3);
23326 END IF;
23327
23328 l_last_project_id := null; -- MOAC Changes Bug 4698162
23329 PA_PROGRESS_PUB.G_PROJECT_ID :=null; --Added for huawei
23330
23331 FOR i in 1..l_task_version_id_tbl.count LOOP
23332
23333 -- MOAC Changes Bug 4698162 Begin
23334 IF NVL(l_last_project_id,-1234) <> p_project_id_tbl(i) THEN
23335 l_last_project_id := p_project_id_tbl(i);
23336
23337 -- added below 2 lines of code for Huawei bug 13923366 skkoppul
23338 PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED( p_project_id_tbl(i) );
23339 PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE := PA_PROJ_TASK_STRUC_PUB.GET_SHARE_TYPE(p_project_id_tbl(i));
23340
23341 OPEN c_get_org_id(p_project_id_tbl(i));
23342 FETCH c_get_org_id INTO l_org_id;
23343 CLOSE c_get_org_id;
23344
23345 IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <> l_org_id THEN
23346 PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
23347 END IF;
23348 END IF;
23349 -- MOAC Changes Bug 4698162 End
23350
23351 IF l_action = 'SAVE' AND l_rollup_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' THEN
23352 IF g1_debug_mode = 'Y' THEN
23353 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Log_Level=> 3);
23354 END IF;
23355
23356 PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT(
23357 p_calling_module => p_calling_module,
23358 p_project_id => p_project_id_tbl(i),
23359 p_task_id => l_task_id_tbl(i),
23360 p_task_version_id => l_task_version_id_tbl(i),
23361 p_as_of_date => p_as_of_date_tbl(i),
23362 p_structure_version_id => l_structure_version_id_tbl(i),
23363 p_wp_rollup_method => l_wp_rollup_method_tbl(i),
23364 x_return_status => l_return_status,
23365 x_msg_count => l_msg_count,
23366 x_msg_data => l_msg_data);
23367
23368 IF g1_debug_mode = 'Y' THEN
23369 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling ASGN_DLV_TO_TASK_ROLLUP_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23370 END IF;
23371
23372 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23373 x_msg_data := l_msg_data;
23374 x_return_status := 'E';
23375 x_msg_count := l_msg_count;
23376 RAISE FND_API.G_EXC_ERROR;
23377 END IF;
23378 END IF;
23379 IF l_action = 'PUBLISH' AND l_split_workplan = 'Y' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN'
23380 -- Removed for Bug 4416432 Issue 11 : AND p_object_type_tbl(i) <> 'PA_DELIVERABLES' -- Bug 4370820 : Added <> DELIVERABLES
23381 THEN
23382 IF g1_debug_mode = 'Y' THEN
23383 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Check existnece of records in PA_PROG_ACT_BY_PERIOD_TEMP', x_Log_Level=> 3);
23384 END IF;
23385 BEGIN -- 4482295
23386 -- Bug 4416432 Issue 11 Added following Check
23387 l_check := 'N';
23388 SELECT 'Y'
23389 INTO l_check
23390 FROM DUAL
23391 WHERE EXISTS
23392 (SELECT 'xyz'
23393 from PA_PROG_ACT_BY_PERIOD_TEMP
23394 where project_id = p_project_id_tbl(i)
23395 AND structure_version_id = l_structure_version_id_tbl(i));
23396 EXCEPTION -- 4482295
23397 WHEN NO_DATA_FOUND THEN
23398 l_check := 'N';
23399 IF g1_debug_mode = 'Y' THEN
23400 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'No Records in PA_PROG_ACT_BY_PERIOD_TEMP', x_Log_Level=> 3);
23401 END IF;
23402 END; -- 4482295
23403
23404 IF g1_debug_mode = 'Y' THEN
23405 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_check='||l_check, x_Log_Level=> 3);
23406 END IF;
23407
23408 IF l_check = 'Y' THEN
23409 BEGIN
23410 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N';
23411 -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
23412 -- is not called. Actually it gets called but PJI code does not do anything.
23413 IF g1_debug_mode = 'Y' THEN
23414 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling MAINTAIN_ACTUAL_AMT_WRP', x_Log_Level=> 3);
23415 END IF;
23416
23417 l_project_ids.extend(1);
23418 l_project_ids(1) := p_project_id_tbl(i);
23419 l_struture_version_ids.extend(1);
23420 l_struture_version_ids(1) := l_structure_version_id_tbl(i);
23421 l_proj_thru_dates_tbl.extend(1);
23422 l_proj_thru_dates_tbl(1) := p_as_of_date_tbl(i);
23423 -- We can additionally check the existence of data before calling
23424 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
23425 (P_PROJECT_ID_TAB => l_project_ids,
23426 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
23427 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
23428 P_CALLING_CONTEXT => 'WP_PROGRESS',
23429 P_EXTRACTION_TYPE => 'INCREMENTAL',
23430 X_RETURN_STATUS => l_return_status,
23431 X_MSG_COUNT => l_msg_count,
23432 X_MSG_DATA => l_msg_data
23433 );
23434
23435 IF g1_debug_mode = 'Y' THEN
23436 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling MAINTAIN_ACTUAL_AMT_WRP l_return_status='||l_return_status, x_Log_Level=> 3);
23437 END IF;
23438
23439
23440 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23441 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23442 p_msg_name => l_msg_data);
23443 x_msg_data := l_msg_data;
23444 x_return_status := 'E';
23445 x_msg_count := l_msg_count;
23446 RAISE FND_API.G_EXC_ERROR;
23447 END IF;
23448 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ;
23449 delete from PA_PROG_ACT_BY_PERIOD_TEMP where project_id = p_project_id_tbl(i) AND structure_version_id = l_structure_version_id_tbl(i);
23450 EXCEPTION
23451 WHEN OTHERS THEN
23452 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23453 p_procedure_name => 'UPDATE_PROGRESS_BULK',
23454 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
23455 RAISE FND_API.G_EXC_ERROR;
23456 END;
23457 END IF; --l_check
23458 END IF;
23459 IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' THEN
23460 --14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23461 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N')= 'N'
23462 THEN
23463
23464 BEGIN
23465 -- We can additionally check the existence of data before calling
23466 IF g1_debug_mode = 'Y' THEN
23467 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling PLAN_UPDATE', x_Log_Level=> 3);
23468 END IF;
23469
23470 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
23471 p_project_id => p_project_id_tbl(i),
23472 p_plan_type_id => -1,
23473 p_proj_str_ver_id => l_structure_version_id_tbl(i)) ;
23474
23475 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE ( p_plan_version_id => l_plan_version_id, -- 4587145 : Added l_plan_version_id
23476 x_msg_code => l_msg_code,
23477 x_return_status => x_return_status);
23478 IF g1_debug_mode = 'Y' THEN
23479 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling PLAN_UPDATE x_return_status='||x_return_status, x_Log_Level=> 3);
23480 END IF;
23481
23482 EXCEPTION
23483 WHEN OTHERS THEN
23484 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23485 p_procedure_name => 'UPDATE_PROGRESS_BULK',
23486 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
23487 RAISE FND_API.G_EXC_ERROR;
23488 END;
23489 END IF;
23490
23491 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id_tbl(i));
23492
23493 IF (l_base_struct_ver_id = -1) THEN
23494 l_base_struct_ver_id := l_structure_version_id_tbl(i);
23495 END IF;
23496 --14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23497 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23498 THEN
23499
23500 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
23501 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
23502 p_calling_module => p_calling_module
23503 ,p_project_id => p_project_id_tbl(i)
23504 ,p_structure_version_id => l_structure_version_id_tbl(i)
23505 ,p_baselined_str_ver_id => l_base_struct_ver_id
23506 ,p_program_rollup_flag => 'Y'
23507 ,p_calling_context => 'SUMMARIZE'
23508 ,p_as_of_date => p_as_of_date_tbl(i) -- Fix for Bug # 4251406.
23509 ,x_return_status => x_return_status
23510 ,x_msg_count => x_msg_count
23511 ,x_msg_data => x_msg_data
23512 );
23513 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23514 RAISE FND_API.G_EXC_ERROR;
23515 END IF;
23516 END IF;
23517
23518 END IF;
23519
23520 IF g1_debug_mode = 'Y' THEN
23521 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_mass_rlp_call_required_tbl(i) '||l_mass_rlp_call_required_tbl(i), x_Log_Level=> 3);
23522 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_rollup_call_required_tbl(i) '||l_rollup_call_required_tbl(i), x_Log_Level=> 3);
23523 END IF;
23524 IF l_action = 'PUBLISH' AND l_mass_rlp_call_required_tbl(i) = 'Y'
23525 THEN
23526 -- It means it is the case of Mass Update Progress and AMG
23527 -- Hence do mass rollup
23528 -- We can give here some other value to l_count_of_rollup_calls
23529 -- like 5-6 so that after objects got exceeded that 5 then call Mass Rollup
23530 -- otherwsie individual rollup
23531 IF g1_debug_mode = 'Y' THEN
23532 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Mass ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
23533 END IF;
23534
23535 -- Bug 4218507 Begin
23536 FOR ii in 1..p_project_id_tbl.count LOOP
23537 IF p_project_id_tbl(ii) = p_project_id_tbl(i) THEN
23538 l_unique_rec_exists := 'Y';
23539 FOR jj in 1..l_mass_rollup_task_ver_id_tbl.count LOOP
23540 IF l_task_version_id_tbl(ii) IS NOT NULL AND l_task_version_id_tbl(ii) = l_mass_rollup_task_ver_id_tbl(jj) THEN
23541 l_unique_rec_exists := 'N';
23542 exit;
23543 END IF;
23544 END LOOP;
23545 IF l_unique_rec_exists = 'Y' AND l_task_version_id_tbl(ii) IS NOT NULL THEN
23546 l_mass_rollup_task_ver_id_tbl.extend(1);
23547 l_mass_rollup_task_ver_id_tbl(l_mass_rollup_task_ver_id_tbl.count) := l_task_version_id_tbl(ii);
23548 END IF;
23549 END IF;
23550 END LOOP;
23551 -- Bug 4218507 Begin
23552
23553 -- 14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23554 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23555 THEN
23556 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
23557 p_init_msg_list => p_init_msg_list
23558 ,p_commit => p_commit
23559 ,p_validate_only => p_validate_only
23560 ,p_project_id => p_project_id_tbl(i)
23561 ,p_structure_version_id => l_structure_version_id_tbl(i)
23562 ,p_as_of_date => p_as_of_date_tbl(i)
23563 ,p_structure_type => p_structure_type
23564 ,p_rollup_entire_wbs => 'Y'
23565 ,p_task_version_id_tbl => l_mass_rollup_task_ver_id_tbl
23566 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i) -- Bug 4619000
23567 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i) -- Bug 4619000
23568 ,x_return_status => x_return_status
23569 ,x_msg_count => x_msg_count
23570 ,x_msg_data => x_msg_data);
23571 -- Mass Rollup currently has limitation that it does not do future rollup too
23572 IF g1_debug_mode = 'Y' THEN
23573 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling Mass ROLLUP_PROGRESS_PVT x_return_status='||x_return_status, x_Log_Level=> 3);
23574 END IF;
23575
23576 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23577 RAISE FND_API.G_EXC_ERROR;
23578 END IF;
23579 END IF;
23580 ELSIF l_action = 'PUBLISH' AND l_rollup_call_required_tbl(i) = 'Y'
23581 THEN
23582
23583 IF g1_debug_mode = 'Y' THEN
23584 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Singular ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
23585 END IF;
23586 -- 14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23587 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23588 THEN
23589
23590 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
23591 p_init_msg_list => 'F'
23592 ,p_commit => 'F'
23593 ,p_validate_only => 'F'
23594 ,p_calling_module => p_calling_module
23595 ,p_progress_mode => p_progress_mode
23596 ,p_project_id => p_project_id_tbl(i)
23597 ,P_OBJECT_TYPE => 'PA_TASKS'
23598 ,P_OBJECT_ID => l_task_id_tbl(i)
23599 ,p_object_version_id => l_task_version_id_tbl(i)
23600 ,p_as_of_date => p_as_of_date_tbl(i)
23601 ,p_lowest_level_task => nvl(l_lowest_level_task_tbl(i), 'N')
23602 ,p_process_whole_tree => 'Y'
23603 ,p_structure_version_id => l_structure_version_id_tbl(i)
23604 ,p_rollup_entire_wbs => 'N'
23605 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i)
23606 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i)
23607 ,p_task_version_id => l_task_version_id_tbl(i)
23608 ,p_structure_type => p_structure_type
23609 ,x_return_status => l_return_status
23610 ,x_msg_count => l_msg_count
23611 ,x_msg_data => l_msg_data);
23612
23613 IF g1_debug_mode = 'Y' THEN
23614 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling Singular ROLLUP_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23615 END IF;
23616
23617 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23618 x_msg_data := l_msg_data;
23619 x_return_status := 'E';
23620 x_msg_count := l_msg_count;
23621 RAISE FND_API.G_EXC_ERROR;
23622 END IF;
23623 END IF;
23624
23625 IF p_progress_mode <> 'BACKDATED' THEN
23626 IF g1_debug_mode = 'Y' THEN
23627 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
23628 END IF;
23629
23630 IF p_object_type_tbl(i) IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
23631 l_calling_mode := null;
23632 ELSE
23633 l_calling_mode := 'FUTURE_ROLLUP';
23634 END IF;
23635 --14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23636 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N')= 'N'
23637 THEN
23638 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
23639 p_project_id => p_project_id_tbl(i)
23640 ,P_OBJECT_TYPE => l_object_type_tbl(i)
23641 ,P_OBJECT_ID => l_task_id
23642 ,p_object_version_id => l_task_version_id_tbl(i)
23643 ,p_as_of_date => p_as_of_date_tbl(i)
23644 ,p_lowest_level_task => NVL( l_lowest_level_task_tbl(i), 'N' )
23645 ,p_calling_module => p_calling_module
23646 ,p_calling_mode => l_calling_mode -- Bug 4097710
23647 ,p_structure_type => p_structure_type
23648 ,p_structure_version_id => l_structure_version_id_tbl(i)
23649 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i)
23650 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i)
23651 ,x_return_status => l_return_status
23652 ,x_msg_count => l_msg_count
23653 ,x_msg_data => l_msg_data
23654 );
23655
23656 IF g1_debug_mode = 'Y' THEN
23657 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling ROLLUP_FUTURE_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23658 END IF;
23659
23660 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23661 x_msg_data := l_msg_data;
23662 x_return_status := 'E';
23663 x_msg_count := l_msg_count;
23664 RAISE FND_API.G_EXC_ERROR;
23665 END IF;
23666 END IF;
23667 END IF;
23668 END IF;
23669
23670 ---5466645
23671 --Bug 13923366: Removed this unwanted loop.
23672 --FOR i in 1..l_task_version_id_tbl.count loop
23673 IF p_progress_mode <> 'BACKDATED' AND l_object_type_tbl(i) = 'PA_TASKS'
23674 AND p_structure_type = 'WORKPLAN' --maansari fpm changes
23675 THEN
23676 IF ( NVL(l_lowest_level_task_tbl(i), 'N' ) = 'Y' ) THEN
23677 --Huawei Bug 13923366
23678 IF(NVL(PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED, 'N') = 'Y')
23679 then
23680 PA_TASK_PVT1.Update_Dates_To_All_Versions(
23681 p_project_id => p_project_id_tbl(i)
23682 ,p_element_version_id => l_task_version_id_tbl(i)
23683 ,x_return_status => l_return_status
23684 ,x_msg_count => l_msg_count
23685 ,x_msg_data => l_msg_data );
23686 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
23687 THEN
23688 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23689 p_msg_name => l_msg_data);
23690 x_msg_data := l_msg_data;
23691 x_return_status := 'E';
23692 RAISE FND_API.G_EXC_ERROR;
23693 END IF;
23694 end if; --Huawei Bug 13923366
23695
23696 BEGIN
23697 -- Bug 8881708 - l_task_version_id is not initialized in this procedure
23698 /*
23699 Select ppev1.proj_element_id
23700 into l_structure_id
23701 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
23702 where ppev2.element_version_id = l_task_version_id
23703 and ppev2.project_id = ppev1.project_id
23704 and ppev2.parent_structure_version_id = ppev1.element_version_id;
23705 */
23706 l_structure_id := NULL;
23707
23708 SELECT pevs.proj_element_id
23709 INTO l_structure_id
23710 FROM pa_proj_elem_ver_structure pevs
23711 WHERE pevs.element_version_id = l_structure_version_id_tbl(i)
23712 AND pevs.project_id = p_project_id_tbl(i);
23713
23714 EXCEPTION WHEN OTHERS THEN
23715 l_structure_id := -999;
23716 END;
23717
23718 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
23719 AND
23720 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id_tbl(i)) = 'Y') --Bug 3784405 Satish
23721 AND
23722 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id_tbl(i)) = 'Y'))
23723 THEN
23724 --copy to transaction dates
23725 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
23726 p_validate_only => FND_API.G_FALSE
23727 ,p_project_id => p_project_id_tbl(i)
23728 ,x_return_status => x_return_status
23729 ,x_msg_count => x_msg_count
23730 ,x_msg_data => x_msg_data);
23731 END IF;
23732 END IF;
23733 END IF; ------ p_progress_mode <> backdated
23734 --END LOOP;
23735 --Huawei Bug 13923366
23736 ---5466645
23737 -- Bug 4392189 : Uncommenting and chaning the code for program rollup
23738
23739 IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED' THEN
23740 IF g1_debug_mode = 'Y' THEN
23741 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
23742 END IF;
23743
23744 pa_progress_pvt.program_rollup_pvt(
23745 p_init_msg_list => 'F'
23746 ,p_commit => 'F'
23747 ,p_validate_only => 'F'
23748 ,p_project_id => p_project_id_tbl(i)
23749 ,p_as_of_date => p_as_of_date_tbl(i)
23750 ,p_structure_type => p_structure_type
23751 ,p_structure_ver_id => l_structure_version_id_tbl(i)
23752 ,x_return_status => l_return_status
23753 ,x_msg_count => l_msg_count
23754 ,x_msg_data => l_msg_data);
23755
23756
23757 IF g1_debug_mode = 'Y' THEN
23758 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling program_rollup_pvt l_return_status='||l_return_status, x_Log_Level=> 3);
23759 END IF;
23760 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23761 x_msg_data := l_msg_data;
23762 x_return_status := 'E';
23763 x_msg_count := l_msg_count;
23764 RAISE FND_API.G_EXC_ERROR;
23765 END IF;
23766
23767 END IF;
23768
23769 IF l_action = 'PUBLISH' AND p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
23770 AND p_object_type_tbl(i) = 'PA_TASKS' AND l_rollup_call_required_tbl(i) = 'Y'
23771 THEN
23772 IF g1_debug_mode = 'Y' THEN
23773 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling update_link_proj_rollup_dates', x_Log_Level=> 3);
23774 END IF;
23775
23776 pa_progress_pub.update_link_proj_rollup_dates(
23777 p_init_msg_list => 'F'
23778 ,p_commit => 'F'
23779 ,p_calling_module => p_calling_module
23780 ,p_project_id => p_project_id_tbl(i)
23781 ,p_task_id => l_task_id_tbl(i)
23782 ,p_task_version_id => l_task_version_id_tbl(i)
23783 ,p_as_of_date => p_as_of_date_tbl(i)
23784 ,p_structure_version_id => l_structure_version_id_tbl(i)
23785 ,x_return_status => l_return_status
23786 ,x_msg_count => l_msg_count
23787 ,x_msg_data => l_msg_data
23788 );
23789
23790 IF g1_debug_mode = 'Y' THEN
23791 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling update_link_proj_rollup_dates l_return_status='||l_return_status, x_Log_Level=> 3);
23792 END IF;
23793
23794 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23795 x_msg_data := l_msg_data;
23796 x_return_status := 'E';
23797 x_msg_count := l_msg_count;
23798 RAISE FND_API.G_EXC_ERROR;
23799 END IF;
23800 END IF;
23801 END LOOP;
23802
23803 IF (p_commit = FND_API.G_TRUE) THEN
23804 COMMIT;
23805 END IF;
23806
23807 EXCEPTION
23808 when FND_API.G_EXC_ERROR then
23809 -- if p_commit = FND_API.G_TRUE then
23810 rollback to UPDATE_PROGRESS_BULK;
23811 -- end if;
23812 x_return_status := FND_API.G_RET_STS_ERROR;
23813 x_msg_count := fnd_msg_pub.count_msg;
23814 when FND_API.G_EXC_UNEXPECTED_ERROR then
23815 -- if p_commit = FND_API.G_TRUE then
23816 rollback to UPDATE_PROGRESS_BULK;
23817 -- end if;
23818 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23819 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23820 p_procedure_name => 'UPDATE_PROGRESS_BULK',
23821 p_error_text => SUBSTRB(SQLERRM,1,120));
23822 x_msg_count := fnd_msg_pub.count_msg;
23823 when OTHERS then
23824 -- if p_commit = FND_API.G_TRUE then
23825 rollback to UPDATE_PROGRESS_BULK;
23826 -- end if;
23827 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23828 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23829 p_procedure_name => 'UPDATE_PROGRESS_BULK',
23830 p_error_text => SUBSTRB(SQLERRM,1,120));
23831 x_msg_count := fnd_msg_pub.count_msg;
23832 raise;
23833 END update_progress_bulk;
23834
23835 -- Bug 3994165 : Removing POPULATE_PRG_ACT_TEMP_TBL and POPULATE_PRG_ACT_TBL_SINGLE
23836 -- methods. They are not needed now.
23837
23838 -- Begin fix for Bug # 4262985.
23839
23840 PROCEDURE apply_lp_prog_on_cwv_wrp(
23841 p_api_version IN NUMBER :=1.0
23842 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
23843 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
23844 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
23845 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
23846 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
23847 ,p_debug_mode IN VARCHAR2 :='N'
23848 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
23849 ,p_project_id IN NUMBER
23850 ,p_working_str_version_id IN NUMBER
23851 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
23852 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
23853 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
23854 ) IS
23855
23856 l_api_name CONSTANT VARCHAR2(30) := 'APPLY_LP_PROG_ON_CWV_WRP';
23857 l_api_version CONSTANT NUMBER := p_api_version;
23858 l_user_id NUMBER := FND_GLOBAL.USER_ID;
23859 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
23860 l_return_status VARCHAR2(1);
23861 l_msg_count NUMBER;
23862 l_msg_data VARCHAR2(250);
23863 l_msg_code VARCHAR2(12000);
23864 BEGIN
23865
23866 IF g1_debug_mode = 'Y' THEN
23867 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
23868 END IF;
23869
23870 IF (p_debug_mode = 'Y') THEN
23871 IF g1_debug_mode = 'Y' THEN
23872 pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
23873 END IF;
23874 END IF;
23875 IF (p_commit = FND_API.G_TRUE) THEN
23876 savepoint APPLY_LP_PROG_ON_CWV_WRP;
23877 END IF;
23878
23879 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
23880 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23881 END IF;
23882
23883 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
23884 FND_MSG_PUB.initialize;
23885 END IF;
23886
23887 x_return_status := FND_API.G_RET_STS_SUCCESS;
23888
23889 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
23890
23891 IF g1_debug_mode = 'Y' THEN
23892 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP Start : Passed Parameters :', x_Log_Level=> 3);
23893 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
23894 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'p_working_str_version_id='||p_working_str_version_id, x_Log_Level=> 3);
23895 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Before calling PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG', x_Log_Level=> 3);
23896 END IF;
23897 -- 4392189 : Program Reporting Changes - Phase 2
23898 -- We do not have to set wbs_flag here. Bcoz depending on this flag, process_wbs_updates call wbs_maint API.
23899 /*
23900 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG
23901 (
23902 p_calling_context => p_calling_module
23903 ,p_project_id => p_project_id
23904 ,p_structure_version_id => p_working_str_version_id
23905 ,p_update_wbs_flag => 'Y'
23906 ,x_return_status => l_return_status
23907 ,x_msg_count => l_msg_count
23908 ,x_msg_data => l_msg_data);
23909 */
23910
23911 IF g1_debug_mode = 'Y' THEN
23912 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Done with PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG l_return_status='||l_return_status, x_Log_Level=> 3);
23913 END IF;
23914
23915
23916 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23917 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23918 p_msg_name => l_msg_data);
23919 x_msg_data := l_msg_data;
23920 x_return_status := 'E';
23921 x_msg_count := l_msg_count;
23922 RAISE FND_API.G_EXC_ERROR;
23923 END IF;
23924
23925 IF g1_debug_mode = 'Y' THEN
23926 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Before calling PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP', x_Log_Level=> 3);
23927 END IF;
23928 PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP(
23929 p_calling_context => 'APPLY_PROGRESS',
23930 p_project_id => p_project_id,
23931 p_structure_version_id => p_working_str_version_id,
23932 x_return_status => l_return_status,
23933 x_msg_count => l_msg_count,
23934 x_msg_data => l_msg_data
23935 );
23936
23937 IF g1_debug_mode = 'Y' THEN
23938 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Done with PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP l_return_status='||l_return_status, x_Log_Level=> 3);
23939 END IF;
23940
23941 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23942 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23943 p_msg_name => l_msg_data);
23944 x_msg_data := l_msg_data;
23945 x_return_status := 'E';
23946 x_msg_count := l_msg_count;
23947 RAISE FND_API.G_EXC_ERROR;
23948 END IF;
23949
23950
23951 EXCEPTION
23952 when FND_API.G_EXC_ERROR then
23953 if p_commit = FND_API.G_TRUE then
23954 rollback to APPLY_LP_PROG_ON_CWV_WRP;
23955 end if;
23956 x_return_status := FND_API.G_RET_STS_ERROR;
23957
23958 when FND_API.G_EXC_UNEXPECTED_ERROR then
23959 if p_commit = FND_API.G_TRUE then
23960 rollback to APPLY_LP_PROG_ON_CWV_WRP;
23961 end if;
23962 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23963 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23964 p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
23965 p_error_text => SUBSTRB(SQLERRM,1,120));
23966 when OTHERS then
23967 if p_commit = FND_API.G_TRUE then
23968 rollback to APPLY_LP_PROG_ON_CWV;
23969 end if;
23970 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23971 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
23972 p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
23973 p_error_text => SUBSTRB(SQLERRM,1,120));
23974 raise;
23975 END APPLY_LP_PROG_ON_CWV_WRP;
23976
23977 -- End fix for Bug # 4262985.
23978
23979 end PA_PROGRESS_PUB;