[Home] [Help]
PACKAGE BODY: APPS.PA_PROGRESS_PUB
Source
1 package body PA_PROGRESS_PUB as
2 /* $Header: PAPCPUBB.pls 120.57.12010000.5 2008/09/19 04:55:09 rballamu ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'PA_PROGRESS_PUB';
5
6 g1_debug_mode varchar2(1) := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7
8 PROCEDURE UPDATE_TASK_PROGRESS(
9 p_api_version IN NUMBER :=1.0,
10 p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE,
11 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
12 p_validate_only IN VARCHAR2 :=FND_API.G_TRUE,
13 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
14 p_calling_module IN VARCHAR2 :='SELF_SERVICE',
15 p_calling_mode IN VARCHAR2 := null,-- bug 4287638
16 p_debug_mode IN VARCHAR2 :='N',
17 p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
18 p_action IN VARCHAR2 default 'SAVE',
19 p_bulk_load_flag IN VARCHAR2 default 'N',
20 p_progress_mode IN VARCHAR2 default 'FUTURE',
21 p_percent_complete_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
22 p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
23 p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
24 p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
25 p_object_type IN Varchar2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
26 p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
27 p_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
28 p_progress_status_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
29 p_progress_comment IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
30 p_brief_overview IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
31 p_actual_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
32 p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
33 p_estimated_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
34 p_estimated_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
35 p_scheduled_start_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
36 p_scheduled_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
37 p_record_version_number IN NUMBER,
38 p_task_status IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
39 p_est_remaining_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
40 p_actual_work_quantity IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
41 p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
42 p_structure_type IN VARCHAR2 := 'WORKPLAN',
43 p_actual_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
44 p_actual_effort_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
45 p_prog_fom_wp_flag IN VARCHAR2 := 'N',
46 p_planned_cost IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
47 p_planned_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
48 p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
49 p_eff_rollup_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM, -- 3910193
50 x_resource_list_member_id OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
51 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
52 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
53 x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
54 )
55 IS
56
57 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_TASK_PROGRESS';
58 l_api_version CONSTANT NUMBER := 1.0;
59 l_return_status VARCHAR2(1);
60 l_msg_count NUMBER;
61 l_msg_data VARCHAR2(250);
62 l_data VARCHAR2(250);
63 l_msg_index_out NUMBER;
64 l_error_msg_code VARCHAR2(250);
65 l_user_id NUMBER := FND_GLOBAL.USER_ID;
66 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
67
68 l_task_id NUMBER;
69 l_project_id NUMBER;
70 l_att_pc_id NUMBER;
71 l_percent_complete_id NUMBER;
72 l_PROGRESS_ROLLUP_ID NUMBER;
73 l_structure_id NUMBER;
74 l_process VARCHAR2(8) := 'NORMAL';
75 l_last_progress_date DATE;
76 l_progress_exists_on_aod VARCHAR2(15);
77 l_rollup_required VARCHAR2(1);
78 l_db_action VARCHAR2(10);
79 l_actual_wq_entry_code VARCHAR2(30);
80 l_incremental_work_qty NUMBER;
81 l_cumulative_work_qty NUMBER;
82 l_base_percent_complete NUMBER;
83 l_published_flag VARCHAR2(1);
84 l_current_flag VARCHAR2(1);
85 l_actual_start_date DATE;
86 l_actual_finish_date DATE;
87 l_base_percent_comp_deriv_code VARCHAR2(30);
88 l_base_progress_status_code VARCHAR2(30);
89 l_proj_element_id NUMBER;
90 l_estimated_start_date DATE;
91 l_estimated_finish_date DATE;
92 l_actual_work_quantity NUMBER;
93 l_last_cumulative_wrk_qty NUMBER;
94 l_est_remaining_effort NUMBER;
95 l_actual_effort NUMBER; --maansari: fpm changes 3420093
96 l_percent_complete NUMBER;
97 l_wq_enabled_flag VARCHAR2(1);
98 l_est_remaining_eff_flag VARCHAR2(1);
99 l_percent_complete_flag VARCHAR2(1);
100 l_error_message_code VARCHAR2(250);
101 l_rollup_rec_ver_number NUMBER;
102 l_published_by_party_id NUMBER := PA_UTILS.get_party_id(l_user_id);
103 l_task_status VARCHAR2(150);
104 l_task_status2 VARCHAR2(150);
105 l_task_status_temp VARCHAR2(150); -- Bug#5374114
106 l_task_status2_temp VARCHAR2(150); -- Bug#5374114
107 l_working_aod DATE;
108 l_aod DATE;
109 l_scheduled_start_date DATE;
110 l_scheduled_finish_date DATE;
111 l_lowest_level_task VARCHAR2(1);
112 l_progress_entry_enable_flag VARCHAR2(1);
113 l_msg VARCHAR2(30);
114 l_eff_rollup_percent_comp NUMBER;
115 l_eff_rollup_prog_stat_code VARCHAR2(150);
116 l_rollup_progress_status VARCHAR2(150);
117 l_rollup_completed_percentage NUMBER;
118 l_tp_pcc_est_disabl VARCHAR2(1) := 'N'; -- Bug 2747143
119 l_allow_collab_prog_entry VARCHAR2(1); -- FPM Development Bug 3420093
120 l_allw_phy_prcnt_cmp_overrides VARCHAR2(1); -- FPM Development Bug 3420093
121 l_structure_version_id NUMBER; -- FPM Development Bug 3420093
122 l_conv_etc_cost_pc NUMBER;
123 l_conv_etc_cost_pfc NUMBER;
124 l_conv_actual_cost_pc NUMBER;
125 l_conv_actual_cost_pfc NUMBER;
126 l_rollup_current_flag VARCHAR2(1) := 'Y';
127 l_task_weight_basis_code VARCHAR2(30); -- FPM Development Bug 3420093
128 l_earned_value NUMBER;
129 l_planned_effort NUMBER;
130 l_planned_effort_push NUMBER;
131 l_planned_cost NUMBER;
132 l_last_submitted_effort NUMBER;
133 l_actual_effort_this_period NUMBER;
134 l_pa_period_name VARCHAR2(30);
135 l_gl_period_name VARCHAR2(30);
136 l_pm_product_code VARCHAR2(150);
137
138 /* Begin fix for Bug # 4050324. */
139 l_base_planned_effort NUMBER := null;
140 l_base_planned_cost NUMBER := null;
141 /* End fix for Bug # 4050324. */
142
143 --variables added for effort to cost conversion start
144 l_rate_based_flag_x VARCHAR2(1);
145 l_resource_list_member_id NUMBER;
146 l_resource_assignment_id NUMBER;
147 l_txn_currency_code VARCHAR2(30) ;
148 l_res_raw_rate NUMBER;
149 l_res_burden_rate NUMBER;
150 l_burden_multiplier NUMBER;
151 l_res_cur_code VARCHAR2(15);
152
153 l_plan_res_cur_code VARCHAR2(15);
154 l_plan_res_raw_rate NUMBER;
155 l_plan_res_burden_rate NUMBER;
156 l_plan_burden_multiplier NUMBER;
157
158 l_act_txn_raw_cost NUMBER;
159 l_act_txn_bur_cost NUMBER;
160 l_etc_txn_raw_cost NUMBER;
161 l_etc_txn_bur_cost NUMBER;
162
163 l_project_curr_code VARCHAR2(30);
164 l_project_rate_type VARCHAR2(30);
165 l_project_rate_date DATE;
166 l_project_exch_rate NUMBER;
167 l_act_project_raw_cost NUMBER;
168 l_act_project_bur_cost NUMBER;
169 l_projfunc_curr_code VARCHAR2(30);
170 l_projfunc_cost_rate_type VARCHAR2(30);
171 l_projfunc_cost_rate_date DATE;
172 l_projfunc_cost_exch_rate NUMBER;
173 l_act_projfunc_raw_cost NUMBER;
174 l_act_projfunc_bur_cost NUMBER;
175
176 l_etc_project_raw_cost NUMBER;
177 l_etc_projfunc_raw_cost NUMBER;
178 l_etc_project_bur_cost NUMBER;
179 l_etc_projfunc_bur_cost NUMBER;
180
181 l_planned_quantity NUMBER;
182 l_planned_bur_cost_txn_cur NUMBER;
183 l_planned_bur_cost_projfunc NUMBER;
184 l_planned_bur_cost_proj_cur NUMBER;
185 l_planned_raw_cost_txn_cur NUMBER;
186 l_planned_raw_cost_proj_cur NUMBER;
187 l_planned_raw_cost_projfunc NUMBER;
188 l_assignment_id NUMBER;
189
190 l_act_raw_cost_to_date_tc NUMBER;
191 l_act_raw_cost_to_date_fc NUMBER;
192 l_act_raw_cost_to_date_pc NUMBER;
193 l_act_bur_cost_to_date_tc NUMBER;
194 l_act_bur_cost_to_date_fc NUMBER;
195 l_act_bur_cost_to_date_pc NUMBER;
196
197 l_act_raw_cost_last_subm_tc NUMBER;
198 l_act_raw_cost_last_subm_pc NUMBER;
199 l_act_raw_cost_last_subm_fc NUMBER;
200 l_act_bur_cost_last_subm_tc NUMBER;
201 l_act_bur_cost_last_subm_pc NUMBER;
202 l_act_bur_cost_last_subm_fc NUMBER;
203
204 l_etc_raw_cost_tc NUMBER;
205 l_etc_raw_cost_fc NUMBER;
206 l_etc_raw_cost_pc NUMBER;
207 l_etc_bur_cost_tc NUMBER;
208 l_etc_bur_cost_fc NUMBER;
209 l_etc_bur_cost_pc NUMBER;
210
211 l_etc_txn_raw_cost_last NUMBER;
212 l_etc_prj_raw_cost_last NUMBER;
213 l_etc_pfc_raw_cost_last NUMBER;
214 l_etc_txn_bur_cost_last NUMBER;
215 l_etc_prj_bur_cost_last NUMBER;
216 l_etc_pfc_bur_cost_last NUMBER;
217 l_etc_effort_last NUMBER;
218
219 l_etc_txn_raw_cost_this_period NUMBER;
220 l_etc_prj_raw_cost_this_period NUMBER;
221 l_etc_pfc_raw_cost_this_period NUMBER;
222 l_etc_txn_bur_cost_this_period NUMBER;
223 l_etc_prj_bur_cost_this_period NUMBER;
224 l_etc_pfc_bur_cost_this_period NUMBER;
225
226 l_published_structure VARCHAR2(1);
227
228 l_proj_res_raw_rate NUMBER;
229 l_projfunc_res_raw_rate NUMBER;
230 l_proj_res_burden_rate NUMBER;
231 l_projfunc_res_burden_rate NUMBER;
232
233 l_rate_based_flag VARCHAR2(1);
234 l_rbs_element_id NUMBER;
235 l_resource_class_code PA_TASK_ASSIGNMENTS_V.RESOURCE_CLASS_CODE%TYPE;
236 l_budget_version_id NUMBER;
237
238 l_progress_exists VARCHAR2(1) :='N';
239
240 --This cursor returns planned values also
241 CURSOR c_get_resource_list_member_id
242 ( l_project_id NUMBER
243 , l_task_id NUMBER
244 , l_structure_version_id NUMBER
245 , l_task_version_id NUMBER
246 ) IS
247 SELECT
248 resource_assignment_id,
249 resource_list_member_id,
250 txn_currency_code,
251 planned_quantity,
252 planned_bur_cost_txn_cur,
253 planned_bur_cost_projfunc,
254 planned_bur_cost_proj_cur,
255 planned_raw_cost_txn_cur,
256 planned_raw_cost_proj_cur,
257 planned_raw_cost_projfunc,
258 rbs_element_id,
259 rate_based_flag,
260 resource_class_code,
261 budget_version_id ---4372462
262 FROM
263 pa_task_asgmts_v
264 WHERE
265 project_id = l_project_id
266 AND task_id = l_task_id
267 AND structure_version_id = l_structure_version_id
268 AND task_version_id = l_task_version_id
269 AND ta_display_flag = 'N';
270
271 CURSOR cur_pa_proj_sch
272 IS
273 SELECT
274 scheduled_start_date
275 , scheduled_finish_date
276 FROM pa_proj_elem_ver_schedule
277 WHERE project_id = p_project_id
278 AND element_version_id = p_object_version_id
279 AND proj_element_id = p_object_id;
280
281
282 -- Bug 3764224 : No need to have proj element id join in these cursors as it is used only in tasks context
283 CURSOR cur_pa_rollup1
284 IS
285 SELECT *
286 FROM pa_progress_rollup
287 WHERE project_id = p_project_id
288 AND object_id = p_object_id
289 AND structure_type = p_structure_type -- FPM Dev CR 3
290 AND structure_version_id IS NULL -- Bug 3764224
291 AND as_of_date = ( SELECT max( as_of_date )
292 FROM pa_progress_rollup
293 WHERE project_id = p_project_id
294 AND object_id = p_object_id
295 AND object_type = p_object_type
296 AND structure_type = p_structure_type -- FPM Dev CR 3
297 AND structure_version_id IS NULL -- Bug 3764224
298 AND as_of_date <= p_as_of_date ); -- Fix for Bug # 3944297.
299
300
301 CURSOR cur_pa_rollup2
302 IS
303 SELECT *
304 FROM pa_progress_rollup
305 WHERE project_id = p_project_id
306 AND object_id = p_object_id
307 AND object_type = p_object_type
308 AND as_of_date = p_as_of_date
309 AND structure_type = p_structure_type
310 AND structure_version_id IS NULL -- Bug 3764224
311 AND ( (p_action = 'SAVE' AND current_flag = 'W')
312 OR(p_action = 'PUBLISH' AND current_flag IN ('Y','N'))-- Bug 3879461
313 )
314 ;
315
316 l_rollup_rec1 cur_pa_rollup1%ROWTYPE;
317 l_rollup_rec2 cur_pa_rollup2%ROWTYPE;
318 l_element_struc_type VARCHAR2(30);
319
320
321 /* Bug2756007 Begin */
322 CURSOR cur_sch_id(c_object_version_id NUMBER)
323 IS
324 SELECT
325 pev_schedule_id
326 , record_version_number
327 FROM pa_proj_elem_ver_schedule
328 WHERE project_id = p_project_id
329 AND element_version_id = c_object_version_id;
330
331 l_pev_schedule_id NUMBER;
332 l_sch_rec_ver_number NUMBER;
333 /* Bug2756007 End */
334
335 -- FPM Dev CR 3
336 l_record_version_number NUMBER;
337 l_task_ver_ids2 SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() ;
338 l_planned_effort2 SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() ;
339 l_start_dates SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
340 l_end_dates SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
341
342 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
343 l_etc_effort_this_period NUMBER;--Bug 3595585
344 l_last_submitted_etc_effort NUMBER;--Bug 3595585
345
346 -- Bug 3608422 : Added the cusrosr below
347 CURSOR cur_check_published_version
348 ( c_structure_version_id number
349 , c_project_id number
350 )IS
351 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
352 FROM pa_proj_elem_ver_structure str, pa_project_statuses status
353 where str.element_version_id = c_structure_version_id
354 AND str.project_id = c_project_id
355 AND str.status_code = status.project_status_code;
356
357
358 l_assignment_exists VARCHAR2(1);
359
360 -- Bug 3796357 Begin
361 l_eqpmt_act_effort_to_date NUMBER;
362 l_eqpmt_etc_effort NUMBER;
363 l_oth_act_cost_to_date_tc NUMBER;
364 l_oth_act_cost_to_date_fc NUMBER;
365 l_oth_act_cost_to_date_pc NUMBER;
366 l_oth_etc_cost_tc NUMBER;
367 l_oth_etc_cost_fc NUMBER;
368 l_oth_etc_cost_pc NUMBER;
369 l_ppl_act_cost_to_date_tc NUMBER;
370 l_ppl_act_cost_to_date_fc NUMBER;
371 l_ppl_act_cost_to_date_pc NUMBER;
372 l_ppl_etc_cost_tc NUMBER;
373 l_ppl_etc_cost_fc NUMBER;
374 l_ppl_etc_cost_pc NUMBER;
375 l_eqpmt_act_cost_to_date_tc NUMBER;
376 l_eqpmt_act_cost_to_date_fc NUMBER;
377 l_eqpmt_act_cost_to_date_pc NUMBER;
378 l_eqpmt_etc_cost_tc NUMBER;
379 l_eqpmt_etc_cost_fc NUMBER;
380 l_eqpmt_etc_cost_pc NUMBER;
381 l_oth_quantity_to_date NUMBER;
382 l_oth_etc_quantity NUMBER;
383 l_oth_act_rawcost_to_date_tc NUMBER;
384 l_oth_act_rawcost_to_date_fc NUMBER;
385 l_oth_act_rawcost_to_date_pc NUMBER;
386 l_oth_etc_rawcost_tc NUMBER;
387 l_oth_etc_rawcost_fc NUMBER;
388 l_oth_etc_rawcost_pc NUMBER;
389 l_eqpmt_act_rawcost_to_date_tc NUMBER;
390 l_eqpmt_act_rawcost_to_date_fc NUMBER;
391 l_eqpmt_act_rawcost_to_date_pc NUMBER;
392 l_eqpmt_etc_rawcost_tc NUMBER;
393 l_eqpmt_etc_rawcost_fc NUMBER;
394 l_eqpmt_etc_rawcost_pc NUMBER;
395 --Rtarway, 3819619
396 l_dummy VARCHAR2(1);
397
398 l_task_version_id_out NUMBER := null; -- Added to fix Bug # 3815741.
399 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
400 -- Bug 3796357 End
401
402 --bug 3824042
403 l_prj_currency_code VARCHAR2(15) := null;
404 l_prjfunc_currency_code VARCHAR2(15) := null;
405
406 --bug 3879461 --maansari
407 CURSOR check_prog_after_aod
408 IS
409 SELECT 'Y'
410 FROM pa_progress_rollup
411 WHERE current_flag = 'Y'
412 AND project_id = p_project_id
413 AND structure_type = p_structure_type
414 AND structure_version_id is null
415 AND object_id = p_object_id
416 AND as_of_date > p_as_of_date
417 ;
418 l_prog_exist_after_aod VARCHAR2(1) := 'N';
419 --bug 3879461 --maansari
420 --rtarway, 4085882
421 -- Following cursor is written with assumption that underlying view will return one row per assignment for as_of_date set in the
422 -- API.
423
424 -- 4136113 : Written new cursosr instead of old bulky one
425 CURSOR c_assgn_working_prog (l_project_id NUMBER, l_task_id NUMBER, l_task_version_id NUMBER )
426 IS
427 SELECT
428 ppc.percent_complete_id,
429 asgn.resource_list_member_id,
430 ppr.actual_start_date ,
431 ppr.actual_finish_date ,
432 ppr.estimated_start_date,
433 ppr.estimated_finish_date,
434 ppc.record_version_number ,
435 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_rawcost_to_date_tc,
436 'EQUIPMENT', ppr.eqpmt_act_rawcost_to_date_tc,ppr.oth_act_rawcost_to_date_tc)
437 - 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)
438 actual_rawcost_this_period,
439 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_effort_to_date,
440 'EQUIPMENT', ppr.eqpmt_act_effort_to_date, ppr.oth_quantity_to_date)
441 - 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)
442 actual_effort_this_period,
443 asgn.rate_based_flag,
444 asgn.resource_class_code,
445 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,
446 -- In Self Service it is last submitted actual raw cost in TC. But this value is not used by the API.
447 -- 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
448 -- always pass to_date value without calling the function get_act_for_prev_asofdate
449 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,
450 -- In Self Service it is last submitted actual effort. But this value is not used by the API.
451 -- 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
452 -- always pass to_date value without calling the function get_act_for_prev_asofdate
453 --bug 4303344
454 nvl(ppr.ppl_etc_rawcost_tc,0)+nvl(ppr.eqpmt_etc_rawcost_tc,0)+ nvl(ppr.oth_etc_rawcost_tc,0)
455 etc_rawcost_tc ,
456 nvl(ppr.estimated_remaining_effort,0)+nvl(ppr.eqpmt_etc_effort,0)+ nvl(ppr.oth_etc_quantity,0)
457 etc_effort ,
458 asgn.txn_currency_code ,
459 asgn.rbs_element_id,
460 asgn.resource_assignment_id,
461 asgn.assignment_start_date scheduled_start_date ,
462 asgn.assignment_end_date scheduled_finish_date,
463 ppc.progress_comment,
464 ppc.description progress_overview
465 from pa_task_asgmts_v asgn
466 , pa_percent_completes ppc
467 , pa_progress_rollup ppr
468 where
469 ppc.PROJECT_ID = l_project_id
470 AND ppr.project_id = ppc.project_id
471 AND ppc.project_id = asgn.project_id
472 AND ppc.task_id = l_task_id
473 AND ppc.task_id = ppr.proj_element_id
474 AND ppc.task_id = asgn.task_id
475 AND asgn.task_version_id = l_task_version_id
476 AND ppc.object_type = 'PA_ASSIGNMENTS'
477 AND ppc.object_type = ppr.object_type
478 AND asgn.ta_display_flag = 'Y'
479 AND ppc.object_id = asgn.resource_list_member_id
480 AND ppc.object_id = ppr.object_id
481 AND ppr.current_flag='W'
482 AND ppc.published_flag = 'N'
483 AND ppc.date_computed <= p_as_of_date
484 AND ppr.as_of_date <= p_as_of_date
485 AND ppr.structure_type = 'WORKPLAN'
486 and ppc.date_computed = ppr.as_of_date
487 AND ppr.structure_version_id is null;
488
489
490 l_working_assgn_rec c_assgn_working_prog%ROWTYPE;
491 -- Following cursor is written with assumption that underlying view will return one row per deliverable for as_of_date set in the
492 -- API. PA_TASK_DELVRS_PROGRESS_V has joins for as_of_date, so no as_of_date join is needed here
493
494 -- 4136113 : Written new cursosr instead of old bulky one
495 CURSOR c_dlvr_working_prog (l_project_id NUMBER, l_task_id NUMBER , l_task_version_id NUMBER)
496 IS
497 SELECT
498 ppc.percent_complete_id,
499 ppc.object_id del_id,
500 ppc.object_version_id del_element_version_id,
501 ppr.completed_percentage,
502 ppr.progress_status_code,
503 ppc.progress_comment,
504 ppc.description progress_description,
505 ppr.actual_start_date,
506 ppr.actual_finish_date,
507 ppc.record_version_number percomp_record_version_number,
508 ppc.status_code del_status_code
509 FROM pa_percent_completes ppc
510 , pa_progress_rollup ppr
511 WHERE
512 ppc.project_id=l_project_id
513 AND ppc.project_id = ppr.project_id
514 AND ppc.object_type = 'PA_DELIVERABLES'
515 AND ppc.object_type = ppr.object_type
516 AND ppc.task_id = l_task_id
517 AND ppc.task_id = ppr.proj_element_id
518 AND ppc.object_id = ppr.object_id
519 AND ppr.current_flag='W'
520 AND ppc.published_flag = 'N'
521 AND ppc.date_computed <= p_as_of_date
522 AND ppr.as_of_date <= p_as_of_date
523 and ppc.date_computed = ppr.as_of_date
524 AND ppr.structure_type = 'WORKPLAN'
525 AND ppr.structure_version_id is null;
526
527
528 l_working_dlvr_rec c_dlvr_working_prog%ROWTYPE;
529 --end add by rtarway, 4085882
530
531 -- Bug 3922325 Begin
532 CURSOR c_previous_task_status IS
533 SELECT status_code
534 FROM pa_percent_completes
535 WHERE project_id = p_project_id
536 AND object_id = p_object_id
537 AND object_type = 'PA_TASKS'
538 AND structure_type = 'WORKPLAN'
539 AND trunc(date_computed) <= trunc(p_as_of_date)
540 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
541
542 l_previous_status_code VARCHAR2(150);
543 l_prev_sys_status_code VARCHAR2(150);
544 -- Bug 3922325 End
545
546 -- Bug 4506461 Begin
547 -- 4651069 : Removed LF relationship here
548 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
549 SELECT 'Y'
550 FROM pa_object_relationships
551 WHERE --relationship_type in ( 'LW', 'LF' )
552 relationship_type = 'LW'
553 AND object_id_from1 IN
554 (SELECT object_id_to1
555 FROM pa_object_relationships
556 START WITH object_id_from1 = c_task_version_id
557 AND relationship_type = 'S'
558 CONNECT BY PRIOR object_id_to1 = object_id_from1
559 AND relationship_type = 'S')
560 ;
561 l_rederive_base_pc VARCHAR2(1):='N';
562 l_temp_base_pc NUMBER;
563 -- Bug 4506461 End
564
565 -- 4533112 Begin
566 CURSOR c_get_dates_overrides IS
567 SELECT decode(base_progress_status_code,'Y','Y','N') date_override_flag
568 , estimated_start_date
569 , estimated_finish_date
570 , actual_start_date
571 , actual_finish_date
572 FROM pa_progress_rollup
573 WHERE project_id = p_project_id
574 AND object_id = p_object_id
575 AND object_type = 'PA_TASKS'
576 AND structure_type = 'WORKPLAN'
577 AND structure_version_id is null
578 AND trunc(as_of_date) <= trunc(p_as_of_date)
579 AND current_flag IN ('Y', 'N')
580 ORDER by as_of_date desc;
581
582 l_date_override_flag VARCHAR2(1):='N';
583 l_db_date_override_flag VARCHAR2(1):='N';
584 l_db_estimated_start_date DATE;
585 l_db_estimated_finish_date DATE;
586 l_db_actual_start_date DATE;
587 l_db_actual_finish_date DATE;
588 l_clex_estimated_start_date DATE;
589 l_clex_estimated_finish_date DATE;
590 l_clex_actual_start_date DATE;
591 l_clex_actual_finish_date DATE;
592
593 -- 4533112 End
594
595 -- Bug 4632744
596 -- Added cursor c_get_last_ppl_effort_fr_assgn
597 CURSOR c_get_last_ppl_effort_fr_assgn(c_res_list_mem_id NUMBER)
598 IS
599 SELECT NVL( PPL_ACT_EFFORT_TO_DATE, 0 )
600 FROM pa_progress_rollup
601 WHERE project_id = p_project_id
602 AND object_id = c_res_list_mem_id
603 AND as_of_date =
604 (SELECT max(as_of_date)
605 FROM pa_progress_rollup ppr2
606 WHERE ppr2.as_of_date <= p_as_of_date
607 AND ppr2.project_id = p_project_id
608 AND ppr2.object_id = c_res_list_mem_id
609 AND ppr2.object_type = 'PA_ASSIGNMENTS'
610 AND ppr2.structure_type = p_structure_type
611 AND ppr2.current_flag <> 'W'
612 AND ppr2.structure_version_id is null
613 AND ppr2.proj_element_id = p_object_id
614 )
615 AND object_type = 'PA_ASSIGNMENTS'
616 AND structure_type = p_structure_type
617 AND current_flag <> 'W'
618 AND structure_version_id is null
619 and proj_element_id = p_object_id
620 ;
621
622 l_calling_module varchar2(30);
623 BEGIN
624 g1_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
625
626 IF g1_debug_mode = 'Y' THEN
627 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS');
628 END IF;
629
630 IF g1_debug_mode = 'Y' THEN
631 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);
632 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);
633 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
634 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
635 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
636 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
637 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
638 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);
639 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
640 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);
641 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
642 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);
643 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
644 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
645 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);
646 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
647 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);
648 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
649 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);
650 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);
651 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
652 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
653 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);
654 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);
655 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);
656 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);
657 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);
658 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);
659 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);
660 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
661 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);
662 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);
663 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);
664 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
665 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
666 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);
667 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);
668 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);
669 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
670 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
671 END IF;
672
673 IF (p_commit = FND_API.G_TRUE) THEN
674 savepoint UPDATE_TASK_PROGRESS;
675 END IF;
676
677 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
678 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
679 END IF;
680
681 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
682 FND_MSG_PUB.initialize;
683 END IF;
684
685 x_return_status := FND_API.G_RET_STS_SUCCESS;
686
687 --BUG 4085882, added by rtarway
688 --bug 4320365, changed to p_calling_mode from p_calling_module
689 --the code to set prog_as_of_date is needed.
690 IF (p_calling_mode = 'TEAM_MEM_HOME' AND p_action='PUBLISH' )
691 THEN
692 pa_progress_utils.set_prog_as_of_Date(
693 p_project_id =>p_project_id,
694 p_task_id =>p_object_id,
695 p_as_of_date => p_as_of_date
696 );
697 FOR l_working_assgn_rec in c_assgn_working_prog(p_project_id, p_object_id, p_object_version_id) LOOP
698
699 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
700 p_api_version => l_api_version
701 ,p_init_msg_list => p_init_msg_list
702 ,p_commit => p_commit
703 ,p_validate_only => p_validate_only
704 ,p_validation_level => p_validation_level
705 ,p_calling_module => p_calling_module
706 ,p_action => 'PUBLISH'
707 ,p_progress_mode => 'FUTURE'
708 ,p_percent_complete_id => l_working_assgn_rec.PERCENT_COMPLETE_ID
709 ,p_project_id => p_project_id
710 ,p_object_id => l_working_assgn_rec.RESOURCE_LIST_MEMBER_ID
711 ,p_object_version_id => p_object_version_id
712 ,p_task_id => p_object_id
713 ,p_as_of_date => p_as_of_date
714 ,p_progress_comment => l_working_assgn_rec.progress_comment
715 ,p_brief_overview => l_working_assgn_rec.progress_overview
716 ,p_actual_start_date => l_working_assgn_rec.ACTUAL_START_DATE
717 ,p_actual_finish_date => l_working_assgn_rec.ACTUAL_FINISH_DATE
718 ,p_estimated_start_date => l_working_assgn_rec.estimated_start_date
719 ,p_estimated_finish_date => l_working_assgn_rec.estimated_finish_date
720 ,p_record_version_number => l_working_assgn_rec.RECORD_VERSION_NUMBER
721 ,p_pm_product_code => p_pm_product_code
722 ,p_structure_type => 'WORKPLAN'
723 ,p_structure_version_id => p_structure_version_id
724 ,p_actual_cost_this_period => l_working_assgn_rec.actual_rawcost_this_period
725 ,p_actual_effort_this_period => l_working_assgn_rec.ACTUAL_EFFORT_THIS_PERIOD
726 ,p_rate_based_flag => l_working_assgn_rec.RATE_BASED_FLAG
727 ,p_resource_class_code => l_working_assgn_rec.RESOURCE_CLASS_CODE
728 ,p_actual_cost => l_working_assgn_rec.actual_rawcost
729 ,p_actual_effort => l_working_assgn_rec.ACTUAL_EFFORT
730 ,p_etc_cost_this_period => l_working_assgn_rec.etc_rawcost_tc
731 ,p_etc_effort_this_period => l_working_assgn_rec.ETC_EFFORT
732 ,p_txn_currency_code => l_working_assgn_rec.TXN_CURRENCY_CODE
733 ,p_rbs_element_id => l_working_assgn_rec.RBS_ELEMENT_ID
734 ,p_resource_assignment_id => l_working_assgn_rec.resource_assignment_id
735 ,p_scheduled_start_date => l_working_assgn_rec.scheduled_start_date
736 ,p_scheduled_finish_date => l_working_assgn_rec.scheduled_finish_date
737 ,x_return_status => l_return_status
738 ,x_msg_count => l_msg_count
739 ,x_msg_data => l_msg_data
740 );
741 -- Bug 4632744 : Added Return Status check
742 IF l_return_status <> 'S' THEN
743 raise FND_API.G_EXC_ERROR;
744 END IF;
745 END LOOP;
746 -- if there are working deliverable records associated with this task, we need to puyblish those deliverable progress
747 FOR l_working_dlvr_rec in c_dlvr_working_prog (p_project_id , p_object_id, p_object_version_id ) LOOP
748 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
749 p_api_version => l_api_version
750 ,p_init_msg_list => p_init_msg_list
751 ,p_commit => p_commit
752 ,p_validate_only => p_validate_only
753 ,p_validation_level => p_validation_level
754 ,p_calling_module => p_calling_module
755 ,p_action => 'PUBLISH' -- Code to fix Bug # 3821106.
756 ,p_progress_mode => 'FUTURE'
757 ,p_percent_complete_id => l_working_dlvr_rec.percent_complete_id ------percent_complete_id
758 ,p_project_id => p_project_id
759 ,p_object_id => l_working_dlvr_rec.del_id
760 ,p_object_type => 'PA_DELIVERABLES'
761 ,p_object_version_id => l_working_dlvr_rec.del_element_version_id
762 ,p_del_status => l_working_dlvr_rec.del_status_code
763 ,p_task_id => p_object_id
764 ,p_as_of_date => p_as_of_date
765 ,p_percent_complete => l_working_dlvr_rec.completed_percentage
766 ,p_progress_status_code => l_working_dlvr_rec.progress_status_code
767 ,p_progress_comment => l_working_dlvr_rec.progress_comment
768 ,p_brief_overview => l_working_dlvr_rec.progress_description
769 ,p_actual_finish_date => l_working_dlvr_rec.actual_finish_date
770 ,p_record_version_number => l_working_dlvr_rec.percomp_record_version_number
771 ,p_pm_product_code => p_pm_product_code
772 ,p_structure_type => 'WORKPLAN'
773 ,x_return_status => l_return_status
774 ,x_msg_count => l_msg_count
775 ,x_msg_data => l_msg_data
776 );
777 -- Bug 4632744 : Added Return Status check
778 IF l_return_status <> 'S' THEN
779 raise FND_API.G_EXC_ERROR;
780 END IF;
781 END LOOP;
782 END IF ; -- p_calling_module='TEAM_MEM_HOME'
783 --end add by rtarway for BUG 4085882
784
785 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
786 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,p_object_version_id,p_object_type); -- Bug 3784904
787 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
788
789 --bug 3824042
790 SELECT project_currency_code, projfunc_currency_code
791 INTO l_prj_currency_code, l_prjfunc_currency_code
792 FROM pa_projects_all WHERE project_id = p_project_id;
793
794 IF g1_debug_mode = 'Y' THEN
795 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);
796 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_assignment_exists='||l_assignment_exists, x_Log_Level=> 3);
797 END IF;
798
799
800 l_element_struc_type := p_structure_type;
801
802 IF p_structure_type = 'FINANCIAL' --maansari: fpm changes
803 THEN
804 IF ( p_est_remaining_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
805 and p_est_remaining_effort IS NOT NULL
806 ) OR
807 ( p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM --BUG 4368945, rtarway p_actual_work_quantity should be checked
808 and --p_est_remaining_effort is not null ) OR
809 p_actual_work_quantity IS NOT NULL
810 ) OR
811 ( p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
812 and p_actual_effort IS NOT NULL
813 )
814 THEN
815 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
816 ,p_msg_name => 'PA_TP_CANT_NTER_ACT_4FN_STR');
817 x_msg_data := 'PA_TP_CANT_NTER_ACT_4FN_STR';
818 x_return_status := 'E';
819 RAISE FND_API.G_EXC_ERROR;
820 END IF;
821 END IF;
822
823 IF p_object_type = 'PA_TASKS'
824 THEN
825 -- 4490532 : Changed from IS_LOWEST_TASK to is_summary_task_or_structure
826 --l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_object_version_id );
827 --ELSE
828 --l_lowest_level_task := 'N';
829 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_object_version_id) = 'Y' THEN
830 l_lowest_level_task := 'N';
831 ELSE
832 l_lowest_level_task := 'Y';
833 END IF;
834 END IF;
835
836 l_task_status2 := PA_PROGRESS_UTILS.get_system_task_status( p_task_status );
837 l_task_status2_temp := l_task_status2; -- Bug#5374114
838 l_task_status_temp := p_task_status; -- Bug#5374114
839
840 ---4457403, added begin/end block to handle no_data_found exception
841 BEGIN
842 l_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
843 l_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
844 EXCEPTION
845 WHEN OTHERS THEN
846 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
847 p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
848 x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
849 x_return_status := 'E';
850 x_msg_count := fnd_msg_pub.count_msg;
851 RAISE FND_API.G_EXC_ERROR;
852 END;
853
854 IF g1_debug_mode = 'Y' THEN
855 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);
856 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);
857 END IF;
858
859 --bug 3879461 --maansari
860 --check and delete for any other working version record.
861 -- Amit : This code is not required as l_db_action will switch mode to update and the existing working record will be updated
862 IF p_action = 'SAVE' AND p_structure_type = 'WORKPLAN'
863 THEN
864 DELETE FROM pa_percent_completes
865 WHERE project_id= p_project_id
866 AND object_id = p_object_id
867 AND published_flag = 'N'
868 --AND date_computed <> p_as_of_date --bug 4185364, delete all the working records
869 AND structure_type = p_structure_type
870 ;
871
872 DELETE FROM pa_progress_rollup
873 WHERE project_id= p_project_id
874 AND object_id = p_object_id
875 AND current_flag = 'W'
876 --AND as_of_date <> p_as_of_date --bug 4185364, delete all the working records
877 AND structure_type = p_structure_type
878 AND structure_version_id is null
879 ;
880 END IF;
881
882 --This code is required is PUBLISH mode to delete working progress records on previous dates.
883 IF p_action = 'PUBLISH' AND p_structure_type = 'WORKPLAN'
884 THEN
885 DELETE FROM pa_percent_completes
886 WHERE project_id= p_project_id
887 AND object_id = p_object_id
888 AND published_flag = 'N'
889 AND date_computed <= p_as_of_date --- 4245168
890 AND structure_type = p_structure_type
891 ;
892
893 DELETE FROM pa_progress_rollup
894 WHERE project_id= p_project_id
895 AND object_id = p_object_id
896 AND current_flag = 'W'
897 AND as_of_date < p_as_of_date
898 AND structure_type = p_structure_type
899 AND structure_version_id is null
900 ;
901 END IF;
902
903 --bug 3879461
904
905 IF p_object_type = 'PA_STRUCTURES' AND p_structure_type = 'FINANCIAL'
906 --bug 3944208. l_task_id will never be equal to 0 bcoz we there is a different api for financial progress.
907 THEN
908 l_task_id := 0;
909 ELSE
910 l_task_id := p_object_id;
911 END IF;
912
913 ---- if status is CANCELLED
914 IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_object_id)) = 'CANCELLED'
915 AND p_progress_mode <> 'BACKDATED'
916 AND l_element_struc_type = 'WORKPLAN'
917 THEN
918 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
919 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL');
920 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
921 x_return_status := 'E';
922 RAISE FND_API.G_EXC_ERROR;
923 END IF;
924 ---- if status is CANCELLED
925
926
927 ---- call a procedure to get all the DEFAULTS
928 IF l_element_struc_type = 'WORKPLAN'
929 THEN
930 IF g1_debug_mode = 'Y' THEN
931 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling get_progress_defaults', x_Log_Level=> 3);
932 END IF;
933
934 PA_PROGRESS_UTILS.get_progress_defaults(
935 p_project_id => p_project_id
936 ,p_object_version_id => p_object_version_id
937 ,p_object_type => p_object_type
938 ,p_object_id => p_object_id
939 ,p_as_of_date => p_as_of_date
940 ,x_wq_actual_entry_code => l_actual_wq_entry_code
941 ,x_wq_enabled_flag => l_wq_enabled_flag
942 ,x_effort_enabled_flag => l_est_remaining_eff_flag
943 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
944 ,x_percent_comp_enabled_flag => l_percent_complete_flag
945 ,x_progress_entry_enable_flag => l_progress_entry_enable_flag
946 ,x_allow_collab_prog_entry => l_allow_collab_prog_entry -- FPM Development Bug 3420093
947 ,x_allw_phy_prcnt_cmp_overrides => l_allw_phy_prcnt_cmp_overrides -- FPM Development Bug 3420093
948 ,x_task_weight_basis_code => l_task_weight_basis_code
949 );
950
951 IF g1_debug_mode = 'Y' THEN
952 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);
953 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);
954 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);
955 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);
956 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);
957 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);
958 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);
959 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);
960 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);
961 END IF;
962
963 ----- No PRPGRESS
964 IF NVL( l_progress_entry_enable_flag, 'N' ) = 'N' and p_object_type = 'PA_TASKS'
965 THEN
966 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
967 ,p_msg_name => 'PA_TP_CANT_ENTER_PROG');
968 x_msg_data := 'PA_TP_CANT_ENTER_PROG';
969 x_return_status := 'E';
970 RAISE FND_API.G_EXC_ERROR;
971 END IF;
972 ----- No PRPGRESS
973
974 ----- Wrong MODE
975 IF p_progress_mode not in ( 'BACKDATED','FUTURE' )
976 THEN
977 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
978 ,p_msg_name => 'PA_TP_WRONG_PRG_MODE4');
979 x_msg_data := 'PA_TP_WRONG_PRG_MODE4';
980 x_return_status := 'E';
981 RAISE FND_API.G_EXC_ERROR;
982 END IF;
983 ----- Wrong MODE
984
985 ----- Wrong DATE
986 IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
987 THEN
988 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
989 ,p_msg_name => 'PA_TP_INV_AOD');
990 x_msg_data := 'PA_TP_INV_AOD';
991 x_return_status := 'E';
992 RAISE FND_API.G_EXC_ERROR;
993 END IF;
994 ----- Wrong DATE
995
996 ----- Wrong PROGRESS STATUS
997 IF p_progress_status_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_progress_status_code IS NULL
998 THEN
999 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1000 ,p_msg_name => 'PA_TP_INV_PRG_STAT');
1001 x_msg_data := 'PA_TP_INV_PRG_STAT';
1002 x_return_status := 'E';
1003 RAISE FND_API.G_EXC_ERROR;
1004 END IF;
1005 ----- Wrong PROGRESS STATUS
1006 --Added by rtarway, for BUG 3819619
1007
1008 IF (p_calling_module = 'AMG')
1009 THEN
1010 BEGIN
1011 SELECT 'x' INTO l_dummy
1012 FROM pa_project_statuses
1013 WHERE status_type = 'PROGRESS'
1014 AND project_status_code = p_progress_status_code;
1015 EXCEPTION
1016 WHEN NO_DATA_FOUND THEN
1017 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1018 p_msg_name => 'PA_TP_INV_PRG_STAT',
1019 P_TOKEN1 => 'OBJECT_ID',
1020 P_VALUE1 => p_object_id);
1021 x_msg_data := 'PA_TP_INV_PRG_STAT';
1022 x_return_status := FND_API.G_RET_STS_ERROR;
1023 RAISE FND_API.G_EXC_ERROR;
1024 END;
1025 END IF;
1026 --End Add for BUG 3819619
1027
1028 ----- Wrong STATUS
1029 -- Bug 4429929 : Added OR condition below
1030 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'))
1031 THEN
1032 IF p_object_type = 'PA_TASKS'
1033 THEN
1034 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1035 ,p_msg_name => 'PA_TP_INV_TSK_STAT');
1036 x_msg_data := 'PA_TP_INV_TSK_STAT';
1037 x_return_status := 'E';
1038 RAISE FND_API.G_EXC_ERROR;
1039 END IF;
1040 END IF;
1041 ----- Wrong STATUS
1042 END IF; --<< l_element_struc_type >>
1043
1044
1045 IF (p_actual_work_quantity = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1046 --BUG 4368945, rtarway, should also be checked for null as AMG can pass it as null
1047 OR p_actual_work_quantity is null)
1048 THEN
1049 l_actual_work_quantity := 0;
1050 ELSE
1051 --bug 4368945 , rtarway, added check for -ve WQ
1052 IF (p_actual_work_quantity < 0) THEN
1053 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1054 ,p_msg_name => 'PA_TP_NO_NEG_WQ');
1055 x_msg_data := 'PA_TP_NO_NEG_WQ';
1056 x_return_status := 'E';
1057 RAISE FND_API.G_EXC_ERROR;
1058 ELSE
1059 --bug 3824042, round wq upto 2 decimal places
1060 --l_actual_work_quantity := nvl(p_actual_work_quantity,0);
1061 l_actual_work_quantity := nvl(round(p_actual_work_quantity,2),0);
1062 END IF;
1063 END IF;
1064
1065 IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1066 ----- OR p_est_remaining_effort < 0 ---4378391 (5726773 allow neg ETC)
1067 THEN
1068 l_est_remaining_effort := 0;
1069 ELSE
1070 --bug 3824042
1071 --l_est_remaining_effort := nvl(p_est_remaining_effort,0);
1072 l_est_remaining_effort := nvl(round(p_est_remaining_effort,5),0);
1073 END IF;
1074
1075 /* 5726773
1076 --3779387
1077 IF l_est_remaining_effort < 0
1078 THEN
1079 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1080 ,p_msg_name => 'PA_TP_NO_NEG_ETC');
1081 x_msg_data := 'PA_TP_NO_NEG_ETC';
1082 x_return_status := 'E';
1083 RAISE FND_API.G_EXC_ERROR;
1084 END IF;
1085 --3779387
1086 */
1087
1088 --maansari: fpm changes 3420093
1089 IF p_actual_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1090 THEN
1091 l_actual_effort := 0;
1092 ELSE
1093 --bug 3824042
1094 --l_actual_effort := nvl(p_actual_effort,0);
1095 l_actual_effort := nvl(round(p_actual_effort,5),0);
1096 END IF;
1097
1098 /*3970229 --3779387 negative actuals are allowed */
1099
1100 --maansari4/5
1101 IF ( p_planned_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM or
1102 p_planned_effort IS NULL or
1103 p_planned_effort = 0 )
1104 THEN
1105 l_planned_effort := 1;
1106 ELSE
1107 l_planned_effort := nvl(p_planned_effort,0);
1108 END IF;
1109 --maansari4/5
1110
1111 IF p_planned_cost = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1112 THEN
1113 l_planned_cost := 0;
1114 ELSE
1115 l_planned_cost := nvl(p_planned_cost,0);
1116 END IF;
1117 --End maansari:
1118
1119
1120 IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1121 OR p_percent_complete is null
1122 THEN
1123 l_percent_complete := 0;
1124 ELSE
1125 l_percent_complete := round(p_percent_complete,2);
1126 END IF;
1127
1128 IF p_scheduled_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1129 THEN
1130 l_scheduled_start_date := null;
1131 ELSE
1132 l_scheduled_start_date := p_scheduled_start_date;
1133 END IF;
1134
1135 IF p_scheduled_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1136 THEN
1137 l_scheduled_finish_date := null;
1138 ELSE
1139 l_scheduled_finish_date := p_scheduled_finish_date;
1140 END IF;
1141
1142 IF p_actual_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1143 THEN
1144 l_actual_start_date := null;
1145 ELSE
1146 l_actual_start_date := p_actual_start_date;
1147 END IF;
1148
1149 IF p_actual_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1150 THEN
1151 l_actual_finish_date := null;
1152 ELSE
1153 l_actual_finish_date := p_actual_finish_date;
1154 END IF;
1155
1156 IF p_estimated_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1157 THEN
1158 l_estimated_start_date := null;
1159 ELSE
1160 l_estimated_start_date := p_estimated_start_date;
1161 END IF;
1162
1163 IF p_estimated_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1164 THEN
1165 l_estimated_finish_date := null;
1166 ELSE
1167 l_estimated_finish_date := p_estimated_finish_date;
1168 END IF;
1169
1170 IF p_task_status = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1171 THEN
1172 l_task_status := null;
1173 ELSE
1174 l_task_status := p_task_status;
1175 END IF;
1176
1177 IF (p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ) THEN
1178 l_pm_product_code := NULL;
1179 ELSE
1180 l_pm_product_code := p_pm_product_code;
1181 END IF;
1182
1183 -- Bug 3608422 : Changes Begin
1184 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
1185 FETCH cur_check_published_version INTO l_published_structure;
1186 CLOSE cur_check_published_version;
1187
1188 IF l_published_structure = 'Y'
1189 OR p_structure_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1190 OR p_prog_fom_wp_flag = 'N' --Not a working workplan progress.
1191 THEN
1192 l_structure_version_id := null;
1193 ELSE
1194 l_structure_version_id := p_structure_version_id;
1195 END IF;
1196
1197 -- Bug 3608422 : Changes End
1198
1199 IF g1_debug_mode = 'Y' THEN
1200 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1201 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);
1202 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);
1203 END IF;
1204
1205
1206 IF L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'N'
1207 AND l_element_struc_type = 'WORKPLAN'
1208 AND p_calling_module = 'AMG' -- Bug 3807745
1209 THEN
1210 IF l_percent_complete > 0
1211 THEN
1212 --You cannot override percent_complete
1213 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1214 p_msg_name => 'PA_TP_NO_PC_OVRIDE');
1215 x_msg_data := 'PA_TP_NO_PC_OVRIDE';
1216 x_return_status := 'E';
1217 -- RAISE FND_API.G_EXC_ERROR;
1218 l_tp_pcc_est_disabl := 'Y';
1219 END IF;
1220 END IF;
1221
1222 IF (l_percent_complete < 0 or l_percent_complete > 100) THEN
1223 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1224 ,p_msg_name => 'PA_PERC_COMP_INV');
1225 x_msg_data := 'PA_PERC_COMP_INV';
1226 x_return_status := 'E';
1227 RAISE FND_API.G_EXC_ERROR;
1228 END IF;
1229
1230 --Get the SCHEDULE DATES for lowest level task.
1231 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1232 AND l_element_struc_type = 'WORKPLAN'
1233 THEN
1234 OPEN cur_pa_proj_sch;
1235 FETCH cur_pa_proj_sch INTO l_scheduled_start_date, l_scheduled_finish_date;
1236 CLOSE cur_pa_proj_sch;
1237 END IF;
1238 --Get the SCHEDULE DATES for lowest level task.
1239
1240 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1241 THEN
1242 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1243 ,p_msg_name => l_error_message_code);
1244 x_msg_data := l_error_message_code;
1245 x_return_status := 'E';
1246 RAISE FND_API.G_EXC_ERROR;
1247 END IF;
1248
1249 IF p_progress_mode <> 'BACKDATED'
1250 AND l_element_struc_type = 'WORKPLAN'
1251 THEN
1252 ---- this will do for summary tasks also ???????????
1253 IF l_percent_complete = 100
1254 THEN
1255 l_est_remaining_effort := 0;
1256 END IF;
1257 END IF;
1258
1259 IF (l_percent_complete < 100 AND l_percent_complete_flag = 'Y')
1260 THEN
1261 l_actual_finish_date := to_date(null);
1262 END IF;
1263
1264 IF g1_debug_mode = 'Y' THEN
1265 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);
1266 END IF;
1267
1268
1269 --Added by rtarway for BUG 3819619, This will be executed in case user passed invalid project_status_code as task_status
1270 IF ( p_calling_module = 'AMG' AND (l_task_status2 IS NULL or l_task_status2 = '') )
1271 THEN
1272 IF p_object_type = 'PA_TASKS'
1273 THEN
1274 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1275 ,p_msg_name => 'PA_TP_INV_TSK_STAT');
1276 x_msg_data := 'PA_TP_INV_TSK_STAT';
1277 x_return_status := 'E';
1278 RAISE FND_API.G_EXC_ERROR;
1279 END IF;
1280 END IF;
1281
1282 IF l_element_struc_type = 'WORKPLAN'
1283 THEN
1284 IF l_est_remaining_eff_flag = 'N'
1285 THEN
1286
1287 /* Begin fix for Bug # 4068245. */
1288 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
1289 THEN
1290 --You cannot enter actual effort.
1291 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1292 p_msg_name => 'PA_TP_ACT_EFF_DISABL');
1293 x_msg_data := 'PA_TP_ACT_EFF_DISABL';
1294 x_return_status := 'E';
1295 l_tp_pcc_est_disabl := 'Y';
1296 END IF;
1297
1298 /* Begin commenting out code to fix Bug # 4086574.
1299
1300 The following validataion has been commented out because of the following reasons:
1301 1). This validataion is redundant as there is no way a user can enter an etc effort value
1302 from self service when etc effort collection is disabled, since the etc effort will be
1303 displayed on non-editable fields.
1304 2). This validation throws an unnecessary error when there exists a non-zero value of etc effort
1305 for a task with etc effort collection disabled as a result of etc effort being defaulted as
1306 (planned effort - actual effort) or as a result of etc effort being rolled-up from sub-tasks
1307 or assignments.
1308
1309 IF (( l_est_remaining_effort > 0) and (l_structure_sharing_code in ('SHARE_FULL', 'SHARE_PARTIAL')))
1310 THEN
1311 --You cannot enter etc effort.
1312 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1313 p_msg_name => 'PA_TP_EST_REM_EFF_DISABL');
1314 x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1315 x_return_status := 'E';
1316 l_tp_pcc_est_disabl := 'Y';
1317 END IF;
1318
1319 End commenting out code to fix Bug # 4086574. */
1320
1321 /* End fix for Bug # 4068245. */
1322
1323 ELSE
1324 --perform the following only if its not called from Self Service
1325 --IF p_calling_module <> 'SELF_SERVICE' --maansari4/4
1326 IF p_calling_module = 'AMG' --4085882, rtarway
1327 THEN
1328 IF NVL( l_lowest_level_task, 'N' ) = 'N' AND (l_structure_sharing_code = 'SHARE_FULL') AND --Added for Bug# 6944034
1329 ( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1330 THEN
1331 --You cannot enter actual or ETC effort at summary level.
1332 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1333 p_msg_name => 'PA_TP_CANT_NTR_EFF_SUMMRY');
1334 x_msg_data := 'PA_TP_CANT_NTR_EFF_SUMMRY';
1335 x_return_status := 'E';
1336 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1337 l_tp_pcc_est_disabl := 'Y';
1338 ELSIF ( l_assignment_exists = 'Y' ) -- Bug 3784904 : Changed from N to Y
1339 AND ( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1340 THEN
1341 --You cannot effort when assignments exists for the task.
1342 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1343 p_msg_name => 'PA_TP_NO_EFF_WITH_ASSN');
1344 x_msg_data := 'PA_TP_NO_EFF_WITH_ASSN';
1345 x_return_status := 'E';
1346 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1347 l_tp_pcc_est_disabl := 'Y';
1348 ELSIF NVL( l_lowest_level_task, 'N' ) = 'N'
1349 AND l_structure_sharing_code = 'SHARE_FULL' --Bug 3586648
1350 AND ( l_actual_effort > 0 )
1351 THEN
1352 --You cannot enter actual effort for shared structures.
1353 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1354 p_msg_name => 'PA_TP_NO_ACT_EFF_4SH_STR');
1355 x_msg_data := 'PA_TP_NO_ACT_EFF_4SH_STR';
1356 x_return_status := 'E';
1357 --RAISE FND_API.G_EXC_ERROR; --rasie error message.
1358 l_tp_pcc_est_disabl := 'Y';
1359 END IF;
1360 END IF; -- IF p_calling_module <> 'SELF_SERVICE' --maansari4/4
1361 END IF; --l_est_remaining_eff_flag = 'N'
1362 END IF; --l_element_struc_type
1363
1364 IF x_return_status = 'E' THEN -- Bug 3784904
1365 RAISE FND_API.G_EXC_ERROR;
1366 END IF;
1367 --End maansari: fpm changes
1368 ----- End of validation
1369
1370 /* Bug 2747143: Display PA_TP_EST_REM_EFF_DISABL and PA_TP_PCC_DISABL together
1371 if both are disabled while uploading from MSP */
1372 IF l_est_remaining_eff_flag = 'N'
1373 AND l_element_struc_type = 'WORKPLAN'
1374 AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1375 AND p_calling_module = 'AMG' -- Bug 3807745
1376 THEN
1377 IF l_est_remaining_effort > 0
1378 THEN
1379 --You cannot enter estimated remaing effort.
1380 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1381 p_msg_name => 'PA_TP_EST_REM_EFF_DISABL');
1382 x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1383 x_return_status := 'E';
1384 --RAISE FND_API.G_EXC_ERROR;
1385 l_tp_pcc_est_disabl := 'Y';
1386 END IF;
1387 END IF;
1388
1389 IF l_percent_complete_flag = 'N'
1390 AND l_element_struc_type = 'WORKPLAN'
1391 AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1392 AND p_calling_module = 'AMG' -- Bug 3807745
1393 THEN
1394 IF l_percent_complete > 0
1395 THEN
1396 --You cannot enter percent_complete
1397 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1398 p_msg_name => 'PA_TP_PCC_DISABL');
1399 x_msg_data := 'PA_TP_PCC_DISABL';
1400 x_return_status := 'E';
1401 -- RAISE FND_API.G_EXC_ERROR;
1402 l_tp_pcc_est_disabl := 'Y';
1403 END IF;
1404 END IF;
1405
1406 -- Raise in case of any of the above two errors
1407 IF l_tp_pcc_est_disabl = 'Y'
1408 THEN
1409 RAISE FND_API.G_EXC_ERROR;
1410 END IF;
1411
1412 -- Bug 3606627 : AMG Changes, Getting planned values
1413 IF p_calling_module = 'AMG' THEN
1414 BEGIN
1415 --bug 3824042
1416 SELECT
1417 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
1418 nvl(pfxat.prj_brdn_cost,0) planned_cost, nvl(pfxat.labor_hours,0)+nvl(pfxat.equipment_hours,0) planned_effort
1419 INTO l_planned_cost, l_planned_effort
1420 FROM pji_fm_xbs_accum_tmp1 pfxat
1421 WHERE pfxat.project_id = p_project_id
1422 AND pfxat.struct_version_id = p_structure_version_id
1423 AND pfxat.project_element_id = p_object_id
1424 AND pfxat.calendar_type = 'A'
1425 AND pfxat.plan_version_id > 0
1426 AND pfxat.txn_currency_code is null;
1427 EXCEPTION
1428 WHEN OTHERS THEN
1429 null;
1430 END;
1431 END IF;
1432
1433
1434 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1435 AND l_element_struc_type = 'WORKPLAN'
1436 THEN
1437 IF l_wq_enabled_flag = 'Y'
1438 THEN
1439 l_last_cumulative_wrk_qty := PA_PROGRESS_UTILS.get_last_cumulative(
1440 p_project_id => p_project_id
1441 ,p_object_id => p_object_id
1442 ,p_object_type => p_object_type
1443 ,p_as_of_date => p_as_of_date );
1444 IF l_actual_wq_entry_code = 'INCREMENTAL'
1445 THEN
1446 --calculate cumulative;
1447 l_cumulative_work_qty := l_actual_work_quantity + NVL( l_last_cumulative_wrk_qty, 0 );
1448 l_incremental_work_qty := l_actual_work_quantity;
1449
1450 IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 3614860
1451 THEN
1452 l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1453 p_task_id => p_object_id
1454 ,p_incr_work_qty => l_incremental_work_qty
1455 ,p_cuml_work_qty => l_last_cumulative_wrk_qty
1456 ,p_est_remaining_effort => l_est_remaining_effort
1457 );
1458 END IF;
1459 ELSIF l_actual_wq_entry_code = 'CUMULATIVE'
1460 THEN
1461 --calculate incremental;
1462 l_incremental_work_qty := l_actual_work_quantity - NVL( l_last_cumulative_wrk_qty, 0 );
1463 l_cumulative_work_qty := l_actual_work_quantity;
1464 IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 bug 3614860
1465 THEN
1466 l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1467 p_task_id => p_object_id
1468 ,p_incr_work_qty => l_incremental_work_qty
1469 ,p_cuml_work_qty => l_cumulative_work_qty
1470 ,p_est_remaining_effort => l_est_remaining_effort
1471 );
1472 END IF;
1473 END IF;
1474 END IF;
1475
1476 IF l_est_remaining_eff_flag = 'Y'
1477 -- Bug 4632744 : Added COST also here. We just need to derive some % complete
1478 -- here to populate variable l_base_percent_complete.
1479 -- So that we can do status and % complete check further
1480 -- Actual and correct % compete will be calculated in partial rollup and rollup API's
1481 AND l_base_percent_comp_deriv_code in( 'EFFORT','COST') --maansari: fpm changes --bug 3784733
1482 AND p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1483 AND p_actual_effort IS NOT NULL
1484 THEN
1485 --maansari7/27 bug 3784733
1486 l_planned_effort := l_actual_effort+l_est_remaining_effort;
1487 IF l_planned_effort = 0
1488 THEN
1489 l_planned_effort := 1;
1490 END IF;
1491 l_base_percent_complete := (l_actual_effort/l_planned_effort)*100; --bug 3781922
1492 --maansari7/27 bug 3784733
1493 /* 5726773
1494 IF l_actual_effort < 0 THEN-- 4632744
1495 l_base_percent_complete := 0;
1496 END IF;
1497 */
1498 --5726773
1499 if l_base_percent_complete < 0 then
1500 l_base_percent_complete := 0;
1501 elsif l_base_percent_complete > 100 then
1502 l_base_percent_complete := 100;
1503 end if;
1504 END IF;
1505
1506 --bug 3824042, round base percent upto 2 decimal places
1507 l_base_percent_complete := round(l_base_percent_complete, 2);
1508 END IF;
1509
1510 --maansari5/6 bug3614860
1511
1512 --do not copy base pc to override pc. maansari5/21
1513 IF ( p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
1514 p_percent_complete IS NULL)
1515 AND l_percent_complete = 0
1516 THEN
1517 l_percent_complete := null;
1518 END IF;
1519
1520 ---------Added by rtarway--------------------------
1521 -- Added For Bug 3630743
1522 --It is added here so that previous checks do not get affected by the changed value of l_est_remaining_effort
1523 IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1524 AND NVL( l_lowest_level_task, 'N' ) <> 'N'
1525 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
1526 AND l_element_struc_type = 'WORKPLAN'
1527 AND l_est_remaining_eff_flag <> 'N'
1528 THEN
1529 ----5726773 l_est_remaining_effort := l_planned_effort - l_actual_effort;
1530 l_est_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_planned_effort,l_actual_effort); --5726773
1531 END IF;
1532 ----------end added by rtarway for bug 3630743-----
1533
1534 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1535 THEN
1536 l_base_progress_status_code := p_progress_status_code;
1537 END IF;
1538
1539 --bug 3851528
1540 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1541 AND l_element_struc_type = 'WORKPLAN'
1542 AND l_assignment_exists = 'N'
1543 THEN
1544 --Update outdated flag back to 'Y'
1545 UPDATE pa_proj_elements
1546 SET progress_outdated_flag = 'Y'
1547 WHERE proj_element_id = p_object_id
1548 AND project_id = p_project_id
1549 AND object_type = p_object_type;
1550 END IF;
1551 --bug 3851528
1552
1553 IF l_element_struc_type = 'WORKPLAN'
1554 THEN
1555 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1556 p_task_id => l_task_id
1557 ,p_project_id => p_project_id
1558 ,p_object_id => p_object_id
1559 ,p_object_type => p_object_type
1560 ,p_structure_type => p_structure_type);
1561
1562 l_working_aod := PA_PROGRESS_UTILS.Working_version_exist(
1563 p_object_id => p_object_id -- Bug 3764224
1564 ,p_task_id => p_object_id
1565 ,p_project_id => p_project_id
1566 ,p_object_type => p_object_type
1567 ,p_as_of_date => p_as_of_date); --bug 4185364
1568 END IF;
1569
1570 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
1571 p_task_id => p_object_id
1572 ,p_object_id => p_object_id -- Bug 3764224
1573 ,p_as_of_date => p_as_of_date
1574 ,p_project_id => p_project_id
1575 ,p_object_version_id => p_object_version_id
1576 ,p_object_type => p_object_type
1577 );
1578
1579 IF g1_debug_mode = 'Y' THEN
1580 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
1581 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);
1582 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_working_aod='||l_working_aod, x_Log_Level=> 3);
1583 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);
1584 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);
1585 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
1586 END IF;
1587
1588
1589 IF p_progress_mode = 'BACKDATED'
1590 THEN
1591 IF l_element_struc_type = 'WORKPLAN'
1592 THEN
1593 IF l_last_progress_date IS NULL
1594 THEN
1595 --Add message
1596 --You cannot create a backdated progress when there does not
1597 --exists any progress for this task.
1598 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1599 ,p_msg_name => 'PA_TP_WRONG_PRG_MODE1');
1600 x_msg_data := 'PA_TP_WRONG_PRG_MODE1';
1601 x_return_status := 'E';
1602 RAISE FND_API.G_EXC_ERROR;
1603 ELSIF p_as_of_date > l_last_progress_date -- progress exists before as of date
1604 THEN
1605 --You cannot create a backdated progress when there exists a progress
1606 --before AS_OF_DATE for this task.
1607 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1608 p_msg_name => 'PA_TP_WRONG_PRG_MODE2',
1609 p_token1 => 'AS_OF_DATE',
1610 p_value1 => l_last_progress_date );
1611 x_msg_data := 'PA_TP_WRONG_PRG_MODE2';
1612 x_return_status := 'E';
1613 RAISE FND_API.G_EXC_ERROR;
1614 ELSIF p_as_of_date < l_last_progress_date -- backdated
1615 THEN
1616 IF l_progress_exists_on_aod = 'WORKING'
1617 THEN
1618 --update the existing working progress record to publish and roll up
1619 l_db_action := 'UPDATE';
1620 ELSIF l_progress_exists_on_aod = 'N'
1621 THEN
1622 --Create a new published progress record and roll up. (if l_progress_exists_on_aod = 'PUBLISHED'
1623 --then update last progress current flag = 'N')
1624 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1625 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1626 l_db_action := 'CREATE';
1627 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1628 --You cannot create a backdated progress when there exists a progress
1629 -- on AS_OF_DATE for this task. can correct but no backdate.
1630 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1631 p_msg_name => 'PA_TP_WRONG_PRG_MODE5');
1632 x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1633 x_return_status := 'E';
1634 RAISE FND_API.G_EXC_ERROR;
1635 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is not null THEN
1636 l_db_action := 'CREATE';
1637 l_process := 'CORRECT';
1638 END IF;
1639
1640 --validate actuals
1641 IF ( l_actual_start_date IS NOT NULL AND l_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1642 -- 4533112 : It was start date again in below condition, changed it to shd be finish date here
1643 ( l_actual_finish_date IS NOT NULL AND l_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1644 ( p_actual_work_quantity IS NOT NULL AND p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM )
1645 THEN
1646 --Add message
1647 --You cannot pass actuals for backdated progress.
1648 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1649 ,p_msg_name => 'PA_TP_ACTUALS_NOT_ALLWD');
1650 x_msg_data := 'PA_TP_ACTUALS_NOT_ALLWD';
1651 x_return_status := 'E';
1652 RAISE FND_API.G_EXC_ERROR;
1653 END IF;
1654 ELSIF p_as_of_date = l_last_progress_date -- Current
1655 THEN
1656 IF l_progress_exists_on_aod = 'WORKING'
1657 THEN
1658 --update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1659 l_db_action := 'UPDATE';
1660 ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1661 --You cannot create a backdated progress when there exists a progress
1662 -- on AS_OF_DATE for this task. can correct but no backdate.
1663 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1664 p_msg_name => 'PA_TP_WRONG_PRG_MODE5');
1665 x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1666 x_return_status := 'E';
1667 RAISE FND_API.G_EXC_ERROR;
1668 ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1669 THEN
1670 --Create a new working progress record. ( publish and roll it only when p_action = 'PUBLISH' )
1671 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1672 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1673 l_db_action := 'CREATE';
1674 l_process := 'CORRECT';
1675 END IF;
1676 END IF;
1677 END IF; --<< l_element_struc_type = 'WORKPLAN' >>
1678 ELSIF p_progress_mode = 'FUTURE'
1679 THEN
1680
1681 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
1682 AND l_element_struc_type = 'WORKPLAN' --maansari fpm changes
1683 THEN
1684 --You cannot create a future progress when there exists a progress
1685 --after AS_OF_DATE for this task.
1686 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1687 p_msg_name => 'PA_TP_WRONG_PRG_MODE3',
1688 p_token1 => 'AS_OF_DATE',
1689 p_value1 => p_as_of_date );
1690 x_msg_data := 'PA_TP_WRONG_PRG_MODE3';
1691 x_return_status := 'E';
1692 RAISE FND_API.G_EXC_ERROR;
1693 ELSE
1694 --Validate as of date
1695 -- Bug 3627315 : Check valid as of date should not be called from AMG or Task Progress Details page
1696 -- Beacuse from both the places we submit progress for all objects against one cycle date
1697 IF l_element_struc_type = 'WORKPLAN'
1698 AND p_calling_module <> 'AMG' -- Bug 3627315
1699 -- AND p_calling_module <> 'TASK_PROG_DET_PAGE' -- Bug 3627315 maansari this is not required here.
1700 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'
1701 AND nvl(l_last_progress_date,p_as_of_date + 1 ) <> p_as_of_date
1702 THEN
1703 --Add message
1704 --Invalid as of date
1705
1706 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1707 ,p_msg_name => 'PA_TP_INV_AOD2');
1708 x_msg_data := 'PA_TP_INV_AOD2';
1709 x_return_status := 'E';
1710 RAISE FND_API.G_EXC_ERROR;
1711 END IF;
1712
1713 IF l_progress_exists_on_aod = 'WORKING'
1714 THEN
1715 --update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1716 l_db_action := 'UPDATE';
1717 ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1718 THEN
1719 --Create a new working progress record. ( publish and roll it only when p_action = 'PUBLISH' )
1720 --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1721 --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1722 l_db_action := 'CREATE';
1723 IF l_working_aod IS NOT NULL --there is only one working version allowed
1724 --OR p_as_of_date = l_last_progress_date--Added by rtarway for BUG4091457
1725 OR (p_as_of_date = l_last_progress_date AND p_action = 'PUBLISH') -- BUG 4180026, for Recalc it should create new record.
1726 THEN
1727 l_db_action := 'UPDATE';
1728 END IF;
1729 END IF;
1730 END IF;
1731 END IF;
1732
1733 IF g1_debug_mode = 'Y' THEN
1734 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Validation is Over', x_Log_Level=> 3);
1735 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action='||l_db_action, x_Log_Level=> 3);
1736 END IF;
1737
1738 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1739 AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
1740 AND (l_actual_effort IS NOT NULL or l_est_remaining_effort IS NOT NULL) -- Bug 3957792
1741 AND l_assignment_exists = 'N' -- Bug 4632744
1742 THEN
1743
1744 OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
1745 FETCH c_get_resource_list_member_id
1746 INTO
1747 l_resource_assignment_id,
1748 l_resource_list_member_id,
1749 l_txn_currency_code,
1750 l_planned_quantity ,
1751 l_planned_bur_cost_txn_cur,
1752 l_planned_bur_cost_projfunc,
1753 l_planned_bur_cost_proj_cur,
1754 l_planned_raw_cost_txn_cur,
1755 l_planned_raw_cost_proj_cur,
1756 l_planned_raw_cost_projfunc,
1757 l_rbs_element_id,
1758 l_rate_based_flag,
1759 l_resource_class_code,
1760 l_budget_version_id --- 4372462
1761 ;
1762 CLOSE c_get_resource_list_member_id;
1763
1764
1765 IF g1_debug_mode = 'Y' THEN
1766 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);
1767 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);
1768 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);
1769 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
1770 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);
1771 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);
1772 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);
1773 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);
1774 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);
1775 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);
1776 END IF;
1777
1778 -- BEGIN: Adding code to fix Bug # 3815741.
1779
1780 --bug 4021315, call derive task assignments only if actual or etc is entered
1781 IF l_resource_list_member_id IS NULL AND l_assignment_exists = 'N'
1782 AND ( l_actual_effort <> 0 OR l_est_remaining_effort <> 0)
1783 THEN
1784 BEGIN
1785 IF g1_debug_mode = 'Y' THEN
1786 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);
1787 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
1788 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);
1789 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);
1790 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);
1791 END IF;
1792
1793 pa_task_assignments_pvt.derive_task_assignments
1794 ( p_project_id => p_project_id
1795 ,p_task_version_id => p_object_version_id
1796 ,p_scheduled_start => l_scheduled_start_date
1797 ,p_scheduled_end => l_scheduled_finish_date
1798 ,p_resource_class_code => 'PEOPLE'
1799 ,p_resource_list_member_id => null
1800 --,p_unplanned_flag => 'N' --bug 3819694, rtarway
1801 ,p_unplanned_flag => 'Y'
1802 ,x_resource_assignment_id => l_resource_assignment_id
1803 ,x_task_version_id => l_task_version_id_out
1804 ,x_currency_code => l_txn_currency_code
1805 ,x_resource_list_member_id => l_resource_list_member_id
1806 ,x_rate_based_flag => l_rate_based_flag_x
1807 ,x_rbs_element_id => l_rbs_element_id
1808 ,x_msg_count => l_msg_count
1809 ,x_msg_data => l_msg_data
1810 ,x_return_status => l_return_status);
1811
1812 IF g1_debug_mode = 'Y' THEN
1813 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After call derive_task_assignments', x_Log_Level=> 3);
1814 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_return_status='||l_return_status, x_Log_Level=> 3);
1815 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);
1816 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);
1817 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);
1818 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);
1819 END IF;
1820
1821 -- Bug 3834339 : We should get the planned value after assignment is created
1822 OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
1823 FETCH c_get_resource_list_member_id
1824 INTO
1825 l_resource_assignment_id,
1826 l_resource_list_member_id,
1827 l_txn_currency_code,
1828 l_planned_quantity ,
1829 l_planned_bur_cost_txn_cur,
1830 l_planned_bur_cost_projfunc,
1831 l_planned_bur_cost_proj_cur,
1832 l_planned_raw_cost_txn_cur,
1833 l_planned_raw_cost_proj_cur,
1834 l_planned_raw_cost_projfunc,
1835 l_rbs_element_id,
1836 l_rate_based_flag,
1837 l_resource_class_code,
1838 l_budget_version_id --- 4372462
1839 ;
1840 CLOSE c_get_resource_list_member_id;
1841
1842
1843 IF g1_debug_mode = 'Y' THEN
1844 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);
1845 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);
1846 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);
1847 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
1848 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);
1849 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);
1850 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);
1851 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);
1852 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);
1853 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);
1854 END IF;
1855
1856 EXCEPTION
1857 WHEN OTHERS THEN
1858 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
1859 p_procedure_name => 'UPDATE_TASK_PROGRESS',
1860 p_error_text => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
1861 RAISE fnd_api.g_exc_error;
1862 END;
1863
1864 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1865 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1866 p_msg_name => l_msg_data);
1867 x_msg_data := l_msg_data;
1868 x_return_status := 'E';
1869 x_msg_count := l_msg_count;
1870 RAISE FND_API.G_EXC_ERROR;
1871 END IF;
1872 END IF;
1873 END IF;
1874 -- END: Adding code to fix Bug # 3815741.
1875
1876
1877 -- Bug 3951531 Begin
1878
1879 IF g1_debug_mode = 'Y' THEN
1880 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Bug 3951531', x_Log_Level=> 3);
1881 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);
1882 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
1883 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);
1884 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);
1885 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);
1886 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);
1887 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);
1888 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
1889 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);
1890 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);
1891 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);
1892 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
1893 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
1894 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);
1895 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);
1896 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);
1897 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);
1898 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
1899 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_cost='||l_planned_cost, x_Log_Level=> 3);
1900 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);
1901 END IF;
1902
1903 -- Bug 3922325 : Moved date defaulting code below
1904 -- BEGIN: Fix for Bug # 3957607.
1905 IF p_eff_rollup_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1906 AND p_eff_rollup_percent_complete IS NOT NULL
1907 AND p_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1908 AND p_percent_complete IS NOT NULL
1909 THEN
1910 -- Do not consider overriden pc if its same as effective rollup percent complete.
1911 -- This has to be done before we calculate: l_earned_value.
1912 IF nvl(round(p_eff_rollup_percent_complete,2),0) = l_percent_complete
1913 THEN
1914 l_percent_complete := null;
1915 END IF;
1916 l_eff_rollup_percent_comp := p_eff_rollup_percent_complete; --bug 3969840
1917 END IF;
1918
1919 -- END: Fix for Bug # 3957607.
1920
1921 -- Bug 3922325 Begin
1922 IF g1_debug_mode = 'Y' THEN
1923 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Task Status and Dates Defaulting and Error', x_Log_Level=> 3);
1924 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);
1925 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);
1926 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
1927 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
1928 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);
1929 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
1930 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
1931 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);
1932 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);
1933 END IF;
1934 -- Bug 3922325 End
1935
1936 -- Bug 3922325 Begin
1937 IF l_element_struc_type = 'WORKPLAN'
1938 THEN
1939 -- Previous System Status code is derived, if someone intentionally trying to change to
1940 -- an invalid combination, so raise error instead of defaulting
1941 OPEN c_previous_task_status;
1942 FETCH c_previous_task_status INTO l_previous_status_code;
1943 CLOSE c_previous_task_status;
1944
1945 l_prev_sys_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_previous_status_code );
1946 IF g1_debug_mode = 'Y' THEN
1947 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);
1948 END IF;
1949 END IF;
1950 -- Bug 3922325 End
1951
1952 IF ( l_percent_complete_flag = 'Y') THEN
1953 -- Bug 3603636 Task Status Should be defaulted : As per Clint
1954 --Fixed for BUG 3762650 by rtarway, please see 3668168 for defaulting rules of status.
1955 -- 3922325 : Actual check should also be here
1956 -- Bug 4097710 : Used nvl in use of l_prev_sys_status_code
1957 IF ((nvl(l_percent_complete, l_base_percent_complete) > 0 AND nvl(l_percent_complete, l_base_percent_complete) < 100)
1958 AND (l_task_status2 IS NULL OR l_task_status2 IN ('NOT_STARTED','COMPLETED'))
1959 AND NVL(l_prev_sys_status_code, 'xyz') <> 'IN_PROGRESS')
1960 -- Bug 3922325 : Added Completed too. This is done so by changing just ETC, it should be able to make In Progress
1961 THEN
1962 l_task_status2 := 'IN_PROGRESS';
1963 l_task_status := '125';
1964 --User can put a task in cancelled or on hold even if % complete > 0
1965 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' )
1966 THEN
1967 l_task_status2 := 'COMPLETED';
1968 l_task_status := '127';
1969 END IF;
1970 END IF;
1971 /* Changes by vvjoshi for bug#5374114 - START */
1972
1973 IF (l_task_status2 = l_task_status2_temp) THEN
1974 l_task_status2 := l_task_status2_temp;
1975 l_task_status := l_task_status_temp;
1976 END IF;
1977
1978 /* Changes by vvjoshi for bug#5374114 - END */
1979
1980 -- Bug 3922325 Begin
1981 IF g1_debug_mode = 'Y' THEN
1982 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After Default Status', x_Log_Level=> 3);
1983 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
1984 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
1985 END IF;
1986 -- Bug 3922325 End
1987
1988 -- Bug 3922325 : Moved date defaulting code here from above. It should be after l_percent_complete is derived and task_status is defaulted
1989 -- Begin
1990 IF p_progress_mode <> 'BACKDATED' AND l_element_struc_type = 'WORKPLAN'
1991 THEN
1992 IF NVL( l_lowest_level_task, 'N' ) = 'Y' --bug 2667432
1993 THEN
1994 -- 4533112 Begin
1995 IF g1_debug_mode = 'Y' THEN
1996 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Client Extension Logic Starts', x_Log_Level=> 3);
1997 END IF;
1998
1999 OPEN c_get_dates_overrides;
2000 FETCH c_get_dates_overrides INTO
2001 l_db_date_override_flag
2002 , l_db_estimated_start_date
2003 , l_db_estimated_finish_date
2004 , l_db_actual_start_date
2005 , l_db_actual_finish_date;
2006 CLOSE c_get_dates_overrides;
2007
2008 IF g1_debug_mode = 'Y' THEN
2009 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);
2010 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);
2011 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);
2012 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);
2013 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);
2014 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);
2015 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
2016 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);
2017 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
2018 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);
2019 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
2020 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2021 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);
2022 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);
2023 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);
2024 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);
2025 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);
2026 END IF;
2027
2028 l_date_override_flag := 'N';
2029
2030 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
2031 p_project_id => p_project_id,
2032 p_structure_type => 'WORKPLAN',
2033 p_structure_version_id => p_structure_version_id,
2034 p_object_type => p_object_type,
2035 p_object_id => p_object_id,
2036 p_object_version_id => p_object_version_id,
2037 p_proj_element_id => p_object_id,
2038 p_task_status => l_task_status,
2039 p_percent_complete => nvl(l_percent_complete, l_base_percent_complete),
2040 p_estimated_start_date => l_estimated_start_date,
2041 p_estimated_finish_date => l_estimated_finish_date,
2042 p_actual_start_date => l_actual_start_date,
2043 p_actual_finish_date => l_actual_finish_date,
2044 x_estimated_start_date => l_clex_estimated_start_date,
2045 x_estimated_finish_date => l_clex_estimated_finish_date,
2046 x_actual_start_date => l_clex_actual_start_date,
2047 x_actual_finish_date => l_clex_actual_finish_date,
2048 x_return_status => x_return_status,
2049 x_msg_count => x_msg_count,
2050 x_msg_data => x_msg_data
2051 );
2052
2053 IF g1_debug_mode = 'Y' THEN
2054 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);
2055 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);
2056 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);
2057 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);
2058 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);
2059 END IF;
2060
2061 IF x_return_status <> 'S' THEN
2062 raise FND_API.G_EXC_ERROR;
2063 END IF;
2064
2065 IF nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
2066 OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
2067 OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
2068 OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
2069 THEN
2070 l_date_override_flag := 'Y';
2071 l_estimated_start_date := l_clex_estimated_start_date;
2072 l_estimated_finish_date := l_clex_estimated_finish_date;
2073 l_actual_start_date := l_clex_actual_start_date;
2074 l_actual_finish_date := l_clex_actual_finish_date;
2075 END IF;
2076
2077 IF l_date_override_flag = 'N' AND nvl(l_db_date_override_flag, 'N') = 'Y' THEN
2078 l_date_override_flag := 'Y';
2079 END IF;
2080
2081 IF l_date_override_flag = 'N' AND
2082 (nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_db_estimated_start_date,FND_API.g_miss_date)
2083 OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_db_estimated_finish_date,FND_API.g_miss_date)
2084 OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_db_actual_start_date,FND_API.g_miss_date)
2085 OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_db_actual_finish_date,FND_API.g_miss_date))
2086 THEN
2087 l_date_override_flag := 'Y';
2088 END IF;
2089
2090 IF g1_debug_mode = 'Y' THEN
2091 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);
2092 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);
2093 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);
2094 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);
2095 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);
2096 END IF;
2097
2098 -- 4533112 End
2099
2100 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
2101 x_return_status := FND_API.G_RET_STS_ERROR;
2102 pa_utils.add_message(p_app_short_name => 'PA',
2103 p_msg_name => 'PA_EST_DATES_INV');
2104 raise fnd_api.g_exc_error;
2105 END IF;
2106 -- Bug 3922325 : Actual Start date and Finish date should efualt even if percent completete is not enabled
2107 -- It should be based on Task Status rather than % Complete
2108 --bug# 3823433 Satish
2109 --IF l_percent_complete_flag = 'Y'
2110 --THEN
2111 IF g1_debug_mode = 'Y' THEN
2112 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Deriving Dates', x_Log_Level=> 3);
2113 END IF;
2114 /* Date defaulting should be based on Status rather than % complete
2115 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0 and l_actual_start_date is null ) THEN
2116 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2117 END IF;
2118
2119 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2120 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2121 END IF;
2122
2123 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100 and l_actual_finish_date is not null ) THEN
2124 l_actual_finish_date := to_date(null);
2125 END IF;
2126 */
2127
2128 IF l_actual_start_date IS NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2129 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2130 if (l_estimated_start_date is null) then --5186825
2131 l_estimated_start_date := l_scheduled_start_date;
2132 end if;
2133 l_actual_finish_date := to_date(null);
2134 END IF;
2135 -- Bug 4232099 : added folling IF
2136 IF l_actual_finish_date IS NOT NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2137 l_actual_finish_date := to_date(null);
2138 END IF;
2139 IF l_actual_start_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2140 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2141 if (l_estimated_start_date is null) then --5186825
2142 l_estimated_start_date := l_scheduled_start_date;
2143 end if;
2144 END IF;
2145 IF l_actual_finish_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2146 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2147 END IF;
2148 --END IF;
2149
2150
2151 IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL
2152 THEN
2153 IF l_actual_finish_date < l_actual_start_date
2154 THEN
2155 IF TRUNC(SYSDATE) < l_actual_start_date
2156 THEN
2157 l_actual_finish_date := l_actual_start_date;
2158 ELSE
2159 l_actual_finish_date := TRUNC(SYSDATE);
2160 END IF;
2161 END IF;
2162 END IF;
2163
2164 -- Bug 3922325 : Actual Start date and Finish date check should be based on Status
2165 -- Also it should happen irrespective of percent complete is enabled
2166 /*
2167 --bug# 3823433 Satish
2168 IF l_percent_complete_flag = 'Y'
2169 THEN
2170 IF g1_debug_mode = 'Y' THEN
2171 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Raising Errors on Conditions', x_Log_Level=> 3);
2172 END IF;
2173
2174 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0 and nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100
2175 and l_actual_start_date is null ) THEN
2176
2177 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2178 ,p_msg_name => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2179 x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2180 x_return_status := 'E';
2181 RAISE FND_API.G_EXC_ERROR;
2182 END IF;
2183
2184 IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2185 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2186 ,p_msg_name => 'PA_TP_ACT_END_DT_NOT_NULL');
2187 x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2188 x_return_status := 'E';
2189 RAISE FND_API.G_EXC_ERROR;
2190 END IF;
2191 END IF;
2192 */
2193 IF ( l_task_status2 IN ('COMPLETED','IN_PROGRESS') and l_actual_start_date is null ) THEN
2194
2195 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2196 ,p_msg_name => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2197 x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2198 x_return_status := 'E';
2199 RAISE FND_API.G_EXC_ERROR;
2200 END IF;
2201
2202 IF (l_task_status2 = 'COMPLETED' and l_actual_finish_date is null ) THEN
2203 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2204 ,p_msg_name => 'PA_TP_ACT_END_DT_NOT_NULL');
2205 x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2206 x_return_status := 'E';
2207 RAISE FND_API.G_EXC_ERROR;
2208 END IF;
2209
2210 END IF; -- IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2211 END IF; -- IF p_progress_mode <> 'BACKDATED'
2212 -- Bug 3922325 End
2213
2214 -- Bug 4328141 : Making l_percent_complete 100 when L_ALLW_PHY_PRCNT_CMP_OVERRIDES is N
2215 IF l_percent_complete_flag = 'Y' AND l_allw_phy_prcnt_cmp_overrides = 'N' AND l_task_status2 = 'COMPLETED'
2216 AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) <> 100 THEN
2217 l_percent_complete := 100;
2218 END IF;
2219
2220 IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL
2221 AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) = 0)
2222 OR
2223 l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL
2224 AND l_actual_finish_date IS NULL
2225 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
2226 /* Begin commenting out code to fix Bug # 4093350.
2227
2228 It has been decided that a task that 'IN_PROGRESS' only needs to have an actual start date, it
2229 need not have any actuals or percent complete.
2230
2231 AND ((nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0
2232 AND nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100))
2233 OR nvl(l_actual_effort,0) > 0 OR nvl(l_act_raw_cost_to_date_pc,0) > 0
2234 OR nvl(l_act_bur_cost_to_date_pc,0) > 0) -- Fix for Bug # 4093350.
2235
2236 End commenting out code to fix Bug # 4093350. */
2237
2238 OR
2239 l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL
2240 AND l_actual_finish_date IS NOT NULL
2241 AND nvl(l_percent_complete, l_base_percent_complete) = 100) -- Fix for Bug # 4093350.
2242 OR
2243 (l_task_status2 is NULL)
2244 OR
2245 (l_task_status2 = '')
2246 THEN
2247 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2248 AND l_element_struc_type = 'WORKPLAN'
2249 AND p_progress_mode <> 'BACKDATED'
2250 AND l_percent_complete_flag = 'Y'
2251 --AND L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'Y' --maansari: fpm changes
2252 THEN
2253 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2254 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB' );
2255 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2256 x_return_status := 'E';
2257 RAISE FND_API.G_EXC_ERROR;
2258 END IF;
2259 END IF;
2260
2261 -- Bug 4632744
2262 -- l_earned_value can be derived as any thing here
2263 -- The correct value is derived in partial rollup or rollup API's
2264 -- So code below to get baseline plan and derive earned value, can be removed
2265
2266
2267 /* Begin fix for Bug # 4050324. */
2268 BEGIN
2269 SELECT
2270 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2271 nvl(pfxat.prj_base_brdn_cost,0)
2272 , (nvl(pfxat.base_labor_hours,0)+nvl(pfxat.base_equip_hours,0))
2273 INTO l_base_planned_cost
2274 , l_base_planned_effort
2275 FROM pji_fm_xbs_accum_tmp1 pfxat
2276 WHERE pfxat.project_id = p_project_id
2277 AND pfxat.struct_version_id = p_structure_version_id
2278 AND pfxat.project_element_id = p_object_id
2279 AND pfxat.calendar_type = 'A'
2280 AND pfxat.plan_version_id > 0
2281 AND pfxat.txn_currency_code is null;
2282 EXCEPTION
2283 WHEN OTHERS THEN
2284 null;
2285 END;
2286
2287 /* End fix for Bug # 4050324. */
2288
2289 IF l_element_struc_type = 'WORKPLAN'
2290 THEN
2291 IF l_task_weight_basis_code = 'EFFORT'
2292 THEN
2293 --bug 3824042, changed trunc to round
2294 /* Begin fix for Bug # 4050324. */
2295 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,5);
2296 /* End fix for Bug # 4050324. */
2297
2298 ELSE
2299 --bug 3824042, changed trunc to round
2300 /* Begin fix for Bug # 4050324. */
2301 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);
2302 /* End fix for Bug # 4050324. */
2303 END IF;
2304 END IF;
2305
2306
2307 IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL) OR
2308 l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NULL) OR
2309 l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NOT NULL ) OR
2310 (l_task_status2 is NULL) OR
2311 (l_task_status2 = '')
2312 THEN
2313 IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2314 AND l_element_struc_type = 'WORKPLAN'
2315 AND p_progress_mode <> 'BACKDATED'
2316 AND l_percent_complete_flag = 'N'
2317 THEN
2318 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2319 ,p_msg_name => 'PA_TP_STAT_DTES_PC_COMB' );
2320 x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2321 x_return_status := 'E';
2322 RAISE FND_API.G_EXC_ERROR;
2323 END IF;
2324 END IF;
2325
2326 -- Bug 3951531 End
2327
2328
2329 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2330 x_return_status := 'E';
2331 x_msg_data := l_msg_data;
2332 x_msg_count := l_msg_count;
2333 RAISE FND_API.G_EXC_ERROR;
2334 END IF;
2335
2336 IF ( p_action = 'PUBLISH' or NVL( l_rollup_required, 'N') = 'Y' )
2337 THEN
2338 l_published_flag := 'Y';
2339 ----
2340 l_rollup_progress_status := p_progress_status_code;
2341 l_rollup_completed_percentage := l_percent_complete;
2342
2343 --bug 3879461 --maansari
2344 OPEN check_prog_after_aod;
2345 FETCH check_prog_after_aod INTO l_prog_exist_after_aod;
2346 IF check_prog_after_aod%NOTFOUND
2347 THEN
2348 l_rollup_current_flag := 'Y'; -- Bug 3879461
2349 ELSE
2350 l_rollup_current_flag := 'N';
2351 END IF;
2352 CLOSE check_prog_after_aod;
2353 --bug 3879461 --maansari
2354 ----
2355 IF p_progress_mode <> 'BACKDATED' OR
2356 ( p_progress_mode = 'BACKDATED'
2357 AND p_as_of_date = l_last_progress_date ) --bug 2646965
2358 THEN
2359 l_current_flag := 'Y';
2360 UPDATE pa_percent_completes
2361 SET current_flag = 'N'
2362 WHERE project_id = p_project_id
2363 AND object_id = p_object_id
2364 AND current_flag = 'Y'
2365 AND object_type = p_object_type
2366 AND structure_type = p_structure_type; --Satish
2367
2368 -- Bug 3879461 Begin
2369 IF NVL(l_prog_exist_after_aod, 'N') = 'N' THEN
2370 UPDATE pa_progress_rollup
2371 SET current_flag = 'N'
2372 WHERE project_id = p_project_id
2373 AND object_id = p_object_id
2374 AND proj_element_id = p_object_id
2375 AND current_flag = 'Y'
2376 AND object_type = p_object_type
2377 AND structure_type = p_structure_type
2378 AND structure_version_id is null
2379 ;
2380 ELSE
2381 null;
2382 --l_current_flag := 'N'; : Commented this , PPC current_flag and PPR current_flag may not be in sync
2383 END IF;
2384 -- Bug 3879461 End
2385 ELSE
2386 l_current_flag := 'N';
2387 l_rollup_current_flag := 'N'; -- Bug 3879461
2388 END IF;
2389
2390 -- Bug 3879461 Begin
2391 -- Delete the published progress record on the same as of date
2392 --bug 4247839, removed the l_db_Action check as it should get deleted for CREATE also
2393 --IF l_db_action = 'UPDATE' AND p_progress_mode <> 'BACKDATED' THEN
2394 IF p_progress_mode <> 'BACKDATED' THEN
2395
2396 Delete from pa_progress_rollup
2397 where project_id = p_project_id
2398 and object_id = p_object_id
2399 and proj_element_id = p_object_id
2400 and object_type = p_object_type
2401 and structure_version_id is null
2402 and structure_type = 'WORKPLAN'
2403 and current_flag = 'W'
2404 and trunc(as_of_date) = trunc(p_as_of_date);
2405 END IF;
2406 -- Bug 3879461 End
2407 ELSE
2408 l_rollup_progress_status := null;
2409 l_rollup_completed_percentage := null;
2410 l_published_flag := 'N';
2411 l_current_flag := 'N';
2412 l_rollup_current_flag := 'W'; -- Bug 3879461
2413 END IF;
2414
2415 -- Bug 4506461 Begin
2416 -- It is only structure level records we need to set base percent complete here
2417 -- for tasks record, it will be taken care in Rollup and partial rollup API
2418 -- 4651069 : It should be executed even for tasks too
2419 --IF p_object_type = 'PA_STRUCTURES' THEN
2420
2421 -- Bug 4683406 : Adding condition so that if this task is deliverable or work quantity based
2422 -- then base % complete is same as Physical % complete
2423 IF l_base_percent_comp_deriv_code in( 'EFFORT','COST') THEN
2424 OPEN c_get_any_childs_have_subprj(p_object_version_id);
2425 FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
2426 CLOSE c_get_any_childs_have_subprj;
2427 END IF;
2428 --END IF;
2429 -- Bug 4506461 End
2430
2431 IF l_db_action = 'CREATE'
2432 THEN
2433 IF g1_debug_mode = 'Y' THEN
2434 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Create', x_Log_Level=> 3);
2435 END IF;
2436
2437 --bug 4185364
2438 /*IF p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2439 OR (p_progress_mode = 'BACKDATED' AND l_process = 'CORRECT')
2440 THEN
2441 l_percent_complete_id := null;
2442 ELSE
2443 l_percent_complete_id := p_percent_complete_id;
2444 END IF;*/
2445
2446 l_percent_complete_id := null;
2447 l_att_pc_id := p_percent_complete_id;
2448 --Create record in PPC
2449
2450 PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
2451 p_task_id => l_task_id
2452 ,p_date_computed => p_as_of_date
2453 ,p_last_update_date => sysdate
2454 ,p_last_updated_by => l_user_id
2455 ,p_creation_date => sysdate
2456 ,p_created_by => l_user_id
2457 ,p_last_update_login => l_login_id
2458 ,p_completed_percentage => l_percent_complete
2459 ,p_description => p_brief_overview
2460 ,p_project_id => p_project_id
2461 ,p_pm_product_code => l_pm_product_code
2462 ,p_current_flag => l_current_flag
2463 ,p_object_type => p_object_type
2464 ,p_object_id => p_object_id
2465 ,p_object_version_id => p_object_version_id
2466 ,p_progress_status_code => p_progress_status_code
2467 ,p_actual_start_date => l_actual_start_date
2468 ,p_actual_finish_date => l_actual_finish_date
2469 ,p_estimated_start_date => p_estimated_start_date
2470 ,p_estimated_finish_date => p_estimated_finish_date
2471 ,p_published_flag => l_published_flag
2472 ,p_published_by_party_id => l_published_by_party_id
2473 ,p_progress_comment => p_progress_comment
2474 ,p_history_flag => 'N'
2475 ,p_status_code => l_task_status
2476 ,x_percent_complete_id => l_percent_complete_id
2477 ,p_attribute_category => null
2478 ,p_attribute1 => null
2479 ,p_attribute2 => null
2480 ,p_attribute3 => null
2481 ,p_attribute4 => null
2482 ,p_attribute5 => null
2483 ,p_attribute6 => null
2484 ,p_attribute7 => null
2485 ,p_attribute8 => null
2486 ,p_attribute9 => null
2487 ,p_attribute10 => null
2488 ,p_attribute11 => null
2489 ,p_attribute12 => null
2490 ,p_attribute13 => null
2491 ,p_attribute14 => null
2492 ,p_attribute15 => null
2493 ,p_structure_type => p_structure_type
2494 );
2495
2496 l_progress_rollup_id := null;
2497 --Create record in progress rollup
2498
2499 --check whether there already exists progress record for this task.
2500 l_progress_rollup_id := PA_PROGRESS_UTILS.get_prog_rollup_id(
2501 p_project_id => p_project_id
2502 ,p_object_id => p_object_id
2503 ,p_object_type => p_object_type
2504 ,p_object_version_id => p_object_version_id
2505 ,p_as_of_date => p_as_of_date
2506 ,p_proj_element_id => p_object_id -- Bug 3764224
2507 ,p_action => p_action -- Bug 3879461
2508 ,x_record_version_number => l_rollup_rec_ver_number
2509 );
2510
2511 IF g1_debug_mode = 'Y' THEN
2512 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);
2513 END IF;
2514
2515 IF l_progress_rollup_id IS NULL
2516 THEN ----1
2517 OPEN cur_pa_rollup1;
2518 FETCH cur_pa_rollup1 INTO l_rollup_rec1;
2519 CLOSE cur_pa_rollup1;
2520
2521 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
2522 THEN
2523 l_eff_rollup_percent_comp := l_base_percent_complete ;
2524 ELSE
2525 l_eff_rollup_percent_comp := l_rollup_rec1.eff_rollup_percent_comp;
2526 END IF;
2527
2528 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check 2
2529 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
2530 THEN
2531 IF g1_debug_mode = 'Y' THEN
2532 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => ' LLT', x_Log_Level=> 3);
2533 END IF;
2534
2535 --- l_base_percent_complete := l_rollup_rec1.base_percent_complete;
2536 l_eff_rollup_prog_stat_code := l_rollup_rec1.eff_rollup_prog_stat_code;
2537 l_base_progress_status_code := l_rollup_rec1.base_progress_status_code;
2538
2539 -- Bug 3796357 Begin
2540 l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
2541 l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
2542 l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
2543 l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
2544 l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
2545 l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
2546 l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
2547 l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
2548 l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
2549 l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
2550 l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
2551 l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
2552 l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
2553 l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
2554 l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
2555 l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
2556 l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
2557 l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
2558 l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
2559 l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
2560 l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
2561 l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
2562 l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
2563 l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
2564 l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
2565 l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
2566 l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
2567 l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
2568 l_txn_currency_code := l_rollup_rec1.txn_currency_code;
2569 l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
2570 l_oth_etc_quantity := l_rollup_rec1.oth_etc_quantity;
2571 l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
2572 l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
2573 l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
2574 l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
2575 l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
2576 l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
2577 l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
2578 l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
2579 l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
2580 l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
2581 l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
2582 l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
2583 l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
2584 l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
2585 l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
2586 l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
2587 l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
2588 l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
2589 -- Bug 3796357 End
2590 ELSE
2591 l_eff_rollup_percent_comp := l_base_percent_complete ; -- null; As per Majid 21 May
2592 l_eff_rollup_prog_stat_code := null;
2593
2594 --maansari5/21 This is required otherwise redefault base pc api is not returning override pc if rollup.
2595 IF l_EFF_ROLLUP_PERCENT_COMP = 0
2596 THEN
2597 l_EFF_ROLLUP_PERCENT_COMP := null;
2598 END IF;
2599
2600 END IF; --2
2601
2602 l_rollup_completed_percentage := l_percent_complete; --maansari5/21
2603
2604 -- Bug 4506461 Begin
2605 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
2606 l_temp_base_pc := l_rollup_rec1.base_percent_complete;
2607 ELSE
2608 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
2609 END IF;
2610 -- Bug 4506461 End
2611
2612 IF g1_debug_mode = 'Y' THEN
2613 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserting in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
2614 END IF;
2615
2616
2617 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
2618 x_progress_rollup_id => l_progress_rollup_id
2619 ,x_project_id => p_project_id
2620 ,x_object_id => p_object_id
2621 ,x_object_type => p_object_type
2622 ,x_as_of_date => p_as_of_date
2623 ,x_object_version_id => p_object_version_id
2624 ,x_last_update_date => sysdate
2625 ,x_last_updated_by => l_user_id
2626 ,x_creation_date => sysdate
2627 ,x_created_by => l_user_id
2628 ,x_progress_status_code => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
2629 ,x_last_update_login => l_login_id
2630 ,x_incremental_work_qty => l_incremental_work_qty
2631 ,x_cumulative_work_qty => l_cumulative_work_qty
2632 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
2633 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
2634 ,x_base_percent_complete => l_temp_base_pc -- 4506461
2635 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
2636 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
2637 ,x_estimated_start_date => l_estimated_start_date
2638 ,x_estimated_finish_date => l_estimated_finish_date
2639 ,x_actual_start_date => l_actual_start_date
2640 ,x_actual_finish_date => l_actual_finish_date
2641 ,x_est_remaining_effort => l_est_remaining_effort
2642 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
2643 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
2644 ,x_eff_rollup_prog_stat_code => l_eff_rollup_prog_stat_code
2645 ,x_percent_complete_id => l_percent_complete_id
2646 ,x_structure_type => p_structure_type
2647 ,x_proj_element_id => l_task_id
2648 ,x_structure_version_id => l_structure_version_id -- null fpm dev cr 3
2649 ,x_ppl_act_effort_to_date => l_actual_effort
2650 ,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.
2651 ,x_eqpmt_etc_effort => l_eqpmt_etc_effort -- bug 3796357 null
2652 ,x_oth_act_cost_to_date_tc => l_oth_act_cost_to_date_tc-- bug 3796357 null --no transaction is avialbale at task.
2653 ,x_oth_act_cost_to_date_fc => l_oth_act_cost_to_date_fc-- bug 3796357
2654 ,x_oth_act_cost_to_date_pc => l_oth_act_cost_to_date_pc-- bug 3796357
2655 ,x_oth_etc_cost_tc => l_oth_etc_cost_tc -- bug 3796357 --no txn currency at task level.
2656 ,x_oth_etc_cost_fc => l_oth_etc_cost_fc -- bug 3796357
2657 ,x_oth_etc_cost_pc => l_oth_etc_cost_pc -- bug 3796357
2658 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc
2659 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
2660 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
2661 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
2662 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
2663 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
2664 ,x_eqpmt_act_cost_to_date_tc => l_eqpmt_act_cost_to_date_tc -- bug 3796357 null
2665 ,x_eqpmt_act_cost_to_date_fc => l_eqpmt_act_cost_to_date_fc -- bug 3796357 null
2666 ,x_eqpmt_act_cost_to_date_pc => l_eqpmt_act_cost_to_date_pc -- bug 3796357 null
2667 ,x_eqpmt_etc_cost_tc => l_eqpmt_etc_cost_tc -- bug 3796357 null
2668 ,x_eqpmt_etc_cost_fc => l_eqpmt_etc_cost_fc -- bug 3796357 null
2669 ,x_eqpmt_etc_cost_pc => l_eqpmt_etc_cost_pc -- bug 3796357 null
2670 ,x_earned_value => l_earned_value
2671 ,x_task_wt_basis_code => l_task_weight_basis_code
2672 ,x_subprj_ppl_act_effort => null
2673 ,x_subprj_eqpmt_act_effort => null
2674 ,x_subprj_ppl_etc_effort => null
2675 ,x_subprj_eqpmt_etc_effort => null
2676 ,x_sbpj_oth_act_cost_to_date_tc => null
2677 ,x_sbpj_oth_act_cost_to_date_fc => null
2678 ,x_sbpj_oth_act_cost_to_date_pc => null
2679 ,x_subprj_ppl_act_cost_tc => null
2680 ,x_subprj_ppl_act_cost_fc => null
2681 ,x_subprj_ppl_act_cost_pc => null
2682 ,x_subprj_eqpmt_act_cost_tc => null
2683 ,x_subprj_eqpmt_act_cost_fc => null
2684 ,x_subprj_eqpmt_act_cost_pc => null
2685 ,x_subprj_oth_etc_cost_tc => null
2686 ,x_subprj_oth_etc_cost_fc => null
2687 ,x_subprj_oth_etc_cost_pc => null
2688 ,x_subprj_ppl_etc_cost_tc => null
2689 ,x_subprj_ppl_etc_cost_fc => null
2690 ,x_subprj_ppl_etc_cost_pc => null
2691 ,x_subprj_eqpmt_etc_cost_tc => null
2692 ,x_subprj_eqpmt_etc_cost_fc => null
2693 ,x_subprj_eqpmt_etc_cost_pc => null
2694 ,x_subprj_earned_value => null
2695 ,x_current_flag => l_rollup_current_flag
2696 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
2697 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
2698 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
2699 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
2700 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
2701 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
2702 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
2703 ,x_prog_pa_period_name => l_pa_period_name
2704 ,x_prog_gl_period_name => l_gl_period_name
2705 ,x_oth_quantity_to_date => l_oth_quantity_to_date -- bug 3796357 null
2706 ,x_oth_etc_quantity => l_oth_etc_quantity -- bug 3796357null
2707 ,x_oth_act_rawcost_to_date_tc => l_oth_act_rawcost_to_date_tc-- bug 3796357null
2708 ,x_oth_act_rawcost_to_date_fc => l_oth_act_rawcost_to_date_fc -- bug 3796357null
2709 ,x_oth_act_rawcost_to_date_pc => l_oth_act_rawcost_to_date_pc -- bug 3796357null
2710 ,x_oth_etc_rawcost_tc => l_oth_etc_rawcost_tc -- bug 3796357 null
2711 ,x_oth_etc_rawcost_fc => l_oth_etc_rawcost_fc -- bug 3796357null
2712 ,x_oth_etc_rawcost_pc => l_oth_etc_rawcost_pc -- bug 3796357null
2713 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
2714 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
2715 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
2716 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
2717 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
2718 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
2719 ,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
2720 ,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
2721 ,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
2722 ,x_eqpmt_etc_rawcost_tc => l_eqpmt_etc_rawcost_tc -- bug 3796357 null
2723 ,x_eqpmt_etc_rawcost_fc => l_eqpmt_etc_rawcost_fc -- bug 3796357 null
2724 ,x_eqpmt_etc_rawcost_pc => l_eqpmt_etc_rawcost_pc -- bug 3796357 null
2725 ,x_sp_oth_act_rawcost_todate_tc => null
2726 ,x_sp_oth_act_rawcost_todate_fc => null
2727 ,x_sp_oth_act_rawcost_todate_pc => null
2728 ,x_subprj_ppl_act_rawcost_tc => null
2729 ,x_subprj_ppl_act_rawcost_fc => null
2730 ,x_subprj_ppl_act_rawcost_pc => null
2731 ,x_subprj_eqpmt_act_rawcost_tc => null
2732 ,x_subprj_eqpmt_act_rawcost_fc => null
2733 ,x_subprj_eqpmt_act_rawcost_pc => null
2734 ,x_subprj_oth_etc_rawcost_tc => null
2735 ,x_subprj_oth_etc_rawcost_fc => null
2736 ,x_subprj_oth_etc_rawcost_pc => null
2737 ,x_subprj_ppl_etc_rawcost_tc => null
2738 ,x_subprj_ppl_etc_rawcost_fc => null
2739 ,x_subprj_ppl_etc_rawcost_pc => null
2740 ,x_subprj_eqpmt_etc_rawcost_tc => null
2741 ,x_subprj_eqpmt_etc_rawcost_fc => null
2742 ,x_subprj_eqpmt_etc_rawcost_pc => null
2743 );
2744
2745 -- Progress Management Changes. FP-M Bug # 3420093. Begin:Set CURRENT_FLAG of previous rollup records to 'N'.
2746
2747 IF g1_debug_mode = 'Y' THEN
2748 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
2749 END IF;
2750
2751 ELSE --1
2752 --update progress rollup
2753
2754 OPEN cur_pa_rollup2;
2755 FETCH cur_pa_rollup2 INTO l_rollup_rec2;
2756 CLOSE cur_pa_rollup2;
2757
2758 -- BEGIN: Fix for Bug # 3926827.
2759 If (NVL( l_lowest_level_task, 'N' ) = 'Y' AND (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
2760 THEN
2761 l_eff_rollup_percent_comp := l_base_percent_complete ;
2762 ELSE
2763 l_eff_rollup_percent_comp := l_rollup_rec2.eff_rollup_percent_comp;
2764 END IF;
2765 -- END: Fix for Bug # 3926827.
2766
2767 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
2768 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
2769 THEN
2770 --- l_BASE_PERCENT_COMPLETE := l_rollup_rec2.BASE_PERCENT_COMPLETE;
2771 l_BASE_PROGRESS_STATUS_CODE := l_rollup_rec2.BASE_PROGRESS_STATUS_CODE;
2772 -- Bug 3796357 Begin
2773 l_actual_effort := l_rollup_rec2.PPL_ACT_EFFORT_TO_DATE;
2774 l_est_remaining_effort := l_rollup_rec2.ESTIMATED_REMAINING_EFFORT;
2775 l_act_bur_cost_to_date_tc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_TC;
2776 l_act_bur_cost_to_date_fc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_FC;
2777 l_act_bur_cost_to_date_pc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_PC;
2778 l_etc_bur_cost_tc := l_rollup_rec2.PPL_ETC_COST_TC;
2779 l_etc_bur_cost_fc := l_rollup_rec2.PPL_ETC_COST_FC;
2780 l_etc_bur_cost_pc := l_rollup_rec2.PPL_ETC_COST_PC;
2781 l_projfunc_cost_rate_type := l_rollup_rec2.PROJFUNC_COST_RATE_TYPE;
2782 l_projfunc_cost_exch_rate := l_rollup_rec2.PROJFUNC_COST_EXCHANGE_RATE;
2783 l_projfunc_cost_rate_date := l_rollup_rec2.PROJFUNC_COST_RATE_DATE;
2784 l_project_rate_type := l_rollup_rec2.PROJ_COST_RATE_TYPE;
2785 l_project_exch_rate := l_rollup_rec2.PROJ_COST_EXCHANGE_RATE;
2786 l_project_rate_date := l_rollup_rec2.PROJ_COST_RATE_DATE;
2787 l_txn_currency_code := l_rollup_rec2.TXN_CURRENCY_CODE;
2788 l_act_raw_cost_to_date_tc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_TC;
2789 l_act_raw_cost_to_date_fc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_FC;
2790 l_act_raw_cost_to_date_pc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_PC;
2791 l_etc_raw_cost_tc := l_rollup_rec2.PPL_ETC_RAWCOST_TC;
2792 l_etc_raw_cost_fc := l_rollup_rec2.PPL_ETC_RAWCOST_FC;
2793 l_etc_raw_cost_pc := l_rollup_rec2.PPL_ETC_RAWCOST_PC;
2794 -- Bug 3796357 End
2795 END IF;
2796
2797 IF (l_process = 'CORRECT')
2798 THEN
2799 l_INCREMENTAL_WORK_QTY := l_rollup_rec2.INCREMENTAL_WORK_QUANTITY;
2800 l_CUMULATIVE_WORK_QTY := l_rollup_rec2.CUMULATIVE_WORK_QUANTITY;
2801 l_BASE_PERCENT_COMPLETE := l_rollup_rec2.BASE_PERCENT_COMPLETE;
2802 END IF;
2803
2804 -- BEGIN: Fix for Bug # 3926827.
2805 -- Bug 4506461 Begin
2806 IF nvl(l_rederive_base_pc,'N') = 'Y'
2807 THEN
2808 l_temp_base_pc := l_rollup_rec2.base_percent_complete;
2809 ELSE
2810 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
2811 END IF;
2812 -- Bug 4506461 End
2813
2814
2815 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
2816 x_progress_rollup_id => l_progress_rollup_id
2817 ,x_project_id => p_project_id
2818 ,x_object_id => p_object_id
2819 ,x_object_type => p_object_type
2820 ,x_as_of_date => p_as_of_date
2821 ,x_object_version_id => p_object_version_id
2822 ,x_last_update_date => sysdate
2823 ,x_last_updated_by => l_user_id
2824 ,x_progress_status_code => l_rollup_progress_status
2825 ,x_last_update_login => l_login_id
2826 ,x_incremental_work_qty => l_incremental_work_qty
2827 ,x_cumulative_work_qty => l_cumulative_work_qty
2828 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
2829 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
2830 ,x_base_percent_complete => l_temp_base_pc -- 4506461
2831 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
2832 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --maansari5/21
2833 ,x_estimated_start_date => l_estimated_start_date
2834 ,x_estimated_finish_date => l_estimated_finish_date
2835 ,x_actual_start_date => l_actual_start_date
2836 ,x_actual_finish_date => l_actual_finish_date
2837 ,x_est_remaining_effort => l_est_remaining_effort
2838 ,x_record_version_number => l_rollup_rec_ver_number
2839 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
2840 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
2841 ,x_eff_rollup_prog_stat_code => l_rollup_rec2.eff_rollup_prog_stat_code
2842 ,x_percent_complete_id => l_percent_complete_id
2843 ,x_structure_type => p_structure_type -- l_rollup_rec2.structure_type fpm dev cr 3
2844 ,x_proj_element_id => p_object_id--l_rollup_rec2.proj_element_id fpm dev cr 3
2845 ,x_structure_version_id => l_structure_version_id--l_rollup_rec2.structure_version_id fpm dev cr 3
2846 ,x_ppl_act_effort_to_date => l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
2847 ,x_eqpmt_act_effort_to_date => l_rollup_rec2.eqpmt_act_effort_to_date
2848 ,x_eqpmt_etc_effort => l_rollup_rec2.eqpmt_etc_effort
2849 ,x_oth_act_cost_to_date_tc => l_rollup_rec2.oth_act_cost_to_date_tc
2850 ,x_oth_act_cost_to_date_fc => l_rollup_rec2.oth_act_cost_to_date_fc
2851 ,x_oth_act_cost_to_date_pc => l_rollup_rec2.oth_act_cost_to_date_pc
2852 ,x_oth_etc_cost_tc => l_rollup_rec2.oth_etc_cost_tc
2853 ,x_oth_etc_cost_fc => l_rollup_rec2.oth_etc_cost_fc
2854 ,x_oth_etc_cost_pc => l_rollup_rec2.oth_etc_cost_pc
2855 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc --3627315 issue 4
2856 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
2857 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
2858 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
2859 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
2860 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
2861 ,x_eqpmt_act_cost_to_date_tc => l_rollup_rec2.eqpmt_act_cost_to_date_tc
2862 ,x_eqpmt_act_cost_to_date_fc => l_rollup_rec2.eqpmt_act_cost_to_date_fc
2863 ,x_eqpmt_act_cost_to_date_pc => l_rollup_rec2.eqpmt_act_cost_to_date_pc
2864 ,x_eqpmt_etc_cost_tc => l_rollup_rec2.eqpmt_etc_cost_tc
2865 ,x_eqpmt_etc_cost_fc => l_rollup_rec2.eqpmt_etc_cost_fc
2866 ,x_eqpmt_etc_cost_pc => l_rollup_rec2.eqpmt_etc_cost_pc
2867 ,x_earned_value => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
2868 ,x_task_wt_basis_code => l_rollup_rec2.task_wt_basis_code
2869 ,x_subprj_ppl_act_effort => l_rollup_rec2.subprj_ppl_act_effort
2870 ,x_subprj_eqpmt_act_effort => l_rollup_rec2.subprj_eqpmt_act_effort
2871 ,x_subprj_ppl_etc_effort => l_rollup_rec2.subprj_ppl_etc_effort
2872 ,x_subprj_eqpmt_etc_effort => l_rollup_rec2.subprj_eqpmt_etc_effort
2873 ,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.subprj_oth_act_cost_to_date_tc
2874 ,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.subprj_oth_act_cost_to_date_fc
2875 ,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.subprj_oth_act_cost_to_date_pc
2876 ,x_subprj_ppl_act_cost_tc => l_rollup_rec2.subprj_ppl_act_cost_tc
2877 ,x_subprj_ppl_act_cost_fc => l_rollup_rec2.subprj_ppl_act_cost_fc
2878 ,x_subprj_ppl_act_cost_pc => l_rollup_rec2.subprj_ppl_act_cost_pc
2879 ,x_subprj_eqpmt_act_cost_tc => l_rollup_rec2.subprj_eqpmt_act_cost_tc
2880 ,x_subprj_eqpmt_act_cost_fc => l_rollup_rec2.subprj_eqpmt_act_cost_fc
2881 ,x_subprj_eqpmt_act_cost_pc => l_rollup_rec2.subprj_eqpmt_act_cost_pc
2882 ,x_subprj_oth_etc_cost_tc => l_rollup_rec2.subprj_oth_etc_cost_tc
2883 ,x_subprj_oth_etc_cost_fc => l_rollup_rec2.subprj_oth_etc_cost_fc
2884 ,x_subprj_oth_etc_cost_pc => l_rollup_rec2.subprj_oth_etc_cost_pc
2885 ,x_subprj_ppl_etc_cost_tc => l_rollup_rec2.subprj_ppl_etc_cost_tc
2886 ,x_subprj_ppl_etc_cost_fc => l_rollup_rec2.subprj_ppl_etc_cost_fc
2887 ,x_subprj_ppl_etc_cost_pc => l_rollup_rec2.subprj_ppl_etc_cost_pc
2888 ,x_subprj_eqpmt_etc_cost_tc => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
2889 ,x_subprj_eqpmt_etc_cost_fc => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
2890 ,x_subprj_eqpmt_etc_cost_pc => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
2891 ,x_subprj_earned_value => l_rollup_rec2.subprj_earned_value
2892 ,x_current_flag => l_rollup_current_flag --maansari7/21 --bug 3879461 --maansari
2893 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
2894 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
2895 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
2896 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
2897 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
2898 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
2899 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
2900 ,x_prog_pa_period_name => l_rollup_rec2.prog_pa_period_name
2901 ,x_prog_gl_period_name => l_rollup_rec2.prog_gl_period_name
2902 ,x_oth_quantity_to_date => l_rollup_rec2.oth_quantity_to_date
2903 ,x_oth_etc_quantity => l_rollup_rec2.oth_etc_quantity
2904 ,x_oth_act_rawcost_to_date_tc => l_rollup_rec2.oth_act_rawcost_to_date_tc
2905 ,x_oth_act_rawcost_to_date_fc => l_rollup_rec2.oth_act_rawcost_to_date_fc
2906 ,x_oth_act_rawcost_to_date_pc => l_rollup_rec2.oth_act_rawcost_to_date_pc
2907 ,x_oth_etc_rawcost_tc => l_rollup_rec2.oth_etc_rawcost_tc
2908 ,x_oth_etc_rawcost_fc => l_rollup_rec2.oth_etc_rawcost_fc
2909 ,x_oth_etc_rawcost_pc => l_rollup_rec2.oth_etc_rawcost_pc
2910 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc
2911 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc
2912 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc
2913 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc
2914 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_tc
2915 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_tc
2916 ,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
2917 ,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
2918 ,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
2919 ,x_eqpmt_etc_rawcost_tc => l_rollup_rec2.eqpmt_etc_rawcost_tc
2920 ,x_eqpmt_etc_rawcost_fc => l_rollup_rec2.eqpmt_etc_rawcost_fc
2921 ,x_eqpmt_etc_rawcost_pc => l_rollup_rec2.eqpmt_etc_rawcost_pc
2922 ,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.spj_oth_act_rawcost_to_date_tc
2923 ,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.spj_oth_act_rawcost_to_date_fc
2924 ,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.spj_oth_act_rawcost_to_date_pc
2925 ,x_subprj_ppl_act_rawcost_tc => l_rollup_rec2.subprj_ppl_act_rawcost_tc
2926 ,x_subprj_ppl_act_rawcost_fc => l_rollup_rec2.subprj_ppl_act_rawcost_fc
2927 ,x_subprj_ppl_act_rawcost_pc => l_rollup_rec2.subprj_ppl_act_rawcost_pc
2928 ,x_subprj_eqpmt_act_rawcost_tc => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
2929 ,x_subprj_eqpmt_act_rawcost_fc => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
2930 ,x_subprj_eqpmt_act_rawcost_pc => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
2931 ,x_subprj_oth_etc_rawcost_tc => l_rollup_rec2.subprj_oth_etc_rawcost_tc
2932 ,x_subprj_oth_etc_rawcost_fc => l_rollup_rec2.subprj_oth_etc_rawcost_fc
2933 ,x_subprj_oth_etc_rawcost_pc => l_rollup_rec2.subprj_oth_etc_rawcost_pc
2934 ,x_subprj_ppl_etc_rawcost_tc => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
2935 ,x_subprj_ppl_etc_rawcost_fc => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
2936 ,x_subprj_ppl_etc_rawcost_pc => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
2937 ,x_subprj_eqpmt_etc_rawcost_tc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
2938 ,x_subprj_eqpmt_etc_rawcost_fc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
2939 ,x_subprj_eqpmt_etc_rawcost_pc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
2940 );
2941 -- FPM Dev CR 6
2942 IF Fnd_Msg_Pub.count_msg > 0 THEN
2943 RAISE FND_API.G_EXC_ERROR;
2944 END IF;
2945
2946 -----update percent_complete_id in pa_progress_rollup
2947 UPDATE pa_progress_rollup
2948 SET percent_complete_id = l_percent_complete_id
2949 WHERE object_id = p_object_id
2950 AND project_id = p_project_id
2951 AND as_of_date > p_as_of_date
2952 AND percent_complete_id is null
2953 AND structure_type = p_structure_type -- FPM Dev CR 3
2954 AND structure_version_id is null -- Bug 3879461
2955 AND current_flag <> 'W' -- Bug 3879461
2956 ;
2957
2958 ---- call api to copy attachments if any
2959 IF (l_process = 'CORRECT' and p_progress_mode = 'BACKDATED')
2960 THEN
2961 pa_progress_utils.copy_attachments (
2962 p_project_id => p_project_id,
2963 p_object_id => p_object_id,
2964 p_object_type => p_object_type,
2965 p_from_pc_id => l_att_pc_id,
2966 p_to_pc_id => l_percent_complete_id,
2967 x_return_status => x_return_status,
2968 x_msg_count => x_msg_count,
2969 x_msg_data => x_msg_data);
2970 END IF;
2971 END IF;
2972 ELSIF l_db_action = 'UPDATE'
2973 THEN
2974 IF g1_debug_mode = 'Y' THEN
2975 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);
2976 END IF;
2977
2978 IF l_working_aod IS NOT NULL
2979 THEN
2980 l_aod := l_working_aod;
2981 ELSE
2982 l_aod := p_as_of_date;
2983 END IF;
2984
2985 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
2986 THEN
2987 l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
2988 p_project_id => p_project_id
2989 ,p_object_id => p_object_id
2990 ,p_object_type => p_object_type
2991 ,p_object_version_id => p_object_version_id
2992 ,p_as_of_date => l_aod
2993 ,p_task_id => p_object_id -- Bug 3764224
2994 );
2995 -- FPM Dev CR 3 Getting Record Version Number too
2996 BEGIN
2997 SELECT record_version_number into l_record_version_number
2998 FROM pa_percent_completes
2999 where percent_complete_id = l_percent_complete_id;
3000 END;
3001
3002 IF g1_debug_mode = 'Y' THEN
3003 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Percent_complete id is not passed', x_Log_Level=> 3);
3004 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);
3005 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);
3006 END IF;
3007 ELSE
3008 l_percent_complete_id := p_percent_complete_id;
3009 l_record_version_number := p_record_version_number;
3010 END IF;
3011
3012 PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
3013 p_task_id => l_task_id
3014 ,p_date_computed => p_as_of_date
3015 ,p_last_update_date => sysdate
3016 ,p_last_updated_by => l_user_id
3017 ,p_last_update_login => l_login_id
3018 ,p_completed_percentage => l_percent_complete
3019 ,p_description => p_brief_overview
3020 ,p_project_id => p_project_id
3021 ,p_pm_product_code => l_pm_product_code
3022 ,p_current_flag => l_current_flag
3023 ,p_object_type => p_object_type
3024 ,p_object_id => p_object_id
3025 ,p_object_version_id => p_object_version_id
3026 ,p_progress_status_code => p_progress_status_code
3027 ,p_actual_start_date => l_actual_start_date
3028 ,p_actual_finish_date => l_actual_finish_date
3029 ,p_estimated_start_date => l_estimated_start_date
3030 ,p_estimated_finish_date => l_estimated_finish_date
3031 ,p_published_flag => l_published_flag
3032 ,p_published_by_party_id => l_published_by_party_id
3033 ,p_progress_comment => p_progress_comment
3034 ,p_history_flag => 'n'
3035 ,p_status_code => l_task_status
3036 ,p_record_version_number => l_record_version_number
3037 ,p_percent_complete_id => l_percent_complete_id
3038 ,p_attribute_category => null
3039 ,p_attribute1 => null
3040 ,p_attribute2 => null
3041 ,p_attribute3 => null
3042 ,p_attribute4 => null
3043 ,p_attribute5 => null
3044 ,p_attribute6 => null
3045 ,p_attribute7 => null
3046 ,p_attribute8 => null
3047 ,p_attribute9 => null
3048 ,p_attribute10 => null
3049 ,p_attribute11 => null
3050 ,p_attribute12 => null
3051 ,p_attribute13 => null
3052 ,p_attribute14 => null
3053 ,p_attribute15 => null
3054 ,p_structure_type => p_structure_type
3055 );
3056 -- FPM Dev CR 6
3057 IF Fnd_Msg_Pub.count_msg > 0 THEN
3058 RAISE FND_API.G_EXC_ERROR;
3059 END IF;
3060
3061
3062 --update progress rollup
3063 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
3064 p_project_id => p_project_id
3065 ,p_object_id => p_object_id
3066 ,p_object_type => p_object_type
3067 ,p_object_version_id => p_object_version_id
3068 ,p_as_of_date => l_aod--p_as_of_date FPM Dev CR 3
3069 ,p_proj_element_id => p_object_id -- Bug 3764224
3070 ,p_action => p_action -- Bug 3879461
3071 ,x_record_version_number => l_rollup_rec_ver_number
3072 );
3073
3074
3075 IF g1_debug_mode = 'Y' THEN
3076 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);
3077 END IF;
3078
3079 --maansari5/21
3080 OPEN cur_pa_rollup2;
3081 FETCH cur_pa_rollup2 INTO l_rollup_rec2;
3082 CLOSE cur_pa_rollup2;
3083
3084 -- BEGIN: Fix for Bug # 3926827.
3085
3086 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3087 THEN
3088 l_eff_rollup_percent_comp := l_base_percent_complete ;
3089 ELSE
3090 l_eff_rollup_percent_comp := l_rollup_rec2.eff_rollup_percent_comp;
3091 END IF;
3092
3093 -- END: Fix for Bug # 3926827.
3094
3095 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3096 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3097 THEN
3098 --- l_base_percent_complete := l_rollup_rec2.base_percent_complete;
3099 -- bug 3796357 begin
3100 l_actual_effort := l_rollup_rec2.ppl_act_effort_to_date;
3101 l_est_remaining_effort := l_rollup_rec2.estimated_remaining_effort;
3102 l_act_bur_cost_to_date_tc := l_rollup_rec2.ppl_act_cost_to_date_tc;
3103 l_act_bur_cost_to_date_fc := l_rollup_rec2.ppl_act_cost_to_date_fc;
3104 l_act_bur_cost_to_date_pc := l_rollup_rec2.ppl_act_cost_to_date_pc;
3105 l_etc_bur_cost_tc := l_rollup_rec2.ppl_etc_cost_tc;
3106 l_etc_bur_cost_fc := l_rollup_rec2.ppl_etc_cost_fc;
3107 l_etc_bur_cost_pc := l_rollup_rec2.ppl_etc_cost_pc;
3108 l_projfunc_cost_rate_type := l_rollup_rec2.projfunc_cost_rate_type;
3109 l_projfunc_cost_exch_rate := l_rollup_rec2.projfunc_cost_exchange_rate;
3110 l_projfunc_cost_rate_date := l_rollup_rec2.projfunc_cost_rate_date;
3111 l_project_rate_type := l_rollup_rec2.proj_cost_rate_type;
3112 l_project_exch_rate := l_rollup_rec2.proj_cost_exchange_rate;
3113 l_project_rate_date := l_rollup_rec2.proj_cost_rate_date;
3114 l_txn_currency_code := l_rollup_rec2.txn_currency_code;
3115 l_act_raw_cost_to_date_tc := l_rollup_rec2.ppl_act_rawcost_to_date_tc;
3116 l_act_raw_cost_to_date_fc := l_rollup_rec2.ppl_act_rawcost_to_date_fc;
3117 l_act_raw_cost_to_date_pc := l_rollup_rec2.ppl_act_rawcost_to_date_pc;
3118 l_etc_raw_cost_tc := l_rollup_rec2.ppl_etc_rawcost_tc;
3119 l_etc_raw_cost_fc := l_rollup_rec2.ppl_etc_rawcost_fc;
3120 l_etc_raw_cost_pc := l_rollup_rec2.ppl_etc_rawcost_pc;
3121 -- Bug 3796357 End
3122
3123 ELSE
3124 l_EFF_ROLLUP_PERCENT_COMP := l_BASE_PERCENT_COMPLETE;
3125 END IF;
3126
3127 IF l_PROGRESS_ROLLUP_ID IS NOT NULL
3128 THEN ---2
3129 --maansari5/21
3130 -- Bug 4506461 Begin
3131 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3132 l_temp_base_pc := l_rollup_rec2.base_percent_complete;
3133 ELSE
3134 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3135 END IF;
3136 -- Bug 4506461 End
3137
3138 IF g1_debug_mode = 'Y' THEN
3139 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updating PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3140 END IF;
3141
3142 pa_progress_rollup_pkg.update_row(
3143 x_progress_rollup_id => l_progress_rollup_id
3144 ,x_project_id => p_project_id
3145 ,x_object_id => p_object_id
3146 ,x_object_type => p_object_type
3147 ,x_as_of_date => p_as_of_date
3148 ,x_object_version_id => p_object_version_id
3149 ,x_last_update_date => sysdate
3150 ,x_last_updated_by => l_user_id
3151 ,x_progress_status_code => l_rollup_progress_status
3152 ,x_last_update_login => l_login_id
3153 ,x_incremental_work_qty => l_incremental_work_qty
3154 ,x_cumulative_work_qty => l_cumulative_work_qty
3155 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
3156 --bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
3157 ,x_base_percent_complete => l_temp_base_pc -- 4506461
3158 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp --maansari5/21
3159 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --maansari5/21
3160 ,x_estimated_start_date => l_estimated_start_date
3161 ,x_estimated_finish_date => l_estimated_finish_date
3162 ,x_actual_start_date => l_actual_start_date
3163 ,x_actual_finish_date => l_actual_finish_date
3164 ,x_est_remaining_effort => l_est_remaining_effort
3165 ,x_record_version_number => l_rollup_rec_ver_number
3166 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3167 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
3168 ,x_eff_rollup_prog_stat_code => l_rollup_rec2.eff_rollup_prog_stat_code
3169 ,x_percent_complete_id => l_percent_complete_id
3170 ,x_structure_type => p_structure_type -- l_rollup_rec2.structure_type fpm dev cr 3
3171 ,x_proj_element_id => l_rollup_rec2.proj_element_id
3172 ,x_structure_version_id => l_structure_version_id -- l_rollup_rec2.structure_version_id fpm dev cr 3
3173 ,x_ppl_act_effort_to_date => l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
3174 ,x_eqpmt_act_effort_to_date => l_rollup_rec2.eqpmt_act_effort_to_date
3175 ,x_eqpmt_etc_effort => l_rollup_rec2.eqpmt_etc_effort
3176 ,x_oth_act_cost_to_date_tc => l_rollup_rec2.oth_act_cost_to_date_tc
3177 ,x_oth_act_cost_to_date_fc => l_rollup_rec2.oth_act_cost_to_date_fc
3178 ,x_oth_act_cost_to_date_pc => l_rollup_rec2.oth_act_cost_to_date_pc
3179 ,x_oth_etc_cost_tc => l_rollup_rec2.oth_etc_cost_tc
3180 ,x_oth_etc_cost_fc => l_rollup_rec2.oth_etc_cost_fc
3181 ,x_oth_etc_cost_pc => l_rollup_rec2.oth_etc_cost_pc
3182 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc
3183 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc
3184 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc
3185 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc
3186 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc
3187 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc
3188 ,x_eqpmt_act_cost_to_date_tc => l_rollup_rec2.eqpmt_act_cost_to_date_tc
3189 ,x_eqpmt_act_cost_to_date_fc => l_rollup_rec2.eqpmt_act_cost_to_date_fc
3190 ,x_eqpmt_act_cost_to_date_pc => l_rollup_rec2.eqpmt_act_cost_to_date_pc
3191 ,x_eqpmt_etc_cost_tc => l_rollup_rec2.eqpmt_etc_cost_tc
3192 ,x_eqpmt_etc_cost_fc => l_rollup_rec2.eqpmt_etc_cost_fc
3193 ,x_eqpmt_etc_cost_pc => l_rollup_rec2.eqpmt_etc_cost_pc
3194 ,x_earned_value => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
3195 ,x_task_wt_basis_code => l_rollup_rec2.task_wt_basis_code
3196 ,x_subprj_ppl_act_effort => l_rollup_rec2.subprj_ppl_act_effort
3197 ,x_subprj_eqpmt_act_effort => l_rollup_rec2.subprj_eqpmt_act_effort
3198 ,x_subprj_ppl_etc_effort => l_rollup_rec2.subprj_ppl_etc_effort
3199 ,x_subprj_eqpmt_etc_effort => l_rollup_rec2.subprj_eqpmt_etc_effort
3200 ,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.subprj_oth_act_cost_to_date_tc
3201 ,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.subprj_oth_act_cost_to_date_fc
3202 ,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.subprj_oth_act_cost_to_date_pc
3203 ,x_subprj_ppl_act_cost_tc => l_rollup_rec2.subprj_ppl_act_cost_tc
3204 ,x_subprj_ppl_act_cost_fc => l_rollup_rec2.subprj_ppl_act_cost_fc
3205 ,x_subprj_ppl_act_cost_pc => l_rollup_rec2.subprj_ppl_act_cost_pc
3206 ,x_subprj_eqpmt_act_cost_tc => l_rollup_rec2.subprj_eqpmt_act_cost_tc
3207 ,x_subprj_eqpmt_act_cost_fc => l_rollup_rec2.subprj_eqpmt_act_cost_fc
3208 ,x_subprj_eqpmt_act_cost_pc => l_rollup_rec2.subprj_eqpmt_act_cost_pc
3209 ,x_subprj_oth_etc_cost_tc => l_rollup_rec2.subprj_oth_etc_cost_tc
3210 ,x_subprj_oth_etc_cost_fc => l_rollup_rec2.subprj_oth_etc_cost_fc
3211 ,x_subprj_oth_etc_cost_pc => l_rollup_rec2.subprj_oth_etc_cost_pc
3212 ,x_subprj_ppl_etc_cost_tc => l_rollup_rec2.subprj_ppl_etc_cost_tc
3213 ,x_subprj_ppl_etc_cost_fc => l_rollup_rec2.subprj_ppl_etc_cost_fc
3214 ,x_subprj_ppl_etc_cost_pc => l_rollup_rec2.subprj_ppl_etc_cost_pc
3215 ,x_subprj_eqpmt_etc_cost_tc => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
3216 ,x_subprj_eqpmt_etc_cost_fc => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
3217 ,x_subprj_eqpmt_etc_cost_pc => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
3218 ,x_subprj_earned_value => l_rollup_rec2.subprj_earned_value
3219 ,x_current_flag => l_rollup_current_flag -- bug 3879461 l_current_flag --maansari7/21
3220 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3221 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3222 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3223 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3224 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3225 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3226 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3227 ,x_prog_pa_period_name => l_pa_period_name
3228 ,x_prog_gl_period_name => l_gl_period_name
3229 ,x_oth_quantity_to_date => l_rollup_rec2.oth_quantity_to_date
3230 ,x_oth_etc_quantity => l_rollup_rec2.oth_etc_quantity
3231 ,x_oth_act_rawcost_to_date_tc => l_rollup_rec2.oth_act_rawcost_to_date_tc
3232 ,x_oth_act_rawcost_to_date_fc => l_rollup_rec2.oth_act_rawcost_to_date_fc
3233 ,x_oth_act_rawcost_to_date_pc => l_rollup_rec2.oth_act_rawcost_to_date_pc
3234 ,x_oth_etc_rawcost_tc => l_rollup_rec2.oth_etc_rawcost_tc
3235 ,x_oth_etc_rawcost_fc => l_rollup_rec2.oth_etc_rawcost_fc
3236 ,x_oth_etc_rawcost_pc => l_rollup_rec2.oth_etc_rawcost_pc
3237 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
3238 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
3239 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
3240 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
3241 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
3242 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
3243 ,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
3244 ,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
3245 ,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
3246 ,x_eqpmt_etc_rawcost_tc => l_rollup_rec2.eqpmt_etc_rawcost_tc
3247 ,x_eqpmt_etc_rawcost_fc => l_rollup_rec2.eqpmt_etc_rawcost_fc
3248 ,x_eqpmt_etc_rawcost_pc => l_rollup_rec2.eqpmt_etc_rawcost_pc
3249 ,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.spj_oth_act_rawcost_to_date_tc
3250 ,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.spj_oth_act_rawcost_to_date_fc
3251 ,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.spj_oth_act_rawcost_to_date_pc
3252 ,x_subprj_ppl_act_rawcost_tc => l_rollup_rec2.subprj_ppl_act_rawcost_tc
3253 ,x_subprj_ppl_act_rawcost_fc => l_rollup_rec2.subprj_ppl_act_rawcost_fc
3254 ,x_subprj_ppl_act_rawcost_pc => l_rollup_rec2.subprj_ppl_act_rawcost_pc
3255 ,x_subprj_eqpmt_act_rawcost_tc => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
3256 ,x_subprj_eqpmt_act_rawcost_fc => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
3257 ,x_subprj_eqpmt_act_rawcost_pc => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
3258 ,x_subprj_oth_etc_rawcost_tc => l_rollup_rec2.subprj_oth_etc_rawcost_tc
3259 ,x_subprj_oth_etc_rawcost_fc => l_rollup_rec2.subprj_oth_etc_rawcost_fc
3260 ,x_subprj_oth_etc_rawcost_pc => l_rollup_rec2.subprj_oth_etc_rawcost_pc
3261 ,x_subprj_ppl_etc_rawcost_tc => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
3262 ,x_subprj_ppl_etc_rawcost_fc => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
3263 ,x_subprj_ppl_etc_rawcost_pc => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
3264 ,x_subprj_eqpmt_etc_rawcost_tc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
3265 ,x_subprj_eqpmt_etc_rawcost_fc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
3266 ,x_subprj_eqpmt_etc_rawcost_pc => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
3267 );
3268
3269 IF g1_debug_mode = 'Y' THEN
3270 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updated PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3271 END IF;
3272
3273 -- FPM Dev CR 6
3274 IF Fnd_Msg_Pub.count_msg > 0 THEN
3275 RAISE FND_API.G_EXC_ERROR;
3276 END IF;
3277 ELSE ---2
3278
3279 -- BEGIN: Fix for Bug # 3926827.
3280
3281 OPEN cur_pa_rollup1;
3282 FETCH cur_pa_rollup1 INTO l_rollup_rec1;
3283 CLOSE cur_pa_rollup1;
3284
3285 IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3286 THEN
3287 l_EFF_ROLLUP_PERCENT_COMP := l_BASE_PERCENT_COMPLETE ;
3288 ELSE
3289 l_EFF_ROLLUP_PERCENT_COMP := l_rollup_rec1.EFF_ROLLUP_PERCENT_COMP;
3290 END IF;
3291
3292 -- END: Fix for Bug # 3926827.
3293
3294 IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3295 OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3296 THEN
3297
3298 --- l_base_percent_complete := l_rollup_rec1.base_percent_complete;
3299 l_eff_rollup_prog_stat_code := l_rollup_rec1.eff_rollup_prog_stat_code;
3300 l_base_progress_status_code := l_rollup_rec1.base_progress_status_code;
3301
3302 -- bug 3796357 begin
3303 l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
3304 l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
3305 l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
3306 l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
3307 l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
3308 l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
3309 l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
3310 l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
3311 l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
3312 l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
3313 l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
3314 l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
3315 l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
3316 l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
3317 l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
3318 l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
3319 l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
3320 l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
3321 l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
3322 l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
3323 l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
3324 l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
3325 l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
3326 l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
3327 l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
3328 l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
3329 l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
3330 l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
3331 l_txn_currency_code := l_rollup_rec1.txn_currency_code;
3332 l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
3333 l_oth_etc_quantity := l_rollup_rec1.oth_etc_quantity;
3334 l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
3335 l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
3336 l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
3337 l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
3338 l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
3339 l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
3340 l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
3341 l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
3342 l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
3343 l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
3344 l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
3345 l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
3346 l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
3347 l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
3348 l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
3349 l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
3350 l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
3351 l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
3352 -- bug 3796357 end
3353 ELSE
3354 l_eff_rollup_percent_comp := l_base_percent_complete ; -- null; as per majid 21 may
3355 l_eff_rollup_prog_stat_code := null;
3356 END IF;
3357
3358 -- Bug 4506461 Begin
3359 IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3360 l_temp_base_pc := l_rollup_rec1.base_percent_complete;
3361 ELSE
3362 l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3363 END IF;
3364 -- Bug 4506461 End
3365
3366
3367 -- changed this for effort to cost conversion
3368 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
3369 x_progress_rollup_id => l_progress_rollup_id
3370 ,x_project_id => p_project_id
3371 ,x_object_id => p_object_id
3372 ,x_object_type => p_object_type
3373 ,x_as_of_date => p_as_of_date
3374 ,x_object_version_id => p_object_version_id
3375 ,x_last_update_date => sysdate
3376 ,x_last_updated_by => l_user_id
3377 ,x_creation_date => sysdate
3378 ,x_created_by => l_user_id
3379 ,x_progress_status_code => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
3380 ,x_last_update_login => l_login_id
3381 ,x_incremental_work_qty => l_incremental_work_qty
3382 ,x_cumulative_work_qty => l_cumulative_work_qty
3383 -- ,x_base_percent_complete => l_base_percent_complete -- 4392189 phase 2
3384 -- bug 4506461 ,x_base_percent_complete => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
3385 ,x_base_percent_complete => l_temp_base_pc -- 4506461
3386 ,x_eff_rollup_percent_comp => l_eff_rollup_percent_comp
3387 ,x_completed_percentage => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
3388 ,x_estimated_start_date => l_estimated_start_date
3389 ,x_estimated_finish_date => l_estimated_finish_date
3390 ,x_actual_start_date => l_actual_start_date
3391 ,x_actual_finish_date => l_actual_finish_date
3392 ,x_est_remaining_effort => l_est_remaining_effort
3393 ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3394 ,x_base_progress_status_code => l_date_override_flag -- 4533112 l_base_progress_status_code
3395 ,x_eff_rollup_prog_stat_code => l_eff_rollup_prog_stat_code
3396 ,x_percent_complete_id => l_percent_complete_id
3397 ,x_structure_type => p_structure_type
3398 ,x_proj_element_id => l_task_id
3399 ,x_structure_version_id => l_structure_version_id -- null fpm dev cr 3
3400 ,x_ppl_act_effort_to_date => l_actual_effort
3401 ,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.
3402 ,x_eqpmt_etc_effort => l_eqpmt_etc_effort -- bug 3796357 null
3403 ,x_oth_act_cost_to_date_tc => l_oth_act_cost_to_date_tc -- bug 3796357 null --no transaction is avialbale at task.
3404 ,x_oth_act_cost_to_date_fc => l_oth_act_cost_to_date_fc -- bug 3796357 null
3405 ,x_oth_act_cost_to_date_pc => l_oth_act_cost_to_date_pc -- bug 3796357 null
3406 ,x_oth_etc_cost_tc => l_oth_etc_cost_tc -- bug 3796357 null --no txn currency at task level.
3407 ,x_oth_etc_cost_fc => l_oth_etc_cost_fc -- bug 3796357 null
3408 ,x_oth_etc_cost_pc => l_oth_etc_cost_pc -- bug 3796357 null
3409 ,x_ppl_act_cost_to_date_tc => l_act_bur_cost_to_date_tc --3627315 issue 4
3410 ,x_ppl_act_cost_to_date_fc => l_act_bur_cost_to_date_fc --3627315 issue 4
3411 ,x_ppl_act_cost_to_date_pc => l_act_bur_cost_to_date_pc --3627315 issue 4
3412 ,x_ppl_etc_cost_tc => l_etc_bur_cost_tc --3627315 issue 4
3413 ,x_ppl_etc_cost_fc => l_etc_bur_cost_fc --3627315 issue 4
3414 ,x_ppl_etc_cost_pc => l_etc_bur_cost_pc --3627315 issue 4
3415 ,x_eqpmt_act_cost_to_date_tc => l_eqpmt_act_cost_to_date_tc-- bug 3796357 null
3416 ,x_eqpmt_act_cost_to_date_fc => l_eqpmt_act_cost_to_date_fc-- bug 3796357 null
3417 ,x_eqpmt_act_cost_to_date_pc => l_eqpmt_act_cost_to_date_pc-- bug 3796357 null
3418 ,x_eqpmt_etc_cost_tc => l_eqpmt_etc_cost_tc -- bug 3796357 null
3419 ,x_eqpmt_etc_cost_fc => l_eqpmt_etc_cost_fc -- bug 3796357 null
3420 ,x_eqpmt_etc_cost_pc => l_eqpmt_etc_cost_pc -- bug 3796357 null
3421 ,x_earned_value => l_earned_value
3422 ,x_task_wt_basis_code => l_task_weight_basis_code
3423 ,x_subprj_ppl_act_effort => null
3424 ,x_subprj_eqpmt_act_effort => null
3425 ,x_subprj_ppl_etc_effort => null
3426 ,x_subprj_eqpmt_etc_effort => null
3427 ,x_sbpj_oth_act_cost_to_date_tc => null
3428 ,x_sbpj_oth_act_cost_to_date_fc => null
3429 ,x_sbpj_oth_act_cost_to_date_pc => null
3430 ,x_subprj_ppl_act_cost_tc => null
3431 ,x_subprj_ppl_act_cost_fc => null
3432 ,x_subprj_ppl_act_cost_pc => null
3433 ,x_subprj_eqpmt_act_cost_tc => null
3434 ,x_subprj_eqpmt_act_cost_fc => null
3435 ,x_subprj_eqpmt_act_cost_pc => null
3436 ,x_subprj_oth_etc_cost_tc => null
3437 ,x_subprj_oth_etc_cost_fc => null
3438 ,x_subprj_oth_etc_cost_pc => null
3439 ,x_subprj_ppl_etc_cost_tc => null
3440 ,x_subprj_ppl_etc_cost_fc => null
3441 ,x_subprj_ppl_etc_cost_pc => null
3442 ,x_subprj_eqpmt_etc_cost_tc => null
3443 ,x_subprj_eqpmt_etc_cost_fc => null
3444 ,x_subprj_eqpmt_etc_cost_pc => null
3445 ,x_subprj_earned_value => null
3446 ,x_current_flag => l_rollup_current_flag
3447 ,x_projfunc_cost_rate_type => l_projfunc_cost_rate_type --3627315 issue 4
3448 ,x_projfunc_cost_exchange_rate => l_projfunc_cost_exch_rate --3627315 issue 4
3449 ,x_projfunc_cost_rate_date => l_projfunc_cost_rate_date --3627315 issue 4
3450 ,x_proj_cost_rate_type => l_project_rate_type --3627315 issue 4
3451 ,x_proj_cost_exchange_rate => l_project_exch_rate --3627315 issue 4
3452 ,x_proj_cost_rate_date => l_project_rate_date --3627315 issue 4
3453 ,x_txn_currency_code => l_txn_currency_code --3627315 issue 4
3454 ,x_prog_pa_period_name => l_pa_period_name
3455 ,x_prog_gl_period_name => l_gl_period_name
3456 ,x_oth_quantity_to_date => l_oth_quantity_to_date -- bug 3796357 null
3457 ,x_oth_etc_quantity => l_oth_etc_quantity -- bug 3796357 null
3458 ,x_oth_act_rawcost_to_date_tc => l_oth_act_rawcost_to_date_tc-- bug 3796357 null
3459 ,x_oth_act_rawcost_to_date_fc => l_oth_act_rawcost_to_date_fc-- bug 3796357 null
3460 ,x_oth_act_rawcost_to_date_pc => l_oth_act_rawcost_to_date_pc-- bug 3796357 null
3461 ,x_oth_etc_rawcost_tc => l_oth_etc_rawcost_tc-- bug 3796357 null
3462 ,x_oth_etc_rawcost_fc => l_oth_etc_rawcost_fc-- bug 3796357 null
3463 ,x_oth_etc_rawcost_pc => l_oth_etc_rawcost_pc-- bug 3796357 null
3464 ,x_ppl_act_rawcost_to_date_tc => l_act_raw_cost_to_date_tc --3627315 issue 4
3465 ,x_ppl_act_rawcost_to_date_fc => l_act_raw_cost_to_date_fc --3627315 issue 4
3466 ,x_ppl_act_rawcost_to_date_pc => l_act_raw_cost_to_date_pc --3627315 issue 4
3467 ,x_ppl_etc_rawcost_tc => l_etc_raw_cost_tc --3627315 issue 4
3468 ,x_ppl_etc_rawcost_fc => l_etc_raw_cost_fc --3627315 issue 4
3469 ,x_ppl_etc_rawcost_pc => l_etc_raw_cost_pc --3627315 issue 4
3470 ,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
3471 ,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
3472 ,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
3473 ,x_eqpmt_etc_rawcost_tc => l_eqpmt_etc_rawcost_tc-- bug 3796357 null
3474 ,x_eqpmt_etc_rawcost_fc => l_eqpmt_etc_rawcost_fc-- bug 3796357 null
3475 ,x_eqpmt_etc_rawcost_pc => l_eqpmt_etc_rawcost_pc-- bug 3796357 null
3476 ,x_sp_oth_act_rawcost_todate_tc => null
3477 ,x_sp_oth_act_rawcost_todate_fc => null
3478 ,x_sp_oth_act_rawcost_todate_pc => null
3479 ,x_subprj_ppl_act_rawcost_tc => null
3480 ,x_subprj_ppl_act_rawcost_fc => null
3481 ,x_subprj_ppl_act_rawcost_pc => null
3482 ,x_subprj_eqpmt_act_rawcost_tc => null
3483 ,x_subprj_eqpmt_act_rawcost_fc => null
3484 ,x_subprj_eqpmt_act_rawcost_pc => null
3485 ,x_subprj_oth_etc_rawcost_tc => null
3486 ,x_subprj_oth_etc_rawcost_fc => null
3487 ,x_subprj_oth_etc_rawcost_pc => null
3488 ,x_subprj_ppl_etc_rawcost_tc => null
3489 ,x_subprj_ppl_etc_rawcost_fc => null
3490 ,x_subprj_ppl_etc_rawcost_pc => null
3491 ,x_subprj_eqpmt_etc_rawcost_tc => null
3492 ,x_subprj_eqpmt_etc_rawcost_fc => null
3493 ,x_subprj_eqpmt_etc_rawcost_pc => null
3494 );
3495 END IF; --2
3496 END IF; --<l_db_action>
3497
3498
3499 --bug 3958686, insert assignment level records, start
3500 IF NVL( l_lowest_level_task, 'N')='Y' AND NVL(l_assignment_exists, 'N') = 'N'
3501 AND l_element_struc_type = 'WORKPLAN'
3502 AND (nvl(l_actual_effort,0) <> 0 OR nvl(l_est_remaining_effort,0) <> 0) -- Bug 4632744
3503 THEN
3504 IF l_resource_list_member_id is not null
3505 THEN
3506 -- Bug 4632744
3507 -- Commented below call
3508 -- Added new
3509 /*
3510
3511 PA_PROGRESS_PVT.convert_task_prog_to_assgn
3512 ( p_resource_list_mem_id => l_resource_list_member_id
3513 ,p_project_id => p_project_id
3514 ,p_task_id => p_object_id
3515 ,p_structure_version_id => l_structure_version_id
3516 ,p_as_of_date => trunc(p_as_of_date)
3517 ,p_action => p_action
3518 ,p_subprj_actual_exists => l_subproject_act_found -- 4490532
3519 ,p_object_version_id => p_object_version_id -- 4490532
3520 ,x_return_status => l_return_status
3521 ,x_msg_count => l_msg_count
3522 ,x_msg_data => l_msg_data
3523 );
3524 */
3525
3526 -- Bug 4632744
3527 -- Added code below to call assignment progress API
3528 -- with incremnetal actual
3529
3530
3531 OPEN c_get_last_ppl_effort_fr_assgn(l_resource_list_member_id);
3532 FETCH c_get_last_ppl_effort_fr_assgn INTO l_last_submitted_effort;
3533 CLOSE c_get_last_ppl_effort_fr_assgn;
3534
3535 l_actual_effort_this_period := NVL(l_actual_effort,0) - nvl(l_last_submitted_effort,0);
3536 ---5441402 introduced calling module as HIDDEN_ASGMT
3537 if (p_calling_module <> 'AMG') then
3538 l_calling_module := 'HIDDEN_ASGMT';
3539 else
3540 l_calling_module := p_calling_module;
3541 end if;
3542 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
3543 p_api_version => l_api_version
3544 ,p_init_msg_list => p_init_msg_list
3545 ,p_commit => p_commit
3546 ,p_validate_only => p_validate_only
3547 ,p_validation_level => p_validation_level
3548 ,p_calling_module => l_calling_module
3549 ,p_action => p_action
3550 ,p_progress_mode => p_progress_mode
3551 ,p_percent_complete_id => null
3552 ,p_project_id => p_project_id
3553 ,p_object_id => l_resource_list_member_id
3554 ,p_object_version_id => p_object_version_id
3555 ,p_task_id => p_object_id
3556 ,p_as_of_date => p_as_of_date
3557 ,p_progress_comment => p_progress_comment
3558 ,p_brief_overview => p_brief_overview
3559 ,p_actual_start_date => l_actual_start_date
3560 ,p_actual_finish_date => l_actual_finish_date
3561 ,p_estimated_start_date => l_estimated_start_date
3562 ,p_estimated_finish_date => l_estimated_finish_date
3563 ,p_record_version_number => null
3564 ,p_pm_product_code => p_pm_product_code
3565 ,p_structure_type => p_structure_type
3566 ,p_structure_version_id => p_structure_version_id
3567 ,p_actual_cost_this_period => null
3568 ,p_actual_effort_this_period => l_actual_effort_this_period
3569 ,p_rate_based_flag => l_rate_based_flag
3570 ,p_resource_class_code => l_resource_class_code
3571 ,p_actual_cost => null
3572 ,p_actual_effort => l_last_submitted_effort
3573 ,p_etc_cost_this_period => null
3574 ,p_etc_effort_this_period => l_est_remaining_effort
3575 ,p_txn_currency_code => l_txn_currency_code
3576 ,p_rbs_element_id => l_rbs_element_id
3577 ,p_resource_assignment_id => l_resource_assignment_id
3578 ,p_scheduled_start_date => l_scheduled_start_date
3579 ,p_scheduled_finish_date => l_scheduled_finish_date
3580 ,x_return_status => l_return_status
3581 ,x_msg_count => l_msg_count
3582 ,x_msg_data => l_msg_data
3583 );
3584 END IF;
3585 END IF;
3586 --bug 3958686, insert assignment level records, end
3587
3588
3589 IF p_action = 'PUBLISH'
3590 THEN
3591 -- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
3592 /*
3593 --- call apis if the status is 'CANCELLED'
3594 IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
3595 AND l_element_struc_type = 'WORKPLAN' --maansari: fpm changes
3596 THEN
3597 PA_PROJ_ELEMENTS_UTILS.Check_chg_stat_cancel_ok (
3598 p_task_id => p_object_id
3599 ,p_task_version_id => p_object_version_id
3600 ,p_new_task_status => l_task_status
3601 ,x_return_status => l_return_status
3602 ,x_error_message_code => l_error_message_code
3603 );
3604
3605 IF (l_return_status <> 'S') THEN
3606 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3607 p_msg_name => l_error_message_code);
3608 raise FND_API.G_EXC_ERROR;
3609 END IF;
3610 END IF;
3611 */
3612
3613 -- Bug 3878024 : new Check is added below
3614 -- IF NVL( l_lowest_level_task, 'N' ) = 'N' AND p_object_type = 'PA_TASKS'
3615 -- AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3616 IF p_object_type = 'PA_TASKS'
3617 AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3618 THEN
3619 --- update % complete and prog stat for future rollup recs
3620 update pa_progress_rollup
3621 set completed_percentage = l_percent_complete,
3622 progress_status_code = p_progress_status_code
3623 where project_id = p_project_id
3624 and object_id = p_object_id
3625 and object_type = p_object_type
3626 and structure_type = p_structure_type
3627 and as_of_date > p_as_of_date
3628 and current_flag <> 'W' -- Bug 3879461
3629 and structure_version_id is null -- Bug 3879461
3630 ;
3631
3632 PA_PROGRESS_PUB.push_down_task_status(
3633 p_api_version => p_api_version
3634 ,p_init_msg_list => p_init_msg_list
3635 ,p_commit => p_commit
3636 ,p_validate_only => p_validate_only
3637 ,p_validation_level => p_validation_level
3638 ,p_calling_module => p_calling_module
3639 ,p_debug_mode => p_debug_mode
3640 ,p_max_msg_count => p_max_msg_count
3641 ,p_project_id => p_project_id
3642 ,P_OBJECT_TYPE => P_OBJECT_TYPE
3643 ,P_OBJECT_ID => P_OBJECT_ID
3644 ,p_as_of_date => p_as_of_date
3645 ,p_object_version_id => p_object_version_id
3646 ,p_actual_finish_date => nvl(l_actual_finish_date, trunc(sysdate)) -- Bug 3922325 : Added sysdate
3647 ,x_return_status => l_return_status
3648 ,x_msg_count => l_msg_count
3649 ,x_msg_data => l_msg_data
3650 ,p_task_status => l_task_status
3651 );
3652 END IF;
3653
3654 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3655 THEN
3656 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3657 p_msg_name => l_msg_data
3658 );
3659 x_msg_data := l_msg_data;
3660 x_return_status := 'E';
3661 RAISE FND_API.G_EXC_ERROR;
3662 END IF;
3663
3664 /* Bug 2751159 Moved the update task_status code out of IF condition for workplan
3665 It means updation of task status shd happen for financial also */
3666
3667 IF (p_progress_mode <> 'BACKDATED')
3668 THEN
3669 --Update pa_proj_elements with the status
3670 UPDATE pa_proj_elements
3671 SET status_code = l_task_status
3672 ,last_update_date = decode(status_code,l_task_status,last_update_date,sysdate) --Bug 5978904
3673 ,last_update_login = decode(status_code,l_task_status,last_update_login,l_login_id) --Bug 5978904
3674 ,last_updated_by = decode(status_code,l_task_status,last_updated_by,l_user_id) --Bug 5978904
3675 WHERE proj_element_id = p_object_id
3676 AND project_id = p_project_id
3677 AND object_type = p_object_type;
3678 END IF;
3679
3680
3681 -- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
3682 /*
3683 IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
3684 THEN
3685 PA_TASK_PVT1.set_new_tasks_to_TBD(
3686 p_project_id => p_project_id
3687 ,p_task_id => p_object_id
3688 ,p_task_status => l_task_status
3689 ,x_return_status => l_return_status
3690 ,x_msg_count => l_msg_count
3691 ,x_msg_data => l_msg_data);
3692
3693 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3694 raise FND_API.G_EXC_ERROR;
3695 END IF;
3696 END IF;
3697 */
3698
3699 IF l_element_struc_type = 'WORKPLAN'
3700 THEN
3701 IF p_progress_mode <> 'BACKDATED' then
3702 /* Bug2756007 Begin */
3703 OPEN cur_sch_id( p_object_version_id ) ;
3704 FETCH cur_sch_id INTO l_pev_schedule_id, l_sch_rec_ver_number;
3705 CLOSE cur_sch_id;
3706
3707 PA_TASK_PUB1.Update_Schedule_Version(
3708 p_pev_schedule_id => l_pev_schedule_id
3709 ,p_calling_module => p_calling_module
3710 ,p_actual_start_date => l_actual_start_date
3711 ,p_actual_finish_date => l_actual_finish_date
3712 ,p_estimate_start_date => l_estimated_start_date
3713 ,p_estimate_finish_date => l_estimated_finish_date
3714 ,p_record_version_number => l_sch_rec_ver_number
3715 ,x_return_status => l_return_status
3716 ,x_msg_count => l_msg_count
3717 ,x_msg_data => l_msg_data );
3718
3719 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3720 THEN
3721 -- Bug 3248988 : Update_schedule_version adds the message, here message shd not be added
3722 -- PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3723 -- p_msg_name => l_msg_data
3724 -- );
3725 -- x_msg_data := l_msg_data;
3726 x_return_status := 'E';
3727 RAISE FND_API.G_EXC_ERROR;
3728 END IF;
3729 /* Bug2756007 End */
3730 END IF;
3731
3732 /*****5466645
3733 IF(p_bulk_load_flag = 'N') Then
3734
3735 IF p_progress_mode <> 'BACKDATED'
3736 AND l_element_struc_type = 'WORKPLAN' --maansari fpm changes
3737 THEN
3738
3739 --- bug 2756033
3740 -- Bug 2812855 : Added following procedure call to populate actual and estimated dates to all the task versions
3741 IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' )
3742 THEN
3743 PA_TASK_PVT1.Update_Dates_To_All_Versions(
3744 p_project_id => p_project_id
3745 ,p_element_version_id => p_object_version_id
3746 ,x_return_status => l_return_status
3747 ,x_msg_count => l_msg_count
3748 ,x_msg_data => l_msg_data );
3749 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3750 THEN
3751 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3752 p_msg_name => l_msg_data
3753 );
3754 x_msg_data := l_msg_data;
3755 x_return_status := 'E';
3756 RAISE FND_API.G_EXC_ERROR;
3757 END IF;
3758
3759 BEGIN
3760 Select ppev1.proj_element_id
3761 into l_structure_id
3762 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
3763 where ppev2.element_version_id = p_object_version_id
3764 and ppev2.project_id = ppev1.project_id
3765 and ppev2.parent_structure_version_id = ppev1.element_version_id;
3766 EXCEPTION WHEN OTHERS THEN
3767 l_structure_id := -999;
3768 END;
3769
3770 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
3771 AND
3772 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_object_id) = 'Y') --Bug 3784405 Satish
3773 AND
3774 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
3775 THEN
3776 --copy to transaction dates
3777 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
3778 p_validate_only => FND_API.G_FALSE
3779 ,p_project_id => p_project_id
3780 ,x_return_status => x_return_status
3781 ,x_msg_count => x_msg_count
3782 ,x_msg_data => x_msg_data);
3783 END IF;
3784 END IF;
3785 END IF; ------ p_progress_mode <> backdated
3786 END IF; -------------- end p_bulk_load_flag = 'N'
3787 5466645************/
3788 END IF;
3789 END IF;
3790
3791 IF g1_debug_mode = 'Y' THEN
3792 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Task Progress Complete ', x_Log_Level=> 3);
3793 END IF;
3794
3795 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3796 THEN
3797 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3798 p_msg_name => l_msg_data
3799 );
3800
3801 x_msg_data := l_msg_data;
3802 x_return_status := 'E';
3803 RAISE FND_API.G_EXC_ERROR;
3804 END IF;
3805
3806 x_resource_list_member_id := l_resource_list_member_id;
3807
3808 EXCEPTION
3809 WHEN FND_API.G_EXC_ERROR THEN
3810 IF p_commit = FND_API.G_TRUE
3811 THEN
3812 rollback to UPDATE_TASK_PROGRESS;
3813 END IF;
3814 x_return_status := FND_API.G_RET_STS_ERROR;
3815 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
3816 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3817 IF p_commit = FND_API.G_TRUE
3818 THEN
3819 rollback to UPDATE_TASK_PROGRESS;
3820 END IF;
3821 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3822 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
3823 p_procedure_name => 'UPDATE_TASK_PROGRESS',
3824 p_error_text => SUBSTRB(SQLERRM,1,120));
3825 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
3826 WHEN OTHERS THEN
3827 IF p_commit = FND_API.G_TRUE THEN
3828 rollback to UPDATE_TASK_PROGRESS;
3829 END IF;
3830 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3831 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
3832 p_procedure_name => 'UPDATE_TASK_PROGRESS',
3833 p_error_text => SUBSTRB(SQLERRM,1,120));
3834 x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
3835 raise;
3836 END UPDATE_TASK_PROGRESS;
3837
3838
3839 -- Start of comments
3840 -- API name : ROLLUP_PROGRESS_PVT
3841 -- Type : Public
3842 -- Pre-reqs : For Program Rollup, the sub project buckets should be populated.
3843 -- Purpose : Rolls up the structure
3844 -- Parameters Desc :
3845 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
3846 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
3847 -- proj_element_id of the deliverable and task
3848 -- p_object_version_id For Assignments, pass task_version_id, otherwise
3849 -- element_version_id of the deliverable and task
3850 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
3851 -- , for struture pass null
3852 -- p_lowest_level_task Does not seem to be required
3853 -- p_process_whole_tree To indicate if whole tree rollup is not required. It will
3854 -- do just 2 level rollup if N
3855 -- p_structure_version_id Structure version id of the publsihed or working structure version
3856 -- p_structure_type Possible values WORKPLAN, FINANCIAL
3857 -- p_fin_rollup_method Possible values are COST, EFFORT
3858 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
3859 -- p_rollup_entire_wbs To indicate if it requires the whole structure rollup, in this
3860 -- case it will ignore the passed object and starts with the lowest
3861 -- task
3862 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
3863 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
3864 -- PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT().
3865 -- End of comments
3866
3867 PROCEDURE ROLLUP_PROGRESS_PVT(
3868 p_api_version IN NUMBER :=1.0
3869 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
3870 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
3871 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
3872 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
3873 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
3874 ,p_debug_mode IN VARCHAR2 :='N'
3875 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3876 ,p_progress_mode IN VARCHAR2 := 'FUTURE'
3877 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3878 ,p_object_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
3879 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3880 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3881 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
3882 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
3883 ,p_lowest_level_task IN VARCHAR2 := 'N'
3884 ,p_process_whole_tree IN VARCHAR2 := 'Y'
3885 ,p_structure_version_id IN NUMBER
3886 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
3887 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
3888 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
3889 ,p_rollup_entire_wbs IN VARCHAR2 := 'N'
3890 ,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.
3891 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, for BUG 3951024
3892 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3893 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
3894 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3895 )
3896 IS
3897
3898 l_api_name CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
3899 l_api_version CONSTANT NUMBER := 1.0 ;
3900 l_return_status VARCHAR2(1) ;
3901 l_msg_count NUMBER ;
3902 l_msg_data VARCHAR2(250) ;
3903 l_data VARCHAR2(250) ;
3904 l_msg_index_out NUMBER ;
3905 l_error_msg_code VARCHAR2(250) ;
3906 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
3907 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
3908 g1_debug_mode VARCHAR2(1);
3909
3910 -- Rollup Cases
3911 -- 1. Workplan Publsihed Version Rollup.
3912 -- 2. Workplan Working Version Rollup.
3913 -- 3. Financial Structure Rollup.
3914 -- 4. Entire WBS using structure version id.
3915 -- 5. Program Rollup
3916
3917 BEGIN
3918
3919 -- Rollup Cases
3920 -- 1. Workplan Publsihed Version Rollup.
3921 -- 2. Workplan Working Version Rollup.
3922 -- 3. Financial Structure Rollup.
3923 -- 4. Entire WBS using structure version id.
3924 -- 5. Program Rollup
3925
3926
3927 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
3928
3929 IF g1_debug_mode = 'Y' THEN
3930 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT');
3931 END IF;
3932
3933 IF g1_debug_mode = 'Y' THEN
3934 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);
3935 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);
3936 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
3937 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
3938 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
3939 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
3940 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
3941 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);
3942 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
3943 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
3944 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
3945 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);
3946 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);
3947 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);
3948 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);
3949 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);
3950 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);
3951 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
3952 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);
3953 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);
3954 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);
3955 END IF;
3956
3957 -- 20 May : Amit : If Structure_version_id is null, then no processing shd be done
3958 -- Bug 3856161 : Added p_as_of_date check also
3959 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
3960 return;
3961 END IF;
3962
3963 IF (p_commit = FND_API.G_TRUE) THEN
3964 savepoint ROLLUP_PROGRESS_PVT;
3965 END IF;
3966
3967 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
3968 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3969 END IF;
3970
3971 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
3972 FND_MSG_PUB.initialize;
3973 END IF;
3974
3975 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
3976
3977 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
3978 p_api_version => p_api_version
3979 ,p_init_msg_list => p_init_msg_list
3980 ,p_commit => p_commit
3981 ,p_validate_only => p_validate_only
3982 ,p_validation_level => p_validation_level
3983 ,p_calling_module => p_calling_module
3984 ,p_debug_mode => p_debug_mode
3985 ,p_max_msg_count => p_max_msg_count
3986 ,p_progress_mode => p_progress_mode
3987 ,p_project_id => p_project_id
3988 ,p_object_type => p_object_type
3989 ,p_object_id => p_object_id
3990 ,p_object_version_id => p_object_version_id
3991 ,p_task_version_id => p_task_version_id
3992 ,p_as_of_date => p_as_of_date
3993 ,p_lowest_level_task => p_lowest_level_task
3994 ,p_process_whole_tree => p_process_whole_tree
3995 ,p_structure_version_id => p_structure_version_id
3996 ,p_structure_type => p_structure_type
3997 ,p_fin_rollup_method => p_fin_rollup_method
3998 ,p_wp_rollup_method => p_wp_rollup_method
3999 ,p_rollup_entire_wbs => p_rollup_entire_wbs
4000 ,p_working_wp_prog_flag => p_working_wp_prog_flag
4001 ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag -- added by rtarway for 3951024
4002 ,x_return_status => l_return_status
4003 ,x_msg_count => l_msg_count
4004 ,x_msg_data => l_msg_data);
4005
4006 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4007 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4008 p_msg_name => l_msg_data
4009 );
4010 x_msg_data := l_msg_data;
4011 x_return_status := 'E';
4012 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4013 END IF;
4014
4015 x_return_status := FND_API.G_RET_STS_SUCCESS;
4016
4017 IF (p_commit = FND_API.G_TRUE) THEN
4018 COMMIT;
4019 END IF;
4020
4021
4022 IF g1_debug_mode = 'Y' THEN
4023 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
4024 END IF;
4025
4026 EXCEPTION
4027 WHEN FND_API.G_EXC_ERROR THEN
4028 IF p_commit = FND_API.G_TRUE THEN
4029 rollback to ROLLUP_PROGRESS_PVT;
4030 END IF;
4031 x_return_status := FND_API.G_RET_STS_ERROR;
4032 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4033 IF p_commit = FND_API.G_TRUE THEN
4034 rollback to ROLLUP_PROGRESS_PVT;
4035 END IF;
4036 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4037 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4038 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4039 p_error_text => SUBSTRB(SQLERRM,1,120));
4040 WHEN OTHERS THEN
4041 IF p_commit = FND_API.G_TRUE THEN
4042 rollback to ROLLUP_PROGRESS_PVT;
4043 END IF;
4044 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4045 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4046 p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4047 p_error_text => SUBSTRB(SQLERRM,1,120));
4048 raise;
4049 END ROLLUP_PROGRESS_PVT;
4050
4051 -- Start of comments
4052 -- API name : UPDATE_ROLLUP_PROGRESS_PVT
4053 -- Type : Private
4054 -- Pre-reqs : ROLLUP_PROGRESS_PVT shd have been called.
4055 -- Purpose : Updates the Rolled up data
4056 -- Parameters Desc :
4057 -- P_OBJECT_TYPE Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4058 -- P_OBJECT_ID For assignments, pass resource_assignment_id, otherwise
4059 -- proj_element_id of the deliverable and task
4060 -- p_object_version_id For Assignments, pass task_version_id, otherwise
4061 -- element_version_id of the deliverable and task
4062 -- p_task_version_id For tasks, assignments, deliverables pass the task version id
4063 -- , for struture pass null
4064 -- p_lowest_level_task Does not seem to be required
4065 -- p_structure_version_id Structure version id of the publsihed or working structure version
4066 -- p_structure_type Possible values WORKPLAN, FINANCIAL
4067 -- p_fin_rollup_method Possible values are COST, EFFORT
4068 -- p_wp_rollup_method Possible values are COST, EFFORT, MANUAL, DURATION
4069 -- p_published_structure To indicate if the passed structure version is published
4070 -- History : 17-MAR-04 amksingh Rewritten For FPM Development Tracking Bug 3420093
4071 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
4072 -- PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT().
4073 -- End of comments
4074
4075 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4076 p_api_version IN NUMBER :=1.0
4077 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4078 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4079 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4080 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4081 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4082 ,p_debug_mode IN VARCHAR2 :='N'
4083 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4084 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4085 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4086 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4087 ,p_rollup_table IN PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4088 ,p_lowest_level_task IN VARCHAR2 := 'N'
4089 ,p_task_version_id IN NUMBER
4090 ,p_structure_version_id IN NUMBER
4091 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
4092 ,p_fin_rollup_method IN VARCHAR2 := 'COST'
4093 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
4094 ,p_published_structure IN VARCHAR2
4095 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- FPM Dev CR 7
4096 ,p_working_wp_prog_flag IN VARCHAR2 := 'N' --bug 3829341
4097 ,p_upd_new_elem_ver_id_flag IN VARCHAR2 := 'Y' -- rtarway, for BUG 3951024
4098 ,p_progress_mode IN VARCHAR2 := 'FUTURE' -- 4091457
4099 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4100 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4101 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4102 ) IS
4103 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4104 l_api_version CONSTANT NUMBER := 1.0 ;
4105
4106 l_return_status VARCHAR2(1) ;
4107 l_msg_count NUMBER ;
4108 l_msg_data VARCHAR2(250) ;
4109 l_data VARCHAR2(250) ;
4110 l_msg_index_out NUMBER ;
4111 l_error_msg_code VARCHAR2(250) ;
4112 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
4113 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
4114 g1_debug_mode VARCHAR2(1);
4115
4116 BEGIN
4117
4118 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4119
4120 IF g1_debug_mode = 'Y' THEN
4121 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT');
4122 END IF;
4123
4124 IF g1_debug_mode = 'Y' THEN
4125 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);
4126 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);
4127 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
4128 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
4129 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
4130 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
4131 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
4132 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);
4133 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4134 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);
4135 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);
4136 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);
4137 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);
4138 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);
4139 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4140 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);
4141 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);
4142 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_published_structure='||p_published_structure, x_Log_Level=> 3);
4143 END IF;
4144
4145
4146 IF (p_commit = FND_API.G_TRUE) THEN
4147 savepoint UPDATE_ROLLUP_PROGRESS_PVT;
4148 END IF;
4149
4150 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4151 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4152 END IF;
4153
4154 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4155 FND_MSG_PUB.initialize;
4156 END IF;
4157
4158 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
4159
4160 PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT(
4161 p_api_version => p_api_version
4162 ,p_init_msg_list => p_init_msg_list
4163 ,p_commit => p_commit
4164 ,p_validate_only => p_validate_only
4165 ,p_validation_level => p_validation_level
4166 ,p_calling_module => p_calling_module
4167 ,p_debug_mode => p_debug_mode
4168 ,p_max_msg_count => p_max_msg_count
4169 ,p_project_id => p_project_id
4170 ,p_object_version_id => p_object_version_id
4171 ,p_as_of_date => p_as_of_date
4172 ,p_rollup_table => p_rollup_table
4173 ,p_lowest_level_task => p_lowest_level_task
4174 ,p_task_version_id => p_task_version_id
4175 ,p_structure_version_id => p_structure_version_id
4176 ,p_structure_type => p_structure_type
4177 ,p_fin_rollup_method => p_fin_rollup_method
4178 ,p_wp_rollup_method => p_wp_rollup_method
4179 ,p_published_structure => p_published_structure
4180 ,p_rollup_entire_wbs => p_rollup_entire_wbs
4181 ,p_working_wp_prog_flag => p_working_wp_prog_flag
4182 ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag --BUG 3951024
4183 ,p_progress_mode => p_progress_mode -- 4091457
4184 ,x_return_status => l_return_status
4185 ,x_msg_count => l_msg_count
4186 ,x_msg_data => l_msg_data);
4187
4188 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4189 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4190 p_msg_name => l_msg_data);
4191 x_msg_data := l_msg_data;
4192 x_return_status := 'E';
4193 x_msg_count := l_msg_count;
4194 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4195 END IF;
4196
4197
4198 x_return_status := FND_API.G_RET_STS_SUCCESS;
4199
4200 IF (p_commit = FND_API.G_TRUE) THEN
4201 COMMIT;
4202 END IF;
4203
4204 IF g1_debug_mode = 'Y' THEN
4205 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);
4206 END IF;
4207
4208 EXCEPTION
4209 WHEN FND_API.G_EXC_ERROR THEN
4210 IF g1_debug_mode = 'Y' THEN
4211 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4212 END IF;
4213
4214 IF p_commit = FND_API.G_TRUE THEN
4215 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4216 END IF;
4217 x_return_status := FND_API.G_RET_STS_ERROR;
4218 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4219
4220 IF g1_debug_mode = 'Y' THEN
4221 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4222 END IF;
4223
4224 IF p_commit = FND_API.G_TRUE THEN
4225 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4226 END IF;
4227 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4228 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4229 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4230 p_error_text => SUBSTRB(SQLERRM,1,120));
4231 WHEN OTHERS THEN
4232 IF g1_debug_mode = 'Y' THEN
4233 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4234 END IF;
4235
4236 IF p_commit = FND_API.G_TRUE THEN
4237 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4238 END IF;
4239 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4240 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4241 p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4242 p_error_text => SUBSTRB(SQLERRM,1,120));
4243 raise;
4244 END UPDATE_ROLLUP_PROGRESS_PVT;
4245
4246
4247 PROCEDURE CREATE_PROJ_PROG_ATTR(
4248 p_api_version IN NUMBER :=1.0
4249 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4250 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4251 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4252 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4253 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4254 ,p_debug_mode IN VARCHAR2 :='N'
4255 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4256 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4257 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4258 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4259 ,P_PROGRESS_CYCLE_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4260 ,P_WQ_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4261 ,P_REMAIN_EFFORT_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4262 ,P_PERCENT_COMP_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4263 ,P_NEXT_PROGRESS_UPDATE_DATE IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4264 ,p_action_set_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4265 ,p_TASK_WEIGHT_BASIS_CODE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4266 ,X_PROJ_PROGRESS_ATTR_ID IN OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4267 ,P_ALLOW_COLLAB_PROG_ENTRY IN VARCHAR2 := 'N'
4268 ,P_ALLW_PHY_PRCNT_CMP_OVERRIDES IN VARCHAR2 := 'N'
4269 ,P_STRUCTURE_TYPE IN VARCHAR2 := 'WORKPLAN'
4270 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4271 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4272 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4273 ) IS
4274
4275 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4276 l_api_version CONSTANT NUMBER := 1.0;
4277
4278 l_return_status VARCHAR2(1);
4279 l_msg_count NUMBER;
4280 l_msg_data VARCHAR2(250);
4281 l_data VARCHAR2(250);
4282 l_msg_index_out NUMBER;
4283 l_error_msg_code VARCHAR2(250);
4284
4285 l_PROGRESS_CYCLE_ID NUMBER := null;
4286 l_WQ_ENABLE_FLAG VARCHAR2(1) := null;
4287 l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4288 l_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4289 l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4290
4291 --bug 3010538
4292 l_TASK_WEIGHT_BASIS_CODE VARCHAR2(30);
4293 --end bug 3010538
4294
4295 BEGIN
4296
4297 IF g1_debug_mode = 'Y' THEN
4298 pa_debug.init_err_stack ('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4299 END IF;
4300
4301 IF (p_debug_mode = 'Y') THEN
4302 IF g1_debug_mode = 'Y' THEN
4303 pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4304 END IF;
4305 END IF;
4306
4307 IF (p_commit = FND_API.G_TRUE) THEN
4308 savepoint CREATE_PROJ_PROG_ATTR;
4309 END IF;
4310
4311 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4312 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4313 END IF;
4314
4315 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4316 FND_MSG_PUB.initialize;
4317 END IF;
4318
4319 IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4320 THEN
4321 l_PROGRESS_CYCLE_ID := null;
4322 ELSE
4323 l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4324 END IF;
4325
4326 IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4327 THEN
4328 l_WQ_ENABLE_FLAG := 'N';
4329 ELSE
4330 l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4331 END IF;
4332
4333 IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4334 THEN
4335 l_REMAIN_EFFORT_ENABLE_FLAG := 'N';
4336 ELSE
4337 l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4338 END IF;
4339
4340 IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4341 THEN
4342 l_PERCENT_COMP_ENABLE_FLAG := 'N';
4343 ELSE
4344 l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4345 END IF;
4346
4347 IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4348 THEN
4349 l_NEXT_PROGRESS_UPDATE_DATE := null;
4350 ELSE
4351 l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4352 END IF;
4353
4354 --bug 3010538
4355 IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4356 THEN
4357 l_task_weight_basis_code := 'DURATION';
4358 ELSE
4359 l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
4360 END IF;
4361 --end bug 3010538
4362
4363 PA_PROJ_PROGRESS_ATTR_PKG.INSERT_ROW(
4364 X_PROJ_PROGRESS_ATTR_ID => X_PROJ_PROGRESS_ATTR_ID
4365 ,x_project_id => p_project_id
4366 ,X_OBJECT_TYPE => P_OBJECT_TYPE
4367 ,X_OBJECT_ID => P_OBJECT_ID
4368 ,X_LAST_UPDATE_DATE => SYSDATE
4369 ,X_LAST_UPDATED_BY => FND_GLOBAL.user_id
4370 ,X_CREATION_DATE => SYSDATE
4371 ,X_CREATED_BY => FND_GLOBAL.user_id
4372 ,X_LAST_UPDATE_LOGIN => FND_GLOBAL.login_id
4373 ,X_PROGRESS_CYCLE_ID => l_PROGRESS_CYCLE_ID
4374 ,X_WQ_ENABLE_FLAG => l_WQ_ENABLE_FLAG
4375 ,X_REMAIN_EFFORT_ENABLE_FLAG => l_REMAIN_EFFORT_ENABLE_FLAG
4376 ,X_PERCENT_COMP_ENABLE_FLAG => l_PERCENT_COMP_ENABLE_FLAG
4377 ,X_NEXT_PROGRESS_UPDATE_DATE => l_NEXT_PROGRESS_UPDATE_DATE
4378 ,X_TASK_WEIGHT_BASIS_CODE => l_TASK_WEIGHT_BASIS_CODE
4379 ,X_ALLOW_COLLAB_PROG_ENTRY => P_ALLOW_COLLAB_PROG_ENTRY
4380 ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES => P_ALLW_PHY_PRCNT_CMP_OVERRIDES
4381 ,X_STRUCTURE_TYPE => P_STRUCTURE_TYPE
4382 );
4383
4384 x_return_status := FND_API.G_RET_STS_SUCCESS;
4385
4386 IF (p_commit = FND_API.G_TRUE) THEN
4387 COMMIT;
4388 END IF;
4389
4390 IF (p_debug_mode = 'Y') THEN
4391 IF g1_debug_mode = 'Y' THEN
4392 pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR END');
4393 END IF;
4394 END IF;
4395
4396 EXCEPTION
4397 when FND_API.G_EXC_ERROR then
4398 if p_commit = FND_API.G_TRUE then
4399 rollback to CREATE_PROJ_PROG_ATTR;
4400 end if;
4401 x_return_status := FND_API.G_RET_STS_ERROR;
4402 when FND_API.G_EXC_UNEXPECTED_ERROR then
4403 if p_commit = FND_API.G_TRUE then
4404 rollback to CREATE_PROJ_PROG_ATTR;
4405 end if;
4406 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4407 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4408 p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4409 p_error_text => SUBSTRB(SQLERRM,1,120));
4410 when OTHERS then
4411 if p_commit = FND_API.G_TRUE then
4412 rollback to CREATE_PROJ_PROG_ATTR;
4413 end if;
4414 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4415 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4416 p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4417 p_error_text => SUBSTRB(SQLERRM,1,120));
4418 raise;
4419 END CREATE_PROJ_PROG_ATTR;
4420
4421
4422 PROCEDURE UPDATE_PROJ_PROG_ATTR(
4423 p_api_version IN NUMBER :=1.0
4424 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4425 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4426 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4427 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4428 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4429 ,p_debug_mode IN VARCHAR2 :='N'
4430 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4431 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4432 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4433 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4434 ,P_PROGRESS_CYCLE_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4435 ,P_WQ_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4436 ,P_REMAIN_EFFORT_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4437 ,P_PERCENT_COMP_ENABLE_FLAG IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4438 ,P_NEXT_PROGRESS_UPDATE_DATE IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4439 ,p_action_set_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4440 ,p_TASK_WEIGHT_BASIS_CODE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4441 ,P_PROJ_PROGRESS_ATTR_ID IN NUMBER
4442 ,p_record_version_number IN NUMBER
4443 ,p_allow_collab_prog_entry IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4444 ,p_allw_phy_prcnt_cmp_overrides IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4445 ,p_structure_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4446 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4447 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4448 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4449 ) IS
4450
4451 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4452 l_api_version CONSTANT NUMBER := 1.0;
4453
4454 l_return_status VARCHAR2(1);
4455 l_msg_count NUMBER;
4456 l_msg_data VARCHAR2(250);
4457 l_data VARCHAR2(250);
4458 l_msg_index_out NUMBER;
4459 l_error_msg_code VARCHAR2(250);
4460
4461 l_PROGRESS_CYCLE_ID NUMBER := null;
4462 l_WQ_ENABLE_FLAG VARCHAR2(1) := null;
4463 l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4464 l_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4465 l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4466
4467 l_old_enable_wq_flag VARCHAR2(1) := null;
4468 l_old_REMAIN_EFF_ENABLE_FLAG VARCHAR2(1) := null;
4469 l_old_PERCENT_COMP_ENABLE_FLAG VARCHAR2(1) := null;
4470
4471 --bug 3010538
4472 l_TASK_WEIGHT_BASIS_CODE VARCHAR2(30);
4473
4474 CURSOR cur_task_weight_bas_code IS
4475 select task_weight_basis_code
4476 from pa_proj_progress_attr
4477 where proj_progress_attr_id = p_proj_progress_attr_id;
4478 l_old_tk_wght_basis_code VARCHAR2(30);
4479 l_updt_struc_ver_id NUMBER;
4480
4481 --cursor to get structure version id of all non-published version
4482 CURSOR cur_get_wk_ver_struct_id IS
4483 select str.element_version_id
4484 from pa_proj_elem_ver_structure str,
4485 pa_proj_elements pe,
4486 pa_proj_structure_types pst
4487 where pe.project_id = p_project_id
4488 and pe.project_id = str.project_id
4489 and pe.proj_element_id = str.proj_element_id
4490 and str.status_code <> 'STRUCTURE_PUBLISHED'
4491 and pe.proj_element_id = pst.proj_element_id
4492 and pst.structure_type_id = 1;
4493
4494 CURSOR cur_get_proj_temp_flag IS
4495 select template_flag from pa_projects_all where project_id = p_project_id;
4496 l_template_flag VARCHAR2(1);
4497
4498 --cursor to get only structure version id (when version disabled)
4499 CURSOR cur_get_only_ver_struct_id IS
4500 select str.element_version_id
4501 from pa_proj_elem_ver_structure str,
4502 pa_proj_elements pe,
4503 pa_proj_structure_types pst
4504 where pe.project_id = p_project_id
4505 and pe.project_id = str.project_id
4506 and pe.proj_element_id = str.proj_element_id
4507 and pe.proj_element_id = pst.proj_element_id
4508 and pst.structure_type_id = 1;
4509 --end bug 3010538
4510
4511 CURSOR cur_prg_attr
4512 IS
4513 SELECT WQ_ENABLE_FLAG, REMAIN_EFFORT_ENABLE_FLAG,
4514 PERCENT_COMP_ENABLE_FLAG
4515 FROM PA_PROJ_PROGRESS_ATTR
4516 WHERE PROJ_PROGRESS_ATTR_ID = p_PROJ_PROGRESS_ATTR_ID;
4517
4518 -- Bug # 4576303.
4519 cursor cur_tasks_exist (c_str_ver_id NUMBER) is
4520 select 'Y'
4521 from pa_proj_element_versions ppev
4522 where ppev.parent_structure_version_id = c_str_ver_id
4523 and ppev.object_type = 'PA_TASKS';
4524
4525 l_tasks_exist VARCHAR2(1) := null;
4526 -- Bug # 4576303.
4527 BEGIN
4528
4529 IF g1_debug_mode = 'Y' THEN
4530 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4531 END IF;
4532
4533 IF (p_debug_mode = 'Y') THEN
4534 IF g1_debug_mode = 'Y' THEN
4535 pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4536 END IF;
4537 END IF;
4538
4539 IF (p_commit = FND_API.G_TRUE) THEN
4540 savepoint UPDATE_PROJ_PROG_ATTR;
4541 END IF;
4542
4543 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4544 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4545 END IF;
4546
4547 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4548 FND_MSG_PUB.initialize;
4549 END IF;
4550
4551 /* IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4552 THEN
4553 l_PROGRESS_CYCLE_ID := null;
4554 ELSE
4555 l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4556 END IF;
4557
4558 IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4559 THEN
4560 l_WQ_ENABLE_FLAG := null;
4561 ELSE
4562 l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4563 END IF;
4564
4565 IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4566 THEN
4567 l_REMAIN_EFFORT_ENABLE_FLAG := null;
4568 ELSE
4569 l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4570 END IF;
4571
4572 IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4573 THEN
4574 l_PERCENT_COMP_ENABLE_FLAG := null;
4575 ELSE
4576 l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4577 END IF;
4578
4579 IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4580 THEN
4581 l_NEXT_PROGRESS_UPDATE_DATE := null;
4582 ELSE
4583 l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4584 END IF;
4585 */
4586
4587 /* Start commenting out as per Majid's email : 07-APR-2004.
4588
4589 IF PA_PROGRESS_UTILS.PROJ_TASK_PROG_EXISTS( p_project_id, 0 ) = 'Y'
4590 THEN
4591 OPEN cur_prg_attr;
4592 FETCH cur_prg_attr INTO l_old_enable_wq_flag,
4593 l_old_REMAIN_EFF_ENABLE_FLAG ,
4594 l_old_PERCENT_COMP_ENABLE_FLAG;
4595 CLOSE cur_prg_attr;
4596
4597 IF p_PERCENT_COMP_ENABLE_FLAG = 'N' AND
4598 l_old_PERCENT_COMP_ENABLE_FLAG = 'Y'
4599 THEN
4600 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4601 p_msg_name => 'PA_TP_CANT_DIS_PC');
4602 x_msg_data := 'PA_TP_CANT_DIS_PC';
4603 x_return_status := 'E';
4604 RAISE FND_API.G_EXC_ERROR;
4605 END IF;
4606
4607 IF p_WQ_ENABLE_FLAG = 'N' AND
4608 l_old_enable_wq_flag = 'Y'
4609 THEN
4610 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4611 p_msg_name => 'PA_TP_CANT_DIS_WQ');
4612 x_msg_data := 'PA_TP_CANT_DIS_WQ';
4613 x_return_status := 'E';
4614 RAISE FND_API.G_EXC_ERROR;
4615 END IF;
4616
4617 IF p_REMAIN_EFFORT_ENABLE_FLAG = 'N' AND
4618 l_old_REMAIN_EFF_ENABLE_FLAG = 'Y'
4619 THEN
4620 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4621 p_msg_name => 'PA_TP_CANT_DIS_REM_EFF');
4622 x_msg_data := 'PA_TP_CANT_DIS_REM_EFF';
4623 x_return_status := 'E';
4624 RAISE FND_API.G_EXC_ERROR;
4625 END IF;
4626
4627 END IF;
4628
4629 End commentng out as per Majid's email : 07-APR-2004. */
4630
4631 --bug 3010538
4632 OPEN cur_task_weight_bas_code;
4633 FETCH cur_task_weight_bas_code into l_old_tk_wght_basis_code;
4634 CLOSE cur_task_weight_bas_code;
4635 IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4636 THEN
4637 --no value passed; same as old value
4638 l_task_weight_basis_code := l_old_tk_wght_basis_code;
4639 ELSE
4640 --------------dbms_output.put_line('value passed '||p_task_weight_basis_code||','||l_old_tk_wght_basis_code);
4641 --value passed; check if different
4642 IF (p_task_weight_basis_code <> l_old_tk_wght_basis_code)
4643 AND p_structure_type = 'WORKPLAN'
4644 THEN
4645 --------------dbms_output.put_line('old <> new');
4646 --different; check if changing to DURATION or EFFORT
4647 IF (p_task_weight_basis_code = 'DURATION')
4648 -- OR -- Bug # 4576303.
4649 -- (p_task_weight_basis_code = 'EFFORT') -- Bug # 4576303.
4650 THEN
4651 --basis change; set update flag to Y
4652 --------------dbms_output.put_line('basis is duration or effort');
4653 OPEN cur_get_proj_temp_flag;
4654 FETCH cur_get_proj_temp_flag into l_template_flag;
4655 CLOSE cur_get_proj_temp_flag;
4656 IF ('Y'=PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) AND (l_template_flag = 'N')) THEN
4657 --------------dbms_output.put_line('versioning enabled');
4658 --get all working version for project
4659 OPEN cur_get_wk_ver_struct_id;
4660 LOOP
4661 --------------dbms_output.put_line('in loop '||p_project_id);
4662 FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
4663 EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
4664 --call API to update flag
4665 -- Bug # 4576303.
4666 open cur_tasks_exist (l_updt_struc_ver_id);
4667 fetch cur_tasks_exist into l_tasks_exist;
4668 close cur_tasks_exist;
4669 if (nvl(l_tasks_exist, 'N') = 'Y') then
4670 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
4671 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
4672 p_project_id => p_project_id,
4673 p_structure_version_id => l_updt_struc_ver_id,
4674 p_update_wbs_flag => 'Y',
4675 x_return_status => l_return_status,
4676 x_msg_count => l_msg_count,
4677 x_msg_data => l_msg_data
4678 );
4679 end if;
4680 -- Bug # 4576303.
4681 --------------dbms_output.put_line('ret stat = '||l_return_status);
4682 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4683 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4684 p_msg_name => l_msg_data
4685 );
4686 x_msg_data := l_msg_data;
4687 x_return_status := 'E';
4688 CLOSE cur_get_wk_ver_struct_id;
4689 RAISE FND_API.G_EXC_ERROR;
4690 END IF;
4691 END LOOP;
4692 CLOSE cur_get_wk_ver_struct_id;
4693 ELSE
4694 --------------dbms_output.put_line('versioning disabled');
4695 --get only version, project or template
4696 OPEN cur_get_only_ver_struct_id;
4697 FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
4698 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
4699 CLOSE cur_get_only_ver_struct_id;
4700 -- Bug # 4576303.
4701 open cur_tasks_exist (l_updt_struc_ver_id);
4702 fetch cur_tasks_exist into l_tasks_exist;
4703 close cur_tasks_exist;
4704 if (nvl(l_tasks_exist, 'N') = 'Y') then
4705 --call API to update flag
4706 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
4707 p_project_id => p_project_id,
4708 p_structure_version_id => l_updt_struc_ver_id,
4709 p_update_wbs_flag => 'Y',
4710 x_return_status => l_return_status,
4711 x_msg_count => l_msg_count,
4712 x_msg_data => l_msg_data
4713 );
4714 end if;
4715 -- Bug # 4576303.
4716 --------------dbms_output.put_line('ret stat = '||l_return_status);
4717 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4718 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4719 p_msg_name => l_msg_data
4720 );
4721 x_msg_data := l_msg_data;
4722 x_return_status := 'E';
4723 RAISE FND_API.G_EXC_ERROR;
4724 END IF;
4725 END IF;
4726 ELSE
4727 --3035902: process update flag changes; added check for
4728 --sharing disabled
4729 --set update flag to N when changing to MANUAL and
4730 --if this is split structure; otherwise no change
4731 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
4732 --versioning enabled
4733 OPEN cur_get_wk_ver_struct_id;
4734 LOOP
4735 --------------dbms_output.put_line('in loop '||p_project_id);
4736 FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
4737 EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
4738 --call API to update flag
4739 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
4740 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
4741 p_project_id => p_project_id,
4742 p_structure_version_id => l_updt_struc_ver_id,
4743 p_update_wbs_flag => 'N',
4744 x_return_status => l_return_status,
4745 x_msg_count => l_msg_count,
4746 x_msg_data => l_msg_data
4747 );
4748 --------------dbms_output.put_line('ret stat = '||l_return_status);
4749 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4750 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4751 p_msg_name => l_msg_data
4752 );
4753 x_msg_data := l_msg_data;
4754 x_return_status := 'E';
4755 CLOSE cur_get_wk_ver_struct_id;
4756 RAISE FND_API.G_EXC_ERROR;
4757 END IF;
4758 END LOOP;
4759 CLOSE cur_get_wk_ver_struct_id;
4760 ELSE
4761 -- Added if clause for bug#3066833
4762 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'N' THEN
4763 --get only version, project or template
4764 OPEN cur_get_only_ver_struct_id;
4765 FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
4766 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
4767 CLOSE cur_get_only_ver_struct_id;
4768 --call API to update flag
4769 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
4770 p_project_id => p_project_id,
4771 p_structure_version_id => l_updt_struc_ver_id,
4772 p_update_wbs_flag => 'N',
4773 x_return_status => l_return_status,
4774 x_msg_count => l_msg_count,
4775 x_msg_data => l_msg_data
4776 );
4777 --------------dbms_output.put_line('ret stat = '||l_return_status);
4778 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4779 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4780 p_msg_name => l_msg_data
4781 );
4782 x_msg_data := l_msg_data;
4783 x_return_status := 'E';
4784 RAISE FND_API.G_EXC_ERROR;
4785 END IF;
4786 END IF ;
4787 END IF;
4788 END IF;
4789 END IF;
4790 l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
4791 END IF;
4792 --end bug 3010538
4793
4794 PA_PROJ_PROGRESS_ATTR_PKG.UPDATE_ROW(
4795 X_PROJ_PROGRESS_ATTR_ID => P_PROJ_PROGRESS_ATTR_ID
4796 ,X_project_id => p_project_id
4797 ,X_OBJECT_TYPE => p_OBJECT_TYPE
4798 ,X_OBJECT_ID => p_OBJECT_ID
4799 ,X_LAST_UPDATE_DATE => SYSDATE
4800 ,X_LAST_UPDATED_BY => FND_GLOBAL.user_id
4801 ,X_LAST_UPDATE_LOGIN => FND_GLOBAL.login_id
4802 ,X_PROGRESS_CYCLE_ID => p_PROGRESS_CYCLE_ID
4803 ,X_WQ_ENABLE_FLAG => p_WQ_ENABLE_FLAG
4804 ,X_REMAIN_EFFORT_ENABLE_FLAG => p_REMAIN_EFFORT_ENABLE_FLAG
4805 ,X_PERCENT_COMP_ENABLE_FLAG => p_PERCENT_COMP_ENABLE_FLAG
4806 ,X_NEXT_PROGRESS_UPDATE_DATE => p_NEXT_PROGRESS_UPDATE_DATE
4807 ,X_record_version_number => p_record_version_number
4808 ,X_TASK_WEIGHT_BASIS_CODE => l_task_weight_basis_code
4809 ,X_ALLOW_COLLAB_PROG_ENTRY => p_allow_collab_prog_entry
4810 ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES => p_allw_phy_prcnt_cmp_overrides
4811 ,X_STRUCTURE_TYPE => p_structure_type
4812 );
4813
4814 x_return_status := FND_API.G_RET_STS_SUCCESS;
4815
4816 IF (p_commit = FND_API.G_TRUE) THEN
4817 COMMIT;
4818 END IF;
4819
4820 IF (p_debug_mode = 'Y') THEN
4821 IF g1_debug_mode = 'Y' THEN
4822 pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR END');
4823 END IF;
4824 END IF;
4825
4826 EXCEPTION
4827 when FND_API.G_EXC_ERROR then
4828 if p_commit = FND_API.G_TRUE then
4829 rollback to UPDATE_PROJ_PROG_ATTR;
4830 end if;
4831 x_return_status := FND_API.G_RET_STS_ERROR;
4832 when FND_API.G_EXC_UNEXPECTED_ERROR then
4833 if p_commit = FND_API.G_TRUE then
4834 rollback to UPDATE_PROJ_PROG_ATTR;
4835 end if;
4836 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4837 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4838 p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
4839 p_error_text => SUBSTRB(SQLERRM,1,120));
4840 when OTHERS then
4841 if p_commit = FND_API.G_TRUE then
4842 rollback to UPDATE_PROJ_PROG_ATTR;
4843 end if;
4844 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4845 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4846 p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
4847 p_error_text => SUBSTRB(SQLERRM,1,120));
4848 raise;
4849 END UPDATE_PROJ_PROG_ATTR;
4850
4851 PROCEDURE DELETE_PROJ_PROG_ATTR(
4852 p_api_version IN NUMBER :=1.0
4853 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4854 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4855 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4856 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4857 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4858 ,p_debug_mode IN VARCHAR2 :='N'
4859 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4860 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4861 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4862 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4863 ,p_structure_type IN VARCHAR2 := 'WORKPLAN' -- Amit
4864 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4865 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4866 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4867 ) IS
4868
4869 l_api_name CONSTANT VARCHAR(30) := 'DELETE_PROJ_PROG_ATTR';
4870 l_api_version CONSTANT NUMBER := 1.0;
4871
4872 l_return_status VARCHAR2(1);
4873 l_msg_count NUMBER;
4874 l_msg_data VARCHAR2(250);
4875 l_data VARCHAR2(250);
4876 l_msg_index_out NUMBER;
4877 l_error_msg_code VARCHAR2(250);
4878
4879 CURSOR cur_ppp
4880 IS
4881 SELECT rowid
4882 FROM pa_proj_progress_attr
4883 WHERE project_id = p_project_id
4884 AND object_type = p_object_type
4885 AND object_id = p_object_id
4886 AND structure_type = p_structure_type; -- Amit
4887
4888 l_ppp_row_id VARCHAR2(18);
4889
4890 BEGIN
4891
4892 IF g1_debug_mode = 'Y' THEN
4893 pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
4894 END IF;
4895
4896 IF (p_debug_mode = 'Y') THEN
4897 IF g1_debug_mode = 'Y' THEN
4898 pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
4899 END IF;
4900 END IF;
4901
4902 IF (p_commit = FND_API.G_TRUE) THEN
4903 savepoint DELETE_PROJ_PROG_ATTR; --Amit
4904 END IF;
4905
4906 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4907 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4908 END IF;
4909
4910 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4911 FND_MSG_PUB.initialize;
4912 END IF;
4913
4914 OPEN cur_ppp;
4915 FETCH cur_ppp INTO l_ppp_row_id;
4916 CLOSE cur_ppp;
4917
4918 PA_PROJ_PROGRESS_ATTR_PKG.DELETE_ROW( l_ppp_row_id
4919 );
4920
4921 x_return_status := FND_API.G_RET_STS_SUCCESS;
4922
4923 IF (p_commit = FND_API.G_TRUE) THEN
4924 COMMIT;
4925 END IF;
4926
4927 IF (p_debug_mode = 'Y') THEN
4928 IF g1_debug_mode = 'Y' THEN
4929 pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR END');
4930 END IF;
4931 END IF;
4932
4933 EXCEPTION
4934 when FND_API.G_EXC_ERROR then
4935 if p_commit = FND_API.G_TRUE then
4936 rollback to DELETE_PROJ_PROG_ATTR;
4937 end if;
4938 x_return_status := FND_API.G_RET_STS_ERROR;
4939 when FND_API.G_EXC_UNEXPECTED_ERROR then
4940 if p_commit = FND_API.G_TRUE then
4941 rollback to DELETE_PROJ_PROG_ATTR;
4942 end if;
4943 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4944 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4945 p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
4946 p_error_text => SUBSTRB(SQLERRM,1,120));
4947 when OTHERS then
4948 if p_commit = FND_API.G_TRUE then
4949 rollback to DELETE_PROJ_PROG_ATTR;
4950 end if;
4951 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4952 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
4953 p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
4954 p_error_text => SUBSTRB(SQLERRM,1,120));
4955 raise;
4956 END DELETE_PROJ_PROG_ATTR;
4957
4958 PROCEDURE delete_progress_record(
4959 p_api_version IN NUMBER :=1.0
4960 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4961 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4962 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4963 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4964 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4965 ,p_debug_mode IN VARCHAR2 :='N'
4966 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4967 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4968 ,p_task_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4969 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4970 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4971 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4972 ) IS
4973
4974 l_api_name CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4975 l_api_version CONSTANT NUMBER := 1.0;
4976
4977 l_return_status VARCHAR2(1);
4978 l_msg_count NUMBER;
4979 l_msg_data VARCHAR2(250);
4980 l_data VARCHAR2(250);
4981 l_msg_index_out NUMBER;
4982 l_error_msg_code VARCHAR2(250);
4983
4984 CURSOR cur_pa_ppc_str( c_project_id NUMBER, c_proj_element_id NUMBER )
4985 IS
4986 SELECT rowid
4987 FROM pa_percent_completes
4988 WHERE object_version_id = p_structure_version_id
4989 AND object_id = c_proj_element_id
4990 AND project_id = c_project_id
4991 AND object_type = 'PA_STRUCTURES';
4992
4993 CURSOR cur_pa_ppr_str( c_project_id NUMBER, c_proj_element_id NUMBER )
4994 IS
4995 SELECT rowid
4996 FROM pa_progress_rollup
4997 WHERE object_version_id = p_structure_version_id
4998 AND object_id = c_proj_element_id
4999 AND project_id = c_project_id
5000 AND object_type = 'PA_STRUCTURES';
5001
5002 CURSOR cur_pa_ppc_tsk( c_project_id NUMBER, c_proj_element_id NUMBER )
5003 IS
5004 SELECT rowid
5005 FROM pa_percent_completes
5006 WHERE object_version_id = p_task_version_id
5007 AND object_id = c_proj_element_id
5008 AND project_id = c_project_id
5009 AND object_type = 'PA_TASKS';
5010
5011 CURSOR cur_pa_ppr_tsk ( c_project_id NUMBER, c_proj_element_id NUMBER )
5012 IS
5013 SELECT rowid
5014 FROM pa_progress_rollup
5015 WHERE object_version_id = p_task_version_id
5016 AND object_id = c_proj_element_id
5017 AND project_id = c_project_id
5018 AND object_type = 'PA_TASKS';
5019
5020 CURSOR cur_ppevs( c_element_version_id NUMBER )
5021 IS
5022 SELECT project_id, proj_element_id
5023 FROM pa_proj_element_versions
5024 WHERE element_version_id = c_element_version_id
5025 ;
5026
5027 l_rollup_row_id VARCHAR2(18);
5028 l_ppc_row_id VARCHAR2(18);
5029 l_proj_element_id NUMBER;
5030 l_project_id NUMBER;
5031 BEGIN
5032
5033 IF g1_debug_mode = 'Y' THEN
5034 pa_debug.init_err_stack ('PA_PROGRESS_PUB.delete_progress_record');
5035 END IF;
5036
5037 IF (p_debug_mode = 'Y') THEN
5038 IF g1_debug_mode = 'Y' THEN
5039 pa_debug.debug('PA_PROGRESS_PUB.delete_progress_record');
5040 END IF;
5041 END IF;
5042
5043 IF (p_commit = FND_API.G_TRUE) THEN
5044 savepoint delete_progress_record;
5045 END IF;
5046
5047 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5048 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5049 END IF;
5050
5051 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5052 FND_MSG_PUB.initialize;
5053 END IF;
5054
5055 IF p_task_version_id is NULL OR p_task_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5056 THEN
5057 OPEN cur_ppevs( p_structure_version_id );
5058 FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5059 CLOSE cur_ppevs;
5060
5061 OPEN cur_pa_ppc_str( l_project_id, l_proj_element_id );
5062 FETCH cur_pa_ppc_str INTO l_ppc_row_id;
5063 CLOSE cur_pa_ppc_str;
5064
5065 OPEN cur_pa_ppr_str( l_project_id, l_proj_element_id );
5066 FETCH cur_pa_ppr_str INTO l_rollup_row_id;
5067 CLOSE cur_pa_ppr_str;
5068 ELSIF p_structure_version_id IS NOT NULL AND p_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
5069 p_task_version_id IS NOT NULL AND p_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5070 THEN
5071
5072 OPEN cur_ppevs( p_task_version_id );
5073 FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5074 CLOSE cur_ppevs;
5075
5076 OPEN cur_pa_ppc_tsk( l_project_id, l_proj_element_id );
5077 FETCH cur_pa_ppc_tsk INTO l_ppc_row_id;
5078 CLOSE cur_pa_ppc_tsk;
5079
5080 OPEN cur_pa_ppr_tsk( l_project_id, l_proj_element_id );
5081 FETCH cur_pa_ppr_tsk INTO l_rollup_row_id;
5082 CLOSE cur_pa_ppr_tsk;
5083 END IF;
5084
5085 PA_PERCENT_COMPLETES_PKG.DELETE_ROW( l_ppc_row_id );
5086 PA_PROGRESS_ROLLUP_PKG.DELETE_ROW( l_rollup_row_id );
5087
5088 EXCEPTION
5089 when FND_API.G_EXC_ERROR then
5090 if p_commit = FND_API.G_TRUE then
5091 rollback to delete_progress_record;
5092 end if;
5093 x_return_status := FND_API.G_RET_STS_ERROR;
5094 when FND_API.G_EXC_UNEXPECTED_ERROR then
5095 if p_commit = FND_API.G_TRUE then
5096 rollback to delete_progress_record;
5097 end if;
5098 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5099 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5100 p_procedure_name => 'delete_progress_record',
5101 p_error_text => SUBSTRB(SQLERRM,1,120));
5102 when OTHERS then
5103 if p_commit = FND_API.G_TRUE then
5104 rollback to delete_progress_record;
5105 end if;
5106 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5107 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5108 p_procedure_name => 'delete_progress_record',
5109 p_error_text => SUBSTRB(SQLERRM,1,120));
5110 raise;
5111 END delete_progress_record;
5112
5113
5114 PROCEDURE push_down_task_status(
5115 p_api_version IN NUMBER :=1.0
5116 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5117 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5118 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5119 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5120 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5121 ,p_debug_mode IN VARCHAR2 :='N'
5122 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5123 ,p_task_status IN VARCHAR2
5124 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5125 ,p_object_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5126 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5127 ,p_object_type IN Varchar2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5128 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5129 ,p_actual_finish_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5130 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
5131 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5132 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5133 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5134 ) IS
5135
5136 l_api_name CONSTANT VARCHAR(30) := 'push_down_task_status';
5137 l_api_version CONSTANT NUMBER := 1.0;
5138
5139 l_return_status VARCHAR2(1);
5140 l_msg_count NUMBER;
5141 l_msg_data VARCHAR2(250);
5142 l_data VARCHAR2(250);
5143 l_msg_index_out NUMBER;
5144 l_error_msg_code VARCHAR2(250);
5145 l_structure_version_id NUMBER;
5146
5147 -- 3922325 : Added pa_proj_elem_ver_schedule join to get scheduled_start_date
5148 -- 4743866, modified the cursor below as join with ppc is not required in most of the cases
5149 CURSOR cur_tasks
5150 IS
5151 SELECT pobj.object_id_to1, ppev1.proj_element_id,
5152 sch.scheduled_start_date
5153 FROM
5154 ( SELECT object_id_from1, object_id_to1
5155 FROM pa_object_relationships
5156 START WITH object_id_from1 = p_object_version_id
5157 and relationship_type = 'S'
5158 CONNECT BY object_id_from1 = PRIOR object_id_to1
5159 and relationship_type = 'S'
5160 UNION -- Bug 3878024 : Added Union
5161 SELECT to_number(null) object_id_from1, p_object_version_id object_id_to1
5162 FROM DUAL
5163 ) pobj,
5164 pa_proj_element_versions ppev1,
5165 pa_proj_elem_ver_schedule sch
5166 WHERE pobj.object_id_to1 = ppev1.element_version_id
5167 AND ppev1.element_version_id = sch.element_version_id;
5168
5169 ---4743866, added following cursor on ppc to get required info
5170 cursor get_task_pc_info(l_obj_id number) is
5171 select completed_percentage, published_flag, current_flag,
5172 actual_start_date, actual_finish_date
5173 from
5174 pa_percent_completes ppc
5175 WHERE ppc.object_id = l_obj_id
5176 AND ppc.object_type = 'PA_TASKS'
5177 AND ppc.structure_type = 'WORKPLAN' -- FPM Dev CR 3
5178 AND ppc.project_id = p_project_id
5179 AND ((ppc.current_flag = 'N' AND ppc.published_flag = 'N') OR
5180 (ppc.current_flag = 'Y' AND ppc.published_flag = 'Y'))
5181 ;
5182 get_task_pc_info_rec get_task_pc_info%rowtype; ---4743866
5183
5184 -- 3922325 : Added assignment_start_date
5185 -- Bug 3878024 Begin
5186 -- 4871809 removed union and added outer join to ppr
5187 CURSOR cur_task_assignments(c_task_version_id NUMBER, c_task_id NUMBER)
5188 IS
5189 SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5190 , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5191 , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5192 , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5193 , ppr.current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5194 , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5195 , 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
5196 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5197 , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5198 , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5199 , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5200 , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5201 , 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
5202 , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5203 , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5204 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5205 , ppr.as_of_date
5206 , ptav.assignment_start_date
5207 FROM pa_task_asgmts_V ptav
5208 , pa_progress_rollup ppr
5209 WHERE ptav.task_version_id = c_task_version_id
5210 -- AND ptav.structure_version_id = l_structure_version_id
5211 AND ptav.task_id = c_task_id
5212 AND ptav.project_id = p_project_id
5213 AND ptav.ta_display_flag = 'Y'
5214 AND ppr.object_id(+) = ptav.resource_list_member_id
5215 AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
5216 AND ppr.proj_element_id(+) = c_task_id
5217 AND ppr.current_flag(+) <> 'N' ---IN ('Y', 'W')
5218 AND ppr.project_id(+) = p_project_id
5219 AND ppr.structure_type(+) = 'WORKPLAN'
5220 AND ppr.structure_version_id(+) is null
5221 ;
5222
5223 l_old_status_code VARCHAR2(150);
5224 l_status_code VARCHAR2(150);
5225 g1_debug_mode VARCHAR2(1);
5226 L_PUSH_AS_OF_DATE Date;
5227 l_etc_txn_raw_cost_this_period NUMBER ;
5228 l_etc_prj_raw_cost_this_period NUMBER ;
5229 l_etc_pfc_raw_cost_this_period NUMBER ;
5230 l_etc_txn_bur_cost_this_period NUMBER ;
5231 l_etc_prj_bur_cost_this_period NUMBER ;
5232 l_etc_pfc_bur_cost_this_period NUMBER ;
5233 l_etc_effort_incr NUMBER ;
5234 l_etc_txn_raw_cost_last NUMBER;
5235 l_etc_prj_raw_cost_last NUMBER;
5236 l_etc_pfc_raw_cost_last NUMBER;
5237 l_etc_txn_bur_cost_last NUMBER;
5238 l_etc_prj_bur_cost_last NUMBER;
5239 l_etc_pfc_bur_cost_last NUMBER;
5240 L_ETC_EFFORT_LAST NUMBER;
5241 l_msg_code VARCHAR2(30);
5242 L_BASE_STRUCT_VER_ID NUMBER;
5243 l_cur_task_old_status_code VARCHAR2(150);
5244 L_LOWEST_LEVEL_TASK VARCHAR2(1);
5245 L_ASSIGNMENT_EXISTS VARCHAR2(1);
5246
5247 l_percent_complete NUMBER;
5248 l_percent_complete_id NUMBER;
5249
5250 -- 4490532 For Hidden assignment Progress record, now we should not be reading the
5251 -- Tasks progress record, instead ot shd be Assignments
5252 -- Because tasks Progress record store Cumulative amounts from subproject too
5253 -- 4871809 removed union and added outer join to ppr
5254 CURSOR cur_system_assignment(c_task_version_id NUMBER, c_task_id NUMBER)
5255 IS
5256 SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5257 , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5258 , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5259 , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5260 , ppr.current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5261 , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5262 , 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
5263 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5264 , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5265 , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5266 , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5267 , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5268 , 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
5269 , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5270 , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5271 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5272 , ppr.as_of_date
5273 , ptav.assignment_start_date
5274 FROM pa_task_asgmts_V ptav
5275 , pa_progress_rollup ppr
5276 WHERE ptav.task_version_id = c_task_version_id
5277 -- AND ptav.structure_version_id = l_structure_version_id
5278 AND ptav.task_id = c_task_id
5279 AND ptav.project_id = p_project_id
5280 AND ptav.ta_display_flag = 'N'
5281 -- 4490532AND ppr.object_id = c_task_id
5282 -- 4490532AND ppr.object_type = 'PA_TASKS'
5283 AND ppr.object_id(+) = ptav.resource_list_member_id -- 4490532
5284 AND ppr.object_type(+) = 'PA_ASSIGNMENTS' -- 4490532
5285 AND ppr.proj_element_id(+) = c_task_id
5286 AND ppr.current_flag(+) <> 'N' ----IN ('Y', 'W')
5287 AND ppr.project_id(+) = p_project_id
5288 AND ppr.structure_type(+) = 'WORKPLAN'
5289 AND ppr.structure_version_id(+) is null
5290 ;
5291
5292 L_PROGRESS_ROLLUP_ID NUMBER;
5293 L_PROG_PA_PERIOD_NAME pa_progress_rollup.prog_pa_period_name%TYPE;
5294 L_PROG_GL_PERIOD_NAME pa_progress_rollup.prog_gl_period_name%TYPE;
5295 l_user_id NUMBER:= fnd_global.user_id;
5296 l_login_id NUMBER:= fnd_global.login_id;
5297 -- Bug 3878024 End
5298
5299 -- Bug 4282618 Begin
5300 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
5301 IS
5302 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
5303 from pa_task_types ttype
5304 , pa_proj_elements elem
5305 where elem.project_id = p_project_id
5306 and elem.proj_element_id = c_proj_element_id
5307 and elem.object_type = 'PA_TASKS'
5308 and elem.type_id = ttype.task_type_id;
5309
5310 l_prog_enabled VARCHAR2(1);
5311 l_prog_stats_code VARCHAR2(150);
5312 -- Bug 4282618 End
5313
5314
5315 BEGIN
5316
5317 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
5318
5319 IF g1_debug_mode = 'Y' THEN
5320 pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_down_task_status');
5321 END IF;
5322
5323 IF g1_debug_mode = 'Y' THEN
5324 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);
5325 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
5326 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);
5327 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
5328 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
5329 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);
5330 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
5331 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);
5332 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);
5333 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
5334 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);
5335 END IF;
5336
5337 -- Initialize OUT params : 5209741
5338 x_return_status := FND_API.G_RET_STS_SUCCESS;
5339 x_msg_data := NULL ;
5340 x_msg_count := 0 ;
5341 -- End : 5209741
5342
5343 IF (p_commit = FND_API.G_TRUE) THEN
5344 savepoint push_down_task_status;
5345 END IF;
5346
5347 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5348 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5349 END IF;
5350
5351 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5352 FND_MSG_PUB.initialize;
5353 END IF;
5354
5355 -- Bug 3878024 : Begin
5356 BEGIN
5357 SELECT parent_structure_version_id INTO l_structure_version_id
5358 FROM pa_proj_element_versions
5359 WHERE element_version_id = p_object_version_id;
5360 EXCEPTION
5361 WHEN OTHERS THEN
5362 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
5363 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
5364 p_error_text => 'Unexpected Error : Structure Version Id can not be found. Please contact System Administrator.');
5365
5366 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
5367 END;
5368 -- Bug 3878024 : End;
5369 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);
5370
5371 l_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,p_object_id);
5372
5373 ------------------ Added for FP_M changes : BEGIN
5374
5375 IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'COMPLETED' )
5376 THEN
5377
5378
5379 -- Bug 3878024 : The following code is not needed. Now the passed task is taken in the cursosr itself.
5380 /*
5381 --Update pa_proj_elements
5382 UPDATE pa_proj_elements
5383 SET status_code = p_task_status
5384 WHERE proj_element_id = p_object_id
5385 AND project_id = p_project_id;
5386
5387 -- Update Percent complete --
5388 UPDATE pa_percent_completes
5389 SET status_code = p_task_status,
5390 completed_percentage = 100,
5391 Actual_Finish_date = p_actual_finish_date
5392 WHERE object_id = P_Object_ID
5393 AND project_id = p_project_id
5394 AND date_computed = p_as_of_date
5395 AND structure_type = p_structure_type
5396 ;
5397
5398 --Update pa_progress_rollup
5399 UPDATE pa_progress_rollup
5400 SET completed_percentage = 100,
5401 Actual_Finish_date = p_actual_finish_date,
5402 EQPMT_ETC_EFFORT = 0,
5403 OTH_ETC_COST_TC = 0,
5404 OTH_ETC_COST_FC = 0,
5405 OTH_ETC_COST_PC = 0,
5406 PPL_ETC_COST_TC= 0,
5407 PPL_ETC_COST_FC= 0,
5408 PPL_ETC_COST_PC = 0,
5409 EQPMT_ETC_COST_TC = 0,
5410 EQPMT_ETC_COST_FC = 0,
5411 EQPMT_ETC_COST_PC = 0
5412 WHERE object_id = p_object_id
5413 and current_flag = 'Y'
5414 AND as_of_date = p_as_of_date
5415 AND structure_type = p_structure_type
5416 AND structure_version_id IS NULL -- Bug 3764224
5417 and current_flag <> 'W' -- Bug 3879461
5418 AND project_id = p_project_id;
5419 */
5420
5421 FOR cur_tasks_rec in cur_tasks LOOP
5422 -- Bug 4282618 Begin
5423 l_prog_enabled := 'Y';
5424 OPEN cur_prog_enabled(cur_tasks_rec.proj_element_id);
5425 FETCH cur_prog_enabled INTO l_prog_enabled;
5426 CLOSE cur_prog_enabled;
5427
5428 IF l_prog_enabled = 'N' THEN
5429 l_prog_stats_code := null;
5430 ELSE
5431 l_prog_stats_code := 'PROGRESS_STAT_ON_TRACK';
5432 END IF;
5433 -- Bug 4282618 End
5434
5435 l_cur_task_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,cur_tasks_rec.proj_element_id);
5436 -- Bug 3878024 : Begin
5437 FOR cur_task_assignments_rec in cur_task_assignments(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
5438 IF g1_debug_mode = 'Y' THEN
5439 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_task_assignments', x_Log_Level=> 3);
5440 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);
5441 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);
5442 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);
5443 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);
5444 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);
5445 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);
5446 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);
5447 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);
5448 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);
5449 END IF;
5450
5451 IF cur_task_assignments_rec.current_flag = 'Y' THEN
5452 l_push_as_of_date := cur_task_assignments_rec.as_of_date;
5453 IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5454 IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5455 l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
5456 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
5457 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
5458 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
5459 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
5460 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
5461 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
5462 ELSE
5463 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
5464 IF l_etc_effort_incr < 0 THEN
5465 l_etc_effort_incr := 0;
5466 END IF;
5467 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);
5468 IF l_etc_txn_bur_cost_this_period < 0 THEN
5469 l_etc_txn_bur_cost_this_period := 0;
5470 END IF;
5471 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);
5472 IF l_etc_prj_bur_cost_this_period < 0 THEN
5473 l_etc_prj_bur_cost_this_period := 0;
5474 END IF;
5475 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);
5476 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5477 l_etc_pfc_bur_cost_this_period := 0;
5478 END IF;
5479 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);
5480 IF l_etc_txn_raw_cost_this_period < 0 THEN
5481 l_etc_txn_raw_cost_this_period := 0;
5482 END IF;
5483 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);
5484 IF l_etc_prj_raw_cost_this_period < 0 THEN
5485 l_etc_prj_raw_cost_this_period := 0;
5486 END IF;
5487 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);
5488 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5489 l_etc_pfc_raw_cost_this_period := 0;
5490 END IF;
5491 END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5492 ELSIF cur_task_assignments_rec.resource_class_code = 'EQUIPMENT' THEN
5493 IF cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5494 l_etc_effort_incr := NVL(cur_task_assignments_rec.EQPMT_ETC_EFFORT ,0);
5495 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_TC,0);
5496 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_PC,0);
5497 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_FC,0);
5498 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_TC,0);
5499 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_PC,0);
5500 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_FC,0);
5501 ELSE
5502 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
5503 IF l_etc_effort_incr < 0 THEN
5504 l_etc_effort_incr := 0;
5505 END IF;
5506 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);
5507 IF l_etc_txn_bur_cost_this_period < 0 THEN
5508 l_etc_txn_bur_cost_this_period := 0;
5509 END IF;
5510 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);
5511 IF l_etc_prj_bur_cost_this_period < 0 THEN
5512 l_etc_prj_bur_cost_this_period := 0;
5513 END IF;
5514 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);
5515 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5516 l_etc_pfc_bur_cost_this_period := 0;
5517 END IF;
5518 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);
5519 IF l_etc_txn_raw_cost_this_period < 0 THEN
5520 l_etc_txn_raw_cost_this_period := 0;
5521 END IF;
5522 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);
5523 IF l_etc_prj_raw_cost_this_period < 0 THEN
5524 l_etc_prj_raw_cost_this_period := 0;
5525 END IF;
5526 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);
5527 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5528 l_etc_pfc_raw_cost_this_period := 0;
5529 END IF;
5530 END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5531 ELSIF cur_task_assignments_rec.resource_class_code = 'FINANCIAL_ELEMENTS' OR cur_task_assignments_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
5532 IF cur_task_assignments_rec.OTH_ETC_QUANTITY IS NOT NULL THEN
5533 l_etc_effort_incr := NVL(cur_task_assignments_rec.OTH_ETC_QUANTITY ,0);
5534 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_TC,0);
5535 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_PC,0);
5536 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_FC,0);
5537 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_TC,0);
5538 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_PC,0);
5539 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_FC,0);
5540 ELSE
5541 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.OTH_QUANTITY_TO_DATE,0);
5542 IF l_etc_effort_incr < 0 THEN
5543 l_etc_effort_incr := 0;
5544 END IF;
5545 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);
5546 IF l_etc_txn_bur_cost_this_period < 0 THEN
5547 l_etc_txn_bur_cost_this_period := 0;
5548 END IF;
5549 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);
5550 IF l_etc_prj_bur_cost_this_period < 0 THEN
5551 l_etc_prj_bur_cost_this_period := 0;
5552 END IF;
5553 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);
5554 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5555 l_etc_pfc_bur_cost_this_period := 0;
5556 END IF;
5557 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);
5558 IF l_etc_txn_raw_cost_this_period < 0 THEN
5559 l_etc_txn_raw_cost_this_period := 0;
5560 END IF;
5561 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);
5562 IF l_etc_prj_raw_cost_this_period < 0 THEN
5563 l_etc_prj_raw_cost_this_period := 0;
5564 END IF;
5565 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);
5566 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5567 l_etc_pfc_raw_cost_this_period := 0;
5568 END IF;
5569 END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5570 END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5571 ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
5572 -- Record does not exist in rollup table. Push negative planned amount
5573 l_push_as_of_date := p_as_of_date;
5574 l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
5575 l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
5576 l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
5577 l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
5578 l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
5579 l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
5580 l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
5581
5582 -- This below code is under discussion with PM's.
5583 l_PROGRESS_ROLLUP_ID := null;
5584 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
5585 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
5586
5587 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5588 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
5589 ,X_PROJECT_ID => p_project_id
5590 ,X_OBJECT_ID => cur_task_assignments_rec.resource_list_member_id
5591 ,X_OBJECT_TYPE => 'PA_ASSIGNMENTS'
5592 ,X_AS_OF_DATE => l_push_as_of_date
5593 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
5594 ,X_LAST_UPDATE_DATE => SYSDATE
5595 ,X_LAST_UPDATED_BY => l_user_id
5596 ,X_CREATION_DATE => SYSDATE
5597 ,X_CREATED_BY => l_user_id
5598 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code-- 'PROGRESS_STAT_ON_TRACK'
5599 ,X_LAST_UPDATE_LOGIN => l_login_id
5600 ,X_INCREMENTAL_WORK_QTY => null
5601 ,X_CUMULATIVE_WORK_QTY => null
5602 ,X_BASE_PERCENT_COMPLETE => null
5603 ,X_EFF_ROLLUP_PERCENT_COMP => null
5604 ,X_COMPLETED_PERCENTAGE => null
5605 ,X_ESTIMATED_START_DATE => null
5606 ,X_ESTIMATED_FINISH_DATE => null
5607 ,X_ACTUAL_START_DATE => null
5608 ,X_ACTUAL_FINISH_DATE => null
5609 ,X_EST_REMAINING_EFFORT => null
5610 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
5611 ,X_BASE_PROGRESS_STATUS_CODE => null
5612 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
5613 ,x_percent_complete_id => null
5614 ,X_STRUCTURE_TYPE => 'WORKPLAN'
5615 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
5616 ,X_STRUCTURE_VERSION_ID => null
5617 ,X_PPL_ACT_EFFORT_TO_DATE => null
5618 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
5619 ,X_EQPMT_ETC_EFFORT => null
5620 ,X_OTH_ACT_COST_TO_DATE_TC => null
5621 ,X_OTH_ACT_COST_TO_DATE_FC => null
5622 ,X_OTH_ACT_COST_TO_DATE_PC => null
5623 ,X_OTH_ETC_COST_TC => null
5624 ,X_OTH_ETC_COST_FC => null
5625 ,X_OTH_ETC_COST_PC => null
5626 ,X_PPL_ACT_COST_TO_DATE_TC => null
5627 ,X_PPL_ACT_COST_TO_DATE_FC => null
5628 ,X_PPL_ACT_COST_TO_DATE_PC => null
5629 ,X_PPL_ETC_COST_TC => null
5630 ,X_PPL_ETC_COST_FC => null
5631 ,X_PPL_ETC_COST_PC => null
5632 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
5633 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
5634 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
5635 ,X_EQPMT_ETC_COST_TC => null
5636 ,X_EQPMT_ETC_COST_FC => null
5637 ,X_EQPMT_ETC_COST_PC => null
5638 ,X_EARNED_VALUE => null
5639 ,X_TASK_WT_BASIS_CODE => null
5640 ,X_SUBPRJ_PPL_ACT_EFFORT => null
5641 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
5642 ,X_SUBPRJ_PPL_ETC_EFFORT => null
5643 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
5644 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
5645 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
5646 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
5647 ,X_SUBPRJ_PPL_ACT_COST_TC => null
5648 ,X_SUBPRJ_PPL_ACT_COST_FC => null
5649 ,X_SUBPRJ_PPL_ACT_COST_PC => null
5650 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
5651 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
5652 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
5653 ,X_SUBPRJ_OTH_ETC_COST_TC => null
5654 ,X_SUBPRJ_OTH_ETC_COST_FC => null
5655 ,X_SUBPRJ_OTH_ETC_COST_PC => null
5656 ,X_SUBPRJ_PPL_ETC_COST_TC => null
5657 ,X_SUBPRJ_PPL_ETC_COST_FC => null
5658 ,X_SUBPRJ_PPL_ETC_COST_PC => null
5659 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
5660 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
5661 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
5662 ,X_SUBPRJ_EARNED_VALUE => null
5663 ,X_CURRENT_FLAG => 'Y'
5664 ,X_PROJFUNC_COST_RATE_TYPE => null
5665 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
5666 ,X_PROJFUNC_COST_RATE_DATE => null
5667 ,X_PROJ_COST_RATE_TYPE => null
5668 ,X_PROJ_COST_EXCHANGE_RATE => null
5669 ,X_PROJ_COST_RATE_DATE => null
5670 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
5671 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
5672 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
5673 ,X_OTH_QUANTITY_TO_DATE => null
5674 ,X_OTH_ETC_QUANTITY => null
5675 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
5676 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
5677 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
5678 ,X_OTH_ETC_RAWCOST_TC => null
5679 ,X_OTH_ETC_RAWCOST_FC => null
5680 ,X_OTH_ETC_RAWCOST_PC => null
5681 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
5682 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
5683 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
5684 ,X_PPL_ETC_RAWCOST_TC => null
5685 ,X_PPL_ETC_RAWCOST_FC => null
5686 ,X_PPL_ETC_RAWCOST_PC => null
5687 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
5688 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
5689 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
5690 ,X_EQPMT_ETC_RAWCOST_TC => null
5691 ,X_EQPMT_ETC_RAWCOST_FC => null
5692 ,X_EQPMT_ETC_RAWCOST_PC => null
5693 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
5694 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
5695 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
5696 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
5697 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
5698 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
5699 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
5700 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
5701 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
5702 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
5703 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
5704 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
5705 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
5706 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
5707 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
5708 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
5709 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
5710 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
5711 );
5712
5713 IF Fnd_Msg_Pub.count_msg > 0 THEN
5714 RAISE FND_API.G_EXC_ERROR;
5715 END IF;
5716 END IF; -- cur_task_assignments_rec.current_flag = 'Y' THEN
5717
5718 IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
5719 l_etc_effort_incr := l_etc_effort_incr * (-1);
5720 l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
5721 l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
5722 l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
5723 l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
5724 l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
5725 l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
5726
5727 -- Bug 4144845 : Removed Completed check from push workplan actuals.
5728 --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <> 'COMPLETED' THEN
5729 IF g1_debug_mode = 'Y' THEN
5730 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Pushing Negative Amounts To PJI', x_Log_Level=> 3);
5731 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);
5732 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);
5733 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);
5734 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);
5735 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);
5736 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);
5737 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);
5738 END IF;
5739
5740 PA_PROGRESS_PUB.push_workplan_actuals(
5741 p_project_Id => p_project_id,
5742 p_structure_version_id => l_structure_version_id,
5743 p_proj_element_id => cur_task_assignments_rec.proj_element_id,
5744 p_object_id => cur_task_assignments_rec.resource_list_member_id,
5745 p_object_type => 'PA_ASSIGNMENTS',
5746 p_as_of_date => l_push_as_of_date,
5747 p_rbs_element_id => cur_task_assignments_rec.rbs_element_id,
5748 p_rate_based_flag => cur_task_assignments_rec.rate_based_flag,
5749 p_resource_class_code => cur_task_assignments_rec.resource_class_code,
5750 p_act_TXN_COST_this_period => null,
5751 p_act_PRJ_COST_this_period => null,
5752 p_act_POU_COST_this_period => null,
5753 p_act_effort_this_period => null,
5754 p_etc_TXN_COST_this_period => l_etc_txn_bur_cost_this_period,
5755 p_etc_PRJ_COST_this_period => l_etc_prj_bur_cost_this_period,
5756 p_etc_POU_COST_this_period => l_etc_pfc_bur_cost_this_period,
5757 p_etc_effort_this_period => l_etc_effort_incr,
5758 p_act_TXN_raw_COST_this_period => null,
5759 p_act_PRJ_raw_COST_this_period => null,
5760 p_act_POU_raw_COST_this_period => null,
5761 p_etc_TXN_raw_COST_this_period => l_etc_txn_raw_cost_this_period,
5762 p_etc_PRJ_raw_COST_this_period => l_etc_prj_raw_cost_this_period,
5763 p_etc_POU_raw_COST_this_period => l_etc_pfc_raw_cost_this_period,
5764 p_txn_currency_code => cur_task_assignments_rec.txn_currency_code,
5765 p_prj_currency_code => null,
5766 p_pfn_currency_code => null,
5767 p_pa_period_name => null,
5768 p_gl_period_name => null,
5769 p_call_pji_apis_flag => 'N',
5770 x_return_status => x_return_status,
5771 x_msg_count => x_msg_count,
5772 x_msg_data => x_msg_data
5773 );
5774 --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <> 'COMPLETED' THEN
5775 END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
5776
5777 -- Update Percent complete --
5778 UPDATE pa_percent_completes
5779 SET Actual_Finish_date = p_actual_finish_date
5780 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
5781 AND project_id = p_project_id
5782 AND task_id = cur_task_assignments_rec.proj_element_id
5783 AND object_type = 'PA_ASSIGNMENTS'
5784 AND structure_type = p_structure_type
5785 AND ((current_flag = 'Y' and published_flag = 'Y') or
5786 (current_flag = 'N' and published_flag = 'N'))
5787 ;
5788
5789 --Update pa_progress_rollup
5790 UPDATE pa_progress_rollup
5791 SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
5792 Actual_Finish_date = p_actual_finish_date,
5793 estimated_remaining_effort = 0,
5794 EQPMT_ETC_EFFORT = 0,
5795 oth_etc_quantity = 0,
5796 OTH_ETC_COST_TC = 0,
5797 OTH_ETC_COST_FC = 0,
5798 OTH_ETC_COST_PC = 0,
5799 OTH_ETC_RAWCOST_TC = 0,
5800 OTH_ETC_RAWCOST_FC = 0,
5801 OTH_ETC_RAWCOST_PC = 0,
5802 PPL_ETC_COST_TC= 0,
5803 PPL_ETC_COST_FC= 0,
5804 PPL_ETC_COST_PC = 0,
5805 PPL_ETC_RAWCOST_TC= 0,
5806 PPL_ETC_RAWCOST_FC= 0,
5807 PPL_ETC_RAWCOST_PC = 0,
5808 EQPMT_ETC_COST_TC = 0,
5809 EQPMT_ETC_COST_FC = 0,
5810 EQPMT_ETC_COST_PC = 0,
5811 EQPMT_ETC_RAWCOST_TC = 0,
5812 EQPMT_ETC_RAWCOST_FC = 0,
5813 EQPMT_ETC_RAWCOST_PC = 0
5814 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
5815 and current_flag IN ('Y', 'W')
5816 AND object_type = 'PA_ASSIGNMENTS'
5817 AND structure_type = p_structure_type
5818 AND proj_element_id = cur_task_assignments_rec.proj_element_id
5819 AND structure_version_id IS NULL
5820 AND project_id = p_project_id;
5821
5822 END LOOP; -- cur_task_assignments_rec in cur_task_assignments(p_object_version_id, p_object_id) LOOP
5823
5824 -- Now tasks processing starts
5825 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
5826 --l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => cur_tasks_rec.object_id_to1 );
5827 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure( cur_tasks_rec.object_id_to1) = 'Y' THEN
5828 l_lowest_level_task := 'N';
5829 ELSE
5830 l_lowest_level_task := 'Y';
5831 END IF;
5832 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,cur_tasks_rec.object_id_to1,'PA_TASKS');
5833 IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
5834 -- Find the hidden assignment and push the task progress value against it
5835 FOR cur_task_assignments_rec in cur_system_assignment(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
5836 IF g1_debug_mode = 'Y' THEN
5837 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_system_assignment', x_Log_Level=> 3);
5838 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);
5839 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);
5840 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);
5841 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);
5842 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);
5843 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);
5844 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);
5845 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);
5846 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);
5847 END IF;
5848
5849 IF cur_task_assignments_rec.current_flag = 'Y' THEN
5850 l_push_as_of_date := cur_task_assignments_rec.as_of_date;
5851 -- Hidden assignment is people only
5852 IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5853 IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5854 l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
5855 l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
5856 l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
5857 l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
5858 l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
5859 l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
5860 l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
5861 ELSE
5862 l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
5863 IF l_etc_effort_incr < 0 THEN
5864 l_etc_effort_incr := 0;
5865 END IF;
5866 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);
5867 IF l_etc_txn_bur_cost_this_period < 0 THEN
5868 l_etc_txn_bur_cost_this_period := 0;
5869 END IF;
5870 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);
5871 IF l_etc_prj_bur_cost_this_period < 0 THEN
5872 l_etc_prj_bur_cost_this_period := 0;
5873 END IF;
5874 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);
5875 IF l_etc_pfc_bur_cost_this_period < 0 THEN
5876 l_etc_pfc_bur_cost_this_period := 0;
5877 END IF;
5878 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);
5879 IF l_etc_txn_raw_cost_this_period < 0 THEN
5880 l_etc_txn_raw_cost_this_period := 0;
5881 END IF;
5882 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);
5883 IF l_etc_prj_raw_cost_this_period < 0 THEN
5884 l_etc_prj_raw_cost_this_period := 0;
5885 END IF;
5886 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);
5887 IF l_etc_pfc_raw_cost_this_period < 0 THEN
5888 l_etc_pfc_raw_cost_this_period := 0;
5889 END IF;
5890 END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5891 END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5892 ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
5893 -- Record does not exist in rollup table. Push negative planned amount
5894 l_push_as_of_date := p_as_of_date;
5895 l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
5896 l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
5897 l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
5898 l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
5899 l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
5900 l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
5901 l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
5902
5903 -- This below code is under discussion with PM's.
5904 l_PROGRESS_ROLLUP_ID := null;
5905 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
5906 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
5907
5908 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5909 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
5910 ,X_PROJECT_ID => p_project_id
5911 ,X_OBJECT_ID => cur_task_assignments_rec.proj_element_id
5912 ,X_OBJECT_TYPE => 'PA_TASKS'
5913 ,X_AS_OF_DATE => l_push_as_of_date
5914 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
5915 ,X_LAST_UPDATE_DATE => SYSDATE
5916 ,X_LAST_UPDATED_BY => l_user_id
5917 ,X_CREATION_DATE => SYSDATE
5918 ,X_CREATED_BY => l_user_id
5919 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
5920 ,X_LAST_UPDATE_LOGIN => l_login_id
5921 ,X_INCREMENTAL_WORK_QTY => null
5922 ,X_CUMULATIVE_WORK_QTY => null
5923 ,X_BASE_PERCENT_COMPLETE => null
5924 ,X_EFF_ROLLUP_PERCENT_COMP => null
5925 ,X_COMPLETED_PERCENTAGE => 100
5926 ,X_ESTIMATED_START_DATE => null
5927 ,X_ESTIMATED_FINISH_DATE => null
5928 ,X_ACTUAL_START_DATE => null
5929 ,X_ACTUAL_FINISH_DATE => null
5930 ,X_EST_REMAINING_EFFORT => null
5931 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
5932 ,X_BASE_PROGRESS_STATUS_CODE => null
5933 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
5934 ,x_percent_complete_id => null
5935 ,X_STRUCTURE_TYPE => 'WORKPLAN'
5936 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
5937 ,X_STRUCTURE_VERSION_ID => null
5938 ,X_PPL_ACT_EFFORT_TO_DATE => null
5939 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
5940 ,X_EQPMT_ETC_EFFORT => null
5941 ,X_OTH_ACT_COST_TO_DATE_TC => null
5942 ,X_OTH_ACT_COST_TO_DATE_FC => null
5943 ,X_OTH_ACT_COST_TO_DATE_PC => null
5944 ,X_OTH_ETC_COST_TC => null
5945 ,X_OTH_ETC_COST_FC => null
5946 ,X_OTH_ETC_COST_PC => null
5947 ,X_PPL_ACT_COST_TO_DATE_TC => null
5948 ,X_PPL_ACT_COST_TO_DATE_FC => null
5949 ,X_PPL_ACT_COST_TO_DATE_PC => null
5950 ,X_PPL_ETC_COST_TC => null
5951 ,X_PPL_ETC_COST_FC => null
5952 ,X_PPL_ETC_COST_PC => null
5953 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
5954 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
5955 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
5956 ,X_EQPMT_ETC_COST_TC => null
5957 ,X_EQPMT_ETC_COST_FC => null
5958 ,X_EQPMT_ETC_COST_PC => null
5959 ,X_EARNED_VALUE => null
5960 ,X_TASK_WT_BASIS_CODE => null
5961 ,X_SUBPRJ_PPL_ACT_EFFORT => null
5962 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
5963 ,X_SUBPRJ_PPL_ETC_EFFORT => null
5964 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
5965 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
5966 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
5967 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
5968 ,X_SUBPRJ_PPL_ACT_COST_TC => null
5969 ,X_SUBPRJ_PPL_ACT_COST_FC => null
5970 ,X_SUBPRJ_PPL_ACT_COST_PC => null
5971 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
5972 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
5973 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
5974 ,X_SUBPRJ_OTH_ETC_COST_TC => null
5975 ,X_SUBPRJ_OTH_ETC_COST_FC => null
5976 ,X_SUBPRJ_OTH_ETC_COST_PC => null
5977 ,X_SUBPRJ_PPL_ETC_COST_TC => null
5978 ,X_SUBPRJ_PPL_ETC_COST_FC => null
5979 ,X_SUBPRJ_PPL_ETC_COST_PC => null
5980 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
5981 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
5982 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
5983 ,X_SUBPRJ_EARNED_VALUE => null
5984 ,X_CURRENT_FLAG => 'Y'
5985 ,X_PROJFUNC_COST_RATE_TYPE => null
5986 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
5987 ,X_PROJFUNC_COST_RATE_DATE => null
5988 ,X_PROJ_COST_RATE_TYPE => null
5989 ,X_PROJ_COST_EXCHANGE_RATE => null
5990 ,X_PROJ_COST_RATE_DATE => null
5991 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
5992 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
5993 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
5994 ,X_OTH_QUANTITY_TO_DATE => null
5995 ,X_OTH_ETC_QUANTITY => null
5996 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
5997 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
5998 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
5999 ,X_OTH_ETC_RAWCOST_TC => null
6000 ,X_OTH_ETC_RAWCOST_FC => null
6001 ,X_OTH_ETC_RAWCOST_PC => null
6002 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6003 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6004 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6005 ,X_PPL_ETC_RAWCOST_TC => null
6006 ,X_PPL_ETC_RAWCOST_FC => null
6007 ,X_PPL_ETC_RAWCOST_PC => null
6008 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6009 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6010 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6011 ,X_EQPMT_ETC_RAWCOST_TC => null
6012 ,X_EQPMT_ETC_RAWCOST_FC => null
6013 ,X_EQPMT_ETC_RAWCOST_PC => null
6014 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6015 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6016 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6017 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6018 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6019 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6020 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6021 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6022 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6023 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6024 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6025 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6026 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6027 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6028 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6029 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6030 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6031 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6032 );
6033
6034 IF Fnd_Msg_Pub.count_msg > 0 THEN
6035 RAISE FND_API.G_EXC_ERROR;
6036 END IF;
6037
6038 -- Bug 3922325 : Hidden Assignment record also shd get created
6039
6040 l_PROGRESS_ROLLUP_ID := null;
6041
6042 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6043 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
6044 ,X_PROJECT_ID => p_project_id
6045 ,X_OBJECT_ID => cur_task_assignments_rec.resource_list_member_id
6046 ,X_OBJECT_TYPE => 'PA_ASSIGNMENTS'
6047 ,X_AS_OF_DATE => l_push_as_of_date
6048 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
6049 ,X_LAST_UPDATE_DATE => SYSDATE
6050 ,X_LAST_UPDATED_BY => l_user_id
6051 ,X_CREATION_DATE => SYSDATE
6052 ,X_CREATED_BY => l_user_id
6053 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6054 ,X_LAST_UPDATE_LOGIN => l_login_id
6055 ,X_INCREMENTAL_WORK_QTY => null
6056 ,X_CUMULATIVE_WORK_QTY => null
6057 ,X_BASE_PERCENT_COMPLETE => null
6058 ,X_EFF_ROLLUP_PERCENT_COMP => null
6059 ,X_COMPLETED_PERCENTAGE => null
6060 ,X_ESTIMATED_START_DATE => null
6061 ,X_ESTIMATED_FINISH_DATE => null
6062 ,X_ACTUAL_START_DATE => null
6063 ,X_ACTUAL_FINISH_DATE => null
6064 ,X_EST_REMAINING_EFFORT => null
6065 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6066 ,X_BASE_PROGRESS_STATUS_CODE => null
6067 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6068 ,x_percent_complete_id => null
6069 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6070 ,X_PROJ_ELEMENT_ID => cur_task_assignments_rec.proj_element_id
6071 ,X_STRUCTURE_VERSION_ID => null
6072 ,X_PPL_ACT_EFFORT_TO_DATE => null
6073 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6074 ,X_EQPMT_ETC_EFFORT => null
6075 ,X_OTH_ACT_COST_TO_DATE_TC => null
6076 ,X_OTH_ACT_COST_TO_DATE_FC => null
6077 ,X_OTH_ACT_COST_TO_DATE_PC => null
6078 ,X_OTH_ETC_COST_TC => null
6079 ,X_OTH_ETC_COST_FC => null
6080 ,X_OTH_ETC_COST_PC => null
6081 ,X_PPL_ACT_COST_TO_DATE_TC => null
6082 ,X_PPL_ACT_COST_TO_DATE_FC => null
6083 ,X_PPL_ACT_COST_TO_DATE_PC => null
6084 ,X_PPL_ETC_COST_TC => null
6085 ,X_PPL_ETC_COST_FC => null
6086 ,X_PPL_ETC_COST_PC => null
6087 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6088 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6089 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6090 ,X_EQPMT_ETC_COST_TC => null
6091 ,X_EQPMT_ETC_COST_FC => null
6092 ,X_EQPMT_ETC_COST_PC => null
6093 ,X_EARNED_VALUE => null
6094 ,X_TASK_WT_BASIS_CODE => null
6095 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6096 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6097 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6098 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6099 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6100 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6101 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6102 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6103 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6104 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6105 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6106 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6107 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6108 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6109 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6110 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6111 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6112 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6113 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6114 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6115 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6116 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6117 ,X_SUBPRJ_EARNED_VALUE => null
6118 ,X_CURRENT_FLAG => 'Y'
6119 ,X_PROJFUNC_COST_RATE_TYPE => null
6120 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6121 ,X_PROJFUNC_COST_RATE_DATE => null
6122 ,X_PROJ_COST_RATE_TYPE => null
6123 ,X_PROJ_COST_EXCHANGE_RATE => null
6124 ,X_PROJ_COST_RATE_DATE => null
6125 ,X_TXN_CURRENCY_CODE => cur_task_assignments_rec.txn_currency_code
6126 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6127 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6128 ,X_OTH_QUANTITY_TO_DATE => null
6129 ,X_OTH_ETC_QUANTITY => null
6130 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6131 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6132 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6133 ,X_OTH_ETC_RAWCOST_TC => null
6134 ,X_OTH_ETC_RAWCOST_FC => null
6135 ,X_OTH_ETC_RAWCOST_PC => null
6136 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6137 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6138 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6139 ,X_PPL_ETC_RAWCOST_TC => null
6140 ,X_PPL_ETC_RAWCOST_FC => null
6141 ,X_PPL_ETC_RAWCOST_PC => null
6142 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6143 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6144 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6145 ,X_EQPMT_ETC_RAWCOST_TC => null
6146 ,X_EQPMT_ETC_RAWCOST_FC => null
6147 ,X_EQPMT_ETC_RAWCOST_PC => null
6148 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6149 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6150 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6151 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6152 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6153 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6154 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6155 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6156 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6157 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6158 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6159 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6160 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6161 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6162 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6163 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6164 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6165 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6166 );
6167
6168 IF Fnd_Msg_Pub.count_msg > 0 THEN
6169 RAISE FND_API.G_EXC_ERROR;
6170 END IF;
6171
6172 END IF; -- cur_task_assignments_rec.current_flag = 'Y' THEN
6173
6174 IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6175 l_etc_effort_incr := l_etc_effort_incr * (-1);
6176 l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
6177 l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
6178 l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
6179 l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
6180 l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
6181 l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
6182
6183 -- Bug 4144845 : Removed Completed check from push workplan actuals.
6184 --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <> 'COMPLETED' THEN
6185 IF g1_debug_mode = 'Y' THEN
6186 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);
6187 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);
6188 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);
6189 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);
6190 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);
6191 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);
6192 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);
6193 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);
6194 END IF;
6195
6196 PA_PROGRESS_PUB.push_workplan_actuals(
6197 p_project_Id => p_project_id,
6198 p_structure_version_id => l_structure_version_id,
6199 p_proj_element_id => cur_task_assignments_rec.proj_element_id,
6200 p_object_id => cur_task_assignments_rec.proj_element_id,
6201 p_object_type => 'PA_TASKS',
6202 p_as_of_date => l_push_as_of_date,
6203 p_rbs_element_id => cur_task_assignments_rec.rbs_element_id,
6204 p_rate_based_flag => cur_task_assignments_rec.rate_based_flag,
6205 p_resource_class_code => cur_task_assignments_rec.resource_class_code,
6206 p_act_TXN_COST_this_period => null,
6207 p_act_PRJ_COST_this_period => null,
6208 p_act_POU_COST_this_period => null,
6209 p_act_effort_this_period => null,
6210 p_etc_TXN_COST_this_period => l_etc_txn_bur_cost_this_period,
6211 p_etc_PRJ_COST_this_period => l_etc_prj_bur_cost_this_period,
6212 p_etc_POU_COST_this_period => l_etc_pfc_bur_cost_this_period,
6213 p_etc_effort_this_period => l_etc_effort_incr,
6214 p_act_TXN_raw_COST_this_period => null,
6215 p_act_PRJ_raw_COST_this_period => null,
6216 p_act_POU_raw_COST_this_period => null,
6217 p_etc_TXN_raw_COST_this_period => l_etc_txn_raw_cost_this_period,
6218 p_etc_PRJ_raw_COST_this_period => l_etc_prj_raw_cost_this_period,
6219 p_etc_POU_raw_COST_this_period => l_etc_pfc_raw_cost_this_period,
6220 p_txn_currency_code => cur_task_assignments_rec.txn_currency_code,
6221 p_prj_currency_code => null,
6222 p_pfn_currency_code => null,
6223 p_pa_period_name => null,
6224 p_gl_period_name => null,
6225 p_call_pji_apis_flag => 'N',
6226 x_return_status => x_return_status,
6227 x_msg_count => x_msg_count,
6228 x_msg_data => x_msg_data
6229 );
6230 --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <> 'COMPLETED' THEN
6231 END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6232 -- Bug 3922325 : Hidden Assignment records also shd be updated
6233 UPDATE pa_progress_rollup
6234 SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
6235 Actual_Finish_date = p_actual_finish_date,
6236 estimated_remaining_effort = 0,
6237 EQPMT_ETC_EFFORT = 0,
6238 oth_etc_quantity = 0,
6239 OTH_ETC_COST_TC = 0,
6240 OTH_ETC_COST_FC = 0,
6241 OTH_ETC_COST_PC = 0,
6242 OTH_ETC_RAWCOST_TC = 0,
6243 OTH_ETC_RAWCOST_FC = 0,
6244 OTH_ETC_RAWCOST_PC = 0,
6245 PPL_ETC_COST_TC= 0,
6246 PPL_ETC_COST_FC= 0,
6247 PPL_ETC_COST_PC = 0,
6248 PPL_ETC_RAWCOST_TC= 0,
6249 PPL_ETC_RAWCOST_FC= 0,
6250 PPL_ETC_RAWCOST_PC = 0,
6251 EQPMT_ETC_COST_TC = 0,
6252 EQPMT_ETC_COST_FC = 0,
6253 EQPMT_ETC_COST_PC = 0,
6254 EQPMT_ETC_RAWCOST_TC = 0,
6255 EQPMT_ETC_RAWCOST_FC = 0,
6256 EQPMT_ETC_RAWCOST_PC = 0
6257 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6258 and current_flag IN ('Y', 'W')
6259 AND object_type = 'PA_ASSIGNMENTS'
6260 AND structure_type = p_structure_type
6261 AND proj_element_id = cur_task_assignments_rec.proj_element_id
6262 AND structure_version_id IS NULL
6263 AND project_id = p_project_id;
6264 END LOOP; -- cur_task_assignments_rec in cur_system_assignment(p_object_version_id, p_object_id) LOOP
6265 END IF; -- IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
6266
6267 --Update pa_proj_elements
6268 UPDATE pa_proj_elements
6269 SET status_code = p_task_status
6270 ,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6271 ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6272 ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id) --Bug 5978904
6273 WHERE proj_element_id = cur_tasks_rec.proj_element_id
6274 AND project_id = p_project_id
6275 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6276 NOT IN ( 'CANCELLED', 'COMPLETED' );
6277
6278
6279 -- Update Percent complete --
6280 UPDATE pa_percent_completes
6281 SET status_code = p_task_status,
6282 completed_percentage = 100,
6283 Actual_Finish_date = p_actual_finish_date,
6284 actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date)
6285 WHERE object_id = cur_tasks_rec.proj_element_id
6286 AND project_id = p_project_id
6287 AND task_id = cur_tasks_rec.proj_element_id
6288 AND object_type = 'PA_TASKS'
6289 AND structure_type = p_structure_type
6290 AND ((current_flag = 'Y' and published_flag = 'Y') or
6291 (current_flag = 'N' and published_flag = 'N'))
6292 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6293 NOT IN ( 'CANCELLED', 'COMPLETED' )
6294 ;
6295
6296 --Update pa_progress_rollup
6297 UPDATE pa_progress_rollup
6298 SET Actual_Finish_date = p_actual_finish_date,
6299 actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date),
6300 completed_percentage = 100,
6301 estimated_remaining_effort = 0,
6302 EQPMT_ETC_EFFORT = 0,
6303 oth_etc_quantity = 0,
6304 OTH_ETC_COST_TC = 0,
6305 OTH_ETC_COST_FC = 0,
6306 OTH_ETC_COST_PC = 0,
6307 OTH_ETC_RAWCOST_TC = 0,
6308 OTH_ETC_RAWCOST_FC = 0,
6309 OTH_ETC_RAWCOST_PC = 0,
6310 PPL_ETC_COST_TC= 0,
6311 PPL_ETC_COST_FC= 0,
6312 PPL_ETC_COST_PC = 0,
6313 PPL_ETC_RAWCOST_TC= 0,
6314 PPL_ETC_RAWCOST_FC= 0,
6315 PPL_ETC_RAWCOST_PC = 0,
6316 EQPMT_ETC_COST_TC = 0,
6317 EQPMT_ETC_COST_FC = 0,
6318 EQPMT_ETC_COST_PC = 0,
6319 EQPMT_ETC_RAWCOST_TC = 0,
6320 EQPMT_ETC_RAWCOST_FC = 0,
6321 EQPMT_ETC_RAWCOST_PC = 0
6322 WHERE object_id = cur_tasks_rec.proj_element_id
6323 and current_flag IN ('Y', 'W')
6324 AND object_type = 'PA_TASKS'
6325 AND structure_type = p_structure_type
6326 AND proj_element_id = cur_tasks_rec.proj_element_id
6327 AND structure_version_id IS NULL
6328 AND project_id = p_project_id;
6329
6330 -- 3922325 : Added code to create task record if they do not exists
6331 IF sql%notfound THEN
6332 IF g1_debug_mode = 'Y' THEN
6333 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);
6334 END IF;
6335
6336 l_percent_complete := 100;
6337 l_PROGRESS_ROLLUP_ID := null;
6338 l_push_as_of_date := p_as_of_date;
6339 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
6340 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
6341
6342 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6343 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
6344 ,X_PROJECT_ID =>p_project_id
6345 ,X_OBJECT_ID => cur_tasks_rec.proj_element_id
6346 ,X_OBJECT_TYPE => 'PA_TASKS'
6347 ,X_AS_OF_DATE => l_push_as_of_date
6348 ,X_OBJECT_VERSION_ID => cur_tasks_rec.object_id_to1
6349 ,X_LAST_UPDATE_DATE => SYSDATE
6350 ,X_LAST_UPDATED_BY => l_user_id
6351 ,X_CREATION_DATE => SYSDATE
6352 ,X_CREATED_BY => l_user_id
6353 ,X_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6354 ,X_LAST_UPDATE_LOGIN => l_login_id
6355 ,X_INCREMENTAL_WORK_QTY => null
6356 ,X_CUMULATIVE_WORK_QTY => null
6357 ,X_BASE_PERCENT_COMPLETE => null
6358 ,X_EFF_ROLLUP_PERCENT_COMP => null
6359 ,X_COMPLETED_PERCENTAGE => l_percent_complete
6360 ,X_ESTIMATED_START_DATE => null
6361 ,X_ESTIMATED_FINISH_DATE => null
6362 ,X_ACTUAL_START_DATE => cur_tasks_rec.scheduled_start_date
6363 ,X_ACTUAL_FINISH_DATE => p_actual_finish_date
6364 ,X_EST_REMAINING_EFFORT => null
6365 ,X_BASE_PERCENT_COMP_DERIV_CODE => null
6366 ,X_BASE_PROGRESS_STATUS_CODE => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6367 ,X_EFF_ROLLUP_PROG_STAT_CODE => null
6368 ,x_percent_complete_id => null
6369 ,X_STRUCTURE_TYPE => 'WORKPLAN'
6370 ,X_PROJ_ELEMENT_ID => cur_tasks_rec.proj_element_id
6371 ,X_STRUCTURE_VERSION_ID => null
6372 ,X_PPL_ACT_EFFORT_TO_DATE => null
6373 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
6374 ,X_EQPMT_ETC_EFFORT => null
6375 ,X_OTH_ACT_COST_TO_DATE_TC => null
6376 ,X_OTH_ACT_COST_TO_DATE_FC => null
6377 ,X_OTH_ACT_COST_TO_DATE_PC => null
6378 ,X_OTH_ETC_COST_TC => null
6379 ,X_OTH_ETC_COST_FC => null
6380 ,X_OTH_ETC_COST_PC => null
6381 ,X_PPL_ACT_COST_TO_DATE_TC => null
6382 ,X_PPL_ACT_COST_TO_DATE_FC => null
6383 ,X_PPL_ACT_COST_TO_DATE_PC => null
6384 ,X_PPL_ETC_COST_TC => null
6385 ,X_PPL_ETC_COST_FC => null
6386 ,X_PPL_ETC_COST_PC => null
6387 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
6388 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
6389 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
6390 ,X_EQPMT_ETC_COST_TC => null
6391 ,X_EQPMT_ETC_COST_FC => null
6392 ,X_EQPMT_ETC_COST_PC => null
6393 ,X_EARNED_VALUE => null
6394 ,X_TASK_WT_BASIS_CODE => null
6395 ,X_SUBPRJ_PPL_ACT_EFFORT => null
6396 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
6397 ,X_SUBPRJ_PPL_ETC_EFFORT => null
6398 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
6399 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
6400 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
6401 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
6402 ,X_SUBPRJ_PPL_ACT_COST_TC => null
6403 ,X_SUBPRJ_PPL_ACT_COST_FC => null
6404 ,X_SUBPRJ_PPL_ACT_COST_PC => null
6405 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
6406 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
6407 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
6408 ,X_SUBPRJ_OTH_ETC_COST_TC => null
6409 ,X_SUBPRJ_OTH_ETC_COST_FC => null
6410 ,X_SUBPRJ_OTH_ETC_COST_PC => null
6411 ,X_SUBPRJ_PPL_ETC_COST_TC => null
6412 ,X_SUBPRJ_PPL_ETC_COST_FC => null
6413 ,X_SUBPRJ_PPL_ETC_COST_PC => null
6414 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
6415 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
6416 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
6417 ,X_SUBPRJ_EARNED_VALUE => null
6418 ,X_CURRENT_FLAG => 'Y'
6419 ,X_PROJFUNC_COST_RATE_TYPE => null
6420 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
6421 ,X_PROJFUNC_COST_RATE_DATE => null
6422 ,X_PROJ_COST_RATE_TYPE => null
6423 ,X_PROJ_COST_EXCHANGE_RATE => null
6424 ,X_PROJ_COST_RATE_DATE => null
6425 ,X_TXN_CURRENCY_CODE => null
6426 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
6427 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
6428 ,X_OTH_QUANTITY_TO_DATE => null
6429 ,X_OTH_ETC_QUANTITY => null
6430 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
6431 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
6432 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
6433 ,X_OTH_ETC_RAWCOST_TC => null
6434 ,X_OTH_ETC_RAWCOST_FC => null
6435 ,X_OTH_ETC_RAWCOST_PC => null
6436 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
6437 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
6438 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
6439 ,X_PPL_ETC_RAWCOST_TC => null
6440 ,X_PPL_ETC_RAWCOST_FC => null
6441 ,X_PPL_ETC_RAWCOST_PC => null
6442 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
6443 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
6444 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
6445 ,X_EQPMT_ETC_RAWCOST_TC => null
6446 ,X_EQPMT_ETC_RAWCOST_FC => null
6447 ,X_EQPMT_ETC_RAWCOST_PC => null
6448 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
6449 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
6450 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
6451 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
6452 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
6453 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
6454 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
6455 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
6456 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
6457 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
6458 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
6459 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
6460 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
6461 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
6462 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
6463 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
6464 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
6465 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
6466 );
6467
6468 IF Fnd_Msg_Pub.count_msg > 0 THEN
6469 RAISE FND_API.G_EXC_ERROR;
6470 END IF;
6471
6472 IF g1_debug_mode = 'Y' THEN
6473 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted Tasks Record in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
6474 END IF;
6475 END IF;
6476
6477 END LOOP;
6478 -- Bug 3922325 : No Need to call plan_update here. It will be taken care in update_progress code
6479 /*
6480 BEGIN
6481 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (x_msg_code => l_msg_code,
6482 x_return_status => x_return_status);
6483 EXCEPTION
6484 WHEN OTHERS THEN
6485 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6486 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6487 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
6488 RAISE FND_API.G_EXC_ERROR;
6489 END;
6490
6491 IF x_return_status <> 'S' THEN
6492 RAISE FND_API.G_EXC_ERROR;
6493 END IF;
6494
6495 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
6496
6497 IF (l_base_struct_ver_id = -1) THEN
6498 l_base_struct_ver_id := l_structure_version_id;
6499 END IF;
6500
6501 BEGIN
6502 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
6503 p_project_id => p_project_id,
6504 p_struct_ver_id => l_structure_version_id,
6505 p_base_struct_ver_id => l_base_struct_ver_id,
6506 x_return_status => x_return_status,
6507 x_msg_code => l_msg_code
6508 );
6509 EXCEPTION
6510 WHEN OTHERS THEN
6511 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6512 p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6513 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
6514 RAISE FND_API.G_EXC_ERROR;
6515 END;
6516
6517 IF x_return_status <> 'S' THEN
6518 RAISE FND_API.G_EXC_ERROR;
6519 END IF;
6520 -- Bug 3878024 : End
6521 */
6522 END IF;
6523 ------------------ Added for FP_M changes : END
6524
6525 IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'CANCELLED', 'ON_HOLD' )
6526 THEN
6527 -- Bug 3878024 : Commented the below code. Now cursor cur_tasks_rec will select the passed task too
6528 /*
6529 --Update pa_proj_elementso
6530 UPDATE pa_proj_elements
6531 SET status_code = p_task_status
6532 WHERE proj_element_id = p_object_id
6533 AND project_id = p_project_id;
6534
6535 -- FP M : 3491609 : Project Execution Workflow
6536
6537 -- Cancel the WF if its running.
6538 If p_task_status = 'CANCELLED' then
6539 PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF
6540 ( p_task_id => p_object_id
6541 ,x_msg_count => x_msg_count
6542 ,x_msg_data => x_msg_data
6543 ,x_return_status => x_return_status
6544 ) ;
6545
6546 if x_return_status <> FND_API.g_ret_sts_success then
6547 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6548 end if ;
6549 end if ;
6550
6551 -- FP M : 3491609 : Project Execution Workflow
6552 */
6553
6554
6555 FOR cur_tasks_rec in cur_tasks LOOP
6556 --Update pa_proj_elementso
6557 UPDATE pa_proj_elements
6558 SET status_code = p_task_status
6559 ,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6560 ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6561 ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id) --Bug 5978904
6562 WHERE proj_element_id = cur_tasks_rec.proj_element_id
6563 AND project_id = p_project_id
6564 and object_type = 'PA_TASKS'
6565 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6566 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6567 NOT IN ( 'CANCELLED', 'COMPLETED' );
6568
6569 UPDATE pa_percent_completes
6570 SET status_code = p_task_status
6571 WHERE object_id = cur_tasks_rec.proj_element_id
6572 AND project_id = p_project_id
6573 and object_type = 'PA_TASKS'
6574 and structure_type = p_structure_type -- FPM Dev CR 3
6575 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6576 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6577 NOT IN ( 'CANCELLED', 'COMPLETED' )
6578 AND ((current_flag = 'Y' and published_flag = 'Y') or
6579 (current_flag = 'N' and published_flag = 'N'));
6580
6581 -- FP M : 3491609 : Project Execution Workflow
6582
6583 -- Cancel the WF if its running.
6584 If p_task_status = 'CANCELLED' then
6585 PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF (
6586 p_task_id => cur_tasks_rec.proj_element_id
6587 ,x_msg_count => x_msg_count
6588 ,x_msg_data => x_msg_data
6589 ,x_return_status => x_return_status
6590 ) ;
6591
6592 if x_return_status <> FND_API.g_ret_sts_success then
6593 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6594 end if ;
6595
6596 end if ;
6597 -- FP M : 3491609 : Project Execution Workflow
6598 END LOOP;
6599 ELSE
6600
6601 IF PA_PROGRESS_UTILS.get_system_task_status ( l_old_status_code ) = 'ON_HOLD'
6602 THEN
6603 FOR cur_tasks_rec in cur_tasks LOOP
6604 IF p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
6605
6606 --- 4743866
6607 open get_task_pc_info(cur_tasks_rec.proj_element_id);
6608 fetch get_task_pc_info into get_task_pc_info_rec;
6609 close get_task_pc_info;
6610 --- 4743866 changed cur_tasks_rec to get_task_pc_info_rec in code below
6611
6612 IF get_task_pc_info_rec.completed_percentage = 0 AND
6613 get_task_pc_info_rec.actual_start_date IS NULL
6614 THEN
6615 l_status_code := '124';
6616 ELSIF get_task_pc_info_rec.completed_percentage > 0 AND
6617 get_task_pc_info_rec.completed_percentage < 100 AND
6618 get_task_pc_info_rec.actual_start_date IS NOT NULL AND
6619 get_task_pc_info_rec.actual_finish_date IS NULL
6620 THEN
6621 l_status_code := '125';
6622 ELSIF get_task_pc_info_rec.completed_percentage = 100 AND
6623 get_task_pc_info_rec.actual_start_date IS NOT NULL AND
6624 get_task_pc_info_rec.actual_finish_date IS NOT NULL
6625 THEN
6626 l_status_code := '127';
6627 ELSE
6628 l_status_code := '124'; --if p_as_of_date is g_miss_date
6629 END IF;
6630 --Update pa_proj_elementso
6631 if (nvl(get_task_pc_info_rec.published_flag,'X') <> 'N' and
6632 nvl(get_task_pc_info_rec.current_flag,'X') <> 'N') then
6633 UPDATE pa_proj_elements
6634 SET status_code = l_status_code
6635 ,last_update_date = decode(status_code,l_status_code,last_update_date,sysdate) --Bug 5978904
6636 ,last_update_login = decode(status_code,l_status_code,last_update_login,l_login_id) --Bug 5978904
6637 ,last_updated_by = decode(status_code,l_status_code,last_updated_by,l_user_id) --Bug 5978904
6638 WHERE proj_element_id = cur_tasks_rec.proj_element_id
6639 AND project_id = p_project_id
6640 and Object_Type = 'PA_TASKS' -- Bhumesh
6641 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6642 NOT IN ( 'CANCELLED', 'COMPLETED' );
6643
6644 end if;
6645
6646 if (get_task_pc_info_rec.published_flag = 'Y' and get_task_pc_info_rec.current_flag = 'Y') then
6647 UPDATE pa_percent_completes
6648 SET status_code = l_status_code
6649 WHERE object_id = cur_tasks_rec.proj_element_id
6650 AND project_id = p_project_id
6651 and Object_Type = 'PA_TASKS' -- Bhumesh
6652 and structure_type = p_structure_type -- FPM Dev CR 3
6653 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6654 NOT IN ( 'CANCELLED', 'COMPLETED' )
6655 AND current_flag = 'Y' and published_flag = 'Y';
6656 elsif (get_task_pc_info_rec.published_flag = 'N' and get_task_pc_info_rec.current_flag = 'N') then
6657 UPDATE pa_percent_completes
6658 SET status_code = l_status_code
6659 WHERE object_id = cur_tasks_rec.proj_element_id
6660 AND project_id = p_project_id
6661 and Object_Type = 'PA_TASKS' -- Bhumesh
6662 and structure_type = p_structure_type -- FPM Dev CR 3
6663 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6664 NOT IN ( 'CANCELLED', 'COMPLETED' )
6665 AND current_flag = 'N' and published_flag = 'N';
6666 end if;
6667 END IF;-- p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
6668 END LOOP;
6669 END IF;
6670 END IF;
6671
6672 EXCEPTION
6673 when FND_API.G_EXC_ERROR then
6674 if p_commit = FND_API.G_TRUE then
6675 rollback to push_down_task_status;
6676 end if;
6677 x_return_status := FND_API.G_RET_STS_ERROR;
6678 when FND_API.G_EXC_UNEXPECTED_ERROR then
6679 if p_commit = FND_API.G_TRUE then
6680 rollback to push_down_task_status;
6681 end if;
6682 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6683 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6684 p_procedure_name => 'push_down_task_status',
6685 p_error_text => SUBSTRB(SQLERRM,1,120));
6686 when OTHERS then
6687 if p_commit = FND_API.G_TRUE then
6688 rollback to push_down_task_status;
6689 end if;
6690 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6691 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6692 p_procedure_name => 'push_down_task_status',
6693 p_error_text => SUBSTRB(SQLERRM,1,120));
6694 raise;
6695 END push_down_task_status;
6696
6697 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
6698 p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6699 ,P_OBJECT_TYPE IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
6700 ,P_OBJECT_ID IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6701 ,p_object_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6702 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
6703 ,p_lowest_level_task IN VARCHAR2 := 'N'
6704 ,p_calling_module IN VARCHAR2 := 'SELF_SERVICE'
6705 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
6706 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6707 ,p_fin_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
6708 ,p_wp_rollup_method IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
6709 ,p_rollup_entire_wbs IN VARCHAR2 := 'N' -- Bug 3606627
6710 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6711 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
6712 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6713 )
6714 IS
6715
6716 l_return_status VARCHAR2(1) ;
6717 l_msg_count NUMBER ;
6718 l_msg_data VARCHAR2(250) ;
6719 l_data VARCHAR2(250) ;
6720 g1_debug_mode VARCHAR2(1);
6721
6722 BEGIN
6723
6724 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
6725
6726 IF g1_debug_mode = 'Y' THEN
6727 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT');
6728 END IF;
6729
6730 IF g1_debug_mode = 'Y' THEN
6731 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);
6732 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
6733 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
6734 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
6735 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);
6736 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);
6737 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);
6738 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);
6739 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
6740 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);
6741 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);
6742 END IF;
6743
6744 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
6745
6746 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
6747 p_project_id => p_project_id
6748 ,P_OBJECT_TYPE => P_OBJECT_TYPE
6749 ,P_OBJECT_ID => P_OBJECT_ID
6750 ,p_object_version_id => p_object_version_id
6751 ,p_as_of_date => p_as_of_date
6752 ,p_lowest_level_task => p_lowest_level_task
6753 ,p_calling_module => p_calling_module
6754 ,p_structure_type => p_structure_type
6755 ,p_structure_version_id => p_structure_version_id
6756 ,p_fin_rollup_method => p_fin_rollup_method
6757 ,p_wp_rollup_method => p_wp_rollup_method
6758 ,p_rollup_entire_wbs => p_rollup_entire_wbs
6759 ,x_return_status => l_return_status
6760 ,x_msg_count => l_msg_count
6761 ,x_msg_data => l_msg_data);
6762
6763 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6764 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
6765 p_msg_name => l_msg_data);
6766 x_msg_data := l_msg_data;
6767 x_return_status := 'E';
6768 x_msg_count := l_msg_count;
6769 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6770 END IF;
6771
6772
6773 x_return_status := FND_API.G_RET_STS_SUCCESS;
6774
6775 IF g1_debug_mode = 'Y' THEN
6776 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
6777 END IF;
6778 EXCEPTION
6779 WHEN OTHERS THEN
6780 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6781 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
6782 p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
6783 p_error_text => SUBSTRB(SQLERRM,1,120));
6784 raise;
6785 END ROLLUP_FUTURE_PROGRESS_PVT;
6786
6787 -- Update_PC_PARTY_MAERGE (PUBLIC)
6788 -- This is the procedure being called during the Party Merge.
6789 -- The input/output arguments format matches the document PartyMergeDD.doc.
6790 -- The goal is to fix the PUBLISHED_BY_PARTY_ID in pa_percent_completes table to point to the
6791 -- same party when two similar parties are begin merged.
6792 --
6793 -- Usage example in pl/sql
6794 -- This procedure should only be called from the PartyMerge utility.
6795 --
6796 procedure Update_PC_PARTY_MERGE(p_entity_name in varchar2,
6797 p_from_id in number,
6798 p_to_id in out nocopy number,
6799 p_from_fk_id in number,
6800 p_to_fk_id in number,
6801 p_parent_entity_name in varchar2,
6802 p_batch_id in number,
6803 p_batch_party_id in number,
6804 p_return_status in out nocopy varchar2) is
6805 begin
6806 p_return_status := FND_API.G_RET_STS_SUCCESS;
6807
6808 if (p_from_fk_id <> p_to_fk_id) then
6809
6810 update pa_percent_completes
6811 set PUBLISHED_BY_PARTY_ID = p_to_fk_id,
6812 last_update_date = hz_utility_pub.last_update_date,
6813 last_updated_by = hz_utility_pub.user_id,
6814 last_update_login = hz_utility_pub.last_update_login
6815 where PUBLISHED_BY_PARTY_ID = p_from_fk_id
6816 ;
6817 p_to_id := p_from_id;
6818
6819 end if;
6820
6821 end Update_PC_PARTY_MERGE;
6822
6823 -- Progress Management Changes. Bug # 3420093.
6824
6825 PROCEDURE APPLY_LP_PROG_ON_CWV(
6826 p_api_version IN NUMBER :=1.0
6827 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
6828 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
6829 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
6830 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
6831 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
6832 ,p_debug_mode IN VARCHAR2 :='N'
6833 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
6834 ,p_project_id IN NUMBER
6835 ,p_working_str_version_id IN NUMBER
6836 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6837 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
6838 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
6839 )
6840 IS
6841 l_api_name CONSTANT VARCHAR2(30) := 'APPLY_LP_PROG_ON_CWV';
6842 l_api_version CONSTANT NUMBER := p_api_version;
6843 l_user_id NUMBER := FND_GLOBAL.USER_ID;
6844 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
6845 l_return_status VARCHAR2(1);
6846 l_msg_count NUMBER;
6847 l_msg_data VARCHAR2(250);
6848 l_msg_code VARCHAR2(12000);
6849 l_etc_start_date DATE;
6850
6851
6852 CURSOR C1(p_project_id NUMBER, p_working_str_version_id NUMBER) is
6853 -- Bug # 4581937.
6854 select ppr.*
6855 from pa_progress_rollup ppr, pa_proj_element_versions ppev --4871809
6856 where ppr.project_id = p_project_id
6857 and ppr.structure_version_id is null
6858 and ppr.object_type in ('PA_STRUCTURES','PA_ASSIGNMENTS','PA_TASKS')
6859 --and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y' --bug 4050532
6860 and structure_type = 'WORKPLAN' -- FPM Dev CR 3
6861 and current_flag = 'Y'
6862 and ppr.proj_element_id = ppev.proj_element_id
6863 and ppev.parent_structure_version_id = p_working_str_version_id
6864 and nvl(ppev.task_unpub_ver_status_code,'X') <>'TO_BE_DELETED' ;
6865
6866
6867 CURSOR C2(p_project_id NUMBER) is
6868 select max(as_of_date)
6869 from pa_progress_rollup ppr
6870 where ppr.project_id = p_project_id
6871 and ppr.structure_version_id is null
6872 and ppr.structure_type = 'WORKPLAN'
6873 and ppr.current_flag <> 'W' -- Bug 3879461
6874 ;
6875
6876 -- FPM Dev CR 4 : Added the cusrosr c_get_work_obj_ver_id
6877 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER) IS
6878 select element_version_id
6879 from pa_proj_element_versions
6880 where project_id = p_project_id
6881 and proj_element_id = c_proj_element_id
6882 and parent_structure_version_id = c_structure_version_id;
6883
6884 -- Bug 3764224 : Changed the cusrosr c4 def'n
6885 cursor c4 (p_project_id NUMBER, p_object_id NUMBER, p_working_str_version_id NUMBER, p_task_id NUMBER) is
6886 select ptav1.resource_assignment_id, ptav1.resource_list_member_id, ptav1.txn_currency_code
6887 ,ptav1.resource_class_code, ptav1.rate_based_flag, ptav1.rbs_element_id
6888 from pa_task_asgmts_v ptav1
6889 where ptav1.resource_list_member_id = p_object_id
6890 and ptav1.structure_version_id = p_working_str_version_id
6891 and ptav1.task_id = p_task_id
6892 ;
6893
6894 cursor c5 (p_project_id NUMBER, p_res_list_member_id NUMBER, p_task_id NUMBER,
6895 p_task_version_id NUMBER, p_structure_version_id NUMBER) is
6896 select rbs_element_id, rate_based_flag, resource_class_code, txn_currency_code
6897 ,resource_list_member_id ,resource_assignment_id--bug 3935699
6898 from pa_task_asgmts_v
6899 where project_id = p_project_id
6900 and resource_list_member_id = p_res_list_member_id -- Commented out to fix Bug # 3815741.
6901 --uncommented the resource_list_member_id for bug 3839699
6902 and task_id = p_task_id
6903 and task_version_id = p_task_version_id
6904 and structure_version_id = p_structure_version_id;
6905
6906 CURSOR cur_proj_elements(c_proj_element_id NUMBER)
6907 IS
6908
6909 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 )
6910 from pa_proj_elements ppe
6911 ,pa_task_types ptt --added during the bugfix 3962823.
6912 where ppe.project_id = p_project_id
6913 and ppe.proj_element_id = c_proj_element_id
6914 and ppe.type_id = ptt.task_type_id
6915 ;
6916
6917 --bug 3846474
6918 cursor all_lowest_task
6919 is
6920 select task_version_id, 'PA_ASSIGNMENTS' object_type,
6921 resource_assignment_id, TXN_CURRENCY_CODE
6922 from pa_task_asgmts_v ptav
6923 where ptav.project_id= p_project_id
6924 and ptav.structure_version_id = p_working_str_version_id
6925 and ptav.planning_start_date <= l_etc_start_date
6926 -- Bug 3958686 : Commenting the ta_display_flag portion
6927 and NOT EXISTS ( select 'x' from pa_progress_rollup
6928 where project_id=p_project_id
6929 and object_id = ptav.resource_list_member_id
6930 and proj_element_id = ptav.task_id
6931 and object_type = 'PA_ASSIGNMENTS'
6932 and structure_type = 'WORKPLAN' -- Bug 3879461
6933 and structure_version_id is null
6934 and current_flag = 'Y'
6935 );
6936 cursor l_scheduled_dates_cur(p_project_id NUMBER, p_object_id NUMBER, p_object_version_id NUMBER) is
6937 select scheduled_start_date
6938 ,scheduled_finish_date
6939 from pa_proj_elem_ver_schedule
6940 where project_id = p_project_id
6941 and proj_element_id = p_object_id
6942 and element_version_id = p_object_version_id;
6943
6944 cursor l_ptav_cur(p_project_id NUMBER, p_object_id NUMBER, p_task_id NUMBER, p_task_version_id NUMBER) is
6945 select resource_class_code
6946 ,resource_list_member_id
6947 ,assignment_start_date
6948 ,assignment_end_date
6949 ,txn_currency_code
6950 ,resource_assignment_id
6951 -- Bug 3818439 : Added planned amount here
6952 ,planned_quantity
6953 ,planned_bur_cost_txn_cur
6954 ,planned_bur_cost_projfunc
6955 ,planned_bur_cost_proj_cur
6956 ,planned_raw_cost_txn_cur
6957 ,planned_raw_cost_proj_cur
6958 ,planned_raw_cost_projfunc
6959 ,rate_based_flag --bug 3841547
6960 ,ta_display_flag --bug 4021315
6961 from pa_task_asgmts_v
6962 where project_id = p_project_id
6963 -- and resource_assignment_id = p_object_id Bug 3764224
6964 and resource_list_member_id = p_object_id -- Bug 3764224
6965 and task_id = p_task_id
6966 --and task_version_id = p_task_version_id --bug 3911600
6967 and structure_version_id = pa_proj_elements_utils.latest_published_ver_id(p_project_id,'WORKPLAN');
6968
6969 cursor cur_proj_prog_attr
6970 is
6971 select pppa.task_weight_basis_code
6972 from pa_proj_progress_attr pppa
6973 where project_id=p_project_id
6974 and structure_type ='WORKPLAN'
6975 ;
6976
6977 l_work_obj_ver_id NUMBER; -- FPM Dev CR 4
6978
6979 l_c1rec c1%rowtype;
6980 l_c4rec c4%rowtype;
6981 l_c5rec c5%rowtype;
6982
6983 l_progress_rollup_id NUMBER := null;
6984 l_max_as_of_date date;
6985 l_as_of_date date;
6986
6987 l_task_ver_id_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6988 l_planned_effort_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6989 l_start_date_tbl_task SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
6990 l_end_date_tbl_task SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
6991
6992 l_raw_cost_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6993 l_burdened_cost_tbl_task SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6994
6995 l_task_ver_id_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6996 l_planned_ppl_effort_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6997 l_planned_eqp_effort_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6998 l_planned_qty_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
6999 l_start_date_tbl_assgn SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7000 l_end_date_tbl_assgn SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7001 l_res_list_mem_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7002 l_res_assgn_id_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7003 l_currency_code_tbl_assgn SYSTEM.pa_varchar2_15_tbl_type := SYSTEM.pa_varchar2_15_tbl_type();
7004
7005 l_raw_cost_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7006 l_burdened_cost_tbl_assgn SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7007
7008
7009 l_act_TXN_COST_this_period NUMBER := 0;
7010 l_act_PRJ_COST_this_period NUMBER := 0;
7011 l_act_POU_COST_this_period NUMBER := 0;
7012 l_act_effort_this_period NUMBER := 0;
7013 -- Bug 3621404 : Raw Cost Changes Begin
7014 l_act_TXN_RAWCOST_this_period NUMBER := 0;
7015 l_act_PRJ_RAWCOST_this_period NUMBER := 0;
7016 l_act_POU_RAWCOST_this_period NUMBER := 0;
7017 l_etc_TXN_COST_this_period NUMBER := 0;
7018 l_etc_PRJ_COST_this_period NUMBER := 0;
7019 l_etc_POU_COST_this_period NUMBER := 0;
7020 l_etc_TXN_RAWCOST_this_period NUMBER := 0;
7021 l_etc_PRJ_RAWCOST_this_period NUMBER := 0;
7022 l_etc_POU_RAWCOST_this_period NUMBER := 0;
7023 l_etc_effort_this_period NUMBER := 0;
7024 -- Bug 3621404 : Raw Cost Changes End
7025
7026 l_version_enabled_flag VARCHAR2(1) := null;
7027
7028 l_project_ids SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7029 l_struture_version_ids SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7030 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7031
7032 l_res_assign_id_out NUMBER := null;
7033 l_task_version_id_out NUMBER := null;
7034 l_txn_curr_code_out VARCHAR2(15) := null;
7035 L_NEW_RESOURCE_LIST_MEM_ID NUMBER; -- Bug 3764224
7036 l_rate_based_flag_x VARCHAR2(1);
7037 l_rbs_element_id NUMBER;
7038
7039 l_etc NUMBER := 0; --bug 3826599
7040 l_assignment_exists VARCHAR2(1); -- Bug 3834339
7041 l_scheduled_dates_rec l_scheduled_dates_cur%rowtype;
7042 l_ptav_rec l_ptav_cur%rowtype;
7043 l_res_assgmt_id NUMBER; --bug 4021315
7044 l_prev_act_effort NUMBER := null;
7045 l_prev_etc_effort NUMBER := null;
7046
7047 l_task_weight_basis_code VARCHAR2(30);
7048 l_baselined_str_ver_id NUMBER;
7049
7050 --added for percent complete recalculation at the lowest level task as per the new planned effort.
7051 l_EFF_ROLLUP_PERCENT_COMP NUMBER;
7052 l_planned_effort NUMBER;
7053 l_planned_cost NUMBER;
7054 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30);
7055 l_earned_value NUMBER;
7056 g1_debug_mode VARCHAR2(1);
7057 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
7058 l_task_assgn NUMBER := null;
7059 l_new_resource_assignment_id NUMBER;
7060 l_new_object_id NUMBER;
7061 l_resource_class_code NUMBER;
7062 l_rate_based_flag NUMBER;
7063
7064 --bug 4050532
7065
7066 PROGRESS_ROLLUP_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7067 PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7068 PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7069 OBJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7070 OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7071 AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7072 OBJECT_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7073 LAST_UPDATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7074 LAST_UPDATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
7075 CREATION_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7076 CREATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
7077 PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7078 LAST_UPDATE_LOGIN PA_PLSQL_DATATYPES.Num15TabTyp;
7079 INCREMENTAL_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
7080 CUMULATIVE_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
7081 BASE_PERCENT_COMPLETE PA_PLSQL_DATATYPES.QtyTabtyp;
7082 EFF_ROLLUP_PERCENT_COMP PA_PLSQL_DATATYPES.QtyTabtyp;
7083 COMPLETED_PERCENTAGE PA_PLSQL_DATATYPES.QtyTabtyp;
7084 ESTIMATED_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7085 ESTIMATED_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7086 ACTUAL_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7087 ACTUAL_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7088 RECORD_VERSION_NUMBER PA_PLSQL_DATATYPES.Num15TabTyp;
7089 BASE_PERCENT_COMP_DERIV_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
7090 BASE_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7091 EFF_ROLLUP_PROG_STAT_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
7092 STRUCTURE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7093 PROJ_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7094 STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
7095 PPL_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
7096 EQPMT_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
7097 OTH_QUANTITY_TO_DATE PA_PLSQL_DATATYPES.AmtTabTyp;
7098
7099 OTH_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7100 OTH_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7101 OTH_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7102 OTH_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7103 OTH_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7104 OTH_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7105
7106 PPL_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7107 PPL_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7108 PPL_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7109 PPL_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7110 PPL_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7111 PPL_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7112
7113 EQPMT_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7114 EQPMT_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
7115 EQPMT_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7116 EQPMT_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
7117 EQPMT_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7118 EQPMT_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
7119
7120 EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
7121 TASK_WT_BASIS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
7122 CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
7123 PROJFUNC_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7124 PROJFUNC_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
7125 PROJFUNC_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7126 PROJ_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
7127 PROJ_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
7128 PROJ_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
7129 TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
7130 PROG_PA_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
7131 PROG_GL_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
7132
7133 l_index1 NUMBER := 0;
7134 l_index2 NUMBER := 0;
7135 l_lowest_level_task VARCHAR2(1);
7136 --bug 4050532
7137
7138 BEGIN
7139
7140 IF g1_debug_mode = 'Y' THEN
7141 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7142 END IF;
7143
7144 IF (p_debug_mode = 'Y') THEN
7145 IF g1_debug_mode = 'Y' THEN
7146 pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7147 END IF;
7148 END IF;
7149 IF (p_commit = FND_API.G_TRUE) THEN
7150 savepoint APPLY_LP_PROG_ON_CWV;
7151 END IF;
7152
7153 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
7154 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7155 END IF;
7156
7157 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
7158 FND_MSG_PUB.initialize;
7159 END IF;
7160
7161 x_return_status := FND_API.G_RET_STS_SUCCESS;
7162
7163 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7164
7165 IF g1_debug_mode = 'Y' THEN
7166 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);
7167 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);
7168 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);
7169 END IF;
7170
7171 -- Bug 3786612 : Added check_txn_currency_diff call
7172 PA_PROGRESS_UTILS.check_txn_currency_diff
7173 (
7174 p_structure_version_id => p_working_str_version_id,
7175 p_context => 'APPLY_PROGRESS',
7176 x_return_status => x_return_status
7177 );
7178
7179 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7180 RAISE FND_API.G_EXC_ERROR;
7181 END IF;
7182
7183 l_version_enabled_flag := PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id);
7184 --- setting this global var for PJI. In case of VD struct they won't touch ETC
7185 if (l_version_enabled_flag <> 'Y') then --- APP
7186 pa_progress_pub.g_wbs_apply_prog := p_working_str_version_id;
7187 end if;
7188
7189 IF g1_debug_mode = 'Y' THEN
7190 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);
7191 END IF;
7192
7193 -- Get max(as_of_date) for all progress records for the project.
7194 OPEN c2(p_project_id);
7195 FETCH c2 INTO l_max_as_of_date;
7196 IF l_max_as_of_date IS NULL
7197 THEN
7198 CLOSE c2;
7199 return;
7200 END IF;
7201 CLOSE c2;
7202
7203 l_as_of_date := l_max_as_of_date;
7204 l_etc_start_date := l_max_as_of_date + 1;
7205
7206 IF g1_debug_mode = 'Y' THEN
7207 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);
7208 END IF;
7209
7210 -- Set B and F package variable.
7211 PA_FP_CALC_PLAN_PKG.G_SPREAD_FROM_DATE := l_max_as_of_date;
7212 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
7213
7214 --moved from below to use it in % complete recalculation.
7215 OPEN cur_proj_prog_attr;
7216 FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
7217 CLOSE cur_proj_prog_attr;
7218
7219 -- Loop through the cursor for each of the lowest tasks.
7220 OPEN c1(p_project_id,p_working_str_version_id);
7221 LOOP
7222 FETCH c1 INTO l_c1rec;
7223 EXIT WHEN c1%NOTFOUND;
7224
7225 IF g1_debug_mode = 'Y' THEN
7226 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);
7227 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);
7228 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);
7229 END IF;
7230 -- Populate PL/SQL tables that will be used by the FP API:
7231 -- pa_fp_planning_transaction_pub.update_planning_transactions.
7232 -- This is done in both cases - if workplan versioning is enabled
7233 -- or disabled.
7234
7235 -- Cursor cur_task_assgn is used to check if the lowest task has any
7236 -- assignments or not.
7237 -- Bug 3834339 : Using function to decide whether assignment exists on task or not
7238 l_assignment_exists := 'N';
7239 IF l_c1rec.object_type = 'PA_TASKS' THEN
7240 l_assignment_exists := NVL(PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_c1rec.object_version_id,l_c1rec.object_type),'N');
7241 l_lowest_level_task := NVL(pa_proj_elements_utils.is_lowest_task(l_c1rec.object_version_id),'N'); --bug 4050532
7242 END IF;
7243
7244
7245 IF g1_debug_mode = 'Y' THEN
7246 --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);
7247 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);
7248 END IF;
7249
7250 /* Begin commenting out this code to fix bug # 4074299.
7251
7252 -- If the lowest task does not have assignments then populate the task data in the
7253 -- "%_tbl_task" pl_sql tables.
7254
7255 IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N') AND
7256 nvl(l_lowest_level_task,'N')='Y') --bug 4050532
7257 THEN
7258 l_task_ver_id_tbl_task.extend;
7259 l_planned_effort_tbl_task.extend;
7260 l_start_date_tbl_task.extend;
7261 l_end_date_tbl_task.extend;
7262
7263 l_raw_cost_tbl_task.extend;
7264 l_burdened_cost_tbl_task.extend;
7265
7266 l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_c1rec.object_version_id;
7267 l_planned_effort_tbl_task(l_planned_effort_tbl_task.count) := nvl(l_c1rec.ppl_act_effort_to_date,0)
7268 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7269 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7270 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7271 + nvl(l_c1rec.estimated_remaining_effort,0)
7272 + nvl(l_c1rec.eqpmt_etc_effort,0)
7273 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
7274 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7275
7276 OPEN l_scheduled_dates_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.object_version_id);
7277 FETCH l_scheduled_dates_cur INTO l_scheduled_dates_rec;
7278 CLOSE l_scheduled_dates_cur;
7279
7280 l_start_date_tbl_task(l_start_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_start_date;
7281 l_end_date_tbl_task(l_end_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_finish_date;
7282
7283 l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
7284 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
7285 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
7286 +nvl(l_c1rec.subprj_oth_act_cost_to_date_pc,0)
7287 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
7288 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
7289 +nvl(l_c1rec.ppl_etc_cost_pc,0)
7290 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
7291 +nvl(l_c1rec.oth_etc_cost_pc,0)
7292 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
7293 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
7294 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
7295
7296 l_raw_cost_tbl_task(l_raw_cost_tbl_task.count) := nvl(l_c1rec.oth_act_rawcost_to_date_pc,0)
7297 +nvl(l_c1rec.ppl_act_rawcost_to_date_pc,0)
7298 +nvl(l_c1rec.eqpmt_act_rawcost_to_date_pc,0)
7299 +nvl(l_c1rec.spj_oth_act_rawcost_to_date_pc,0)
7300 +nvl(l_c1rec.subprj_ppl_act_rawcost_pc,0)
7301 +nvl(l_c1rec.subprj_eqpmt_act_rawcost_pc,0)
7302 +nvl(l_c1rec.ppl_etc_rawcost_pc,0)
7303 +nvl(l_c1rec.eqpmt_etc_rawcost_pc,0)
7304 +nvl(l_c1rec.oth_etc_rawcost_pc,0)
7305 +nvl(l_c1rec.subprj_ppl_etc_rawcost_pc,0)
7306 +nvl(l_c1rec.subprj_eqpmt_etc_rawcost_pc,0)
7307 +nvl(l_c1rec.subprj_oth_etc_rawcost_pc,0);
7308 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7309 l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := null;
7310 l_raw_cost_tbl_task(l_raw_cost_tbl_task.count):= null;
7311 END IF;
7312
7313 IF g1_debug_mode = 'Y' THEN
7314 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);
7315 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);
7316 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);
7317 END IF;
7318 END IF; -- ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7319
7320 End commenting out this code to fix bug # 4074299. */
7321
7322 -- For all assignments populate the assignment data in the "%tbl_assgn" pl_sql tables.
7323
7324 IF (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7325
7326 l_task_ver_id_tbl_assgn.extend;
7327 l_planned_ppl_effort_tbl_assgn.extend;
7328 l_planned_eqp_effort_tbl_assgn.extend;
7329 l_planned_qty_tbl_assgn.extend;
7330 l_start_date_tbl_assgn.extend;
7331 l_end_date_tbl_assgn.extend;
7332 l_res_list_mem_tbl_assgn.extend;
7333 l_currency_code_tbl_assgn.extend;
7334 l_res_assgn_id_tbl_assgn.extend;
7335 l_raw_cost_tbl_assgn.extend;
7336 l_burdened_cost_tbl_assgn.extend;
7337 OPEN l_ptav_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.proj_element_id,l_c1rec.object_version_id);
7338 FETCH l_ptav_cur INTO l_ptav_rec;
7339 CLOSE l_ptav_cur;
7340
7341 l_task_ver_id_tbl_assgn(l_task_ver_id_tbl_assgn.count) := l_c1rec.object_version_id;
7342
7343 -- Bug 3818439 : Defaylting ETC to planned-Actual if ETC is null
7344 -- l_planned_ppl_effort_tbl_assgn and l_planned_eqp_effort_tbl_assgn is not used
7345 -- so no need to change it.
7346 -- Depending on resource_class_code, it should default ETC to planned-actual
7347
7348 l_planned_ppl_effort_tbl_assgn(l_planned_ppl_effort_tbl_assgn.count):= nvl(l_c1rec.ppl_act_effort_to_date,0)
7349 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7350 + nvl(l_c1rec.estimated_remaining_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.ppl_act_effort_to_date,0))
7351 + nvl(l_c1rec.subprj_ppl_etc_effort,0);
7352
7353 l_planned_eqp_effort_tbl_assgn(l_planned_eqp_effort_tbl_assgn.count):=nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7354 + nvl(l_c1rec.eqpmt_etc_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.eqpmt_act_effort_to_date,0))
7355 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7356 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7357
7358
7359 ------5726773 removed all old code regarding l_etc (bug 4378391) and calling a function to calculate proper ETC if it is null
7360 IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
7361 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7362 l_etc := l_c1rec.oth_etc_quantity;
7363 ELSE
7364 ---5726773
7365 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));
7366 END IF;
7367 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7368
7369 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7370 l_etc := l_c1rec.oth_etc_cost_tc;
7371 ELSE
7372 ---5726773
7373 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));
7374 END IF;
7375 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7376
7377 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7378 l_etc := l_c1rec.oth_etc_rawcost_tc;
7379 ELSE
7380 ---5726773
7381 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));
7382 END IF;
7383 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7384
7385 ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
7386 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7387 l_etc := l_c1rec.oth_etc_quantity;
7388 ELSE
7389 ---5726773
7390 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));
7391 END IF;
7392 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7393
7394 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7395 l_etc := l_c1rec.oth_etc_cost_tc;
7396 ELSE
7397 ---5726773
7398 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));
7399 END IF;
7400 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7401
7402 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7403 l_etc := l_c1rec.oth_etc_rawcost_tc;
7404 ELSE
7405 ---5726773
7406 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));
7407 END IF;
7408 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7409
7410 ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
7411 IF l_c1rec.estimated_remaining_effort IS NOT NULL THEN
7412 l_etc := l_c1rec.estimated_remaining_effort;
7413 ELSE
7414 ---5726773
7415 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));
7416 END IF;
7417 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.ppl_act_effort_to_date,0) + l_etc;
7418
7419 IF l_c1rec.ppl_etc_cost_tc IS NOT NULL THEN
7420 l_etc := l_c1rec.ppl_etc_cost_tc;
7421 ELSE
7422 ---5726773
7423 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));
7424 END IF;
7425 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_cost_to_date_tc,0) + l_etc;
7426
7427 IF l_c1rec.ppl_etc_rawcost_tc IS NOT NULL THEN
7428 l_etc := l_c1rec.ppl_etc_rawcost_tc;
7429 ELSE
7430 ---5726773
7431 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));
7432 END IF;
7433 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_rawcost_to_date_tc,0) + l_etc;
7434
7435 ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
7436 IF l_c1rec.eqpmt_etc_effort IS NOT NULL THEN
7437 l_etc := l_c1rec.eqpmt_etc_effort;
7438 ELSE
7439 ---5726773
7440 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));
7441 END IF;
7442 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_effort_to_date,0) + l_etc;
7443
7444 IF l_c1rec.eqpmt_etc_cost_tc IS NOT NULL THEN
7445 l_etc := l_c1rec.eqpmt_etc_cost_tc;
7446 ELSE
7447 ---5726773
7448 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));
7449 END IF;
7450 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_cost_to_date_tc,0) + l_etc;
7451
7452 IF l_c1rec.eqpmt_etc_rawcost_tc IS NOT NULL THEN
7453 l_etc := l_c1rec.eqpmt_etc_rawcost_tc;
7454 ELSE
7455 ---5726773
7456 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));
7457 END IF;
7458 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_rawcost_to_date_tc,0) + l_etc;
7459
7460 END IF; -- l_ptav_rec.resource_class_code
7461
7462 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7463 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
7464 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count):= null;
7465 END IF;
7466
7467
7468 l_start_date_tbl_assgn(l_start_date_tbl_assgn.count) := l_ptav_rec.assignment_start_date;
7469 l_end_date_tbl_assgn(l_end_date_tbl_assgn.count) := l_ptav_rec.assignment_end_date;
7470 l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count) := l_ptav_rec.resource_list_member_id;
7471 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_ptav_rec.txn_currency_code;
7472 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_ptav_rec.resource_assignment_id;
7473
7474 IF g1_debug_mode = 'Y' THEN
7475 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);
7476 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);
7477 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);
7478 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);
7479 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);
7480 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);
7481 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);
7482 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);
7483 END IF;
7484 END IF; -- (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7485
7486 -- The following actions are only performed if workplan versioning is enabled: 1
7487 IF (l_version_enabled_flag = 'Y') THEN
7488
7489 -- 1.1). Make sure that all assignments in published version are also in the current_working version.
7490 -- maansari6/26
7491 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7492 OPEN c_get_work_obj_ver_id(l_c1rec.proj_element_id, p_working_str_version_id);
7493 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7494 CLOSE c_get_work_obj_ver_id;
7495 ELSE
7496 OPEN c_get_work_obj_ver_id(l_c1rec.object_id, p_working_str_version_id);
7497 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7498 CLOSE c_get_work_obj_ver_id;
7499 END IF;
7500 IF g1_debug_mode = 'Y' THEN
7501 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);
7502 END IF;
7503
7504 /* Begin commenting out this code to fix bug # 4074299.
7505
7506 IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7507 l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_work_obj_ver_id;
7508 END IF;
7509
7510 End commenting out this code to fix bug # 4074299. */
7511
7512 -- maansari6/26
7513
7514 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7515 OPEN c4 (p_project_id, l_c1rec.object_id, p_working_str_version_id,l_c1rec.proj_element_id );
7516 FETCH c4 INTO l_c4rec;
7517 IF c4%notfound THEN
7518 IF g1_debug_mode = 'Y' THEN
7519 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);
7520 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);
7521 END IF;
7522 --bug 4021315, start
7523 IF l_ptav_rec.ta_display_flag = 'Y'
7524 THEN
7525 l_res_assgmt_id := l_ptav_rec.resource_list_member_id;
7526 ELSE
7527 l_res_assgmt_id := null;
7528 END IF;
7529 --bug 4021315, end
7530 BEGIN
7531 pa_task_assignments_pvt.derive_task_assignments
7532 ( p_project_id => l_c1rec.project_id
7533 ,p_task_version_id => l_work_obj_ver_id --new task version id maansari6/26
7534 ,p_scheduled_start => l_ptav_rec.assignment_start_date
7535 ,p_scheduled_end => l_ptav_rec.assignment_end_date
7536 ,p_resource_class_code => l_ptav_rec.resource_class_code
7537 ,p_resource_list_member_id => l_res_assgmt_id
7538 ,p_unplanned_flag => 'N'
7539 ,x_resource_assignment_id => l_res_assign_id_out
7540 ,x_rate_based_flag => l_rate_based_flag_x
7541 ,x_task_version_id => l_task_version_id_out
7542 ,x_currency_code => l_txn_curr_code_out
7543 ,x_resource_list_member_id => l_new_resource_list_mem_id -- Bug 3764224
7544 ,x_rbs_element_id => l_rbs_element_id
7545 ,x_msg_count => l_msg_count
7546 ,x_msg_data => l_msg_data
7547 ,x_return_status => l_return_status);
7548
7549 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_txn_curr_code_out;
7550 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_res_assign_id_out;
7551
7552 IF g1_debug_mode = 'Y' THEN
7553 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);
7554 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);
7555 END IF;
7556
7557 --maansari6/26
7558 EXCEPTION
7559 WHEN OTHERS THEN
7560 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
7561 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
7562 p_error_text => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
7563 raise fnd_api.g_exc_error;
7564 END;
7565
7566 -- BEGIN: Adding code to fix Bug # 3815741.
7567
7568 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7569 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7570 p_msg_name => l_msg_data);
7571 x_msg_data := l_msg_data;
7572 x_return_status := 'E';
7573 x_msg_count := l_msg_count;
7574 RAISE FND_API.G_EXC_ERROR;
7575 END IF;
7576
7577 -- END: Adding code to fix Bug # 3815741.
7578 --maansari6/26
7579 ELSE
7580 --Get the resource assignment id and currency code from the new structure version.
7581 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_c4rec.txn_currency_code;
7582 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_c4rec.resource_assignment_id;
7583 l_new_resource_list_mem_id := l_c4rec.resource_list_member_id; --Bug 3764224
7584 END IF; -- c4%notfound
7585 CLOSE c4;
7586 END IF; -- l_c1rec.object_type = 'PA_ASSIGNMENTS'
7587
7588
7589 -- 1.2). Check if working progress record exists for the current working version.
7590
7591 -- Bug 3621404 : Raw Cost Changes Begin
7592 IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7593 --l_new_object_id := l_new_resource_assignment_id; Bug 3764224
7594 l_new_object_id := l_new_resource_list_mem_id; -- Bug 3764224 Basically this will be same as l_c1rec.object_id always
7595 ELSE
7596 l_new_object_id := l_c1rec.object_id;
7597 END IF;
7598
7599 l_act_TXN_COST_this_period := null;
7600 l_act_PRJ_COST_this_period := null;
7601 l_act_POU_COST_this_period := null;
7602 l_act_TXN_RAWCOST_this_period := null;
7603 l_act_PRJ_RAWCOST_this_period := null;
7604 l_act_POU_RAWCOST_this_period := null;
7605 l_etc_TXN_COST_this_period := null;
7606 l_etc_PRJ_COST_this_period := null;
7607 l_etc_POU_COST_this_period := null;
7608 l_etc_TXN_RAWCOST_this_period := null;
7609 l_etc_PRJ_RAWCOST_this_period := null;
7610 l_etc_POU_RAWCOST_this_period := null;
7611 l_act_effort_this_period := null;
7612 l_etc_effort_this_period := null;
7613
7614 --added to calculate effective rollup percent complete at the lowest level task as per the new
7615 --planned value. Not required to calculate for assignments
7616 --The earned value at task level should be based on baselined. earned value will be re-derived in rollup api.
7617 --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
7618 --bug 4191360, dont check assignment exists for WQ
7619 --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
7620 IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
7621 AND NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
7622 THEN
7623 OPEN cur_proj_elements(l_new_object_id);
7624 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
7625 CLOSE cur_proj_elements;
7626
7627 IF g1_debug_mode = 'Y' THEN
7628 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);
7629 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);
7630 END IF;
7631
7632 --bug 4191360, recalc %complete only if deriv. code has changed
7633 IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
7634 THEN
7635 --bug 4191360, moved this from below
7636 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7637 THEN
7638 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
7639 p_task_id => l_c1rec.object_id
7640 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
7641 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
7642 ,p_est_remaining_effort => null
7643 ),2);
7644 ELSIF NVL(l_assignment_exists, 'N') = 'N'
7645 THEN
7646 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
7647 THEN
7648 /* Begin commenting out this code to fix bug # 4074299.
7649 l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
7650 l_planned_cost := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
7651 End commenting out this code to fix bug # 4074299. */
7652 /* Begin fix for bug # 4074299. */
7653 l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
7654 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7655 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7656 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7657 + nvl(l_c1rec.estimated_remaining_effort,0)
7658 + nvl(l_c1rec.eqpmt_etc_effort,0)
7659 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
7660 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7661
7662 /* End fix for bug # 4074299. */
7663 IF l_planned_effort = 0 OR l_planned_effort IS NULL
7664 THEN
7665 l_planned_effort := 1;
7666 END iF;
7667 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,2);
7668 IF g1_debug_mode = 'Y' THEN
7669 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);
7670 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);
7671 END IF;
7672 --bug 4191360, calc % complete for cost also
7673 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
7674 THEN
7675 l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
7676 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
7677 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
7678 +nvl(l_c1rec.subprj_oth_act_cost_to_date_pc,0)
7679 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
7680 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
7681 +nvl(l_c1rec.ppl_etc_cost_pc,0)
7682 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
7683 +nvl(l_c1rec.oth_etc_cost_pc,0)
7684 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
7685 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
7686 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
7687 IF l_planned_cost = 0 OR l_planned_cost IS NULL
7688 THEN
7689 l_planned_cost := 1;
7690 END iF;
7691 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,2);
7692 ELSE
7693 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7694 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
7695 --bug 4191360, moved this code above
7696 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7697 THEN
7698 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
7699 p_task_id => l_c1rec.object_id
7700 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
7701 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
7702 ,p_est_remaining_effort => null
7703 ),2);*/
7704 ELSE
7705 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7706 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7707 ELSE
7708 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7709 END IF; -- IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
7710 ELSE
7711 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7712 l_earned_value := l_c1rec.earned_value;
7713 END IF;
7714
7715
7716 -- 1.7). Calculate the incremental change in the workplan actuals for this period
7717 -- between the recently inserted progress record and the previously existing progress
7718 -- record (if any).
7719
7720 -- Bug 3621404 : Raw Cost Changes, Now they are derived in the code above
7721
7722 -- Assign the pl/sql tables bug 4050532
7723
7724 l_index2 := l_index2 + 1;
7725
7726 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
7727 percent_complete_id(l_index2) := to_number(null);
7728 PROJECT_ID(l_index2) := p_project_Id;
7729 OBJECT_ID(l_index2) := l_new_object_id;
7730 OBJECT_TYPE(l_index2) := l_c1rec.object_type;
7731 AS_OF_DATE(l_index2) := l_as_of_date;
7732 OBJECT_VERSION_ID(l_index2) := l_work_obj_ver_id;
7733 LAST_UPDATE_DATE(l_index2) := sysdate;
7734 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
7735 CREATION_DATE(l_index2) := sysdate;
7736 CREATED_BY(l_index2) := fnd_global.user_id;
7737 PROGRESS_STATUS_CODE(l_index2) := l_c1rec.progress_status_code;
7738 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
7739 INCREMENTAL_WORK_QUANTITY(l_index2) := l_c1rec.INCREMENTAL_WORK_QUANTITY;
7740 CUMULATIVE_WORK_QUANTITY(l_index2) := l_c1rec.CUMULATIVE_WORK_QUANTITY;
7741 BASE_PERCENT_COMPLETE(l_index2) := l_c1rec.BASE_PERCENT_COMPLETE;
7742 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_EFF_ROLLUP_PERCENT_COMP;
7743 COMPLETED_PERCENTAGE(l_index2) := l_c1rec.COMPLETED_PERCENTAGE;
7744 ESTIMATED_START_DATE(l_index2) := l_c1rec.ESTIMATED_START_DATE;
7745 ESTIMATED_FINISH_DATE(l_index2) := l_c1rec.ESTIMATED_FINISH_DATE;
7746 ACTUAL_START_DATE(l_index2) := l_c1rec.ACTUAL_START_DATE;
7747 ACTUAL_FINISH_DATE(l_index2) := l_c1rec.ACTUAL_FINISH_DATE;
7748 RECORD_VERSION_NUMBER(l_index2) := 1;
7749 BASE_PERCENT_COMP_DERIV_CODE(l_index2) := NVL(l_BASE_PERCENT_COMP_DERIV_CODE, l_c1rec.BASE_PERCENT_COMP_DERIV_CODE);
7750 BASE_PROGRESS_STATUS_CODE(l_index2) := l_c1rec.BASE_PROGRESS_STATUS_CODE;
7751 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := l_c1rec.EFF_ROLLUP_PROG_STAT_CODE;
7752 STRUCTURE_TYPE(l_index2) := 'WORKPLAN';
7753 PROJ_ELEMENT_ID(l_index2) := l_c1rec.PROJ_ELEMENT_ID;
7754 STRUCTURE_VERSION_ID(l_index2) := p_working_str_version_id;
7755 PPL_ACT_EFFORT_TO_DATE(l_index2) := l_c1rec.PPL_ACT_EFFORT_TO_DATE;
7756 EQPMT_ACT_EFFORT_TO_DATE(l_index2) := l_c1rec.EQPMT_ACT_EFFORT_TO_DATE;
7757 OTH_QUANTITY_TO_DATE(l_index2) := l_c1rec.OTH_QUANTITY_TO_DATE;
7758 OTH_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_TC;
7759 OTH_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_TC;
7760 OTH_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_FC;
7761 OTH_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_FC;
7762 OTH_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.OTH_ACT_COST_TO_DATE_PC;
7763 OTH_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_PC;
7764 PPL_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_TC;
7765 PPL_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_TC;
7766 PPL_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_FC;
7767 PPL_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_FC;
7768 PPL_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.PPL_ACT_COST_TO_DATE_PC;
7769 PPL_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_PC;
7770 EQPMT_ACT_COST_TO_DATE_TC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_TC;
7771 EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
7772 EQPMT_ACT_COST_TO_DATE_FC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_FC;
7773 EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
7774 EQPMT_ACT_COST_TO_DATE_PC(l_index2) := l_c1rec.EQPMT_ACT_COST_TO_DATE_PC;
7775 EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
7776 EARNED_VALUE(l_index2) := l_c1rec.earned_value;
7777 TASK_WT_BASIS_CODE(l_index2) := l_c1rec.TASK_WT_BASIS_CODE;
7778 CURRENT_FLAG(l_index2) := 'Y';
7779 PROJFUNC_COST_RATE_TYPE(l_index2) := l_c1rec.PROJFUNC_COST_RATE_TYPE;
7780 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := l_c1rec.PROJFUNC_COST_EXCHANGE_RATE;
7781 PROJFUNC_COST_RATE_DATE(l_index2) := l_c1rec.PROJFUNC_COST_RATE_DATE;
7782 PROJ_COST_RATE_TYPE(l_index2) := l_c1rec.PROJ_COST_RATE_TYPE;
7783 PROJ_COST_EXCHANGE_RATE(l_index2) := l_c1rec.PROJ_COST_EXCHANGE_RATE;
7784 PROJ_COST_RATE_DATE(l_index2) := l_c1rec.PROJ_COST_RATE_DATE;
7785 TXN_CURRENCY_CODE(l_index2) := l_c1rec.TXN_CURRENCY_CODE;
7786 PROG_PA_PERIOD_NAME(l_index2) := l_c1rec.PROG_PA_PERIOD_NAME;
7787 PROG_GL_PERIOD_NAME(l_index2) := l_c1rec.PROG_GL_PERIOD_NAME;
7788 --end bug 4050532
7789
7790 ELSE --if versioning not enabled then
7791
7792 --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
7793 --bug 4191360
7794 --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
7795 IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
7796 AND NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
7797 THEN
7798
7799 OPEN cur_proj_elements(l_c1rec.object_id);
7800 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
7801 CLOSE cur_proj_elements;
7802 IF g1_debug_mode = 'Y' THEN
7803 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);
7804 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);
7805 END IF;
7806
7807 --bug 4191360, calc % complete only if deriv. code has changed
7808 IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
7809 THEN
7810 --bug 4191360, moved this code from below
7811 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7812 THEN
7813 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
7814 p_task_id => l_c1rec.object_id
7815 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
7816 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
7817 ,p_est_remaining_effort => null
7818 ),2);
7819
7820 ELSIF NVL(l_assignment_exists, 'N') = 'N'
7821 THEN
7822 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
7823 THEN
7824 /* Begin commenting out this code to fix bug # 4074299.
7825 l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
7826 l_planned_cost := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
7827 End commenting out this code to fix bug # 4074299. */
7828 /* Begin fix for bug # 4074299. */
7829 l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
7830 + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7831 + nvl(l_c1rec.subprj_ppl_act_effort,0)
7832 + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7833 + nvl(l_c1rec.estimated_remaining_effort,0)
7834 + nvl(l_c1rec.eqpmt_etc_effort,0)
7835 + nvl(l_c1rec.subprj_ppl_etc_effort,0)
7836 + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7837
7838 /* End fix for bug # 4074299. */
7839
7840 IF l_planned_effort = 0 OR l_planned_effort IS NULL
7841 THEN
7842 l_planned_effort := 1;
7843 END iF;
7844 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,2);
7845 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
7846 THEN
7847 l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
7848 +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
7849 +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
7850 +nvl(l_c1rec.subprj_oth_act_cost_to_date_pc,0)
7851 +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
7852 +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
7853 +nvl(l_c1rec.ppl_etc_cost_pc,0)
7854 +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
7855 +nvl(l_c1rec.oth_etc_cost_pc,0)
7856 +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
7857 +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
7858 +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
7859 IF l_planned_cost = 0 OR l_planned_cost IS NULL
7860 THEN
7861 l_planned_cost := 1;
7862 END iF;
7863 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,2);
7864 ELSE
7865 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7866 END IF; --IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
7867 --bug 4191360, moved this code above
7868 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7869 THEN
7870 l_EFF_ROLLUP_PERCENT_COMP := round(PA_PROGRESS_UTILS.Calc_base_percent(
7871 p_task_id => l_c1rec.object_id
7872 ,p_incr_work_qty => l_c1rec.INCREMENTAL_WORK_QUANTITY
7873 ,p_cuml_work_qty => l_c1rec.CUMULATIVE_WORK_QUANTITY
7874 ,p_est_remaining_effort => null
7875 ),2);*/
7876 ELSE
7877 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7878 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
7879 ELSE
7880 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
7881 END IF; --IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
7882
7883
7884 IF g1_debug_mode = 'Y' THEN
7885 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);
7886 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);
7887 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);
7888 END IF;
7889
7890 UPDATE pa_progress_rollup
7891 SET EFF_ROLLUP_PERCENT_COMP = l_EFF_ROLLUP_PERCENT_COMP
7892 ,last_update_date = SYSDATE
7893 WHERE progress_rollup_id = l_c1rec.progress_rollup_id;
7894 IF g1_debug_mode = 'Y' THEN
7895 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);
7896 END IF;
7897
7898 END IF;
7899 --uncommented the code for bug 3906362
7900
7901 END IF; -- If workplan versioning is enabled: 1
7902 END LOOP;
7903 CLOSE C1;
7904
7905 IF g1_debug_mode = 'Y' THEN
7906 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Outside main LOOP', x_Log_Level=> 3);
7907 END IF;
7908
7909
7910 IF (l_version_enabled_flag = 'Y') THEN
7911
7912 --bug 4050532
7913 IF g1_debug_mode = 'Y' THEN
7914 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);
7915 END IF;
7916
7917 DELETE FROM pa_progress_rollup WHERE project_id = p_project_id and structure_version_id = p_working_str_version_id;
7918
7919 forall l_index1 in 1..l_index2
7920 INSERT INTO pa_progress_rollup(
7921 PROGRESS_ROLLUP_ID
7922 ,PERCENT_COMPLETE_ID
7923 ,PROJECT_ID
7924 ,OBJECT_ID
7925 ,OBJECT_TYPE
7926 ,AS_OF_DATE
7927 ,OBJECT_VERSION_ID
7928 ,LAST_UPDATE_DATE
7929 ,LAST_UPDATED_BY
7930 ,CREATION_DATE
7931 ,CREATED_BY
7932 ,PROGRESS_STATUS_CODE
7933 ,LAST_UPDATE_LOGIN
7934 ,INCREMENTAL_WORK_QUANTITY
7935 ,CUMULATIVE_WORK_QUANTITY
7936 ,BASE_PERCENT_COMPLETE
7937 ,EFF_ROLLUP_PERCENT_COMP
7938 ,COMPLETED_PERCENTAGE
7939 ,ESTIMATED_START_DATE
7940 ,ESTIMATED_FINISH_DATE
7941 ,ACTUAL_START_DATE
7942 ,ACTUAL_FINISH_DATE
7943 ,RECORD_VERSION_NUMBER
7944 ,BASE_PERCENT_COMP_DERIV_CODE
7945 ,BASE_PROGRESS_STATUS_CODE
7946 ,EFF_ROLLUP_PROG_STAT_CODE
7947 ,STRUCTURE_TYPE
7948 ,PROJ_ELEMENT_ID
7949 ,STRUCTURE_VERSION_ID
7950 ,PPL_ACT_EFFORT_TO_DATE
7951 ,EQPMT_ACT_EFFORT_TO_DATE
7952 ,OTH_ACT_COST_TO_DATE_TC
7953 ,OTH_ACT_COST_TO_DATE_FC
7954 ,OTH_ACT_COST_TO_DATE_PC
7955 ,PPL_ACT_COST_TO_DATE_TC
7956 ,PPL_ACT_COST_TO_DATE_FC
7957 ,PPL_ACT_COST_TO_DATE_PC
7958 ,EQPMT_ACT_COST_TO_DATE_TC
7959 ,EQPMT_ACT_COST_TO_DATE_FC
7960 ,EQPMT_ACT_COST_TO_DATE_PC
7961 ,EARNED_VALUE
7962 ,TASK_WT_BASIS_CODE
7963 ,CURRENT_FLAG
7964 ,PROJFUNC_COST_RATE_TYPE
7965 ,PROJFUNC_COST_EXCHANGE_RATE
7966 ,PROJFUNC_COST_RATE_DATE
7967 ,PROJ_COST_RATE_TYPE
7968 ,PROJ_COST_EXCHANGE_RATE
7969 ,PROJ_COST_RATE_DATE
7970 ,TXN_CURRENCY_CODE
7971 ,PROG_PA_PERIOD_NAME
7972 ,PROG_GL_PERIOD_NAME
7973 ,OTH_QUANTITY_TO_DATE
7974 ,OTH_ACT_RAWCOST_TO_DATE_TC
7975 ,OTH_ACT_RAWCOST_TO_DATE_FC
7976 ,OTH_ACT_RAWCOST_TO_DATE_PC
7977 ,PPL_ACT_RAWCOST_TO_DATE_TC
7978 ,PPL_ACT_RAWCOST_TO_DATE_FC
7979 ,PPL_ACT_RAWCOST_TO_DATE_PC
7980 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
7981 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
7982 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
7983 )
7984 VALUES(
7985 PROGRESS_ROLLUP_ID(l_index1)
7986 ,PERCENT_COMPLETE_ID(l_index1)
7987 ,PROJECT_ID(l_index1)
7988 ,OBJECT_ID(l_index1)
7989 ,OBJECT_TYPE(l_index1)
7990 ,AS_OF_DATE(l_index1)
7991 ,OBJECT_VERSION_ID(l_index1)
7992 ,LAST_UPDATE_DATE(l_index1)
7993 ,LAST_UPDATED_BY(l_index1)
7994 ,CREATION_DATE(l_index1)
7995 ,CREATED_BY(l_index1)
7996 ,PROGRESS_STATUS_CODE(l_index1)
7997 ,LAST_UPDATE_LOGIN(l_index1)
7998 ,INCREMENTAL_WORK_QUANTITY(l_index1)
7999 ,CUMULATIVE_WORK_QUANTITY(l_index1)
8000 ,BASE_PERCENT_COMPLETE(l_index1)
8001 ,EFF_ROLLUP_PERCENT_COMP(l_index1)
8002 ,COMPLETED_PERCENTAGE(l_index1)
8003 ,ESTIMATED_START_DATE(l_index1)
8004 ,ESTIMATED_FINISH_DATE(l_index1)
8005 ,ACTUAL_START_DATE(l_index1)
8006 ,ACTUAL_FINISH_DATE(l_index1)
8007 ,RECORD_VERSION_NUMBER(l_index1)
8008 ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
8009 ,BASE_PROGRESS_STATUS_CODE(l_index1)
8010 ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
8011 ,STRUCTURE_TYPE(l_index1)
8012 ,PROJ_ELEMENT_ID(l_index1)
8013 ,STRUCTURE_VERSION_ID(l_index1)
8014 ,PPL_ACT_EFFORT_TO_DATE(l_index1)
8015 ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
8016 ,OTH_ACT_COST_TO_DATE_TC(l_index1)
8017 ,OTH_ACT_COST_TO_DATE_FC(l_index1)
8018 ,OTH_ACT_COST_TO_DATE_PC(l_index1)
8019 ,PPL_ACT_COST_TO_DATE_TC(l_index1)
8020 ,PPL_ACT_COST_TO_DATE_FC(l_index1)
8021 ,PPL_ACT_COST_TO_DATE_PC(l_index1)
8022 ,EQPMT_ACT_COST_TO_DATE_TC(l_index1)
8023 ,EQPMT_ACT_COST_TO_DATE_FC(l_index1)
8024 ,EQPMT_ACT_COST_TO_DATE_PC(l_index1)
8025 ,EARNED_VALUE(l_index1)
8026 ,TASK_WT_BASIS_CODE(l_index1)
8027 ,CURRENT_FLAG(l_index1)
8028 ,PROJFUNC_COST_RATE_TYPE(l_index1)
8029 ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
8030 ,PROJFUNC_COST_RATE_DATE(l_index1)
8031 ,PROJ_COST_RATE_TYPE(l_index1)
8032 ,PROJ_COST_EXCHANGE_RATE(l_index1)
8033 ,PROJ_COST_RATE_DATE(l_index1)
8034 ,TXN_CURRENCY_CODE(l_index1)
8035 ,PROG_PA_PERIOD_NAME(l_index1)
8036 ,PROG_GL_PERIOD_NAME(l_index1)
8037 ,OTH_QUANTITY_TO_DATE(l_index1)
8038 ,OTH_ACT_RAWCOST_TO_DATE_TC(l_index1)
8039 ,OTH_ACT_RAWCOST_TO_DATE_FC(l_index1)
8040 ,OTH_ACT_RAWCOST_TO_DATE_PC(l_index1)
8041 ,PPL_ACT_RAWCOST_TO_DATE_TC(l_index1)
8042 ,PPL_ACT_RAWCOST_TO_DATE_FC(l_index1)
8043 ,PPL_ACT_RAWCOST_TO_DATE_PC(l_index1)
8044 ,EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1)
8045 ,EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1)
8046 ,EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1)
8047 );
8048 IF g1_debug_mode = 'Y' THEN
8049 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);
8050 END IF;
8051 END IF;
8052
8053
8054
8055 -- Bug 3956248 : Added call of copy_actuals_for_workplan
8056
8057 BEGIN
8058 IF g1_debug_mode = 'Y' THEN
8059 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);
8060 END IF;
8061 --bug 4046422
8062 --pa_fp_copy_from_pkg.copy_actuals_for_workplan(
8063
8064 pa_progress_pvt.copy_actuals_for_workplan(
8065 p_calling_context => 'WP_APPLY_PROGRESS_TO_WORKING'
8066 ,p_project_id => p_project_id
8067 ,p_source_struct_ver_id => PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id)
8068 ,p_target_struct_ver_id => p_working_str_version_id
8069 ,x_return_status => l_return_status
8070 ,x_msg_count => l_msg_count
8071 ,x_msg_data => l_msg_data);
8072
8073
8074 IF g1_debug_mode = 'Y' THEN
8075 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);
8076 END IF;
8077 EXCEPTION
8078 WHEN OTHERS THEN
8079 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8080 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8081 p_error_text => SUBSTRB('PA_PROGRESS_PVT.COPY_ACTUALS_FOR_WORKPLAN:'||SQLERRM,1,120));
8082 RAISE FND_API.G_EXC_ERROR;
8083 END;
8084
8085 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8086 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8087 p_msg_name => l_msg_data);
8088 x_msg_data := l_msg_data;
8089 x_return_status := 'E';
8090 x_msg_count := l_msg_count;
8091 RAISE FND_API.G_EXC_ERROR;
8092 END IF;
8093
8094
8095 -- end if; -- If workplan versioning is enabled: 2
8096
8097 --bug 3846474
8098 -- Populate pl/sql tables with the all other lowest tasks and assignments.
8099 IF g1_debug_mode = 'Y' THEN
8100 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);
8101 END IF;
8102
8103 FOR all_lowest_task_rec in all_lowest_task LOOP
8104 IF g1_debug_mode = 'Y' THEN
8105 --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);
8106 --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);
8107 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);
8108 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);
8109 END IF;
8110
8111 IF all_lowest_task_rec.object_type = 'PA_ASSIGNMENTS' THEN
8112 l_res_assgn_id_tbl_assgn.extend;
8113 l_currency_code_tbl_assgn.extend;
8114 l_raw_cost_tbl_assgn.extend;
8115 l_burdened_cost_tbl_assgn.extend;
8116 l_planned_qty_tbl_assgn.extend;
8117
8118 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count):= all_lowest_task_rec.resource_assignment_id;
8119 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := all_lowest_task_rec.txn_currency_code;
8120 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := null;
8121 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := null;
8122 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
8123
8124 END IF;
8125 END LOOP;
8126
8127 IF g1_debug_mode = 'Y' THEN
8128 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);
8129 FOR i in 1..l_task_ver_id_tbl_task.count() LOOP
8130 IF g1_debug_mode = 'Y' THEN
8131 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);
8132 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);
8133 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);
8134 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);
8135 END IF;
8136 END LOOP;
8137 END IF;
8138
8139
8140 -- Call FP API to copy the Total Actual Effort + Total ETC Effort to planned effort
8141
8142 IF g1_debug_mode = 'Y' THEN
8143 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);
8144 FOR i in 1..l_res_assgn_id_tbl_assgn.count() LOOP
8145 IF g1_debug_mode = 'Y' THEN
8146 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);
8147 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);
8148 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);
8149 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);
8150 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);
8151 END IF;
8152 END LOOP;
8153 END IF;
8154
8155 -- Calling FP API for all assignments.
8156 -- 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
8157 IF (l_res_assgn_id_tbl_assgn.count > 0) then
8158 BEGIN
8159 IF g1_debug_mode = 'Y' THEN
8160 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);
8161 END IF;
8162 /* Commnted for Perf Bug 4189762 and added Calculate API
8163 pa_fp_planning_transaction_pub.update_planning_transactions
8164 (p_context => 'TASK_ASSIGNMENT'
8165 ,p_struct_elem_version_id => p_working_str_version_id
8166 ,p_resource_assignment_id_tbl => l_res_assgn_id_tbl_assgn
8167 ,p_quantity_tbl => l_planned_qty_tbl_assgn
8168 ,p_currency_code_tbl => l_currency_code_tbl_assgn
8169 ,p_apply_progress_flag => 'Y'
8170 ,p_raw_cost_tbl => l_raw_cost_tbl_assgn
8171 ,p_burdened_cost_tbl => l_burdened_cost_tbl_assgn
8172 ,x_return_status => l_return_status
8173 ,x_msg_count => l_msg_count
8174 ,x_msg_data => l_msg_data
8175 );
8176 */
8177
8178 PA_FP_CALC_PLAN_PKG.calculate
8179 (
8180 p_project_id => p_project_id
8181 ,p_budget_version_id => PA_PLANNING_TRANSACTION_UTILS.Get_Wp_Budget_Version_Id(p_working_str_version_id)
8182 ,p_source_context => 'RESOURCE_ASSIGNMENT'
8183 ,p_apply_progress_flag => 'Y'
8184 ,p_resource_assignment_tab => l_res_assgn_id_tbl_assgn
8185 ,p_txn_currency_code_tab => l_currency_code_tbl_assgn
8186 ,p_total_qty_tab => l_planned_qty_tbl_assgn
8187 ,p_total_raw_cost_tab => l_raw_cost_tbl_assgn
8188 ,p_total_burdened_cost_tab => l_burdened_cost_tbl_assgn
8189 ,x_return_status => l_return_status
8190 ,x_msg_count => l_msg_count
8191 ,x_msg_data => l_msg_data);
8192 IF g1_debug_mode = 'Y' THEN
8193 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);
8194 END IF;
8195 EXCEPTION
8196 WHEN OTHERS THEN
8197 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8198 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8199 p_error_text => SUBSTRB('Call of PA_FP_CALC_PLAN_PKG.calculate Failed:'||SQLERRM,1,120));
8200 RAISE FND_API.G_EXC_ERROR;
8201 END;
8202
8203 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8204 x_return_status := 'E';
8205 RAISE FND_API.G_EXC_ERROR;
8206 END IF;
8207 END IF;
8208
8209 pa_progress_pub.g_wbs_apply_prog := null; --- resetting the var back to null
8210 -- The following actions are also only performed if workplan versioning is enabled: 3:
8211 IF (l_version_enabled_flag = 'Y') THEN
8212
8213 -- 3.1). Calling PJI API: PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE() within it own PL/SQL Block
8214 -- to push progress actuals. This is done once here instead of, for each of the lowest tasks by calling
8215 -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8216
8217 BEGIN
8218 IF g1_debug_mode = 'Y' THEN
8219 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);
8220 END IF;
8221 -- PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(x_msg_code => l_msg_code
8222 -- ,x_return_status => l_return_status);
8223 IF g1_debug_mode = 'Y' THEN
8224 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);
8225 END IF;
8226
8227
8228 EXCEPTION
8229 WHEN OTHERS THEN
8230 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8231 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8232 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
8233 RAISE FND_API.G_EXC_ERROR;
8234 END;
8235
8236 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8237 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8238 p_msg_name => l_msg_code);
8239 x_msg_data := l_msg_code;
8240 x_return_status := 'E';
8241 RAISE FND_API.G_EXC_ERROR;
8242 END IF;
8243
8244 -- 3.2). Calling PJI API: PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA() to populate
8245 -- the temporary table: PJI_FM_XBS_ACCUM_TMP1.This is done once here instead of, for each of the lowest tasks by calling
8246 -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8247 -- Bug 3834339 : reducing the scope of IF so that populate_workplan_data gets called in version disabled case too
8248 END IF; -- IF (l_version_enabled_flag = 'Y') THEN
8249
8250 BEGIN
8251
8252 -- Bug 3846353 : Baselined str version also need to be passed, otherwise it will be null at task level
8253
8254 l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
8255
8256 IF l_baselined_str_ver_id = -1 OR l_baselined_str_ver_id IS NULL THEN
8257 l_baselined_str_ver_id := p_working_str_version_id;
8258 END IF;
8259
8260
8261 -- 4392189 : Program reporting Changes : We are calling populate_pji_tab_for_plan instead of directly calling populate_workplan_data
8262 IF g1_debug_mode = 'Y' THEN
8263 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);
8264 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);
8265 END IF;
8266
8267 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
8268 p_calling_module => p_calling_module
8269 ,p_project_id => p_project_id
8270 ,p_structure_version_id => p_working_str_version_id
8271 ,p_baselined_str_ver_id => l_baselined_str_ver_id
8272 ,p_program_rollup_flag => 'Y'
8273 ,p_calling_context => 'ROLLUP'
8274 ,x_return_status => l_return_status
8275 ,x_msg_count => l_msg_count
8276 ,x_msg_data => l_msg_data
8277 );
8278
8279 /*
8280 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
8281 p_project_id => p_project_id
8282 ,p_struct_ver_id => p_working_str_version_id
8283 ,p_base_struct_ver_id => l_baselined_str_ver_id
8284 ,x_return_status => l_return_status
8285 ,x_msg_code => l_msg_code );
8286
8287 */
8288
8289 IF g1_debug_mode = 'Y' THEN
8290 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);
8291 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);
8292
8293 DECLARE
8294 CURSOR tmp1 IS
8295 SELECT
8296 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
8297 * FROM pji_fm_xbs_accum_tmp1 WHERE project_id = p_project_id
8298 AND struct_version_id =p_working_str_version_id
8299 ;
8300 BEGIN
8301 FOR tmp1_rec IN tmp1 LOOP
8302 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);
8303 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);
8304 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);
8305 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);
8306 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);
8307 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);
8308 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);
8309 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);
8310 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);
8311 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);
8312 END LOOP;
8313 END;
8314 END IF;
8315 EXCEPTION
8316 WHEN OTHERS THEN
8317 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8318 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8319 p_error_text => SUBSTRB('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN:'||SQLERRM,1,120));
8320 RAISE FND_API.G_EXC_ERROR;
8321 END;
8322
8323 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8324 x_msg_data := l_msg_data;
8325 x_return_status := 'E';
8326 x_msg_count := l_msg_count;
8327 RAISE FND_API.G_EXC_ERROR;
8328 END IF;
8329
8330 -- 3.3). Update table: pa_proj_element_ver_structure
8331 -- 3.4). Call Rollup API for the whole structure, Pass working structure version_id.
8332 -- Bug 4346801, we should rollup even for VD projects to re-calc EV.
8333 -- IF (l_version_enabled_flag <> 'Y') THEN
8334
8335 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
8336 p_init_msg_list => p_init_msg_list
8337 --Added by rtarway for BUG 3696263
8338 ,p_calling_module => p_calling_module
8339 ,p_commit => p_commit
8340 ,p_validate_only => p_validate_only
8341 ,p_project_id => p_project_id
8342 ,p_structure_version_id => p_working_str_version_id
8343 ,p_as_of_date => l_as_of_date--l_max_as_of_date -- FPM Dev CR 4
8344 ,p_wp_rollup_method => l_task_weight_basis_code ---l_c1rec.TASK_WT_BASIS_CODE -- FPM Dev CR 4
8345 ,p_rollup_entire_wbs => 'Y' -- FPM Dev CR 4
8346 ,p_working_wp_prog_flag => 'N' ---bug 3846353 . pass 'N'. Use baselined BAC
8347 ,x_return_status => l_return_status
8348 ,x_msg_count => l_msg_count
8349 ,x_msg_data => l_msg_data);
8350
8351 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8352 x_msg_data := l_msg_data;
8353 x_return_status := 'E';
8354 x_msg_count := l_msg_count;
8355 RAISE FND_API.G_EXC_ERROR;
8356 END IF;
8357
8358 -- Call of rollup future is not needed here as there will be only one record per object in working version
8359
8360 --- END IF; -- If workplan versioning is enabled
8361
8362 UPDATE pa_proj_elem_ver_structure
8363 set date_prog_applied_on_wver = sysdate
8364 ,schedule_dirty_flag = decode( PA_Project_Structure_Utils.Check_Third_Party_Sch_Flag(p_project_id), --bug 3844689
8365 'Y', 'Y', schedule_dirty_flag ) --set this flag to indicate re-scheduling is required.
8366 WHERE project_id = p_project_id
8367 AND element_version_id = p_working_str_version_id;
8368
8369 IF (p_commit = FND_API.G_TRUE) THEN
8370 COMMIT;
8371 END IF;
8372
8373 EXCEPTION
8374 when FND_API.G_EXC_ERROR then
8375 if p_commit = FND_API.G_TRUE then
8376 rollback to APPLY_LP_PROG_ON_CWV;
8377 end if;
8378 x_return_status := FND_API.G_RET_STS_ERROR;
8379 x_msg_count := fnd_msg_pub.count_msg;
8380
8381 -- BEGIN: Commenting this code out to fix Bug # 3956275.
8382 /*
8383
8384 -- BEGIN: Adding code to fix Bug # 3815741.
8385
8386 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8387 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8388 p_error_text => SUBSTRB(SQLERRM,1,120));
8389
8390 -- END: Adding code to fix Bug # 3815741.
8391
8392 */
8393
8394 -- END: Commenting this code out to fix Bug # 3956275.
8395
8396 when FND_API.G_EXC_UNEXPECTED_ERROR then
8397 if p_commit = FND_API.G_TRUE then
8398 rollback to APPLY_LP_PROG_ON_CWV;
8399 end if;
8400 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8401 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8402 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8403 p_error_text => SUBSTRB(SQLERRM,1,120));
8404 x_msg_count := fnd_msg_pub.count_msg;
8405 when OTHERS then
8406 if p_commit = FND_API.G_TRUE then
8407 rollback to APPLY_LP_PROG_ON_CWV;
8408 end if;
8409 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8410 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8411 p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8412 p_error_text => SUBSTRB(SQLERRM,1,120));
8413 x_msg_count := fnd_msg_pub.count_msg;
8414 raise;
8415 END APPLY_LP_PROG_ON_CWV;
8416
8417 -- Progress Management Changes. Bug # 3420093.
8418
8419 PROCEDURE delete_working_wp_progress(
8420 p_api_version IN NUMBER :=1.0
8421 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
8422 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
8423 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
8424 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
8425 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
8426 ,p_debug_mode IN VARCHAR2 :='N'
8427 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8428 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8429 ,p_structure_version_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8430 ,p_task_version_id IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()
8431 ,p_calling_context IN VARCHAR2 := 'STRUCTURE_VERSION'
8432 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8433 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8434 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8435 )
8436 IS
8437 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_WORKING_WP_PROGRESS';
8438 l_api_version CONSTANT NUMBER := p_api_version;
8439 l_user_id NUMBER := FND_GLOBAL.USER_ID;
8440 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
8441 l_return_status VARCHAR2(1);
8442 l_msg_count NUMBER;
8443 l_msg_data VARCHAR2(250);
8444 i NUMBER;
8445 BEGIN
8446 IF g1_debug_mode = 'Y' THEN
8447 pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8448 END IF;
8449
8450 IF (p_debug_mode = 'Y') THEN
8451 IF g1_debug_mode = 'Y' THEN
8452 pa_debug.debug('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8453 END IF;
8454 END IF;
8455 IF (p_commit = FND_API.G_TRUE) THEN
8456 savepoint DELETE_WORKING_WP_PROGRESS;
8457 END IF;
8458
8459 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
8460 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8461 END IF;
8462
8463 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
8464 FND_MSG_PUB.initialize;
8465 END IF;
8466
8467 x_return_status := FND_API.G_RET_STS_SUCCESS;
8468
8469 if (p_calling_context = 'STRUCTURE_VERSION') then
8470
8471 delete from pa_progress_rollup
8472 where project_id = p_project_id
8473 -- and object_version_id = p_structure_version_id -- Bug 4190086
8474 and structure_version_id = p_structure_version_id -- Bug 4190086
8475 ;
8476
8477 elsif (p_calling_context = 'PROJECT_STRUCTURE') then
8478
8479 delete from pa_progress_rollup
8480 where project_id = p_project_id;
8481
8482 delete from pa_proj_progress_attr
8483 where project_id = p_project_id;
8484
8485 delete from pa_proj_workplan_attr
8486 where project_id = p_project_id;
8487
8488 elsif (p_calling_context = 'TASK_VERSION') then
8489
8490 forall i in p_task_version_id.first..p_task_version_id.last
8491 delete from pa_progress_rollup
8492 where project_id = p_project_id
8493 and object_version_id = p_task_version_id(i);
8494
8495 forall i in p_task_version_id.first..p_task_version_id.last
8496 delete from pa_percent_completes
8497 where project_id = p_project_id
8498 and object_version_id = p_task_version_id(i);
8499
8500 end if;
8501
8502 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8503 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8504 p_msg_name => l_msg_data);
8505 x_msg_data := l_msg_data;
8506 x_return_status := 'E';
8507 x_msg_count := l_msg_count;
8508 RAISE FND_API.G_EXC_ERROR;
8509 END IF;
8510
8511 IF (p_commit = FND_API.G_TRUE) THEN
8512 COMMIT;
8513 END IF;
8514 EXCEPTION
8515 when FND_API.G_EXC_ERROR then
8516 if p_commit = FND_API.G_TRUE then
8517 rollback to DELETE_WORKING_WP_PROGRESS;
8518 end if;
8519 x_return_status := FND_API.G_RET_STS_ERROR;
8520 when FND_API.G_EXC_UNEXPECTED_ERROR then
8521 if p_commit = FND_API.G_TRUE then
8522 rollback to DELETE_WORKING_WP_PROGRESS;
8523 end if;
8524 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8525 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8526 p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8527 p_error_text => SUBSTRB(SQLERRM,1,120));
8528 when OTHERS then
8529 if p_commit = FND_API.G_TRUE then
8530 rollback to DELETE_WORKING_WP_PROGRESS;
8531 end if;
8532 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8533 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8534 p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8535 p_error_text => SUBSTRB(SQLERRM,1,120));
8536 raise;
8537 END delete_working_wp_progress;
8538
8539 -- Progress Management Changes. Bug # 3420093.
8540
8541 Procedure PULL_SUMMARIZED_ACTUALS (
8542 p_api_version IN NUMBER :=1.0
8543 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
8544 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
8545 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
8546 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
8547 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
8548 ,p_debug_mode IN VARCHAR2 :='N'
8549 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8550 ,P_Project_ID IN NUMBER
8551 ,P_Calling_Mode IN VARCHAR2
8552 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8553 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8554 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8555 )
8556 IS
8557 l_api_name CONSTANT VARCHAR2(30) := 'PULL_SUMMARIZED_ACTUALS';
8558 l_api_version CONSTANT NUMBER := p_api_version;
8559 l_user_id NUMBER := FND_GLOBAL.USER_ID;
8560 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
8561 l_project_id_list SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8562 l_proj_pgm_level SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8563 l_msg_code VARCHAR2(32);
8564
8565 l_str_ver_id NUMBER;
8566 Cursor cur_Summerized_Actuals
8567 IS
8568 Select ppevs.element_version_id
8569 FROM PA_Proj_Elem_Ver_Structure ppevs,
8570 PA_Proj_Elements ppe,
8571 PA_Proj_Structure_Types ppst,
8572 PA_Structure_types pst
8573 WHERE ppevs.Project_ID = P_Project_ID
8574 AND ppevs.status_code = 'STRUCTURE_PUBLISHED'
8575 AND ppevs.proj_element_id = ppe.Proj_Element_ID
8576 AND ppe.Project_ID = ppevs.Project_ID
8577 AND ppe.Proj_Element_ID = ppst.Proj_Element_ID
8578 AND ppst.Structure_Type_ID = pst.Structure_Type_ID
8579 AND pst.structure_type = 'WORKPLAN';
8580 -- Bug 4600547 Begin
8581 CURSOR c_check_prog_exists IS
8582 SELECT 'Y'
8583 FROM pa_progress_rollup
8584 where project_id = P_Project_ID
8585 AND structure_type = 'WORKPLAN'
8586 and structure_version_id is null;
8587
8588 l_check_prog_exists VARCHAR2(1):='N';
8589 -- Bug 4600547 End
8590
8591 -- Bug 5961235 Begin
8592 CURSOR c_check_prog_exists_prg IS
8593 SELECT 'Y' from dual
8594 where exists ( select DISTINCT ppev.PROJECT_ID
8595 FROM pa_progress_rollup ppr,
8596 pa_proj_element_versions ppev
8597 where ppr.project_id=ppev.project_id
8598 and ppev.OBJECT_TYPE = 'PA_STRUCTURES'
8599 and ppr.structure_type = 'WORKPLAN'
8600 and ppr.structure_version_id is null
8601 and exists (select null
8602 from PA_PROJ_ELEMENT_VERSIONS ppev2
8603 where ppev2.project_id=p_project_id
8604 and ppev.prg_group=ppev2.prg_group)
8605 );
8606
8607 l_program_enable_flag VARCHAR2(1):='N';
8608 -- Bug 5961235 end
8609
8610 BEGIN
8611 IF g1_debug_mode = 'Y' THEN
8612 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS');
8613 END IF;
8614
8615 IF g1_debug_mode = 'Y' THEN
8616 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);
8617 END IF;
8618
8619 IF (p_commit = FND_API.G_TRUE) THEN
8620 savepoint PULL_SUMMARIZED_ACTUALS;
8621 END IF;
8622
8623 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
8624 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8625 END IF;
8626
8627 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
8628 FND_MSG_PUB.initialize;
8629 END IF;
8630
8631 x_return_status := FND_API.G_RET_STS_SUCCESS;
8632
8633 --bug 4573340
8634 IF NOT NVL(PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(P_Project_ID),'X') = 'SHARE_FULL'
8635 THEN
8636 return;
8637 END IF;
8638 --end bug 4573340 This check is not related to bugfix 4573340. This is added while fixing that bug.
8639
8640 -- Check the record
8641 OPEN cur_Summerized_Actuals;
8642 FETCH cur_Summerized_Actuals INTO l_str_ver_id;
8643 fetch cur_Summerized_Actuals into l_str_ver_id;
8644 if cur_Summerized_Actuals%notfound then
8645 If p_calling_mode = 'PUBLISH' Then
8646 l_project_id_list.extend;
8647 l_proj_pgm_level.extend;
8648 l_project_id_list(1) := P_Project_ID;
8649 l_proj_pgm_level(1) := 1; ---setting to 2 so that pgm rollup is done
8650 -- 4600547 : We don't need to set it to 2 because PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS
8651 -- will take care of program rollup part after this call
8652
8653 IF g1_debug_mode = 'Y' THEN
8654 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);
8655 END IF;
8656
8657 PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
8658 p_project_id_list => l_project_id_list
8659 --,p_extraction_type => 'FULL' 4415960
8660 ,p_extraction_type => 'PUBLISH'-- 4415960
8661 ,p_plan_res_level => 'Y'
8662 ,p_proj_pgm_level => l_proj_pgm_level
8663 ,x_return_status => x_return_status
8664 ,x_msg_count => x_msg_count
8665 ,x_msg_data => x_msg_data
8666 );
8667
8668 IF g1_debug_mode = 'Y' THEN
8669 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);
8670 END IF;
8671
8672 -- Added the if block for Bug#5659575
8673 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8674 RAISE FND_API.G_EXC_ERROR;
8675 END IF;
8676
8677 begin
8678 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (
8679 p_plan_wbs_ver_id => l_str_ver_id
8680 , x_msg_code => l_msg_code
8681 , x_return_status => x_return_status);
8682
8683 EXCEPTION
8684 WHEN OTHERS THEN
8685 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8686 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
8687 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE failed: sqlerrm='||SQLERRM,1,120));
8688 RAISE FND_API.G_EXC_ERROR;
8689 END;
8690
8691 -- Added the if block for Bug#5659575
8692 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8693 RAISE FND_API.G_EXC_ERROR;
8694 END IF;
8695
8696 -- Bug 4600547 Begin
8697 -- Added thew following cursor call to avoid unnecessary creating rollup records
8698 -- whene there is no incremental amounts found in first run for assignments
8699
8700 OPEN c_check_prog_exists;
8701 FETCH c_check_prog_exists INTO l_check_prog_exists;
8702 CLOSE c_check_prog_exists;
8703
8704 -- Bug 5961235 : For programs if sub projects has progress then we need to rollup at program task level
8705 IF nvl(l_check_prog_exists,'N') = 'N' THEN
8706 l_program_enable_flag := PA_PROJECT_STRUCTURE_UTILS.check_program_flag_enable(P_Project_ID);
8707
8708 If l_program_enable_flag = 'Y' then
8709 OPEN c_check_prog_exists_prg;
8710 FETCH c_check_prog_exists_prg INTO l_check_prog_exists;
8711 CLOSE c_check_prog_exists_prg;
8712 end if;
8713 END IF;
8714
8715 IF nvl(l_check_prog_exists,'N') = 'Y' THEN
8716
8717 IF g1_debug_mode = 'Y' THEN
8718 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);
8719 END IF;
8720
8721 PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
8722 p_project_id_list => l_project_id_list
8723 --,p_extraction_type => 'FULL' 4415960
8724 ,p_extraction_type => 'PUBLISH'-- 4415960
8725 ,p_plan_res_level => 'N'
8726 ,p_proj_pgm_level => l_proj_pgm_level
8727 ,x_return_status => x_return_status
8728 ,x_msg_count => x_msg_count
8729 ,x_msg_data => x_msg_data
8730 );
8731
8732 IF g1_debug_mode = 'Y' THEN
8733 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);
8734 END IF;
8735
8736 -- Bug 5659575
8737 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8738 RAISE FND_API.G_EXC_ERROR;
8739 END IF;
8740
8741 END IF;
8742 End If;
8743 end if;
8744 CLOSE cur_Summerized_Actuals;
8745
8746 EXCEPTION
8747 when FND_API.G_EXC_ERROR then
8748 if p_commit = FND_API.G_TRUE then
8749 rollback to PULL_SUMMARIZED_ACTUALS;
8750 end if;
8751 x_return_status := FND_API.G_RET_STS_ERROR;
8752 when FND_API.G_EXC_UNEXPECTED_ERROR then
8753 if p_commit = FND_API.G_TRUE then
8754 rollback to PULL_SUMMARIZED_ACTUALS;
8755 end if;
8756 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8757 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8758 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
8759 p_error_text => SUBSTRB(SQLERRM,1,120));
8760 when OTHERS then
8761 if p_commit = FND_API.G_TRUE then
8762 rollback to DELETE_WORKING_WP_PROGRESS;
8763 end if;
8764 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8765 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
8766 p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
8767 p_error_text => SUBSTRB(SQLERRM,1,120));
8768 raise;
8769 END PULL_SUMMARIZED_ACTUALS;
8770
8771 -- Progress Management Changes. Bug # 3420093.
8772
8773 PROCEDURE UPDATE_PROGRESS(
8774 p_api_version IN NUMBER :=1.0
8775 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
8776 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
8777 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
8778 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
8779 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
8780 ,p_debug_mode IN VARCHAR2 :='N'
8781 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8782 ,p_action IN VARCHAR2 :='SAVE'
8783 ,P_rollup_entire_wbs_flag IN VARCHAR2 :='N'
8784 ,p_progress_mode IN VARCHAR2 :='FUTURE'
8785 ,p_percent_complete_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8786 ,p_project_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8787 ,p_object_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8788 ,p_object_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8789 ,p_object_type IN VARCHAR2 :='PA_TASKS'
8790 ,p_as_of_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8791 ,p_percent_complete IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8792 ,p_progress_status_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8793 ,p_progress_comment IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8794 ,p_brief_overview IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8795 ,p_actual_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8796 ,p_actual_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8797 ,p_estimated_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8798 ,p_estimated_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8799 ,p_scheduled_start_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8800 ,p_scheduled_finish_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
8801 ,p_record_version_number IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8802 ,p_task_status IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8803 ,p_est_remaining_effort IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8804 ,p_ETC_cost IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8805 ,p_actual_work_quantity IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8806 ,p_pm_product_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8807 ,p_structure_type IN VARCHAR2 :='WORKPLAN'
8808 ,p_actual_effort IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8809 ,p_actual_cost IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8810 ,p_actual_effort_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8811 ,p_actual_cost_this_period IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8812 ,p_object_sub_type IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8813 ,p_task_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8814 ,p_structure_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8815 ,p_prog_fom_wp_flag IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8816 ,p_rollup_reporting_lines_flag IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8817 ,p_planned_cost IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8818 ,p_planned_effort IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8819 ,p_rate_based_flag IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8820 ,p_resource_class_code IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8821 ,p_transfer_wp_pc_flag IN VARCHAR := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8822 ,p_txn_currency_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
8823 ,p_rbs_element_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8824 -- ,p_resource_list_member_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3764224
8825 ,p_resource_assignment_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3764224
8826 ,p_eff_rollup_percent_complete IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- 3910193
8827 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8828 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8829 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8830 )
8831 IS
8832 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PROGRESSES' ;
8833 l_api_version CONSTANT NUMBER := p_api_version ;
8834 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
8835 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
8836 l_return_status VARCHAR2(1) ;
8837 l_msg_count NUMBER ;
8838 l_msg_data VARCHAR2(250) ;
8839 l_object_type VARCHAR2(30) ;
8840 l_structure_version_id NUMBER ;
8841 l_task_version_id NUMBER ;
8842 l_wp_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
8843 l_fin_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
8844 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
8845 L_LOWEST_LEVEL_TASK VARCHAR2(1);
8846 l_last_progress_date DATE;
8847 l_plan_version_id NUMBER;
8848
8849 --BUG3632883
8850 l_flag VARCHAR2(1);
8851
8852 CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
8853 IS
8854 SELECT element_version_id, parent_structure_version_id
8855 FROM pa_proj_element_versions
8856 WHERE proj_element_id = c_proj_element_id
8857 AND object_type = 'PA_TASKS'
8858 AND project_id = c_project_id
8859 AND parent_structure_version_id = c_structure_version_id;
8860
8861 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
8862 IS
8863 SELECT task_weight_basis_code
8864 FROM pa_proj_progress_attr
8865 WHERE project_id = c_project_id
8866 AND structure_type = c_structure_type;
8867
8868 CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
8869 IS
8870 SELECT elemver.element_version_id, elemver.parent_structure_version_id
8871 FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
8872 WHERE elemver.proj_element_id = c_proj_element_id
8873 AND elemver.object_type = 'PA_TASKS'
8874 AND elemver.project_id = c_project_id
8875 AND str.project_id = c_project_id
8876 AND elemver.parent_structure_version_id = str.element_version_id
8877 AND str.latest_eff_published_flag = 'Y';
8878
8879 --BUG3632883: Check for template, progress should not be allowed for template.
8880 --to be used only in AMG flow
8881 CURSOR c_get_template_flag
8882 IS
8883 SELECT TEMPLATE_FLAG
8884 FROM PA_PROJECTS_ALL
8885 WHERE PROJECT_ID = p_project_id;
8886
8887 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
8888 l_task_id NUMBER; --3603636
8889 -- Bug 3722011 Begin
8890 L_SHARING_ENABLED VARCHAR2(1) ;
8891 L_SPLIT_WORKPLAN VARCHAR2(1) ;
8892 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
8893 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type() ;
8894 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type() ;
8895 -- Bug 3722011 End
8896
8897 -- BEGIN: Code to fix Bug # 3821106.
8898
8899 cursor cur_percent_complete(p_project_id NUMBER, p_object_id NUMBER
8900 , p_object_version_id NUMBER, p_object_type VARCHAR2
8901 , p_as_of_date DATE) is
8902 select 'Y'
8903 from pa_progress_rollup
8904 where project_id = p_project_id
8905 and object_id = p_object_id
8906 and object_type = p_object_type
8907 and as_of_date = p_as_of_date
8908 and structure_type = 'WORKPLAN'
8909 and current_flag = 'Y'
8910 and not exists (select 1
8911 from pa_percent_completes
8912 where project_id = p_project_id
8913 and object_id = p_object_id
8914 and object_type = p_object_type
8915 and date_computed = p_as_of_date
8916 and structure_type = 'WORKPLAN');
8917
8918 cur_percent_complete_rec cur_percent_complete%rowtype;
8919
8920 l_action VARCHAR2(30);
8921
8922 l_resource_list_member_id NUMBER;
8923 l_prog_pa_period_name VARCHAR2(30);
8924 l_prog_gl_period_name VARCHAR2(30);
8925
8926 -- END: Code to fix Bug # 3821106.
8927 l_base_struct_ver_id NUMBER;
8928 l_msg_code VARCHAR2(32);
8929 l_calling_mode VARCHAR2(15);
8930
8931 -- Begin Bug # 4524977.
8932
8933 cursor l_cur_publish(l_request_id NUMBER) is
8934 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
8935 from fnd_conc_req_summary_v fcrsv
8936 where fcrsv.request_id = l_request_id;
8937
8938 l_rec_publish l_cur_publish%ROWTYPE;
8939
8940 l_wp_ver_enabled_flag VARCHAR2(1) := null;
8941
8942 l_request_id NUMBER := null;
8943 l_process_code VARCHAR2(30) := null;
8944 l_str_version_id NUMBER := null;
8945 l_structure_id NUMBER := null;
8946
8947 -- End for Bug # 4524977.
8948
8949 BEGIN
8950
8951 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
8952
8953 IF g1_debug_mode = 'Y' THEN
8954 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS');
8955 END IF;
8956
8957 -- FPM Dev CR 3 : Added Debug messages
8958 IF g1_debug_mode = 'Y' THEN
8959 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS Start : Passed Parameters :', x_Log_Level=> 3);
8960 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
8961 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
8962 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
8963 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
8964 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
8965 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
8966 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
8967 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
8968 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
8969 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete_id='||p_percent_complete_id, x_Log_Level=> 3);
8970 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
8971 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
8972 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
8973 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
8974 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
8975 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
8976 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);
8977 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_status_code='||p_progress_status_code, x_Log_Level=> 3);
8978 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
8979 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
8980 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_start_date='||p_actual_start_date, x_Log_Level=> 3);
8981 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
8982 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_start_date='||p_estimated_start_date, x_Log_Level=> 3);
8983 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_finish_date='||p_estimated_finish_date, x_Log_Level=> 3);
8984 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_start_date='||p_scheduled_start_date, x_Log_Level=> 3);
8985 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_finish_date='||p_scheduled_finish_date, x_Log_Level=> 3);
8986 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_record_version_number='||p_record_version_number, x_Log_Level=> 3);
8987 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
8988 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_est_remaining_effort='||p_est_remaining_effort, x_Log_Level=> 3);
8989 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_ETC_cost='||p_ETC_cost, x_Log_Level=> 3);
8990 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_work_quantity='||p_actual_work_quantity, x_Log_Level=> 3);
8991 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_pm_product_code='||p_pm_product_code, x_Log_Level=> 3);
8992 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
8993 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
8994 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_cost='||p_actual_cost, x_Log_Level=> 3);
8995 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);
8996 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);
8997 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_sub_type='||p_object_sub_type, x_Log_Level=> 3);
8998 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
8999 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
9000 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);
9001 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);
9002 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
9003 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
9004 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rate_based_flag='||p_rate_based_flag, x_Log_Level=> 3);
9005 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_class_code='||p_resource_class_code, x_Log_Level=> 3);
9006 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);
9007 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_txn_currency_code='||p_txn_currency_code, x_Log_Level=> 3);
9008 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rbs_element_id='||p_rbs_element_id, x_Log_Level=> 3);
9009 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_assignment_id='||p_resource_assignment_id, x_Log_Level=> 3);
9010 END IF;
9011
9012 IF (p_commit = FND_API.G_TRUE) THEN
9013 savepoint UPDATE_PROGRESS;
9014 END IF;
9015
9016 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9017 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9018 END IF;
9019
9020 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9021 FND_MSG_PUB.initialize;
9022 END IF;
9023
9024 x_return_status := FND_API.G_RET_STS_SUCCESS;
9025
9026 -- Begin fix for Bug # 4524977.
9027
9028 PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
9029 (p_project_id => p_project_id
9030 ,p_structure_type => p_structure_type
9031 ,x_request_id => l_request_id
9032 ,x_process_code => l_process_code
9033 ,x_structure_version_id => l_str_version_id
9034 ,x_return_status => l_return_status
9035 ,x_msg_count => l_msg_count
9036 ,x_msg_data => l_msg_data);
9037
9038
9039 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
9040
9041 x_msg_data := l_msg_data;
9042 x_return_status := 'E';
9043 x_msg_count := l_msg_count;
9044
9045 raise FND_API.G_EXC_ERROR;
9046
9047 end if;
9048
9049 open l_cur_publish(l_request_id);
9050 fetch l_cur_publish into l_rec_publish;
9051 close l_cur_publish;
9052
9053 l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id);
9054
9055 if ((l_rec_publish.process = 'CONC_PUBLISH')
9056 and (l_process_code in ('WUP', 'WUE'))
9057 and (l_wp_ver_enabled_flag = 'Y')) then
9058
9059 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9060 ,p_msg_name => 'PA_PS_PUBLISH_NO_PROG');
9061
9062 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
9063
9064 x_return_status := FND_API.G_RET_STS_ERROR;
9065
9066 raise FND_API.G_EXC_ERROR;
9067
9068 elsif ((l_rec_publish.process = 'CONC_UPDATE')
9069 and (l_process_code = 'WUP')
9070 and (l_wp_ver_enabled_flag = 'N')) then
9071
9072 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9073 ,p_msg_name => 'PA_PS_UPDATE_NO_PROG');
9074
9075 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
9076
9077 x_return_status := FND_API.G_RET_STS_ERROR;
9078
9079 raise FND_API.G_EXC_ERROR;
9080
9081 elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
9082 and (l_process_code = 'WUP')
9083 and (l_wp_ver_enabled_flag = 'N')) then
9084
9085 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9086 ,p_msg_name => 'PA_PS_APLPRG_NO_PROG');
9087
9088 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
9089
9090 x_return_status := FND_API.G_RET_STS_ERROR;
9091
9092 raise FND_API.G_EXC_ERROR;
9093
9094 end if;
9095
9096 -- End fix for Bug # 4524977.
9097
9098 -- BEGIN: Code to fix Bug # 3821106.
9099
9100 l_action := p_action;
9101 -- Bug 3879461 : Commented teporary code below.
9102 /*
9103 if (p_action = 'SAVE') then
9104 open cur_percent_complete(p_project_id, p_object_id
9105 , p_object_version_id, p_object_type
9106 , p_as_of_date);
9107 fetch cur_percent_complete into cur_percent_complete_rec;
9108 if cur_percent_complete%FOUND then
9109 l_action := 'PUBLISH';
9110 end if;
9111 close cur_percent_complete;
9112 end if;
9113 */
9114
9115 -- END: Code to fix Bug # 3821106.
9116
9117 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
9118 -- Bug 3722011 Begin
9119 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
9120 IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) AND p_structure_type = 'WORKPLAN' THEN
9121 l_split_workplan := 'Y';
9122 ELSE
9123 l_split_workplan := 'N';
9124 END IF;
9125 -- Bug 3722011 End
9126
9127 --BUG3632883
9128 IF (p_calling_module = 'AMG')
9129 THEN
9130 OPEN c_get_template_flag;
9131 FETCH c_get_template_flag INTO l_flag;
9132 CLOSE c_get_template_flag;
9133
9134 IF (l_flag = 'Y')
9135 THEN
9136 --Raise Error
9137 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
9138 ,p_msg_name => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
9139 x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
9140 x_return_status := FND_API.G_RET_STS_ERROR;
9141 RAISE FND_API.G_EXC_ERROR;
9142 END IF;
9143 END IF;
9144
9145 -- Begin code fix for bug # 3974859.
9146
9147 If p_structure_type = 'WORKPLAN' then
9148
9149 update pa_proj_progress_attr
9150 set next_progress_update_date = p_as_of_date
9151 where project_id = p_project_id
9152 and object_type = 'PA_STRUCTURES'
9153 and structure_type = 'WORKPLAN';
9154
9155 end if;
9156
9157 -- End code fix for bug # 3974859.
9158
9159 -- FPM Dev CR 1 : Added call of UPDATE_FINANCIAL_TASK_PROGRESS for Financial Percent Complete
9160 IF p_structure_type = 'FINANCIAL'
9161 THEN
9162 IF g1_debug_mode = 'Y' THEN
9163 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
9164 END IF;
9165
9166 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
9167 p_task_id => p_task_id
9168 ,p_project_id => p_project_id
9169 ,p_object_id => p_object_id
9170 ,p_object_type => p_object_type
9171 ,p_structure_type => p_structure_type
9172 );
9173 IF g1_debug_mode = 'Y' THEN
9174 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'l_last_progress_date='||l_last_progress_date, x_Log_Level=> 3);
9175 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
9176 END IF;
9177
9178 PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
9179 p_api_version => l_api_version
9180 ,p_init_msg_list => p_init_msg_list
9181 ,p_commit => p_commit
9182 ,p_validate_only => p_validate_only
9183 ,p_validation_level => p_validation_level
9184 ,p_calling_module => p_calling_module
9185 ,p_action => l_action -- Code to fix Bug # 3821106.
9186 ,P_rollup_entire_wbs_flag => P_rollup_entire_wbs_flag
9187 ,p_percent_complete_id => p_percent_complete_id
9188 ,p_project_id => p_project_id
9189 ,p_object_id => p_object_id
9190 ,p_object_version_id => p_object_version_id
9191 ,p_object_type => p_object_type
9192 ,p_as_of_date => p_as_of_date
9193 ,p_percent_complete => p_percent_complete
9194 ,p_structure_type => p_structure_type
9195 ,p_task_id => p_task_id
9196 ,p_structure_version_id => p_structure_version_id
9197 ,p_record_version_number => p_record_version_number
9198 ,p_progress_comment => p_progress_comment -- Bug 3595585
9199 ,p_brief_overview => p_brief_overview -- Bug 3595585
9200 ,x_return_status => l_return_status
9201 ,x_msg_count => l_msg_count
9202 ,x_msg_data => l_msg_data
9203 );
9204 IF g1_debug_mode = 'Y' THEN
9205 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);
9206 END IF;
9207
9208 -- PA_ASSIGNMENTS
9209 ELSIF p_object_type = 'PA_ASSIGNMENTS' AND p_structure_type = 'WORKPLAN' THEN
9210 IF g1_debug_mode = 'Y' THEN
9211 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
9212 END IF;
9213
9214 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
9215 p_api_version => l_api_version
9216 ,p_init_msg_list => p_init_msg_list
9217 ,p_commit => p_commit
9218 ,p_validate_only => p_validate_only
9219 ,p_validation_level => p_validation_level
9220 ,p_calling_module => p_calling_module
9221 ,p_action => l_action -- Code to fix Bug # 3821106.
9222 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
9223 ,p_progress_mode => p_progress_mode
9224 ,p_percent_complete_id => p_percent_complete_id
9225 ,p_project_id => p_project_id
9226 ,p_object_id => p_object_id
9227 ,p_object_version_id => p_object_version_id
9228 ,p_task_id => p_task_id
9229 ,p_as_of_date => p_as_of_date
9230 ,p_progress_comment => p_progress_comment
9231 ,p_brief_overview => p_brief_overview
9232 ,p_actual_start_date => p_actual_start_date
9233 ,p_actual_finish_date => p_actual_finish_date
9234 ,p_estimated_start_date => p_estimated_start_date
9235 ,p_estimated_finish_date => p_estimated_finish_date
9236 ,p_record_version_number => p_record_version_number
9237 ,p_pm_product_code => p_pm_product_code
9238 ,p_structure_type => p_structure_type
9239 ,p_structure_version_id => p_structure_version_id
9240 ,p_actual_cost_this_period => p_actual_cost_this_period
9241 ,p_actual_effort_this_period => p_actual_effort_this_period
9242 ,p_rate_based_flag => p_rate_based_flag
9243 ,p_resource_class_code => p_resource_class_code
9244 ,p_actual_cost => p_actual_cost
9245 ,p_actual_effort => p_actual_effort
9246 ,p_etc_cost_this_period => p_etc_cost
9247 ,p_etc_effort_this_period => p_est_remaining_effort
9248 ,p_txn_currency_code => p_txn_currency_code
9249 ,p_rbs_element_id => p_rbs_element_id
9250 -- ,p_resource_list_member_id => p_resource_list_member_id -- Bug 3764224
9251 ,p_resource_assignment_id => p_resource_assignment_id -- Bug 3764224
9252 ,p_scheduled_start_date => p_scheduled_start_date -- Bug 3586648
9253 ,p_scheduled_finish_date => p_scheduled_finish_date -- Bug 3586648
9254 ,x_return_status => l_return_status
9255 ,x_msg_count => l_msg_count
9256 ,x_msg_data => l_msg_data
9257 );
9258 IF g1_debug_mode = 'Y' THEN
9259 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);
9260 END IF;
9261 -- PA_DELIVERABLES
9262 ELSIF p_object_type = 'PA_DELIVERABLES' AND p_structure_type = 'WORKPLAN' THEN
9263 IF g1_debug_mode = 'Y' THEN
9264 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
9265 END IF;
9266
9267 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
9268 p_api_version => l_api_version
9269 ,p_init_msg_list => p_init_msg_list
9270 ,p_commit => p_commit
9271 ,p_validate_only => p_validate_only
9272 ,p_validation_level => p_validation_level
9273 ,p_calling_module => p_calling_module
9274 ,p_action => l_action -- Code to fix Bug # 3821106.
9275 ,p_bulk_load_flag => P_rollup_entire_wbs_flag
9276 ,p_progress_mode => p_progress_mode
9277 ,p_percent_complete_id => p_percent_complete_id
9278 ,p_project_id => p_project_id
9279 ,p_object_id => p_object_id
9280 ,p_object_type => p_object_type
9281 ,p_object_version_id => p_object_version_id
9282 ,p_del_status => p_task_status -- FPM Dev CR 1
9283 ,p_task_id => p_task_id
9284 ,p_as_of_date => p_as_of_date
9285 ,p_percent_complete => p_percent_complete
9286 ,p_progress_status_code => p_progress_status_code
9287 ,p_progress_comment => p_progress_comment
9288 ,p_brief_overview => p_brief_overview
9289 ,p_actual_finish_date => p_actual_finish_date
9290 ,p_record_version_number => p_record_version_number
9291 ,p_pm_product_code => p_pm_product_code
9292 ,p_structure_type => p_structure_type
9293 ,x_return_status => l_return_status
9294 ,x_msg_count => l_msg_count
9295 ,x_msg_data => l_msg_data
9296 );
9297 IF g1_debug_mode = 'Y' THEN
9298 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);
9299 END IF;
9300
9301 -- PA_TASKS and PA_STRUCTURES
9302 ELSIF (p_object_type = 'PA_TASKS' OR p_object_type = 'PA_STRUCTURES') AND p_structure_type = 'WORKPLAN' THEN
9303 IF g1_debug_mode = 'Y' THEN
9304 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
9305 END IF;
9306 PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
9307 p_api_version => l_api_version
9308 ,p_init_msg_list => p_init_msg_list
9309 ,p_commit => p_commit
9310 ,p_validate_only => p_validate_only
9311 ,p_validation_level => p_validation_level
9312 ,p_calling_module => p_calling_module
9313 ,p_debug_mode => p_debug_mode
9314 ,p_max_msg_count => p_max_msg_count
9315 ,p_action => l_action -- Code to fix Bug # 3821106.
9316 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
9317 ,p_progress_mode => p_progress_mode
9318 ,p_percent_complete_id => p_percent_complete_id
9319 ,p_project_id => p_project_id
9320 ,p_object_id => p_object_id
9321 ,p_object_version_id => p_object_version_id
9322 ,p_object_type => p_object_type
9323 ,p_as_of_date => p_as_of_date
9324 ,p_percent_complete => p_percent_complete
9325 ,p_progress_status_code => p_progress_status_code
9326 ,p_progress_comment => p_progress_comment
9327 ,p_brief_overview => p_brief_overview
9328 ,p_actual_start_date => p_actual_start_date
9329 ,p_actual_finish_date => p_actual_finish_date
9330 ,p_estimated_start_date => p_estimated_start_date
9331 ,p_estimated_finish_date => p_estimated_finish_date
9332 ,p_record_version_number => p_record_version_number
9333 ,p_task_status => p_task_status
9334 ,p_actual_work_quantity => p_actual_work_quantity
9335 ,p_pm_product_code => p_pm_product_code
9336 ,p_structure_type => p_structure_type
9337 ,p_prog_fom_wp_flag => p_prog_fom_wp_flag
9338 ,p_planned_cost => p_planned_cost
9339 ,p_planned_effort => p_planned_effort
9340 ,p_actual_effort => p_actual_effort
9341 ,p_est_remaining_effort => p_est_remaining_effort
9342 ,p_structure_version_id => p_structure_version_id -- Bug 3608422 : Passing structure version id too
9343 ,p_eff_rollup_percent_complete => p_eff_rollup_percent_complete --bug 3910193
9344 ,x_resource_list_member_id => l_resource_list_member_id
9345 ,x_return_status => l_return_status
9346 ,x_msg_count => l_msg_count
9347 ,x_msg_data => l_msg_data
9348 );
9349 IF g1_debug_mode = 'Y' THEN
9350 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);
9351 END IF;
9352 END IF;
9353
9354 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9355 x_msg_data := l_msg_data;
9356 x_return_status := 'E';
9357 x_msg_count := l_msg_count;
9358 RAISE FND_API.G_EXC_ERROR;
9359 END IF;
9360
9361 -- Bug 3614828 : Moved the code to get local variables for object type, task version id, structure type etc..
9362 -- here, so that it is also accessible to ASGN_DLV_TO_TASK_ROLLUP_PVT
9363 IF (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES'
9364 OR (p_structure_type = 'FINANCIAL' and p_object_type = 'PA_TASKS')) THEN
9365
9366 l_object_type := 'PA_TASKS';
9367 l_task_version_id := null;
9368 -- FPM Dev CR 1 : Call of cursor c_get_latest_pub_task_ver
9369 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
9370 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
9371 -- Bug 3957792 -- Proceed for roll-up only if task is not in cancelled status
9372 IF ( PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) <> 'CANCELLED' ) THEN
9373 OPEN c_get_latest_pub_task_ver(p_task_id, p_project_id);
9374 FETCH c_get_latest_pub_task_ver INTO l_task_version_id, l_structure_version_id;
9375 CLOSE c_get_latest_pub_task_ver;
9376 END IF;
9377
9378 ELSE
9379 OPEN c_get_task_version_id(p_task_id, p_project_id ,p_structure_version_id);
9380 FETCH c_get_task_version_id INTO l_task_version_id, l_structure_version_id;
9381 CLOSE c_get_task_version_id;
9382 END IF;
9383 l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9384 l_task_id := p_task_id; -- 3603636
9385 ELSE
9386 l_object_type := p_object_type;
9387 l_task_version_id := p_object_version_id;
9388 l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9389 l_structure_version_id := p_structure_version_id;
9390 l_task_id := p_object_id; -- 3603636
9391 END IF;
9392
9393 OPEN c_get_task_weight_method(p_project_id, p_structure_type);
9394 FETCH c_get_task_weight_method INTO l_rollup_method;
9395 CLOSE c_get_task_weight_method;
9396
9397 IF p_structure_type = 'WORKPLAN' THEN
9398 l_wp_rollup_method := l_rollup_method;
9399 ELSE
9400 l_fin_rollup_method := l_rollup_method;
9401 END IF;
9402
9403 /* maansari 21-JUN-2004 */
9404 -- Begin commenting out since we do not want this to be patched on pjd2qa unless this is tested
9405
9406 -- Bug 3614828 : Added call of ASGN_DLV_TO_TASK_ROLLUP_PVT for partial rollup
9407 IF ((l_action = 'SAVE' AND p_calling_module = 'TASK_PROG_DET_PAGE' -- Code to fix Bug # 3821106.
9408 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9409 AND (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9410 AND (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES' ) --bug 4097524 added PA_TASKS also
9411 -- 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
9412 -- This will improve performance as it will be called once only i.e. for tasks
9413 -- as of now it will be called for each assignments and deliverables for a task
9414 AND p_structure_type = 'WORKPLAN')
9415 OR --bug 4101208
9416 (l_action = 'SAVE'
9417 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9418 AND (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9419 AND ( p_object_type = 'PA_TASKS')
9420 AND p_structure_type = 'WORKPLAN')
9421 )
9422 THEN
9423 pa_progress_pub.ASGN_DLV_TO_TASK_ROLLUP_PVT(
9424 p_calling_module => p_calling_module,
9425 p_project_id => p_project_id,
9426 p_task_id => p_task_id,
9427 p_task_version_id => l_task_version_id,
9428 p_as_of_date => p_as_of_date,
9429 p_structure_version_id => l_structure_version_id,
9430 p_wp_rollup_method => l_wp_rollup_method,
9431 x_return_status => l_return_status,
9432 x_msg_count => l_msg_count,
9433 x_msg_data => l_msg_data);
9434
9435
9436 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9437 x_msg_data := l_msg_data;
9438 x_return_status := 'E';
9439 x_msg_count := l_msg_count;
9440 RAISE FND_API.G_EXC_ERROR;
9441 END IF;
9442 END IF;
9443
9444
9445 --End commenting out since we do not want this to be patched on pjd2qa unless this is tested.
9446 /* maansari 21-JUN-2004 */
9447
9448 -- Amit : 1. Call of Future Rollup Progress
9449 -- 2. lowest task variable population
9450 -- 3. object version id is of task to be passed
9451 -- 4. p_process_whole_tree to be passed as Y
9452 -- 5. structure type also to be passed
9453 -- 6. p_fin_rollup_method and p_wp_rollup_method is to be passed
9454 -- 7. l_structure_version_id is not having any value.
9455 -- 8. Call of program rollup private API
9456
9457 IF l_action = 'PUBLISH' -- Code to fix Bug # 3821106.
9458 THEN
9459
9460 IF g1_debug_mode = 'Y' THEN
9461 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action PUBLISH', x_Log_Level=> 3);
9462 END IF;
9463
9464 IF ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
9465 THEN
9466 IF l_split_workplan = 'Y' AND p_object_type <> 'PA_DELIVERABLES' THEN -- Bug 4370820 : Added <> DELIVERABLES
9467 BEGIN
9468 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N'; -- Bug 4186007
9469 -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
9470 -- is not called. Actually it gets called but PJI code does not do anything.
9471
9472 l_project_ids.extend(1);
9473 l_project_ids(1) := p_project_id;
9474 l_struture_version_ids.extend(1);
9475 l_struture_version_ids(1) := l_structure_version_id;
9476 l_proj_thru_dates_tbl.extend(1);
9477 l_proj_thru_dates_tbl(1) := p_as_of_date;
9478 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
9479 (P_PROJECT_ID_TAB => l_project_ids,
9480 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
9481 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
9482 P_CALLING_CONTEXT => 'WP_PROGRESS',
9483 P_EXTRACTION_TYPE => 'INCREMENTAL', -- Bug 4186007
9484 X_RETURN_STATUS => l_return_status,
9485 X_MSG_COUNT => l_msg_count,
9486 X_MSG_DATA => l_msg_data
9487 );
9488
9489 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ; -- Bug 4186007
9490 delete from PA_PROG_ACT_BY_PERIOD_TEMP where project_id = p_project_id
9491 AND structure_version_id = l_structure_version_id;
9492 -- 3994165 : Deletion is now moved here.
9493 EXCEPTION
9494 WHEN OTHERS THEN
9495 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9496 p_procedure_name => 'update_progress',
9497 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
9498 RAISE FND_API.G_EXC_ERROR;
9499 END;
9500
9501 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9502 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9503 p_msg_name => l_msg_data);
9504 x_msg_data := l_msg_data;
9505 x_return_status := 'E';
9506 x_msg_count := l_msg_count;
9507 RAISE FND_API.G_EXC_ERROR;
9508 END IF;
9509
9510 END IF; -- l_split_workplan = 'Y' THEN
9511
9512 IF p_structure_type = 'WORKPLAN' THEN
9513 BEGIN
9514 --- getting plan id
9515 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
9516 p_project_id => p_project_id,
9517 p_plan_type_id => -1,
9518 p_proj_str_ver_id => l_structure_version_id) ;
9519 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(
9520 p_plan_version_id => l_plan_version_id,
9521 x_msg_code => l_msg_code,
9522 x_return_status => x_return_status);
9523 EXCEPTION
9524 WHEN OTHERS THEN
9525 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9526 p_procedure_name => 'update_progress',
9527 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
9528 RAISE FND_API.G_EXC_ERROR;
9529 END;
9530 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9531 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9532 p_msg_name => l_msg_code);
9533 x_return_status := 'E';
9534 RAISE FND_API.G_EXC_ERROR;
9535 END IF;
9536
9537
9538 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
9539
9540 IF (l_base_struct_ver_id = -1) THEN
9541 l_base_struct_ver_id := l_structure_version_id; --maansari7/6 bug 3742356
9542 END IF;
9543 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
9544 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
9545 p_calling_module => p_calling_module
9546 ,p_project_id => p_project_id
9547 ,p_structure_version_id => l_structure_version_id
9548 ,p_baselined_str_ver_id => l_base_struct_ver_id
9549 ,p_program_rollup_flag => 'Y'
9550 ,p_calling_context => 'SUMMARIZE'
9551 ,p_as_of_date => p_as_of_date
9552 ,x_return_status => l_return_status
9553 ,x_msg_count => l_msg_count
9554 ,x_msg_data => l_msg_data
9555 );
9556 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9557 x_msg_data := l_msg_data;
9558 x_return_status := 'E';
9559 x_msg_count := l_msg_count;
9560 RAISE FND_API.G_EXC_ERROR;
9561 END IF;
9562
9563 /*
9564 BEGIN
9565 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
9566 p_project_id => p_project_id,
9567 p_struct_ver_id => l_structure_version_id,
9568 p_base_struct_ver_id => l_base_struct_ver_id,
9569 p_as_of_date => p_as_of_date, -- Fix for Bug # 4251406.
9570 x_return_status => x_return_status,
9571 x_msg_code => l_msg_code
9572 );
9573 EXCEPTION
9574 WHEN OTHERS THEN
9575 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9576 p_procedure_name => 'update_progress',
9577 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
9578 RAISE FND_API.G_EXC_ERROR;
9579 END;
9580 */
9581 END IF;-- p_structure_type = 'WORKPLAN' THEN
9582
9583 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
9584 p_init_msg_list => 'F'
9585 ,p_commit => 'F'
9586 ,p_validate_only => 'F'
9587 ,p_calling_module => p_calling_module
9588 ,p_progress_mode => p_progress_mode
9589 ,p_project_id => p_project_id
9590 ,P_OBJECT_TYPE => 'PA_TASKS'
9591 ,P_OBJECT_ID => l_task_id -- p_task_id 3603636
9592 ,p_object_version_id => l_task_version_id
9593 ,p_as_of_date => p_as_of_date
9594 ,p_lowest_level_task => nvl(l_lowest_level_task, 'N')
9595 ,p_process_whole_tree => 'Y'
9596 ,p_structure_version_id => l_structure_version_id
9597 ,p_rollup_entire_wbs => p_rollup_entire_wbs_flag
9598 ,p_fin_rollup_method => l_fin_rollup_method
9599 ,p_wp_rollup_method => l_wp_rollup_method
9600 ,p_task_version_id => l_task_version_id
9601 ,p_structure_type => p_structure_type
9602 ,x_return_status => l_return_status
9603 ,x_msg_count => l_msg_count
9604 ,x_msg_data => l_msg_data);
9605
9606 IF g1_debug_mode = 'Y' THEN
9607 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);
9608 END IF;
9609
9610 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9611 x_msg_data := l_msg_data;
9612 x_return_status := 'E';
9613 x_msg_count := l_msg_count;
9614 RAISE FND_API.G_EXC_ERROR;
9615 END IF;
9616
9617 -----5466645
9618 IF p_progress_mode <> 'BACKDATED' AND p_object_type = 'PA_TASKS'
9619 AND p_structure_type = 'WORKPLAN' --maansari fpm changes
9620 THEN
9621 IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' ) THEN
9622 PA_TASK_PVT1.Update_Dates_To_All_Versions(
9623 p_project_id => p_project_id
9624 ,p_element_version_id => l_task_version_id
9625 ,x_return_status => l_return_status
9626 ,x_msg_count => l_msg_count
9627 ,x_msg_data => l_msg_data );
9628 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
9629 THEN
9630 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9631 p_msg_name => l_msg_data);
9632 x_msg_data := l_msg_data;
9633 x_return_status := 'E';
9634 RAISE FND_API.G_EXC_ERROR;
9635 END IF;
9636
9637 BEGIN
9638 Select ppev1.proj_element_id
9639 into l_structure_id
9640 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
9641 where ppev2.element_version_id = l_task_version_id
9642 and ppev2.project_id = ppev1.project_id
9643 and ppev2.parent_structure_version_id = ppev1.element_version_id;
9644 EXCEPTION WHEN OTHERS THEN
9645 l_structure_id := -999;
9646 END;
9647
9648 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
9649 AND
9650 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id) = 'Y') --Bug 3784405 Satish
9651 AND
9652 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
9653 THEN
9654 --copy to transaction dates
9655 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
9656 p_validate_only => FND_API.G_FALSE
9657 ,p_project_id => p_project_id
9658 ,x_return_status => x_return_status
9659 ,x_msg_count => x_msg_count
9660 ,x_msg_data => x_msg_data);
9661 END IF;
9662 END IF;
9663 END IF; ------ p_progress_mode <> backdated
9664 -----5466645
9665
9666 IF p_progress_mode <> 'BACKDATED' THEN
9667 IF p_structure_type = 'WORKPLAN' OR
9668 (p_structure_type = 'FINANCIAL' AND p_as_of_date < NVL( l_last_progress_date, p_as_of_date ))
9669 THEN
9670 IF g1_debug_mode = 'Y' THEN
9671 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
9672 END IF;
9673 IF p_object_type IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
9674 l_calling_mode := null;
9675 ELSE
9676 l_calling_mode := 'FUTURE_ROLLUP';
9677 END IF;
9678
9679 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
9680 p_project_id => p_project_id
9681 ,P_OBJECT_TYPE => l_object_type
9682 ,P_OBJECT_ID => l_task_id -- p_task_id 3603636
9683 ,p_object_version_id => l_task_version_id
9684 ,p_as_of_date => p_as_of_date
9685 ,p_lowest_level_task => NVL( l_lowest_level_task, 'N' )
9686 ,p_calling_module => p_calling_module
9687 ,p_calling_mode => l_calling_mode -- Bug 4097710
9688 ,p_structure_type => p_structure_type
9689 ,p_structure_version_id => l_structure_version_id
9690 ,p_fin_rollup_method => l_fin_rollup_method
9691 ,p_wp_rollup_method => l_wp_rollup_method
9692 ,x_return_status => l_return_status
9693 ,x_msg_count => l_msg_count
9694 ,x_msg_data => l_msg_data
9695 );
9696
9697 IF g1_debug_mode = 'Y' THEN
9698 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);
9699 END IF;
9700 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9701 x_msg_data := l_msg_data;
9702 x_return_status := 'E';
9703 x_msg_count := l_msg_count;
9704 RAISE FND_API.G_EXC_ERROR;
9705 END IF;
9706 END IF; -- IF p_progress_mode <> 'BACKDATED'
9707 END IF; -- ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
9708 END IF; -- p_action='PUBLISH'
9709
9710 -- Bug 4392189 : Uncommenting and chaning the code for program rollup
9711 -- Bug 3807299 Calling program_rollup_pvt always
9712 --Added by rtarway for BUG 3668168, l_structure_version_id IS NOT NULL
9713 --program roll up should not be called in case of null structure version id
9714 --Program Rollup is not supported in FPM
9715 --bug 4033869
9716 --Need not be called in backdate mode, as per saima's mail
9717
9718 IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
9719 AND p_rollup_entire_wbs_flag = 'N'
9720 AND l_structure_version_id IS NOT NULL THEN
9721 IF g1_debug_mode = 'Y' THEN
9722 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
9723 END IF;
9724 pa_progress_pvt.program_rollup_pvt(
9725 p_init_msg_list => 'F'
9726 ,p_commit => 'F'
9727 ,p_validate_only => 'F'
9728 ,p_project_id => p_project_id
9729 ,p_as_of_date => p_as_of_date
9730 ,p_structure_type => p_structure_type
9731 ,p_structure_ver_id => l_structure_version_id
9732 ,x_return_status => l_return_status
9733 ,x_msg_count => l_msg_count
9734 ,x_msg_data => l_msg_data);
9735 IF g1_debug_mode = 'Y' THEN
9736 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);
9737 END IF;
9738 END IF;
9739
9740
9741 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9742 x_msg_data := l_msg_data;
9743 x_return_status := 'E';
9744 x_msg_count := l_msg_count;
9745 RAISE FND_API.G_EXC_ERROR;
9746 END IF;
9747
9748
9749 -- Bug 3807299 Calling new API update_link_proj_rollup_dates
9750 -- ADDed by rtarway for 3668168, l_structure_version_id IS NOT NULL and l_task_version_id IS NOT NULL
9751 -- Bug 3957792 : Removed the call of update_link_proj_rollup_dates. It is not implemnted as part of FPM
9752 --Uncommented as per Majid's Mail, BUG 4080922, rtarway
9753 --Need not be called in backdate mode, as per saima's mail
9754
9755 IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
9756 --AND p_rollup_entire_wbs_flag = 'N' --4080922, rtarway, removed this check because it needs to be called from AMG for each task too
9757 AND p_object_type = 'PA_TASKS'
9758 AND l_structure_version_id IS NOT NULL
9759 AND l_task_version_id IS NOT NULL
9760 THEN
9761 pa_progress_pub.update_link_proj_rollup_dates(
9762 p_init_msg_list => 'F'
9763 ,p_commit => 'F'
9764 ,p_calling_module => p_calling_module
9765 ,p_project_id => p_project_id
9766 ,p_task_id => l_task_id
9767 ,p_task_version_id => l_task_version_id
9768 ,p_as_of_date => p_as_of_date
9769 ,p_structure_version_id => l_structure_version_id
9770 ,x_return_status => l_return_status
9771 ,x_msg_count => l_msg_count
9772 ,x_msg_data => l_msg_data
9773 );
9774 END IF;
9775
9776 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9777 x_msg_data := l_msg_data;
9778 x_return_status := 'E';
9779 x_msg_count := l_msg_count;
9780 RAISE FND_API.G_EXC_ERROR;
9781 END IF;
9782
9783 END IF;
9784
9785
9786 IF (p_commit = FND_API.G_TRUE) THEN
9787 COMMIT;
9788 END IF;
9789 EXCEPTION
9790 when FND_API.G_EXC_ERROR then
9791 if p_commit = FND_API.G_TRUE then
9792 rollback to UPDATE_PROGRESS;
9793 end if;
9794 x_return_status := FND_API.G_RET_STS_ERROR;
9795 x_msg_count := fnd_msg_pub.count_msg;
9796 when FND_API.G_EXC_UNEXPECTED_ERROR then
9797 if p_commit = FND_API.G_TRUE then
9798 rollback to UPDATE_PROGRESS;
9799 end if;
9800 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9801 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9802 p_procedure_name => 'UPDATE_PROGRESS',
9803 p_error_text => SUBSTRB(SQLERRM,1,120));
9804 x_msg_count := fnd_msg_pub.count_msg;
9805 when OTHERS then
9806 if p_commit = FND_API.G_TRUE then
9807 rollback to UPDATE_PROGRESS;
9808 end if;
9809 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9810 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9811 p_procedure_name => 'UPDATE_PROGRESS',
9812 p_error_text => SUBSTRB(SQLERRM,1,120));
9813 x_msg_count := fnd_msg_pub.count_msg;
9814 raise;
9815 END update_progress;
9816
9817 -- Progress Management Changes. Bug # 3420093.
9818
9819 PROCEDURE populate_pji_tab_for_plan(
9820 p_api_version IN NUMBER :=1.0
9821 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
9822 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
9823 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
9824 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
9825 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
9826 ,p_debug_mode IN VARCHAR2 :='N'
9827 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9828 ,p_project_id IN NUMBER
9829 ,p_project_element_id IN NUMBER DEFAULT NULL --bug 4183307
9830 ,p_structure_version_id IN NUMBER DEFAULT NULL
9831 ,p_baselined_str_ver_id IN NUMBER DEFAULT NULL
9832 ,p_structure_type IN VARCHAR2 := 'WORKPLAN' -- Bug 3627315
9833 ,p_populate_tmp_tab_flag IN VARCHAR2 := 'Y' --bug 4290593
9834 ,p_program_rollup_flag IN VARCHAR2 := 'Y' --bug 4392189
9835 ,p_calling_context IN VARCHAR2 := 'ROLLUP' -- bug 4392189 , Possible values are ROLLUP and SUMMARIZE
9836 ,p_as_of_date IN DATE := null -- bug 4392189
9837 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9838 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
9839 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9840 ) AS
9841 l_api_name CONSTANT VARCHAR2(30) := 'populate_pji_tab_for_plan';
9842 l_api_version CONSTANT NUMBER := p_api_version;
9843 l_user_id NUMBER := FND_GLOBAL.USER_ID;
9844 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
9845 l_return_status VARCHAR2(1);
9846 l_msg_count NUMBER;
9847 l_msg_data VARCHAR2(250);
9848 l_baselined_str_ver_id NUMBER; -- FPM Dev CR 7
9849 l_plan_version_id NUMBER; -- Bug 3627315
9850 l_structure_version_id NUMBER; -- Bug 3627315
9851 BEGIN
9852
9853 IF g1_debug_mode = 'Y' THEN
9854 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN');
9855 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
9856 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);
9857 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);
9858 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);
9859 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);
9860 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);
9861 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);
9862 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);
9863 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);
9864 END IF;
9865
9866 IF (p_commit = FND_API.G_TRUE) THEN
9867 savepoint plan_qtys;
9868 END IF;
9869
9870 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9871 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9872 END IF;
9873
9874 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9875 FND_MSG_PUB.initialize;
9876 END IF;
9877
9878 x_return_status := FND_API.G_RET_STS_SUCCESS;
9879
9880 --bug 4290593
9881 IF p_populate_tmp_tab_flag = 'N' AND PA_PROJ_STRUCTURE_UTILS.CHECK_PJI_TEMP_TAB_POPULATED(p_project_id) = 'Y'
9882 THEN
9883 return;
9884 END IF;
9885 --end bug 4290593
9886
9887 -- FPM Dev CR 7 : Passing null if baseline structure version id is -1
9888 IF p_baselined_str_ver_id = -1 THEN
9889 l_baselined_str_ver_id := null;
9890 ELSE
9891 l_baselined_str_ver_id := p_baselined_str_ver_id;
9892 END IF;
9893 -- Bug 3627315 : Added coce to get baseline plan version id and structure version id
9894 IF p_structure_type = 'FINANCIAL' THEN
9895
9896 /* Begin Fix for Bug # 4115607. */
9897
9898 -- l_plan_version_id := PA_FIN_PLAN_UTILS.Get_app_budget_cost_cb_ver(p_project_id);
9899
9900 l_plan_version_id := pa_progress_utils.get_app_cost_budget_cb_wor_ver(p_project_id);
9901
9902 /* End fix for Bug # 4115607. */
9903
9904 l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_FIN_STRUC_VER_ID(p_project_id);
9905 END IF;
9906
9907 BEGIN
9908 -- Bug 3627315 : Added code to conditionally call PJI API with diff parameters
9909 IF p_structure_type = 'WORKPLAN' THEN
9910 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
9911 p_project_id => p_project_id,
9912 p_struct_ver_id => p_structure_version_id,
9913 p_base_struct_ver_id => l_baselined_str_ver_id,
9914 p_project_element_id => p_project_element_id, ----bug 4183307
9915 p_program_rollup_flag => p_program_rollup_flag, -- bug 4392189
9916 p_calling_context => p_calling_context, -- bug 4392189
9917 p_as_of_date => p_as_of_date, -- bug 4392189
9918 x_return_status => l_return_status,
9919 x_msg_code => l_msg_data
9920 );
9921 ELSE --FINANCIAL
9922
9923 IF (l_plan_version_id is not null) THEN -- Added to fix Bug # 3813130.
9924
9925 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
9926 p_project_id => p_project_id,
9927 p_struct_ver_id => l_structure_version_id,
9928 p_workplan_flag => 'N', --This will populate financial data in pji tmp1 table.
9929 p_plan_version_id => l_plan_version_id,
9930 x_return_status => l_return_status,
9931 x_msg_code => l_msg_data
9932 );
9933
9934 end if; -- Added to fix Bug # 3813130.
9935
9936 END IF;
9937 EXCEPTION
9938 WHEN OTHERS THEN
9939 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9940 p_procedure_name => 'POPULATE_PJI_TAB_FOR_PLAN',
9941 p_error_text => SUBSTRB('Call of PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data Failed. SQLERRM='||SQLERRM,1,120));
9942 RAISE FND_API.G_EXC_ERROR;
9943 END;
9944
9945 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9946 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9947 p_msg_name => l_msg_data);
9948 x_msg_data := l_msg_data;
9949 x_return_status := 'E';
9950 x_msg_count := l_msg_count;
9951 RAISE FND_API.G_EXC_ERROR;
9952 END IF;
9953
9954
9955 EXCEPTION
9956 when FND_API.G_EXC_ERROR then
9957 if p_commit = FND_API.G_TRUE then
9958 rollback to plan_qtys;
9959 end if;
9960 x_return_status := FND_API.G_RET_STS_ERROR;
9961 when FND_API.G_EXC_UNEXPECTED_ERROR then
9962 if p_commit = FND_API.G_TRUE then
9963 rollback to plan_qtys;
9964 end if;
9965 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9966 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9967 p_procedure_name => 'populate_pji_tab_for_plan',
9968 p_error_text => SUBSTRB(SQLERRM,1,120));
9969 when OTHERS then
9970 if p_commit = FND_API.G_TRUE then
9971 rollback to plan_qtys;
9972 end if;
9973 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9974 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
9975 p_procedure_name => 'populate_pji_tab_for_plan',
9976 p_error_text => SUBSTRB(SQLERRM,1,120));
9977 raise;
9978 END populate_pji_tab_for_plan;
9979
9980 -- This API takes Actual and ETC incrmental amounts to update in PJI data model
9981
9982 PROCEDURE push_workplan_actuals(
9983 p_api_version IN NUMBER :=1.0
9984 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
9985 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
9986 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
9987 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
9988 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
9989 ,p_debug_mode IN VARCHAR2 :='N'
9990 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9991 ,p_project_Id NUMBER
9992 ,p_structure_version_id NUMBER
9993 ,p_proj_element_id NUMBER
9994 ,p_object_id NUMBER
9995 ,p_object_type VARCHAR2
9996 ,p_as_of_date DATE
9997 ,p_resource_assignment_id NUMBER :=null -- Bug 4186007
9998 ,p_resource_list_member_id NUMBER :=null-- Bug 4186007
9999 ,p_rbs_element_id NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10000 ,p_rate_based_flag VARCHAR2 := 'Y' -- Default for Task
10001 ,p_resource_class_code VARCHAR2 :='PEOPLE' -- Default for Task
10002 -- ,p_TXN_CURRENCY_CODE VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR Bug 3595585 Removed not needed
10003 ,p_act_TXN_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10004 ,p_act_PRJ_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10005 ,p_act_POU_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10006 ,p_act_effort_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10007 ,p_etc_TXN_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10008 ,p_etc_PRJ_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10009 ,p_etc_POU_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10010 ,p_etc_effort_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10011 ,p_call_pji_apis_flag VARCHAR2 := 'Y'
10012 ,p_act_TXN_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10013 ,p_act_PRJ_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10014 ,p_act_POU_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10015 ,p_etc_TXN_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10016 ,p_etc_PRJ_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10017 ,p_etc_POU_raw_COST_this_period NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10018 -- BUG # 3659659.
10019 ,p_txn_currency_code VARCHAR2 := null
10020 ,p_prj_currency_code VARCHAR2 := null
10021 ,p_pfn_currency_code VARCHAR2 := null
10022 -- BUG # 3659659.
10023 --bug3675107
10024 ,p_pa_period_name VARCHAR2 :=null
10025 ,p_gl_period_name VARCHAR2 :=null
10026 --bug3675107
10027 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10028 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10029 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10030 ) IS
10031 -- Bug 3621404 : Added parameters for raw cost fields. Existing fields will work as burdened cost
10032 l_api_name CONSTANT VARCHAR2(30) := 'push_workplan_actuals';
10033 l_api_version CONSTANT NUMBER := p_api_version;
10034 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10035 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10036 l_return_status VARCHAR2(1);
10037 l_msg_count NUMBER;
10038 l_msg_data VARCHAR2(250);
10039
10040
10041 CURSOR cur_rollup(c_period_type VARCHAR2)
10042 IS
10043 SELECT decode(c_period_type, 'P', PROG_PA_PERIOD_NAME, 'G', PROG_GL_PERIOD_NAME, null )
10044 FROM pa_progress_rollup
10045 WHERE project_id = p_project_id
10046 AND object_id = p_object_id
10047 AND proj_element_id = p_proj_element_id
10048 AND as_of_date = p_as_of_date
10049 AND structure_type = 'WORKPLAN'
10050 ;
10051
10052 l_period_name VARCHAR2(150);
10053 l_period_TYPE VARCHAR2(1);
10054 l_RBS_VERSION_ID NUMBER;
10055 l_structure_version_id NUMBER;
10056 l_RBS_ELEMENT_ID NUMBER;
10057 l_TXN_BRDN_COST NUMBER;
10058 l_PRJ_BRDN_COST NUMBER;
10059 l_PFC_BRDN_COST NUMBER;
10060 l_etc_quantity NUMBER; -- Bug 3595585
10061 l_org_id NUMBER; -- Bug 3595585
10062 l_rate_based_flag VARCHAR2(1); -- Bug 3595585
10063 l_ETC_TXN_BURDENED_COST NUMBER; -- Bug 3595585
10064 l_ETC_PRJ_BURDENED_COST NUMBER; -- Bug 3595585
10065 l_ETC_PFC_BURDENED_COST NUMBER; -- Bug 3595585
10066 l_resource_class_code pa_resource_assignments.resource_class_code%TYPE; -- Bug 3595585
10067 l_PLAN_TYPE_ID NUMBER; -- Bug 3595585
10068 l_PLAN_VERSION_ID NUMBER; -- Bug 3595585
10069 L_BASE_STRUCT_VER_ID NUMBER; -- Bug 3595585
10070 l_msg_code VARCHAR2(32);
10071 -- Bug 3621404 : Raw Cost Changes
10072 l_etc_TXN_raw_COST_this_period NUMBER;
10073 l_etc_PRJ_raw_COST_this_period NUMBER;
10074 l_etc_POU_raw_COST_this_period NUMBER;
10075
10076 -- BUG # 3659659.
10077
10078 l_txn_currency_code VARCHAR2(15) := null;
10079 l_prj_currency_code VARCHAR2(15) := null;
10080 l_pfn_currency_code VARCHAR2(15) := null;
10081
10082 cursor proj_all(p_project_id NUMBER) is
10083 select project_currency_code, projfunc_currency_code
10084 from pa_projects_all
10085 where project_id = p_project_id;
10086
10087 -- BUG # 3659659.
10088
10089 cursor cur_org_id(p_project_id NUMBER) is
10090 select org_id
10091 from pa_projects
10092 where project_id = p_project_Id;
10093
10094 --bug3675107
10095 l_pa_period_name VARCHAR2(30) :=null;
10096 l_gl_period_name VARCHAR2(30) :=null;
10097 --bug3675107
10098 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
10099
10100 -- Bug 4186007 Begin
10101 l_structure_sharing_code VARCHAR2(30);
10102 l_sharing_Enabled VARCHAR2(1);
10103 l_split_workplan VARCHAR2(1);
10104 -- Bug 4186007 End
10105
10106 BEGIN
10107
10108 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10109 IF g1_debug_mode = 'Y' THEN
10110 pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_workplan_actuals');
10111 END IF;
10112
10113 IF (p_debug_mode = 'Y') THEN
10114 IF g1_debug_mode = 'Y' THEN
10115 pa_debug.debug('PA_PROGRESS_PUB.push_workplan_actuals');
10116 END IF;
10117 END IF;
10118
10119 IF (p_commit = FND_API.G_TRUE) THEN
10120 savepoint push_actuals;
10121 END IF;
10122
10123 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10124 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10125 END IF;
10126
10127 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10128 FND_MSG_PUB.initialize;
10129 END IF;
10130
10131 x_return_status := FND_API.G_RET_STS_SUCCESS;
10132 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
10133
10134 IF NVL(p_structure_version_id,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM --bug 3625085
10135 THEN
10136 l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_WP_VERSION(p_project_id);
10137 ELSE
10138 l_structure_version_id := p_structure_version_id;
10139 END IF;
10140
10141 IF p_RBS_ELEMENT_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10142 THEN
10143 l_RBS_ELEMENT_ID := null;
10144 ELSE
10145 l_RBS_ELEMENT_ID := p_RBS_ELEMENT_ID;
10146 END IF;
10147
10148 -- Bug 3595585 : Added following checks
10149
10150
10151 IF p_etc_effort_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10152 THEN
10153 l_ETC_QUANTITY := null;
10154 ELSE
10155 l_ETC_QUANTITY := p_etc_effort_this_period;
10156 END IF;
10157
10158 IF p_etc_TXN_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10159 THEN
10160 l_ETC_TXN_BURDENED_COST := null;
10161 ELSE
10162 l_ETC_TXN_BURDENED_COST := p_etc_TXN_COST_this_period;
10163 END IF;
10164
10165 IF p_etc_PRJ_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10166 THEN
10167 l_ETC_PRJ_BURDENED_COST := null;
10168 ELSE
10169 l_ETC_PRJ_BURDENED_COST := p_etc_PRJ_COST_this_period;
10170 END IF;
10171
10172 IF p_etc_POU_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10173 THEN
10174 l_ETC_PFC_BURDENED_COST := null;
10175 ELSE
10176 l_ETC_PFC_BURDENED_COST := p_etc_POU_COST_this_period;
10177 END IF;
10178
10179 IF p_resource_class_code IS NULL
10180 THEN
10181 l_resource_class_code := 'PEOPLE';
10182 ELSE
10183 l_resource_class_code := p_resource_class_code;
10184 END IF;
10185
10186 IF p_rate_based_flag IS NULL
10187 THEN
10188 l_rate_based_flag := 'Y';
10189 ELSE
10190 l_rate_based_flag := p_rate_based_flag;
10191 END IF;
10192 -- Bug 3621404 : Raw Cost Changes
10193
10194
10195 IF p_etc_TXN_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10196 THEN
10197 l_etc_TXN_raw_COST_this_period := null;
10198 ELSE
10199 l_etc_TXN_raw_COST_this_period := p_etc_TXN_raw_COST_this_period;
10200 END IF;
10201
10202 IF p_etc_PRJ_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10203 THEN
10204 l_etc_PRJ_raw_COST_this_period := null;
10205 ELSE
10206 l_etc_PRJ_raw_COST_this_period := p_etc_PRJ_raw_COST_this_period;
10207 END IF;
10208
10209 IF p_etc_POU_raw_COST_this_period = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10210 THEN
10211 l_etc_POU_raw_COST_this_period := null;
10212 ELSE
10213 l_etc_POU_raw_COST_this_period := p_etc_POU_raw_COST_this_period;
10214 END IF;
10215
10216 BEGIN
10217 open cur_org_id(p_project_id);
10218 fetch cur_org_id into l_org_id;
10219 close cur_org_id;
10220 END;
10221
10222 BEGIN
10223 l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase( l_structure_version_id ); -- Bug 3608422 : passing l_ instead of p_
10224 EXCEPTION
10225 WHEN OTHERS THEN
10226 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10227 p_procedure_name => 'push_workplan_actuals',
10228 p_error_text => SUBSTRB('PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase:'||SQLERRM,1,120));
10229 RAISE FND_API.G_EXC_ERROR;
10230 END;
10231
10232
10233 IF l_period_type = 'P' AND p_pa_period_name IS NOT NULL
10234 THEN
10235 l_PERIOD_NAME := p_pa_period_name;
10236 ELSIF l_period_type = 'P' AND p_pa_period_name IS NULL
10237 THEN
10238 l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
10239 END IF;
10240
10241 IF l_period_type = 'G' AND p_gl_period_name IS NOT NULL
10242 THEN
10243 l_PERIOD_NAME := p_gl_period_name;
10244 ELSIF l_period_type = 'G' AND p_gl_period_name IS NULL
10245 THEN
10246 l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
10247 END IF;
10248
10249 --bug 3675107
10250
10251 BEGIN
10252 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
10253 EXCEPTION
10254 WHEN OTHERS THEN
10255 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10256 p_procedure_name => 'PUSH_WORKPLAN_ACTUALS',
10257 p_error_text => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id:'||SQLERRM,1,120));
10258 RAISE FND_API.G_EXC_ERROR;
10259 END;
10260
10261 BEGIN
10262 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
10263 p_project_id => p_project_id,
10264 p_plan_type_id => -1,
10265 p_proj_str_ver_id => l_structure_version_id) ;
10266 EXCEPTION
10267 WHEN OTHERS THEN
10268 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10269 p_procedure_name => 'PUSH_WORKPLAN_ACTUALS',
10270 p_error_text => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_version_id:'||SQLERRM,1,120));
10271 RAISE FND_API.G_EXC_ERROR;
10272 END;
10273
10274 BEGIN
10275
10276 -- BUG # 3659659. Obtain proper values of currency codes if they are null.
10277
10278 if (p_prj_currency_code is null or p_pfn_currency_code is null) then
10279 open proj_all(p_project_id);
10280 fetch proj_all INTO l_prj_currency_code, l_pfn_currency_code;
10281 close proj_all;
10282 end if;
10283
10284 if (p_prj_currency_code is not null) then
10285 l_prj_currency_code := p_prj_currency_code;
10286 end if;
10287
10288 if (p_pfn_currency_code is not null) then
10289 l_pfn_currency_code := p_pfn_currency_code;
10290 end if;
10291
10292 if (p_txn_currency_code is null) then
10293 l_txn_currency_code := l_prj_currency_code;
10294 else
10295 l_txn_currency_code := p_txn_currency_code;
10296 end if;
10297
10298 -- Bug 3801745 : Commneted below code, not required now
10299 --IF l_rate_based_flag = 'N' THEN -- Bug 3836485
10300 -- l_act_quantity := null;
10301 -- l_ETC_QUANTITY := null;
10302 --END IF;
10303
10304 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
10305 l_TXN_BRDN_COST := null;
10306 l_PRJ_BRDN_COST := null;
10307 l_PFC_BRDN_COST := null;
10308 l_ETC_TXN_BURDENED_COST := null;
10309 l_ETC_PRJ_BURDENED_COST := null;
10310 l_ETC_PFC_BURDENED_COST := null;
10311 l_etc_TXN_raw_COST_this_period := null;
10312 l_etc_PRJ_raw_COST_this_period := null;
10313 l_etc_POU_raw_COST_this_period := null;
10314 END IF;
10315
10316
10317
10318 IF g1_debug_mode = 'Y' THEN
10319 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Log_Level=> 3);
10320 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_PROJECT_ID='||p_PROJECT_ID, x_Log_Level=> 3);
10321 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_org_id='||l_org_id, x_Log_Level=> 3);
10322 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);
10323 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);
10324 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PERIOD_NAME='||l_PERIOD_NAME, x_Log_Level=> 3);
10325 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_period_TYPE='||l_period_TYPE, x_Log_Level=> 3);
10326 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);
10327 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);
10328 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);
10329 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);
10330 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);
10331 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);
10332 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);
10333 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);
10334 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);
10335 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);
10336 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);
10337 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);
10338 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_QUANTITY='||l_ETC_QUANTITY, x_Log_Level=> 3);
10339 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);
10340 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);
10341 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);
10342 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);
10343 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);
10344 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);
10345 END IF;
10346
10347
10348 INSERT INTO PJI_FM_EXTR_PLAN_LINES (
10349 PROJECT_ID
10350 ,PROJECT_ORG_ID
10351 ,PROJECT_ELEMENT_ID
10352 ,STRUCT_VER_ID
10353 ,PERIOD_NAME
10354 ,CALENDAR_TYPE
10355 ,START_DATE
10356 ,END_DATE
10357 ,RBS_ELEMENT_ID
10358 ,RBS_VERSION_ID
10359 ,PLAN_VERSION_ID
10360 ,PLAN_TYPE_ID
10361 ,WP_VERSION_FLAG
10362 ,ROLLUP_TYPE
10363 ,TXN_CURRENCY_CODE
10364 ,TXN_RAW_COST
10365 ,TXN_BURDENED_COST
10366 ,TXN_REVENUE
10367 ,PRJ_CURRENCY_CODE
10368 ,PRJ_RAW_COST
10369 ,PRJ_BURDENED_COST
10370 ,PRJ_REVENUE
10371 ,PFC_CURRENCY_CODE
10372 ,PFC_RAW_COST
10373 ,PFC_BURDENED_COST
10374 ,PFC_REVENUE
10375 ,QUANTITY
10376 ,RESOURCE_CLASS_CODE
10377 ,RATE_BASED_FLAG
10378 ,ETC_QUANTITY
10379 ,ETC_TXN_BURDENED_COST
10380 ,ETC_PRJ_BURDENED_COST
10381 ,ETC_PFC_BURDENED_COST
10382 ,ETC_TXN_RAW_COST
10383 ,ETC_PRJ_RAW_COST
10384 ,ETC_PFC_RAW_COST
10385 )
10386 values(
10387 p_PROJECT_ID
10388 ,l_org_id
10389 ,p_PROJ_ELEMENT_ID
10390 ,l_structure_version_id
10391 ,l_PERIOD_NAME
10392 ,l_period_TYPE
10393 ,null
10394 ,p_as_of_date
10395 ,l_RBS_ELEMENT_ID
10396 ,null
10397 ,l_plan_version_id
10398 ,l_plan_type_id
10399 ,'Y'
10400 ,'W'
10401 ,l_txn_currency_code
10402 ,null
10403 ,null
10404 ,null
10405 ,l_prj_currency_code
10406 ,null
10407 ,null
10408 ,null
10409 ,l_pfn_currency_code
10410 ,null
10411 ,null
10412 ,null
10413 ,null
10414 ,l_resource_class_code
10415 ,l_rate_based_flag
10416 ,l_ETC_QUANTITY
10417 ,l_ETC_TXN_BURDENED_COST
10418 ,l_ETC_PRJ_BURDENED_COST
10419 ,l_ETC_PFC_BURDENED_COST
10420 ,l_etc_TXN_raw_COST_this_period
10421 ,l_etc_PRJ_raw_COST_this_period
10422 ,l_etc_POU_raw_COST_this_period
10423 );
10424 EXCEPTION
10425 WHEN OTHERS THEN
10426 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10427 p_procedure_name => 'push_workplan_actuals',
10428 p_error_text => SUBSTRB('INSERT INTO PJI_FM_EXTR_PLAN_LINES:'||SQLERRM,1,120));
10429 RAISE FND_API.G_EXC_ERROR;
10430 END;
10431
10432 -- Bug 4186007 Begin
10433 -- Now we will not use POPULATE_PRG_ACT_TBL_SINGLE to poulate the PA_PROG_ACT_BY_PERIOD_TEMP
10434 -- it was populating the cumulative amount.
10435 -- Now we will populate the incrmental amount and will call API MAINTAIN_ACTUAL_AMT_WRP
10436 -- with p_extraction_type as INCRMENTAL
10437 l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
10438 l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
10439 IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) THEN
10440 l_split_workplan := 'Y';
10441 ELSE
10442 l_split_workplan := 'N';
10443 END IF;
10444
10445 IF NVL(l_split_workplan, 'N') = 'Y' AND p_resource_assignment_id IS NOT NULL THEN
10446 --delete from PA_PROG_ACT_BY_PERIOD_TEMP;
10447 -- 3994165 : Deletion is now moved to the wrapper Bulk API.
10448
10449 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
10450 project_id
10451 , structure_version_id
10452 , task_id
10453 , resource_assignment_id
10454 , as_of_date
10455 , actual_cost
10456 , actual_effort
10457 , period_name
10458 , txn_currency_code
10459 , actual_cost_pc
10460 , actual_cost_fc
10461 , actual_rawcost
10462 , actual_rawcost_pc
10463 , actual_rawcost_fc
10464 , hidden_res_assgn_id
10465 , resource_list_member_id
10466 , current_flag
10467 , object_type
10468 , percent_complete_id
10469 , attribute1
10470 , attribute2
10471 , attribute3
10472 , attribute4
10473 , attribute5
10474 , attribute6
10475 , start_date -- 4310021
10476 , finish_date -- 4310021
10477 )
10478 VALUES (
10479 p_PROJECT_ID
10480 , l_structure_version_id
10481 , p_PROJ_ELEMENT_ID
10482 , p_resource_assignment_id
10483 , p_as_of_date
10484 , p_act_TXN_COST_this_period
10485 , p_act_effort_this_period
10486 , l_PERIOD_NAME
10487 , l_txn_currency_code
10488 , p_act_PRJ_COST_this_period
10489 , p_act_POU_COST_this_period
10490 , p_act_TXN_raw_COST_this_period
10491 , p_act_PRJ_raw_COST_this_period
10492 , p_act_POU_raw_COST_this_period
10493 , to_number(null)
10494 , p_resource_list_member_id
10495 , to_char(null)
10496 , p_object_type
10497 , to_number(null)
10498 , to_char(null)
10499 , to_char(null)
10500 , to_char(null)
10501 , to_number(null)
10502 , to_number(null)
10503 , to_number(null)
10504 , p_as_of_date -- 4310021
10505 , p_as_of_date -- 4310021
10506 );
10507
10508 END IF; -- NVL(l_split_workplan, 'N') = 'Y'
10509 -- Bug 4186007 End
10510
10511
10512 -- Call PJI API's if p_call_pji_apis_flag is set.
10513
10514 -- NO NEED TO CALL PLAN_UPDATE HERE. IT IS CALLED IN UPDATE_PROGRESS ONLY
10515
10516
10517 IF x_return_status <> 'S' THEN
10518 RAISE FND_API.G_EXC_ERROR;
10519 END IF;
10520
10521 EXCEPTION
10522 when FND_API.G_EXC_ERROR then
10523 if p_commit = FND_API.G_TRUE then
10524 rollback to push_actuals;
10525 end if;
10526 x_return_status := FND_API.G_RET_STS_ERROR;
10527 when FND_API.G_EXC_UNEXPECTED_ERROR then
10528 if p_commit = FND_API.G_TRUE then
10529 rollback to push_actuals;
10530 end if;
10531 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10532 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10533 p_procedure_name => 'push_workplan_actuals',
10534 p_error_text => SUBSTRB(SQLERRM,1,120));
10535 when OTHERS then
10536 if p_commit = FND_API.G_TRUE then
10537 rollback to push_actuals;
10538 end if;
10539 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10540 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10541 p_procedure_name => 'push_workplan_actuals',
10542 p_error_text => SUBSTRB(SQLERRM,1,120));
10543 raise;
10544 END push_workplan_actuals;
10545
10546 -- Progress Management Change for bug # 3420093.
10547
10548 PROCEDURE program_rollup_pvt(
10549 p_api_version IN NUMBER :=1.0
10550 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10551 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10552 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10553 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10554 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10555 ,p_debug_mode IN VARCHAR2 :='N'
10556 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10557 ,p_project_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10558 ,p_as_of_date IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
10559 ,p_structure_type IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10560 ,p_structure_ver_id IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10561 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10562 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10563 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10564 )
10565 IS
10566 l_api_name CONSTANT VARCHAR2(30) := 'PROGRAM_ROLLUP_PVT';
10567 l_api_version CONSTANT NUMBER := p_api_version;
10568 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10569 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10570 l_return_status VARCHAR2(1);
10571 l_msg_count NUMBER;
10572 l_msg_data VARCHAR2(250);
10573 g1_debug_mode VARCHAR2(1);
10574
10575 BEGIN
10576
10577 --Open Question:
10578 --1. The parent Project progress record should go to the parent project cycle date.
10579 --As of now it is going with just passed as of date.
10580 --2.
10581 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10582
10583 IF g1_debug_mode = 'Y' THEN
10584 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
10585 END IF;
10586
10587 IF g1_debug_mode = 'Y' THEN
10588 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);
10589 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10590 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);
10591 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);
10592 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
10593 END IF;
10594
10595 IF g1_debug_mode = 'Y' THEN
10596 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
10597 END IF;
10598
10599 IF (p_commit = FND_API.G_TRUE) THEN
10600 savepoint PROGRAM_ROLLUP_PVT;
10601 END IF;
10602
10603 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10604 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10605 END IF;
10606
10607 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10608 FND_MSG_PUB.initialize;
10609 END IF;
10610
10611 x_return_status := FND_API.G_RET_STS_SUCCESS;
10612
10613 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
10614
10615 PA_PROGRESS_PVT.program_rollup_pvt(
10616 p_api_version => p_api_version
10617 ,p_init_msg_list => p_init_msg_list
10618 ,p_commit => p_commit
10619 ,p_validate_only => p_validate_only
10620 ,p_validation_level => p_validation_level
10621 ,p_calling_module => p_calling_module
10622 ,p_debug_mode => p_debug_mode
10623 ,p_max_msg_count => p_max_msg_count
10624 ,p_project_id => p_project_id
10625 ,p_as_of_date => p_as_of_date
10626 ,p_structure_type => p_structure_type
10627 ,p_structure_ver_id => p_structure_ver_id
10628 ,x_return_status => l_return_status
10629 ,x_msg_count => l_msg_count
10630 ,x_msg_data => l_msg_data);
10631
10632 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10633 x_msg_data := l_msg_data;
10634 x_return_status := 'E';
10635 x_msg_count := l_msg_count;
10636 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10637 END IF;
10638
10639 IF (p_commit = FND_API.G_TRUE) THEN
10640 COMMIT;
10641 END IF;
10642
10643 EXCEPTION
10644 when FND_API.G_EXC_ERROR then
10645 if p_commit = FND_API.G_TRUE then
10646 rollback to PROGRAM_ROLLUP_PVT;
10647 end if;
10648 x_return_status := FND_API.G_RET_STS_ERROR;
10649 when FND_API.G_EXC_UNEXPECTED_ERROR then
10650 if p_commit = FND_API.G_TRUE then
10651 rollback to PROGRAM_ROLLUP_PVT;
10652 end if;
10653 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10654 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10655 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
10656 p_error_text => SUBSTRB(SQLERRM,1,120));
10657 when OTHERS then
10658 if p_commit = FND_API.G_TRUE then
10659 rollback to PROGRAM_ROLLUP_PVT;
10660 end if;
10661 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10662 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
10663 p_procedure_name => 'PROGRAM_ROLLUP_PVT',
10664 p_error_text => SUBSTRB(SQLERRM,1,120));
10665 raise;
10666 END program_rollup_pvt;
10667
10668 PROCEDURE transfer_wp_percent_to_fin(
10669 p_api_version IN NUMBER :=1.0
10670 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
10671 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
10672 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
10673 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
10674 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
10675 ,p_debug_mode IN VARCHAR2 :='N'
10676 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10677 ,p_project_id IN NUMBER
10678 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10679 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
10680 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10681 )
10682 IS
10683 l_api_name CONSTANT VARCHAR2(30) := 'TRANSFER_WP_PERCENT_TO_FIN';
10684 l_api_version CONSTANT NUMBER := p_api_version;
10685 l_user_id NUMBER := FND_GLOBAL.USER_ID;
10686 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
10687 l_return_status VARCHAR2(1);
10688 l_msg_count NUMBER;
10689 l_msg_data VARCHAR2(250);
10690
10691 l_structure_sharing_code VARCHAR2(30);
10692 l_structure_version_id NUMBER;
10693 l_fin_structure_version_id NUMBER;
10694
10695 l_percent_bac NUMBER := 0;
10696 l_sum_bac NUMBER := 0;
10697 l_bac_task NUMBER := 0;
10698 l_percent_complete NUMBER := 0;
10699 l_wp_rollup_method VARCHAR2(30);
10700 g1_debug_mode VARCHAR2(1);
10701
10702
10703 CURSOR cur_fin_low_tasks(c_structure_type VARCHAR, c_structure_version_id number ) -- Bug 3957457 : Added c_structure_version_id
10704 IS
10705 -- Bug 3957457 : get percent complete from pa_progress_rollup instead of pa_percent_complete
10706 -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
10707 -- SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
10708 SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
10709 FROM pa_proj_element_versions ppv, pa_progress_rollup ppr
10710 WHERE ppv.project_id = p_project_id
10711 AND ppv.financial_task_flag = 'Y'
10712 AND ppv.parent_structure_version_id = c_structure_version_id -- Bug 3957457
10713 -- AND PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(ppv.element_version_id) = 'N' bug 4086613
10714 AND ppv.project_id = ppr.project_id(+)
10715 -- AND ppv.element_version_id = ppc.object_version_id(+)
10716 AND ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
10717 AND ppr.current_flag(+) = 'Y'
10718 AND ppr.structure_type(+) = c_structure_type
10719 AND ppr.structure_version_id(+) is null -- Bug 3957457
10720 and not exists (select 1
10721 from pa_object_relationships por,
10722 pa_proj_element_versions ppv1
10723 where por.object_id_from1 = ppv.element_version_id
10724 and relationship_type = 'S'
10725 and ppv1.element_version_id = por.object_id_to1
10726 and ppv1.financial_task_flag = 'Y')
10727 ;
10728
10729 -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
10730 CURSOR cur_wp_task( c_object_version_id NUMBER, c_structure_version_id number ) -- Bug 3952006 : Added c_structure_version_id
10731 IS
10732 -- Bug 3952006 : get percent complete from pa_progress_rollup instead of pa_percent_complete
10733 --SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
10734 SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
10735 FROM pa_proj_element_versions ppv, pa_progress_rollup ppr, pa_object_relationships por
10736 WHERE ppv.project_id = p_project_id
10737 AND ppv.parent_structure_version_id = c_structure_version_id -- Bug 3952006
10738 AND ppv.project_id = ppr.project_id(+)
10739 AND por.object_id_to1 = c_object_version_id
10740 AND por.relationship_type = 'M'
10741 AND ppv.element_version_id = por.object_id_from1
10742 -- AND ppv.element_version_id = ppc.object_version_id(+)
10743 AND ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
10744 AND ppr.current_flag(+) = 'Y'
10745 AND ppr.structure_type(+) = 'WORKPLAN'
10746 AND ppr.structure_version_id(+) is null -- Bug 3696820
10747 ;
10748
10749 -- Bug 3603636 : Added cusrosr c_get_task_weight_method and variable l_rollup_method
10750
10751 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
10752 IS
10753 SELECT task_weight_basis_code
10754 FROM pa_proj_progress_attr
10755 WHERE project_id = c_project_id
10756 AND structure_type = c_structure_type;
10757
10758 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
10759 l_baselined_str_ver_id NUMBER ;
10760 -- Bug 4136239 : Added l_call_rollup, l_call_update_progress
10761 l_call_rollup VARCHAR2(1):='N' ;
10762 l_call_update_progress VARCHAR2(1):='N' ;
10763
10764 -- Bug 4284353 Begin
10765 l_as_of_date DATE;
10766
10767 CURSOR c_max_date IS
10768 -- 4487630 : Now Date will be derived as max of existing financial as of date, workplan as of date, sysdate
10769 -- select max(decode(structure_type, 'WORKPLAN', as_of_date, as_of_date+1))
10770 select max(as_of_date)
10771 from pa_progress_rollup
10772 where project_id = p_project_id
10773 and structure_version_id is null
10774 and structure_type IN('WORKPLAN', 'FINANCIAL')
10775 and current_flag = 'Y';
10776 -- Bug 4284353 End
10777 BEGIN
10778 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10779
10780 IF g1_debug_mode = 'Y' THEN
10781 pa_debug.init_err_stack ('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
10782 END IF;
10783
10784
10785 IF g1_debug_mode = 'Y' THEN
10786 pa_debug.debug('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
10787 END IF;
10788
10789
10790 IF g1_debug_mode = 'Y' THEN
10791 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);
10792 END IF;
10793
10794
10795 IF (p_commit = FND_API.G_TRUE) THEN
10796 SAVEPOINT TRANSFER_WP_PERCENT_TO_FIN;
10797 END IF;
10798
10799 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
10800 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10801 END IF;
10802
10803 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10804 FND_MSG_PUB.initialize;
10805 END IF;
10806
10807
10808 x_return_status := FND_API.G_RET_STS_SUCCESS;
10809
10810 IF g1_debug_mode = 'Y' THEN
10811 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'getting the structure sharing code', x_Log_Level=> 3);
10812 END IF;
10813
10814 SELECT structure_sharing_code
10815 INTO l_structure_sharing_code
10816 FROM pa_projects_all
10817 WHERE project_id = p_project_id;
10818
10819
10820 l_fin_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'FINANCIAL');
10821
10822
10823 IF PA_PROJECT_STRUCTURE_UTILS.check_workplan_enabled(p_project_id) = 'N'
10824 THEN
10825 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
10826 ,p_msg_name => 'PA_PS_WORKPLAN_DISABLED');
10827 x_msg_data := 'PA_PS_WORKPLAN_DISABLED';
10828 x_return_status := 'E';
10829 RAISE FND_API.G_EXC_ERROR;
10830 END IF;
10831
10832
10833 IF ((l_structure_sharing_code = 'SPLIT_NO_MAPPING') or l_structure_sharing_code is null) -- Added OR condition for Bug no 4767821.
10834 THEN
10835 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
10836 ,p_msg_name => 'PA_TRAN_SHCODE_INV');
10837 x_msg_data := 'PA_TRAN_SHCODE_INV';
10838 x_return_status := 'E';
10839 RAISE FND_API.G_EXC_ERROR;
10840 END IF;
10841
10842 OPEN c_max_date;
10843 FETCH c_max_date INTO l_as_of_date;
10844 CLOSE c_max_date;
10845
10846 -- Bug 4284353
10847 -- 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
10848 /*IF trunc(nvl(l_as_of_date,sysdate)) <= trunc(sysdate) THEN
10849 l_as_of_date := trunc(sysdate);
10850 END IF; */
10851
10852
10853 IF g1_debug_mode = 'Y' THEN
10854 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);
10855 END IF;
10856
10857 IF g1_debug_mode = 'Y' THEN
10858 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);
10859 END IF;
10860
10861 IF l_structure_sharing_code = 'SHARE_FULL' OR l_structure_sharing_code = 'SHARE_PARTIAL'
10862 THEN
10863 FOR cur_task IN cur_fin_low_tasks('WORKPLAN', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
10864 LOOP
10865
10866 IF g1_debug_mode = 'Y' THEN
10867 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);
10868 END IF;
10869
10870 IF g1_debug_mode = 'Y' THEN
10871 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);
10872 END IF;
10873
10874 IF cur_task.completed_percentage IS NOT NULL
10875 THEN
10876 l_call_rollup := 'Y'; -- Bug 4136239
10877 PA_PROGRESS_PUB.UPDATE_PROGRESS(
10878 p_action => 'PUBLISH'
10879 ,P_rollup_entire_wbs_flag => 'Y'
10880 ,p_progress_mode => 'FUTURE'
10881 ,p_project_id => p_project_id
10882 ,p_object_id => cur_task.proj_element_id
10883 ,p_object_version_id => cur_task.element_version_id
10884 ,p_object_type => 'PA_TASKS'
10885 ,p_as_of_date => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
10886 ,p_percent_complete => cur_task.completed_percentage
10887 ,p_structure_type => 'FINANCIAL'
10888 ,p_structure_version_id => l_fin_structure_version_id
10889 ,p_task_id => cur_task.proj_element_id -- FPM Dev CR 2
10890 ,p_record_version_number => cur_task.record_version_number
10891 ,p_transfer_wp_pc_flag => 'Y'
10892 ,x_return_status => l_return_status
10893 ,x_msg_count => l_msg_count
10894 ,x_msg_data => l_msg_data
10895 );
10896 END IF;
10897
10898 END LOOP;
10899
10900 ELSIF l_structure_sharing_code = 'SPLIT_MAPPING'
10901 THEN
10902 l_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id);
10903
10904 IF l_structure_version_id = -1
10905 THEN
10906 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
10907 ,p_msg_name => 'PA_NO_PUBLISHED_VERSION');
10908 x_msg_data := 'PA_NO_PUBLISHED_VERSION';
10909 x_return_status := 'E';
10910 RAISE FND_API.G_EXC_ERROR;
10911 END IF;
10912 -- Bug 3696820 : begin
10913 BEGIN
10914 l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
10915 EXCEPTION
10916 WHEN OTHERS THEN
10917 l_baselined_str_ver_id := null;
10918 END;
10919
10920 pa_progress_pub.populate_pji_tab_for_plan(
10921 p_init_msg_list => FND_API.G_FALSE,
10922 p_calling_module => p_calling_module,
10923 p_project_id => p_project_id,
10924 p_structure_version_id => l_structure_version_id,
10925 p_baselined_str_ver_id => l_baselined_str_ver_id,
10926 p_structure_type => 'WORKPLAN',
10927 x_return_status => l_return_status,
10928 x_msg_count => l_msg_count,
10929 x_msg_data => l_msg_data
10930 );
10931
10932 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10933 x_msg_data := l_msg_data;
10934 x_return_status := 'E';
10935 x_msg_count := l_msg_count;
10936 RAISE FND_API.G_EXC_ERROR;
10937 END IF;
10938 -- Bug 3696820 : end
10939
10940 -- Bug 3952006 : Begin
10941 -- Commented the below code and added cursor call
10942 --SELECT task_weight_basis_code
10943 --INTO l_wp_rollup_method
10944 --FROM PA_PROJ_PROGRESS_ATTR
10945 --WHERE project_id = p_project_id
10946 --AND STRUCTURE_TYPE = 'FINANCIAL';
10947
10948 OPEN c_get_task_weight_method(p_project_id, 'WORKPLAN');
10949 FETCH c_get_task_weight_method INTO l_wp_rollup_method;
10950 CLOSE c_get_task_weight_method;
10951 -- Bug 3952006 : End
10952
10953 FOR cur_task IN cur_fin_low_tasks('FINANCIAL', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
10954 LOOP
10955 IF g1_debug_mode = 'Y' THEN
10956 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);
10957 END IF;
10958 l_sum_bac := null; -- Bug 3952006
10959 l_percent_bac := null; -- Bug 3952006
10960 l_percent_complete := null; -- Bug 4136239
10961 l_call_update_progress := 'N'; -- Bug 4136239
10962
10963 FOR cur_per IN cur_wp_task(cur_task.element_version_id, l_structure_version_id) -- Bug 3952006 : Added l_structure_version_id
10964 LOOP
10965
10966 IF g1_debug_mode = 'Y' THEN
10967 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);
10968 END IF;
10969 l_bac_task := null; -- Bug 3952006
10970 l_bac_task := PA_PROGRESS_UTILS.Get_BAC_Value(
10971 p_project_id => p_project_id
10972 ,p_task_weight_method => l_wp_rollup_method
10973 ,p_proj_element_id => cur_per.proj_element_id
10974 ,p_structure_version_id => l_structure_version_id
10975 ,p_structure_type => 'WORKPLAN'
10976 );
10977 -- Bug 3696820 : Used nvl
10978 l_percent_bac := nvl(l_percent_bac,0) + nvl(cur_per.completed_percentage,0) * nvl(l_bac_task,0);
10979 l_sum_bac := nvl(l_sum_bac,0) + nvl(l_bac_task,0);
10980 IF cur_per.completed_percentage IS NOT NULL THEN -- Bug 4136239
10981 -- If % complete is there on mapped tasks, then only for financial task update_progress shd be called
10982 l_call_update_progress := 'Y';
10983 END IF;
10984 END LOOP;
10985
10986 IF l_sum_bac <> 0
10987 THEN
10988 l_percent_complete := l_percent_bac/l_sum_bac;
10989 --Commented by rtarway, for BUG 3950574
10990 --l_percent_complete := round(l_percent_complete,2);
10991 END IF;
10992
10993 IF l_percent_complete IS NOT NULL AND l_call_update_progress = 'Y' -- Bug 4136239 Added l_call_update_progress
10994 THEN
10995 l_call_rollup := 'Y'; -- Bug 4136239
10996 PA_PROGRESS_PUB.UPDATE_PROGRESS(
10997 p_action => 'PUBLISH'
10998 ,P_rollup_entire_wbs_flag => 'Y'
10999 ,p_progress_mode => 'FUTURE'
11000 ,p_project_id => p_project_id
11001 ,p_object_id => cur_task.proj_element_id
11002 ,p_object_version_id => cur_task.element_version_id
11003 ,p_object_type => 'PA_TASKS'
11004 ,p_as_of_date => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
11005 ,p_percent_complete => l_percent_complete
11006 ,p_structure_type => 'FINANCIAL'
11007 ,p_structure_version_id => l_fin_structure_version_id
11008 ,p_task_id => cur_task.proj_element_id -- FPM Dev CR 2
11009 ,p_record_version_number => cur_task.record_version_number
11010 ,p_transfer_wp_pc_flag => 'Y'
11011 ,x_return_status => l_return_status
11012 ,x_msg_count => l_msg_count
11013 ,x_msg_data => l_msg_data
11014 );
11015 END IF;
11016 END LOOP;
11017 END IF;
11018
11019 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11020 x_msg_data := l_msg_data;
11021 x_return_status := 'E';
11022 x_msg_count := l_msg_count;
11023 RAISE FND_API.G_EXC_ERROR;
11024 END IF;
11025 -- Bug 3603636 : Added call of Rollup API
11026
11027 IF l_call_rollup = 'Y' THEN -- Bug 4136239
11028
11029 -- 4609910 : We need to call PJI temp table population here
11030 -- It is strange that the table did not find any data here
11031 -- so need to call it here
11032 PA_PROGRESS_PUB.populate_pji_tab_for_plan(
11033 p_project_id => p_project_id,
11034 p_structure_type => 'FINANCIAL',
11035 x_return_status => l_return_status,
11036 x_msg_count => l_msg_count,
11037 x_msg_data => l_msg_data
11038 );
11039
11040 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11041 x_msg_data := l_msg_data;
11042 x_return_status := 'E';
11043 x_msg_count := l_msg_count;
11044 RAISE FND_API.G_EXC_ERROR;
11045 END IF;
11046
11047 OPEN c_get_task_weight_method(p_project_id, 'FINANCIAL');
11048 FETCH c_get_task_weight_method INTO l_rollup_method;
11049 CLOSE c_get_task_weight_method;
11050
11051
11052 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
11053 p_init_msg_list => p_init_msg_list
11054 ,p_commit => p_commit
11055 --Added by rtarway for BUG 3696263
11056 ,p_calling_module => p_calling_module
11057 ,p_progress_mode => 'TRANSFER_WP_PC' --bug 4284353
11058
11059 ,p_validate_only => p_validate_only
11060 ,p_project_id => p_project_id
11061 ,p_structure_version_id => l_fin_structure_version_id
11062 ,p_as_of_date => trunc(l_as_of_date)
11063 ,p_fin_rollup_method => l_rollup_method
11064 ,p_rollup_entire_wbs => 'Y'
11065 ,p_structure_type => 'FINANCIAL'
11066 ,x_return_status => l_return_status
11067 ,x_msg_count => l_msg_count
11068 ,x_msg_data => l_msg_data);
11069
11070
11071 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11072 x_msg_data := l_msg_data;
11073 x_return_status := 'E';
11074 x_msg_count := l_msg_count;
11075 RAISE FND_API.G_EXC_ERROR;
11076 END IF;
11077 END IF; --IF l_call_rollup = 'Y'
11078
11079 IF (p_commit = FND_API.G_TRUE) THEN
11080 COMMIT;
11081 END IF;
11082 EXCEPTION
11083 when FND_API.G_EXC_ERROR then
11084 if p_commit = FND_API.G_TRUE then
11085 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11086 end if;
11087 x_return_status := FND_API.G_RET_STS_ERROR;
11088 when FND_API.G_EXC_UNEXPECTED_ERROR then
11089 if p_commit = FND_API.G_TRUE then
11090 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11091 end if;
11092 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11093 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11094 p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11095 p_error_text => SUBSTRB(SQLERRM,1,120));
11096 when OTHERS then
11097 if p_commit = FND_API.G_TRUE then
11098 rollback to TRANSFER_WP_PERCENT_TO_FIN;
11099 end if;
11100 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11101 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
11102 p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11103 p_error_text => SUBSTRB(SQLERRM,1,120));
11104 raise;
11105 END transfer_wp_percent_to_fin;
11106
11107 -- Bug 3839288 : Rewritten this procedure.
11108 --Bug 5027965. Made sure that the ETC cost is copied from current working version
11109 --if the latest progress is already applied
11110 PROCEDURE publish_progress(
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 ,p_working_str_ver_id IN NUMBER -- Bug 4190086
11121 ,p_pub_structure_version_id IN NUMBER -- Bug 3839288
11122 ,x_upd_new_elem_ver_id_flag OUT NOCOPY VARCHAR2 -- BUG 3951024, rtarway --File.Sql.39 bug 4440895
11123 ,x_as_of_date OUT NOCOPY DATE -- Bug 3839288 --File.Sql.39 bug 4440895
11124 ,x_task_weight_basis_code OUT NOCOPY VARCHAR2 -- Bug 3839288 --File.Sql.39 bug 4440895
11125 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11126 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
11127 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11128 )
11129 IS
11130 l_api_name CONSTANT VARCHAR2(30) := 'PUBLISH_PROGRESS';
11131 l_api_version CONSTANT NUMBER := p_api_version;
11132 l_return_status VARCHAR2(1);
11133 l_msg_count NUMBER;
11134 l_msg_data VARCHAR2(250);
11135 p_baseline_flag VARCHAR2(1):='N';
11136
11137 CURSOR C2(p_project_id NUMBER) is
11138 select max(trunc(as_of_date)) -- 5294838 truncate
11139 from pa_progress_rollup ppr
11140 where ppr.project_id = p_project_id
11141 and ppr.structure_version_id is null
11142 and ppr.structure_type = 'WORKPLAN'
11143 and current_flag = 'Y';
11144
11145 CURSOR cur_proj_prog_attr IS
11146 SELECT pppa.task_weight_basis_code
11147 FROM pa_proj_progress_attr pppa
11148 WHERE project_id=p_project_id
11149 AND structure_type ='WORKPLAN'
11150 ;
11151
11152
11153 CURSOR c_get_working_wp_progress is
11154 select ppr.*
11155 from pa_progress_rollup ppr
11156 where ppr.project_id = p_project_id
11157 -- and ppr.structure_version_id is not null -- Bug 4190086
11158 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11159 and ppr.structure_type = 'WORKPLAN';
11160
11161 -- Bug 4111107 : Added c_get_all_progress
11162 -- Bug 4871809, replaced ppr.* with column names to reduce sharable memory
11163 CURSOR c_get_all_progress is
11164 select PROJECT_ID,
11165 OBJECT_ID ,
11166 OBJECT_TYPE,
11167 AS_OF_DATE ,
11168 OBJECT_VERSION_ID,
11169 PROGRESS_STATUS_CODE,
11170 INCREMENTAL_WORK_QUANTITY ,
11171 CUMULATIVE_WORK_QUANTITY ,
11172 BASE_PERCENT_COMPLETE ,
11173 EFF_ROLLUP_PERCENT_COMP,
11174 COMPLETED_PERCENTAGE ,
11175 ESTIMATED_START_DATE ,
11176 ESTIMATED_FINISH_DATE ,
11177 ACTUAL_START_DATE ,
11178 ACTUAL_FINISH_DATE ,
11179 ESTIMATED_REMAINING_EFFORT ,
11180 BASE_PERCENT_COMP_DERIV_CODE,
11181 STRUCTURE_TYPE ,
11182 PROJ_ELEMENT_ID,
11183 STRUCTURE_VERSION_ID ,
11184 PPL_ACT_EFFORT_TO_DATE ,
11185 EQPMT_ACT_EFFORT_TO_DATE,
11186 OTH_ACT_COST_TO_DATE_TC ,
11187 OTH_ACT_COST_TO_DATE_FC,
11188 OTH_ACT_COST_TO_DATE_PC ,
11189 PPL_ACT_COST_TO_DATE_TC ,
11190 PPL_ACT_COST_TO_DATE_FC,
11191 PPL_ACT_COST_TO_DATE_PC ,
11192 EQPMT_ACT_COST_TO_DATE_TC,
11193 EQPMT_ACT_COST_TO_DATE_FC,
11194 EQPMT_ACT_COST_TO_DATE_PC,
11195 EARNED_VALUE
11196 from pa_progress_rollup ppr
11197 where ppr.project_id = p_project_id
11198 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11199 and ppr.structure_type = 'WORKPLAN'
11200 and ppr.proj_element_id <> 0 -- 4398411
11201 and ppr.proj_element_id is not null -- 4398411
11202 UNION ALL
11203 select PROJECT_ID,
11204 OBJECT_ID ,
11205 OBJECT_TYPE,
11206 AS_OF_DATE ,
11207 OBJECT_VERSION_ID,
11208 PROGRESS_STATUS_CODE,
11209 INCREMENTAL_WORK_QUANTITY ,
11210 CUMULATIVE_WORK_QUANTITY ,
11211 BASE_PERCENT_COMPLETE ,
11212 EFF_ROLLUP_PERCENT_COMP,
11213 COMPLETED_PERCENTAGE ,
11214 ESTIMATED_START_DATE ,
11215 ESTIMATED_FINISH_DATE ,
11216 ACTUAL_START_DATE ,
11217 ACTUAL_FINISH_DATE ,
11218 ESTIMATED_REMAINING_EFFORT ,
11219 BASE_PERCENT_COMP_DERIV_CODE,
11220 STRUCTURE_TYPE ,
11221 PROJ_ELEMENT_ID,
11222 STRUCTURE_VERSION_ID ,
11223 PPL_ACT_EFFORT_TO_DATE ,
11224 EQPMT_ACT_EFFORT_TO_DATE,
11225 OTH_ACT_COST_TO_DATE_TC ,
11226 OTH_ACT_COST_TO_DATE_FC,
11227 OTH_ACT_COST_TO_DATE_PC ,
11228 PPL_ACT_COST_TO_DATE_TC ,
11229 PPL_ACT_COST_TO_DATE_FC,
11230 PPL_ACT_COST_TO_DATE_PC ,
11231 EQPMT_ACT_COST_TO_DATE_TC,
11232 EQPMT_ACT_COST_TO_DATE_FC,
11233 EQPMT_ACT_COST_TO_DATE_PC,
11234 EARNED_VALUE
11235 from pa_progress_rollup ppr1
11236 where ppr1.project_id = p_project_id
11237 and ppr1.structure_version_id IS NULL
11238 and ppr1.structure_type = 'WORKPLAN'
11239 and ppr1.current_flag = 'Y'
11240 and ppr1.proj_element_id <> 0 -- 4398411
11241 and ppr1.proj_element_id is not null -- 4398411
11242 and not exists
11243 (select 'xyz' from pa_progress_rollup ppr2
11244 where ppr2.project_id = ppr1.project_id
11245 and ppr2.object_id = ppr1.object_id
11246 and nvl(ppr2.proj_element_id,0) = nvl(ppr1.proj_element_id,0)
11247 and ppr2.structure_version_id = p_working_str_ver_id
11248 and ppr2.structure_type = 'WORKPLAN'
11249 )
11250 ;
11251
11252
11253 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) is
11254 select rowid, ppc.*
11255 from pa_percent_completes ppc
11256 where ppc.project_id = c_project_id
11257 and ppc.structure_type = 'WORKPLAN'
11258 --and trunc(ppc.date_computed) = trunc(c_as_of_date) -- Bug 4227280
11259 and ppc.published_flag = 'N' -- Bug 4227280
11260 and ppc.object_id = c_object_id
11261 and ppc.task_id = c_proj_element_id
11262 and ppc.object_type = c_object_type;
11263
11264 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) is
11265 select ppc.*
11266 from pa_percent_completes ppc
11267 where ppc.project_id = c_project_id
11268 and ppc.structure_type = 'WORKPLAN'
11269 ---and trunc(ppc.date_computed) <= trunc(c_as_of_date)
11270 and ppc.object_id = c_object_id
11271 and ppc.task_id = c_proj_element_id
11272 and ppc.object_type = c_object_type
11273 and ppc.current_flag = 'Y'
11274 and ppc.published_flag = 'Y';
11275
11276 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER, c_object_type VARCHAR2) IS
11277 select element_version_id
11278 from pa_proj_element_versions
11279 where project_id = p_project_id
11280 and proj_element_id = c_proj_element_id
11281 and ((c_object_type <> 'PA_DELIVERABLES' and parent_structure_version_id = c_structure_version_id)
11282 OR c_object_type = 'PA_DELIVERABLES'); -- 4398411 : Added Deliverable condition
11283
11284 CURSOR c_get_progress_status(c_proj_element_id NUMBER) IS
11285 select initial_progress_status_code
11286 from pa_proj_elements
11287 , pa_task_types
11288 where project_id = p_project_id
11289 and proj_element_id = c_proj_element_id
11290 and type_id = task_type_id;
11291
11292 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) is
11293 select rowid, ppr.*
11294 from pa_progress_rollup ppr
11295 where ppr.project_id = c_project_id
11296 and ppr.structure_type = 'WORKPLAN'
11297 and ppr.structure_version_id is null
11298 --and trunc(ppr.as_of_date) = trunc(c_as_of_date) -- Bug 4227280
11299 and ppr.current_flag = 'W' -- Bug 4227280
11300 and ppr.object_id = c_object_id
11301 and ppr.proj_element_id = c_proj_element_id
11302 and ppr.object_type = c_object_type;
11303
11304 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) is
11305 select ppr.*
11306 from pa_progress_rollup ppr
11307 where ppr.project_id = c_project_id
11308 and ppr.structure_type = 'WORKPLAN'
11309 and ppr.structure_version_id is null
11310 ------ and trunc(ppr.as_of_date) < trunc(c_as_of_date) redundant cond. 4743866
11311 and ppr.object_id = c_object_id
11312 and ppr.proj_element_id = c_proj_element_id
11313 and ppr.object_type = c_object_type
11314 and ppr.current_flag = 'Y';
11315
11316 CURSOR get_prev_published_ver IS
11317 SELECT a.element_version_id
11318 FROM pa_proj_elem_ver_structure a
11319 WHERE a.project_id = p_project_id
11320 AND a.LATEST_EFF_PUBLISHED_FLAG <> 'Y'
11321 AND a.STATUS_CODE = 'STRUCTURE_PUBLISHED'
11322 ORDER BY published_date desc;
11323
11324 CURSOR c_get_sch_dates(c_project_id NUMBER, c_object_version_id NUMBER) IS
11325 select scheduled_start_date, scheduled_finish_date
11326 from pa_proj_elem_ver_schedule
11327 where project_id = c_project_id
11328 and element_version_id = c_object_version_id ;
11329
11330 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) IS
11331 SELECT resource_class_code
11332 ,resource_list_member_id
11333 ,assignment_start_date
11334 ,assignment_end_date
11335 ,txn_currency_code
11336 ,resource_assignment_id
11337 ,planned_quantity
11338 ,planned_bur_cost_txn_cur
11339 ,planned_bur_cost_projfunc
11340 ,planned_bur_cost_proj_cur
11341 ,planned_raw_cost_txn_cur
11342 ,planned_raw_cost_proj_cur
11343 ,planned_raw_cost_projfunc
11344 ,rate_based_flag
11345 ,budget_version_id --- 4372462
11346 FROM pa_task_asgmts_v
11347 WHERE project_id = c_project_id
11348 AND resource_list_member_id = c_object_id
11349 AND task_id = c_task_id
11350 AND task_version_id = c_task_version_id
11351 AND structure_version_id = c_structure_version_id ;
11352 --AND ta_display_flag = c_ta_display_flag; bug 3958686, now select all assignments
11353
11354 l_ptav_rec c_ptav_cur%ROWTYPE;
11355
11356 l_ppc_rec c_get_ppc_rec%ROWTYPE;
11357 l_ppr_rec c_get_ppr_rec%ROWTYPE;
11358 l_last_ppc_rec c_get_last_ppc_rec%ROWTYPE;
11359 l_last_ppr_rec c_get_last_ppr_rec%ROWTYPE;
11360 l_as_of_date DATE := NULL;
11361 l_max_as_of_date DATE := NULL;
11362 l_user_id NUMBER := fnd_global.user_id;
11363 l_login_id NUMBER := fnd_global.login_id;
11364 l_published_by_party_id NUMBER := PA_UTILS.get_party_id(l_user_id);
11365 L_LATEST_PUB_WP_VERSION_ID NUMBER;
11366 L_PRE_PUB_STR_VER_ID NUMBER;
11367 L_TASK_WEIGHT_BASIS_CODE pa_proj_progress_attr.task_weight_basis_code%TYPE;
11368 L_OBJECT_VERSION_ID NUMBER;
11369 L_PROGRESS_STATUS_CODE pa_progress_rollup.progress_status_code%TYPE;
11370 L_ACTUAL_START_DATE DATE;
11371 L_ACTUAL_FINISH_DATE DATE;
11372 L_ESTIMATED_START_DATE DATE;
11373 L_ESTIMATED_FINISH_DATE DATE;
11374 L_TASK_STATUS pa_percent_completes.status_code%TYPE;
11375 L_PERCENT_COMPLETE_ID NUMBER;
11376 L_SYSTEM_STATUS_CODE pa_project_statuses.project_system_status_code%TYPE;
11377 L_PROGRESS_ROLLUP_ID NUMBER;
11378 L_BAC_VALUE NUMBER;
11379 L_EARNED_VALUE NUMBER;
11380 L_PROG_PA_PERIOD_NAME pa_progress_rollup.PROG_PA_PERIOD_NAME%TYPE;
11381 L_PROG_GL_PERIOD_NAME pa_progress_rollup.PROG_GL_PERIOD_NAME%TYPE;
11382 l_scheduled_start_date DATE;
11383 l_scheduled_finish_date DATE;
11384 l_baselined_str_ver_id NUMBER;
11385 l_oth_etc_quantity NUMBER;
11386 l_oth_etc_cost_tc NUMBER;
11387 l_oth_etc_cost_pc NUMBER;
11388 l_oth_etc_cost_fc NUMBER;
11389 l_oth_etc_rawcost_tc NUMBER;
11390 l_oth_etc_rawcost_pc NUMBER;
11391 l_oth_etc_rawcost_fc NUMBER;
11392 l_estimated_remaining_effort NUMBER;
11393 l_ppl_etc_cost_tc NUMBER;
11394 l_ppl_etc_cost_pc NUMBER;
11395 l_ppl_etc_cost_fc NUMBER;
11396 l_ppl_etc_rawcost_tc NUMBER;
11397 l_ppl_etc_rawcost_pc NUMBER;
11398 l_ppl_etc_rawcost_fc NUMBER;
11399 l_eqpmt_etc_effort NUMBER;
11400 l_eqpmt_etc_cost_tc NUMBER;
11401 l_eqpmt_etc_cost_pc NUMBER;
11402 l_eqpmt_etc_cost_fc NUMBER;
11403 l_eqpmt_etc_rawcost_tc NUMBER;
11404 l_eqpmt_etc_rawcost_pc NUMBER;
11405 l_eqpmt_etc_rawcost_fc NUMBER;
11406
11407 --reset ETC whenever workplan gets published.
11408
11409 l_etc_reset_flag VARCHAR2(1) := 'Y';
11410 --Added by rtarway for BUG 3951024
11411 l_upd_new_elem_ver_id_flag VARCHAR2(1) := 'Y';
11412
11413 CURSOR cur_lp_progress is
11414 select *
11415 from pa_progress_rollup ppr
11416 where ppr.project_id = p_project_id
11417 and ppr.structure_version_id is null
11418 and ppr.object_type = 'PA_TASKS'
11419 and structure_type = 'WORKPLAN'
11420 and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y' -- Bug 3627315 issue 8 Added this condition
11421 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
11422 and current_flag = 'Y'
11423 Union
11424 select *
11425 from pa_progress_rollup ppr
11426 where ppr.project_id = p_project_id
11427 and ppr.structure_version_id is null
11428 and ppr.object_type = 'PA_ASSIGNMENTS'
11429 and structure_type = 'WORKPLAN'
11430 and current_flag = 'Y';
11431
11432 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) IS
11433 SELECT resource_class_code
11434 ,resource_list_member_id
11435 ,assignment_start_date
11436 ,assignment_end_date
11437 ,txn_currency_code
11438 ,resource_assignment_id
11439 ,planned_quantity
11440 ,planned_bur_cost_txn_cur
11441 ,planned_bur_cost_projfunc
11442 ,planned_bur_cost_proj_cur
11443 ,planned_raw_cost_txn_cur
11444 ,planned_raw_cost_proj_cur
11445 ,planned_raw_cost_projfunc
11446 ,rate_based_flag
11447 ,budget_version_id --- 4372462
11448 FROM pa_task_asgmts_v
11449 WHERE project_id = c_project_id
11450 AND task_id = c_task_id
11451 AND task_version_id = c_task_version_id
11452 AND structure_version_id = c_structure_version_id
11453 AND ta_display_flag = c_ta_display_flag;
11454
11455 -- Bug 3865516 : Added c_get_task_status
11456 CURSOR c_get_task_status(c_project_id NUMBER, c_proj_element_id NUMBER) IS
11457 select status_code
11458 from pa_proj_elements
11459 where project_id = c_project_id
11460 and proj_element_id = c_proj_element_id;
11461
11462
11463 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
11464
11465 --bug 3906362
11466 l_EFF_ROLLUP_PERCENT_COMP NUMBER;
11467 l_planned_effort NUMBER;
11468 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30);
11469
11470 CURSOR cur_proj_elements(c_proj_element_id NUMBER)
11471 IS
11472 SELECT BASE_PERCENT_COMP_DERIV_CODE
11473 from pa_proj_elements
11474 where project_id = p_project_id
11475 and proj_element_id = c_proj_element_id;
11476
11477 CURSOR cur_task_plan (c_proj_element_id NUMBER)
11478 IS
11479 SELECT labor_effort
11480 FROM pji_xbs_plans_v
11481 WHERE project_id = p_project_id
11482 AND proj_element_id = c_proj_element_id
11483 AND STRUCTURE_VERSION_ID = p_pub_structure_version_id
11484 AND STRUCTURE_TYPE = 'WORKPLAN'
11485 ;
11486 --end bug 3906362
11487
11488 --bug 4191360, start
11489 /*CURSOR cur_task_plan_cost (c_proj_element_id NUMBER)
11490 IS
11491 SELECT nvl(BRDN_COST, 0)
11492 FROM pji_xbs_plans_v
11493 WHERE project_id = p_project_id
11494 AND proj_element_id = c_proj_element_id
11495 AND STRUCTURE_VERSION_ID = p_pub_structure_version_id
11496 AND STRUCTURE_TYPE = 'WORKPLAN'
11497 ;*/
11498 l_planned_cost NUMBER;
11499 l_assignment_exists VARCHAR2(1);
11500 --bug 4191360, end
11501
11502 -- ETC Changes
11503
11504 l_task_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11505 l_completed_percentage_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11506 l_project_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11507 l_object_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11508 l_object_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11509 l_object_version_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11510 l_progress_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11511 l_act_start_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11512 l_act_finish_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11513 l_est_start_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11514 l_est_finish_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11515 l_task_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11516 l_earned_value_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11517 l_incr_work_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11518 l_cumu_work_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11519 l_eff_rollup_percent_comp_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11520 l_base_prog_status_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11521 l_eff_roll_prog_stat_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11522 l_percent_complete_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11523 l_base_per_comp_deriv_code_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11524 l_base_perc_comp_tbl PA_PLSQL_DATATYPES.NumTabTyp; -- 4604661
11525
11526 l_ppl_act_effort_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11527 l_eqpmt_act_effort_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11528 l_oth_quantity_to_date_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11529
11530 l_eqpmt_etc_effort_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11531 l_est_remaining_effort_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11532 l_oth_etc_quantity_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11533
11534 l_ppl_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11535 l_ppl_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11536 l_ppl_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11537 l_ppl_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11538 l_ppl_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11539 l_ppl_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11540 l_eqpmt_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11541 l_eqpmt_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11542 l_eqpmt_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11543 l_eqpmt_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11544 l_eqpmt_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11545 l_eqpmt_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11546 l_oth_etc_cost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11547 l_oth_etc_cost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11548 l_oth_etc_cost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11549 l_oth_etc_rawcost_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11550 l_oth_etc_rawcost_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11551 l_oth_etc_rawcost_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11552
11553 l_ppl_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11554 l_ppl_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11555 l_ppl_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11556 l_eqp_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11557 l_eqp_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11558 l_eqp_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11559 l_oth_act_cost_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11560 l_oth_act_cost_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11561 l_oth_act_cost_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11562
11563 l_ppl_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11564 l_ppl_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11565 l_ppl_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11566 l_eqpmt_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11567 l_eqpmt_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11568 l_eqpmt_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11569 l_oth_act_raw_to_date_tc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11570 l_oth_act_raw_to_date_fc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11571 l_oth_act_raw_to_date_pc_tbl PA_PLSQL_DATATYPES.AmtTabTyp;
11572
11573 l_projfunc_cost_rate_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11574 l_projfunc_cost_exc_rate_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11575 l_projfunc_cost_rate_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11576 l_proj_cost_rate_type_tbl PA_PLSQL_DATATYPES.Char30TabTyp;
11577 l_proj_cost_exchange_rate_tbl PA_PLSQL_DATATYPES.NumTabTyp;
11578 l_proj_cost_rate_date_tbl PA_PLSQL_DATATYPES.DateTabTyp;
11579 l_txn_currency_code_tbl PA_PLSQL_DATATYPES.Char15TabTyp;
11580 l_progress_rollup_id_tbl PA_PLSQL_DATATYPES.Num15TabTyp;
11581
11582 l_description PA_PLSQL_DATATYPES.Char250TabTyp;
11583 TYPE pa_varchar2_4000_tbl_type IS TABLE OF VARCHAR2(4000);
11584 l_progress_comment pa_varchar2_4000_tbl_type:= pa_varchar2_4000_tbl_type();
11585
11586
11587 l_count Number;
11588 l_index Number;
11589
11590
11591 -- Bug 4282618 Begin
11592 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
11593 IS
11594 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
11595 from pa_task_types ttype
11596 , pa_proj_elements elem
11597 where elem.project_id = p_project_id
11598 and elem.proj_element_id = c_proj_element_id
11599 and elem.object_type = 'PA_TASKS'
11600 and elem.type_id = ttype.task_type_id;
11601
11602 l_prog_enabled_tbl PA_PLSQL_DATATYPES.Char1TabTyp;
11603 l_prog_enabled VARCHAR2(1);
11604 -- Bug 4282618 End
11605 l_prog_rec_found VARCHAR2(1):='N'; --4600547
11606
11607 --Bug 5027965
11608 l_etc_cost_calc_mode VARCHAR2(30);
11609 l_latest_prog_applied_flag VARCHAR2(1);
11610 l_plan_version_id pa_budget_versions.budget_version_id%TYPE;
11611 l_curr_workplan_ver_bv_id pa_budget_versions.budget_version_id%TYPE;
11612
11613 l_upd_rollup_prog varchar2(1) := 'N'; --5212999
11614
11615 --Bug 6499700
11616 l_last_ppc_pub_flag VARCHAR2(1);
11617
11618 BEGIN
11619
11620 -- LOGIAL FLOW OF API: PUBLISH_PROGRESS():
11621 -- ---------------------------------------
11622 --
11623 -- 1). Update current_flag in rollup table to 'N' for old records before inserting published records.
11624 -- 2). Find max(as_of_date) for all progress records for the project.
11625 -- 3). Find the next_progress_cycle date for the max(as_of_date).
11626 -- 4). Insert published progress records with the above next_progress_cycle date as as_of_date.
11627
11628 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
11629
11630 IF g1_debug_mode = 'Y' THEN
11631 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PUBLISH_PROGRESS');
11632 END IF;
11633
11634 IF g1_debug_mode = 'Y' THEN
11635 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'p_project_id : '||p_project_id, x_Log_Level=> 3);
11636 END IF;
11637
11638 IF (p_commit = FND_API.G_TRUE) THEN
11639 SAVEPOINT PUBLISH_PROGRESS;
11640 END IF;
11641
11642 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
11643 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11644 END IF;
11645
11646 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11647 FND_MSG_PUB.initialize;
11648 END IF;
11649
11650 x_return_status := FND_API.G_RET_STS_SUCCESS;
11651
11652 -- Bug 4111107
11653 -- Now it will create Progress records for all objects
11654 -- for which they have progress records for working wp version
11655 -- or for published wp version
11656
11657 -- We should not be resetting ETC if ETC is overidden in publish wp version.
11658 -- This change will be done later
11659
11660
11661 -- Get max(as_of_date) for all progress records for the project.
11662
11663 OPEN c2(p_project_id);
11664 FETCH c2 INTO l_max_as_of_date;
11665 CLOSE c2;
11666
11667 IF g1_debug_mode = 'Y' THEN
11668 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);
11669 END IF;
11670
11671 -- Get next_progress_cycle_date for max(as_of_date).
11672
11673 --- date should not move if it is in future 5226910(5212999)
11674 if (l_max_as_of_date >= trunc(sysdate)) then
11675 l_as_of_date := l_max_as_of_date;
11676 l_upd_rollup_prog := 'Y';
11677 else
11678 l_as_of_date := pa_progress_utils.get_next_progress_cycle(
11679 p_project_id => p_project_id
11680 ,p_task_id => null
11681 ,p_start_date => l_max_as_of_date);
11682 l_as_of_date := trunc(l_as_of_date); -- 5294838
11683 end if;
11684
11685
11686 -- On this l_as_of_date, there can be working progress record which we will update
11687 -- with working wp version progress
11688
11689 l_latest_pub_wp_version_id := p_pub_structure_version_id;--PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'WORKPLAN');
11690 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id); --Bug 3801745
11691
11692 IF g1_debug_mode = 'Y' THEN
11693 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
11694 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);
11695 END IF;
11696
11697 OPEN cur_proj_prog_attr;
11698 FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
11699 CLOSE cur_proj_prog_attr;
11700
11701 -- ETC Changes Begin
11702 l_index := 0;
11703 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_as_of_date);
11704 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_as_of_date);
11705
11706 -- Bug 4111107 : Delete all Working Progress Records
11707 -- Previously it was getting deleted inside the curosr
11708
11709 DELETE from pa_percent_completes
11710 where project_id = p_project_id
11711 and structure_type = 'WORKPLAN'
11712 and published_flag = 'N';
11713
11714 DELETE from pa_progress_rollup
11715 where project_id = p_project_id
11716 and structure_type = 'WORKPLAN'
11717 and structure_version_id is null
11718 and current_flag = 'W';
11719
11720 --Bug 5027965. If the latest progress is applied on current working version then the ETC cost should be
11721 --copied from the working version. Otherwise, it shoule be derived based on the rate setup on as_of_date
11722 l_latest_prog_applied_flag := pa_progress_utils.check_wwp_prog_publishing_ok(p_project_id =>p_project_id,
11723 p_structure_version_id =>p_working_str_ver_id);
11724 IF (l_latest_prog_applied_flag = 'Y') THEN
11725
11726 l_etc_cost_calc_mode := 'COPY';
11727
11728 SELECT budget_version_id
11729 INTO l_curr_workplan_ver_bv_id
11730 FROM pa_budget_versions
11731 WHERE project_structure_version_id=p_working_str_ver_id;
11732
11733 ELSE
11734
11735 l_etc_cost_calc_mode:= 'DERIVE';
11736
11737 END IF;
11738
11739 -- Bug 4111107 : Replaced c_get_working_wp_progress to c_get_all_progress
11740 FOR l_rec IN c_get_all_progress LOOP
11741 l_index := l_index+1;
11742 l_eff_rollup_percent_comp := l_rec.eff_rollup_percent_comp; -- 4604661 : Initialize
11743 l_prog_rec_found :='Y'; --4600547
11744 IF g1_debug_mode = 'Y' THEN
11745 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_id='||l_rec.object_id, x_Log_Level=> 3);
11746 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);
11747 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_type='||l_rec.object_type, x_Log_Level=> 3);
11748 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);
11749 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);
11750 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.COMPLETED_PERCENTAGE='|| l_rec.COMPLETED_PERCENTAGE, x_Log_Level=> 3);
11751 END IF;
11752 -- Bug 4111107 : Now deletion of working record is moved above
11753 -- Check if ppc record is there on max as of date
11754 --l_ppc_rec := null;
11755 --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);
11756 --FETCH c_get_ppc_rec INTO l_ppc_rec;
11757 --CLOSE c_get_ppc_rec;
11758
11759 --IF l_ppc_rec.project_id IS NOT NULL THEN
11760 -- If this is found, it means there exists working progress record
11761 -- delete it
11762 -- IF g1_debug_mode = 'Y' THEN
11763 -- pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPC Record Found, Deleting it', x_Log_Level=> 3);
11764 -- END IF;
11765 -- PA_PERCENT_COMPLETES_PKG.DELETE_ROW(l_ppc_rec.rowid);
11766 --END IF;
11767
11768 l_last_ppc_rec := null;
11769 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);
11770 FETCH c_get_last_ppc_rec INTO l_last_ppc_rec;
11771 CLOSE c_get_last_ppc_rec;
11772
11773 --Bug 3956234 : Now rollup record is opened here instead of below in the code.
11774 -- This was required to get the rollup progress status code.
11775
11776 -- Bug 4111107 : Now deletion of working record is moved above
11777 -- Check if ppr record is there on max as of date
11778 --l_ppr_rec := null;
11779 --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);
11780 --FETCH c_get_ppr_rec INTO l_ppr_rec;
11781 --CLOSE c_get_ppr_rec;
11782
11783 --IF l_ppr_rec.project_id IS NOT NULL THEN
11784 -- If this is found, it means there exists working progress record
11785 -- delete it
11786 -- IF g1_debug_mode = 'Y' THEN
11787 -- pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPR Record Found, Deleting it', x_Log_Level=> 3);
11788 -- END IF;
11789 -- PA_PROGRESS_ROLLUP_PKG.DELETE_ROW(l_ppr_rec.rowid);
11790 --END IF;
11791
11792 l_last_ppr_rec := null;
11793 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);
11794 FETCH c_get_last_ppr_rec INTO l_last_ppr_rec;
11795 CLOSE c_get_last_ppr_rec;
11796
11797 --Bug 6499700 .For already published records, incremental_work_quantity should not be considered.
11798 BEGIN
11799 SELECT published_flag
11800 INTO l_last_ppc_pub_flag
11801 FROM pa_percent_completes
11802 WHERE percent_complete_id=l_last_ppr_rec.percent_complete_id;
11803 EXCEPTION
11804 WHEN NO_DATA_FOUND THEN
11805 l_last_ppc_pub_flag:='N';
11806 END;
11807
11808 IF l_last_ppc_pub_flag='Y' THEN
11809 l_last_ppr_rec.incremental_work_quantity:=to_number(null);
11810 END IF;
11811 --End of fix for bug Bug 6499700
11812
11813 l_object_version_id := null;
11814 l_progress_status_code := null;
11815 l_actual_start_date := null;
11816 l_actual_finish_date := null;
11817 l_estimated_start_date := null;
11818 l_estimated_finish_date := null;
11819 l_task_status := null;
11820 l_percent_complete_id := null;
11821
11822 -- Bug 4398411 : Added object_type in following cursor
11823 OPEN c_get_work_obj_ver_id(l_rec.proj_element_id, l_latest_pub_wp_version_id, l_rec.object_type);
11824 FETCH c_get_work_obj_ver_id INTO l_object_version_id;
11825 CLOSE c_get_work_obj_ver_id;
11826
11827 IF l_last_ppc_rec.progress_status_code IS NOT NULL THEN
11828 l_progress_status_code := l_last_ppc_rec.progress_status_code;
11829 --Bug 3956234 : Introduced rollup status code below.
11830 ELSIF NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code) IS NOT NULL THEN
11831 l_progress_status_code := NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code);
11832 ELSE
11833 OPEN c_get_progress_status(l_rec.proj_element_id);
11834 FETCH c_get_progress_status INTO l_progress_status_code;
11835 CLOSE c_get_progress_status;
11836 END IF;
11837
11838 l_estimated_start_date := l_rec.estimated_start_date;
11839 l_estimated_finish_date := l_rec.estimated_finish_date;
11840
11841 l_actual_start_date := l_rec.actual_start_date;
11842 l_actual_finish_date := l_rec.actual_finish_date;
11843
11844 -- Bug 3865516 : l_rec.completed_percentage and l_rec.EFF_ROLLUP_PERCENT_COMP shd not have OR
11845 -- it shd be NVL
11846 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) > 0 AND l_actual_start_date IS null) THEN
11847 OPEN c_get_sch_dates(p_project_id, l_rec.object_version_id);
11848 FETCH c_get_sch_dates INTO l_scheduled_start_date, l_scheduled_finish_date;
11849 CLOSE c_get_sch_dates;
11850 l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
11851 END IF;
11852
11853 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100 AND l_actual_finish_date IS null) THEN
11854 l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
11855 END IF;
11856 -- Bug 3865516 Begin
11857 IF l_rec.object_type = 'PA_TASKS' THEN
11858 IF l_last_ppc_rec.status_code IS NOT NULL THEN
11859 l_task_status := l_last_ppc_rec.status_code;
11860 ELSE
11861 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
11862 FETCH c_get_task_status INTO l_task_status;
11863 CLOSE c_get_task_status;
11864 END IF;
11865 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status);
11866
11867 IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100 AND l_system_status_code <> 'COMPLETED')
11868 THEN
11869 l_task_status := '127';
11870 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 = ''))
11871 THEN
11872 l_task_status := '125';
11873 END IF;
11874 -- Bug 3865516 End
11875 -- Bug 4343997 rtarway Begin
11876 ELSIF l_rec.object_type = 'PA_DELIVERABLES' THEN
11877 IF l_last_ppc_rec.status_code IS NOT NULL THEN
11878 l_task_status := l_last_ppc_rec.status_code;
11879 ELSE
11880 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
11881 FETCH c_get_task_status INTO l_task_status;
11882 CLOSE c_get_task_status;
11883 END IF;
11884 l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status,'PA_DELIVERABLES');
11885 END IF;
11886 -- Bug 4343997 rtarway End
11887
11888 IF g1_debug_mode = 'Y' THEN
11889 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_version_id='||l_object_version_id, x_Log_Level=> 3);
11890 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);
11891 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
11892 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
11893 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
11894 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
11895 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);
11896 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
11897 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);
11898 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
11899 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
11900 END IF;
11901
11902
11903 l_task_id_tbl(l_index) := l_rec.proj_element_id;
11904 l_completed_percentage_tbl(l_index) := l_rec.completed_percentage;
11905 l_project_id_tbl(l_index) := l_rec.project_id;
11906 l_object_type_tbl(l_index) := l_rec.object_type;
11907 l_object_id_tbl(l_index) := l_rec.object_id;
11908 -- l_object_version_id_tbl(l_index) := l_rec.object_version_id; Bug 4227280
11909 l_object_version_id_tbl(l_index) := l_object_version_id; -- Bug 4227280
11910 l_progress_status_code_tbl(l_index) := l_progress_status_code;
11911 l_act_start_date_tbl(l_index) := l_actual_start_date;
11912 l_act_finish_date_tbl(l_index) := l_actual_finish_date;
11913 l_est_start_date_tbl(l_index) := l_estimated_start_date;
11914 l_est_finish_date_tbl(l_index) := l_estimated_finish_date;
11915 l_task_status_code_tbl(l_index) := l_task_status;
11916 l_earned_value_tbl(l_index) := l_rec.earned_value;
11917 l_base_per_comp_deriv_code_tbl(l_index) := l_last_ppr_rec.BASE_PERCENT_COMP_DERIV_CODE;
11918 l_base_perc_comp_tbl(l_index) := l_rec.base_percent_complete; -- 4604661
11919 l_description(l_index) := l_last_ppc_rec.description;
11920 l_progress_comment.extend(1);
11921 l_progress_comment(l_index) := l_last_ppc_rec.progress_comment;
11922
11923 -- Bug 4282618 Begin
11924 l_prog_enabled := 'Y';
11925 OPEN cur_prog_enabled(l_rec.proj_element_id);
11926 FETCH cur_prog_enabled INTO l_prog_enabled;
11927 CLOSE cur_prog_enabled;
11928
11929 l_prog_enabled_tbl(l_index) := l_prog_enabled;
11930 -- Bug 4282618 End
11931
11932
11933 l_oth_etc_quantity := null;
11934 l_oth_etc_cost_tc := null;
11935 l_oth_etc_cost_pc := null;
11936 l_oth_etc_cost_fc := null;
11937 l_oth_etc_rawcost_tc := null;
11938 l_oth_etc_rawcost_pc := null;
11939 l_oth_etc_rawcost_fc := null;
11940 l_estimated_remaining_effort := null;
11941 l_ppl_etc_cost_tc := null;
11942 l_ppl_etc_cost_pc := null;
11943 l_ppl_etc_cost_fc := null;
11944 l_ppl_etc_rawcost_tc := null;
11945 l_ppl_etc_rawcost_pc := null;
11946 l_ppl_etc_rawcost_fc := null;
11947 l_eqpmt_etc_effort := null;
11948 l_eqpmt_etc_cost_tc := null;
11949 l_eqpmt_etc_cost_pc := null;
11950 l_eqpmt_etc_cost_fc := null;
11951 l_eqpmt_etc_rawcost_tc := null;
11952 l_eqpmt_etc_rawcost_pc := null;
11953 l_eqpmt_etc_rawcost_fc := null;
11954
11955
11956 -- We need to derive ETC as new planned-actual for assignments and lowest tasks which do not have assignments
11957 -- For summary level rollup API will take care
11958
11959 IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
11960 l_ptav_rec := null;
11961 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');
11962 FETCH c_ptav_cur INTO l_ptav_rec;
11963 CLOSE c_ptav_cur;
11964
11965 IF g1_debug_mode = 'Y' THEN
11966 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur', x_Log_Level=> 3);
11967 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);
11968 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);
11969 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);
11970 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);
11971 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);
11972 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);
11973 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);
11974 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);
11975 END IF;
11976
11977 IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
11978 --5726773
11979 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);
11980 /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
11981 IF l_oth_etc_quantity < 0 THEN
11982 l_oth_etc_quantity := 0;
11983 END IF; */
11984 ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
11985 --5726773
11986 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);
11987 /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
11988 IF l_oth_etc_quantity < 0 THEN
11989 l_oth_etc_quantity := 0;
11990 END IF; */
11991 ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
11992 --5726773
11993 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);
11994 /*5726773 l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
11995 IF l_estimated_remaining_effort < 0 THEN
11996 l_estimated_remaining_effort := 0;
11997 END IF; */
11998 ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
11999 --5726773
12000 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);
12001 /* 5726773 l_eqpmt_etc_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.eqpmt_act_effort_to_date,0);
12002 IF l_eqpmt_etc_effort < 0 THEN
12003 l_eqpmt_etc_effort := 0;
12004 END IF; */
12005 END IF;
12006 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp; --bug 3906362
12007 --bug 4191360, consider for lowest level task only
12008 --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
12009 ELSIF l_rec.object_type = 'PA_TASKS' AND NVL(pa_proj_elements_utils.is_lowest_task(l_object_version_id),'N') = 'Y' THEN
12010 l_ptav_rec := null;
12011 --bug 4191360, added IF NVL(l_assignment_exists, 'N')
12012 l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_object_version_id,l_rec.object_type);
12013 IF NVL(l_assignment_exists, 'N') = 'N'
12014 THEN
12015 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');
12016 FETCH c_ptav_cur_task INTO l_ptav_rec;
12017 CLOSE c_ptav_cur_task;
12018
12019 IF g1_debug_mode = 'Y' THEN
12020 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur_task', x_Log_Level=> 3);
12021 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);
12022 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);
12023 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);
12024 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);
12025 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);
12026 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);
12027 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);
12028 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);
12029 END IF;
12030
12031 /*l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
12032 IF l_estimated_remaining_effort < 0 THEN
12033 l_estimated_remaining_effort := 0;
12034 END IF; */
12035 -- Commented above and added below for Bug# 6713712
12036 -- Used PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act to calculate
12037 -- l_estimated_remaining_effort.
12038 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));
12039 END IF;
12040 --bug 3906362
12041
12042 l_BASE_PERCENT_COMP_DERIV_CODE := null;
12043
12044 OPEN cur_proj_elements(l_rec.object_id);
12045 FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
12046 CLOSE cur_proj_elements;
12047
12048 l_base_per_comp_deriv_code_tbl(l_index) := l_BASE_PERCENT_COMP_DERIV_CODE;
12049
12050 IF g1_debug_mode = 'Y' THEN
12051 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
12052 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);
12053 END IF;
12054
12055 --bug 4191360, rederive rollup percent only if %complete derv. code has changed
12056 IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12057 OR l_estimated_remaining_effort <> l_last_ppr_rec.estimated_remaining_effort -- Bug 4111107 : this should be done when ETC changes too
12058 OR l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED' -- 4617909
12059 THEN
12060 --bug 4191360, for lowest level task calculate percent complete if der code is WQ based, irrespective of assignment
12061 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12062 THEN
12063 l_EFF_ROLLUP_PERCENT_COMP := PA_PROGRESS_UTILS.Calc_base_percent(
12064 p_task_id => l_rec.object_id
12065 --4617909 ,p_incr_work_qty => l_rec.INCREMENTAL_WORK_QUANTITY
12066 --4617909 ,p_cuml_work_qty => l_rec.CUMULATIVE_WORK_QUANTITY
12067 -- Using l_last_ppr_rec values as working ver progress might be old
12068 ,p_incr_work_qty => l_last_ppr_rec.INCREMENTAL_WORK_QUANTITY
12069 ,p_cuml_work_qty => l_last_ppr_rec.CUMULATIVE_WORK_QUANTITY
12070 ,p_est_remaining_effort => null
12071 );
12072 IF g1_debug_mode = 'Y' THEN
12073 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);
12074 END IF;
12075 --for lowest level task calc percent complete if assignment doesnt exist
12076 ELSIF NVL(l_assignment_exists, 'N') = 'N' THEN
12077 l_planned_effort := null;
12078 l_planned_cost := null;
12079 IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12080 THEN
12081 --bug 4191360, get the planned directly from cursor c_ptav_cur_task
12082 /*IF l_rec.estimated_remaining_effort IS NULL
12083 THEN
12084 OPEN cur_task_plan(l_rec.object_id);
12085 FETCH cur_task_plan INTO l_planned_effort;
12086 CLOSE cur_task_plan;
12087 END IF;
12088 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));*/
12089 l_planned_effort := l_ptav_rec.planned_quantity;
12090 IF l_planned_effort = 0 OR l_planned_effort IS NULL
12091 THEN
12092 l_planned_effort := 1;
12093 END iF;
12094 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,2);
12095 IF g1_debug_mode = 'Y' THEN
12096 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);
12097 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);
12098 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
12099 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);
12100 END IF;
12101 --bug 4191360, consider cost as well
12102 ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in('COST')
12103 THEN
12104 --bug 4191360, get the planned cost directly from cursor c_ptav_cur_task
12105 /*IF l_rec.PPL_ETC_COST_PC IS NULL
12106 THEN
12107 OPEN cur_task_plan_cost(l_rec.object_id);
12108 FETCH cur_task_plan_cost INTO l_planned_cost;
12109 CLOSE cur_task_plan_cost;
12110 END IF;
12111 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));*/
12112 l_planned_cost := l_ptav_rec.planned_bur_cost_proj_cur;
12113 IF l_planned_cost = 0 OR l_planned_cost IS NULL
12114 THEN
12115 l_planned_cost := 1;
12116 END iF;
12117 l_EFF_ROLLUP_PERCENT_COMP := round((nvl(l_rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,2);
12118 ELSE
12119 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12120 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12121 --bug 4191360, moved this code above
12122 /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12123 THEN
12124 l_EFF_ROLLUP_PERCENT_COMP := PA_PROGRESS_UTILS.Calc_base_percent(
12125 p_task_id => l_rec.object_id
12126 ,p_incr_work_qty => l_rec.INCREMENTAL_WORK_QUANTITY
12127 ,p_cuml_work_qty => l_rec.CUMULATIVE_WORK_QUANTITY
12128 ,p_est_remaining_effort => null
12129 );
12130 IF g1_debug_mode = 'Y' THEN
12131 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);
12132 END IF;*/
12133 ELSE
12134 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12135 END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12136 ELSE
12137 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12138 END IF; -- IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12139 --bug 3906362
12140 END IF; -- IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
12141
12142 IF g1_debug_mode = 'Y' THEN
12143 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Before Costing out ETC', x_Log_Level=> 3);
12144 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12145 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12146 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12147 END IF;
12148
12149 IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
12150 l_ppl_etc_cost_tc := null;
12151 l_ppl_etc_cost_fc := null;
12152 l_ppl_etc_cost_pc := null;
12153 l_ppl_etc_rawcost_tc := null;
12154 l_ppl_etc_rawcost_fc := null;
12155 l_ppl_etc_rawcost_pc := null;
12156 l_eqpmt_etc_cost_tc := null;
12157 l_eqpmt_etc_cost_fc := null;
12158 l_eqpmt_etc_cost_pc := null;
12159 l_eqpmt_etc_rawcost_tc := null;
12160 l_eqpmt_etc_rawcost_fc := null;
12161 l_eqpmt_etc_rawcost_pc := null;
12162 l_oth_etc_cost_tc := null;
12163 l_oth_etc_cost_fc := null;
12164 l_oth_etc_cost_pc := null;
12165 l_oth_etc_rawcost_tc := null;
12166 l_oth_etc_rawcost_fc := null;
12167 l_oth_etc_rawcost_pc := null;
12168 ELSE -- ETC Changes : Costing out ETC always
12169 IF l_oth_etc_quantity IS NOT NULL THEN
12170 IF l_oth_etc_quantity = 0 THEN
12171 l_oth_etc_cost_tc := 0;
12172 l_oth_etc_cost_fc := 0;
12173 l_oth_etc_cost_pc := 0;
12174 l_oth_etc_rawcost_tc := 0;
12175 l_oth_etc_rawcost_fc := 0;
12176 l_oth_etc_rawcost_pc := 0;
12177 ELSE
12178 --Bug 5027965.
12179 IF l_etc_cost_calc_mode ='COPY' THEN
12180 l_plan_version_id := l_curr_workplan_ver_bv_id;
12181 ELSE
12182 l_plan_version_id := l_ptav_rec.budget_version_id;
12183 END IF;
12184 pa_progress_utils.get_plan_costs_for_qty
12185 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12186 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12187 ,p_project_id => p_project_id
12188 ,p_task_id => l_rec.proj_element_id
12189 ,p_as_of_date => l_as_of_date
12190 ,p_structure_version_id => l_latest_pub_wp_version_id
12191 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12192 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12193 ,p_quantity => l_oth_etc_quantity
12194 ,p_budget_version_id => l_plan_version_id ---5027965 ---4372462
12195 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12196 ,x_rawcost_tc => l_oth_etc_rawcost_tc
12197 ,x_brdncost_tc => l_oth_etc_cost_tc
12198 ,x_rawcost_pc => l_oth_etc_rawcost_pc
12199 ,x_brdncost_pc => l_oth_etc_cost_pc
12200 ,x_rawcost_fc => l_oth_etc_rawcost_fc
12201 ,x_brdncost_fc => l_oth_etc_cost_fc
12202 ,x_return_status => x_return_status
12203 ,x_msg_count => x_msg_count
12204 ,x_msg_data => x_msg_data
12205 );
12206 IF x_return_status <> 'S' THEN
12207 raise FND_API.G_EXC_ERROR;
12208 END IF;
12209 END IF;
12210 ELSIF l_estimated_remaining_effort IS NOT NULL THEN
12211 IF l_estimated_remaining_effort = 0 THEN
12212 l_ppl_etc_cost_tc := 0;
12213 l_ppl_etc_cost_fc := 0;
12214 l_ppl_etc_cost_pc := 0;
12215 l_ppl_etc_rawcost_tc := 0;
12216 l_ppl_etc_rawcost_fc := 0;
12217 l_ppl_etc_rawcost_pc := 0;
12218 ELSE
12219 --Bug 5027965.
12220 IF l_etc_cost_calc_mode ='COPY' THEN
12221 l_plan_version_id := l_curr_workplan_ver_bv_id;
12222 ELSE
12223 l_plan_version_id := l_ptav_rec.budget_version_id;
12224 END IF;
12225 pa_progress_utils.get_plan_costs_for_qty
12226 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12227 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12228 ,p_project_id => p_project_id
12229 ,p_task_id => l_rec.proj_element_id
12230 ,p_as_of_date => l_as_of_date
12231 ,p_structure_version_id => l_latest_pub_wp_version_id
12232 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12233 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12234 ,p_quantity => l_estimated_remaining_effort
12235 ,p_budget_version_id => l_plan_version_id ---4372462 --Bug 5027965
12236 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12237 ,x_rawcost_tc => l_ppl_etc_rawcost_tc
12238 ,x_brdncost_tc => l_ppl_etc_cost_tc
12239 ,x_rawcost_pc => l_ppl_etc_rawcost_pc
12240 ,x_brdncost_pc => l_ppl_etc_cost_pc
12241 ,x_rawcost_fc => l_ppl_etc_rawcost_fc
12242 ,x_brdncost_fc => l_ppl_etc_cost_fc
12243 ,x_return_status => x_return_status
12244 ,x_msg_count => x_msg_count
12245 ,x_msg_data => x_msg_data
12246 );
12247 IF x_return_status <> 'S' THEN
12248 raise FND_API.G_EXC_ERROR;
12249 END IF;
12250 END IF;
12251 ELSIF l_eqpmt_etc_effort IS NOT NULL THEN
12252 IF l_eqpmt_etc_effort = 0 THEN
12253 l_eqpmt_etc_cost_tc := 0;
12254 l_eqpmt_etc_cost_fc := 0;
12255 l_eqpmt_etc_cost_pc := 0;
12256 l_eqpmt_etc_rawcost_tc := 0;
12257 l_eqpmt_etc_rawcost_fc := 0;
12258 l_eqpmt_etc_rawcost_pc := 0;
12259 ELSE
12260 --Bug 5027965.
12261 IF l_etc_cost_calc_mode ='COPY' THEN
12262 l_plan_version_id := l_curr_workplan_ver_bv_id;
12263 ELSE
12264 l_plan_version_id := l_ptav_rec.budget_version_id;
12265 END IF;
12266 pa_progress_utils.get_plan_costs_for_qty
12267 ( p_etc_cost_calc_mode => l_etc_cost_calc_mode --Bug 5027965
12268 ,p_resource_list_mem_id => l_ptav_rec.resource_list_member_id
12269 ,p_project_id => p_project_id
12270 ,p_task_id => l_rec.proj_element_id
12271 ,p_as_of_date => l_as_of_date
12272 ,p_structure_version_id => l_latest_pub_wp_version_id
12273 ,p_txn_currency_code => l_ptav_rec.txn_currency_code
12274 ,p_rate_based_flag => l_ptav_rec.rate_based_flag
12275 ,p_quantity => l_eqpmt_etc_effort
12276 ,p_budget_version_id => l_plan_version_id ---4372462 --Bug 5027965
12277 ,p_res_assignment_id => l_ptav_rec.resource_assignment_id
12278 ,x_rawcost_tc => l_eqpmt_etc_rawcost_tc
12279 ,x_brdncost_tc => l_eqpmt_etc_cost_tc
12280 ,x_rawcost_pc => l_eqpmt_etc_rawcost_pc
12281 ,x_brdncost_pc => l_eqpmt_etc_cost_pc
12282 ,x_rawcost_fc => l_eqpmt_etc_rawcost_fc
12283 ,x_brdncost_fc => l_eqpmt_etc_cost_fc
12284 ,x_return_status => x_return_status
12285 ,x_msg_count => x_msg_count
12286 ,x_msg_data => x_msg_data
12287 );
12288 IF x_return_status <> 'S' THEN
12289 raise FND_API.G_EXC_ERROR;
12290 END IF;
12291 END IF;
12292 END IF;
12293 END IF;
12294
12295 IF g1_debug_mode = 'Y' THEN
12296 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After Costing out ETC', x_Log_Level=> 3);
12297 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12298 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);
12299 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);
12300 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);
12301 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);
12302 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);
12303 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);
12304 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12305 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);
12306 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);
12307 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);
12308 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);
12309 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);
12310 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);
12311 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12312 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);
12313 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);
12314 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);
12315 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);
12316 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);
12317 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);
12318 END IF;
12319
12320 l_incr_work_quantity_tbl(l_index) := l_last_ppr_rec.INCREMENTAL_WORK_Quantity;
12321 l_cumu_work_quantity_tbl(l_index) := l_last_ppr_rec.CUMULATIVE_WORK_Quantity;
12322 l_eff_rollup_percent_comp_tbl(l_index) := l_EFF_ROLLUP_PERCENT_COMP;
12323
12324 l_base_prog_status_code_tbl(l_index) := l_last_ppr_rec.BASE_PROGRESS_STATUS_CODE;
12325 l_eff_roll_prog_stat_code_tbl(l_index) := l_last_ppr_rec.EFF_ROLLUP_PROG_STAT_CODE;
12326
12327 l_ppl_act_effort_to_date_tbl(l_index) := l_last_ppr_rec.PPL_ACT_EFFORT_TO_DATE;
12328 l_PPL_ACT_COST_TO_DATE_TC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_TC;
12329 l_PPL_ACT_COST_TO_DATE_FC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_FC;
12330 l_PPL_ACT_COST_TO_DATE_PC_tbl(l_index) := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_PC;
12331 l_ppl_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_TC;
12332 l_ppl_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
12333 l_ppl_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
12334
12335 l_est_remaining_effort_tbl(l_index) := l_estimated_remaining_effort;
12336 l_ppl_etc_cost_tc_tbl(l_index) := l_ppl_etc_cost_tc;
12337 l_ppl_etc_cost_fc_tbl(l_index) := l_ppl_etc_cost_fc;
12338 l_ppl_etc_cost_pc_tbl(l_index) := l_ppl_etc_cost_pc;
12339 l_ppl_etc_rawcost_tc_tbl(l_index) := l_ppl_etc_rawcost_tc;
12340 l_ppl_etc_rawcost_fc_tbl(l_index) := l_ppl_etc_rawcost_fc;
12341 l_ppl_etc_rawcost_pc_tbl(l_index) := l_ppl_etc_rawcost_pc;
12342
12343 l_eqpmt_act_effort_to_date_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_EFFORT_TO_DATE;
12344 l_eqp_act_cost_to_date_tc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_TC;
12345 l_eqp_act_cost_to_date_fc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_FC;
12346 l_eqp_act_cost_to_date_pc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_PC;
12347 l_eqpmt_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
12348 l_eqpmt_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
12349 l_eqpmt_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
12350
12351 l_eqpmt_etc_effort_tbl(l_index) := l_eqpmt_etc_effort;
12352 l_eqpmt_etc_cost_tc_tbl(l_index) := l_eqpmt_etc_cost_tc;
12353 l_eqpmt_etc_cost_fc_tbl(l_index) := l_eqpmt_etc_cost_fc;
12354 l_eqpmt_etc_cost_pc_tbl(l_index) := l_eqpmt_etc_cost_pc;
12355 l_eqpmt_etc_rawcost_tc_tbl(l_index) := l_eqpmt_etc_rawcost_tc;
12356 l_eqpmt_etc_rawcost_fc_tbl(l_index) := l_eqpmt_etc_rawcost_fc;
12357 l_eqpmt_etc_rawcost_pc_tbl(l_index) := l_eqpmt_etc_rawcost_pc;
12358
12359 l_oth_quantity_to_date_tbl(l_index) := l_last_ppr_rec.oth_quantity_to_date;
12360 l_OTH_ACT_COST_TO_DATE_TC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_TC;
12361 l_OTH_ACT_COST_TO_DATE_FC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_FC;
12362 l_OTH_ACT_COST_TO_DATE_PC_tbl(l_index) := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_PC;
12363 l_oth_act_raw_to_date_tc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_TC;
12364 l_oth_act_raw_to_date_fc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
12365 l_oth_act_raw_to_date_pc_tbl(l_index) := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
12366
12367 l_oth_etc_quantity_tbl(l_index) := l_oth_etc_quantity;
12368 l_oth_etc_cost_tc_tbl(l_index) := l_oth_etc_cost_tc;
12369 l_oth_etc_cost_fc_tbl(l_index) := l_oth_etc_cost_fc;
12370 l_oth_etc_cost_pc_tbl(l_index) := l_oth_etc_cost_pc;
12371 l_oth_etc_rawcost_tc_tbl(l_index) := l_oth_etc_rawcost_tc;
12372 l_oth_etc_rawcost_fc_tbl(l_index) := l_oth_etc_rawcost_fc;
12373 l_oth_etc_rawcost_pc_tbl(l_index) := l_oth_etc_rawcost_pc;
12374
12375 l_PROJFUNC_COST_RATE_TYPE_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_RATE_TYPE;
12376 l_projfunc_cost_exc_rate_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_EXCHANGE_RATE;
12377 l_PROJFUNC_COST_RATE_DATE_tbl(l_index) := l_last_ppr_rec.PROJFUNC_COST_RATE_DATE;
12378 l_PROJ_COST_RATE_TYPE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_RATE_TYPE;
12379 l_PROJ_COST_EXCHANGE_RATE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_EXCHANGE_RATE;
12380 l_PROJ_COST_RATE_DATE_tbl(l_index) := l_last_ppr_rec.PROJ_COST_RATE_DATE;
12381 l_TXN_CURRENCY_CODE_tbl(l_index) := l_last_ppr_rec.TXN_CURRENCY_CODE;
12382
12383 -- Bug 4111107 : Now l_etc_reset_flag is not used anymore
12384 --l_etc_reset_flag := 'N'; -- Bug 4227280
12385
12386 -- Bug 4282618 Begin
12387 IF l_prog_enabled = 'N' THEN
12388 l_completed_percentage_tbl(l_index) := null;
12389 l_progress_status_code_tbl(l_index) := null;
12390 l_earned_value_tbl(l_index) := null;
12391 l_eff_rollup_percent_comp_tbl(l_index) := null;
12392 l_eff_roll_prog_stat_code_tbl(l_index) := null;
12393 END IF;
12394 -- Bug 4282618 End
12395 END LOOP;
12396
12397 IF g1_debug_mode = 'Y' THEN
12398 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);
12399 END IF;
12400
12401 FORALL i IN 1..l_index
12402 update pa_percent_completes
12403 set current_flag = 'N'
12404 where project_id = l_project_id_tbl(i)
12405 and current_flag = 'Y'
12406 and structure_type = 'WORKPLAN'
12407 and object_type = l_object_type_tbl(i)
12408 and object_id = l_object_id_tbl(i)
12409 and task_id = l_task_id_tbl(i)
12410 and l_prog_enabled_tbl(i) = 'Y' -- Bug 4282618
12411 ;
12412 IF g1_debug_mode = 'Y' THEN
12413 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk update' , x_Log_Level=> 3);
12414 END IF;
12415
12416
12417 FORALL i IN 1..l_index
12418 update pa_proj_elements
12419 set status_code = l_task_status_code_tbl(i)
12420 where project_id = l_project_id_tbl(i)
12421 and proj_element_id = l_task_id_tbl(i)
12422 and l_object_type_tbl(i) = 'PA_TASKS'
12423 ;
12424
12425 IF g1_debug_mode = 'Y' THEN
12426 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk update' , x_Log_Level=> 3);
12427 END IF;
12428
12429 FORALL i IN 1..l_index
12430 insert into pa_percent_completes(TASK_ID,
12431 DATE_COMPUTED,
12432 LAST_UPDATE_DATE,
12433 LAST_UPDATED_BY,
12434 CREATION_DATE,
12435 CREATED_BY,
12436 LAST_UPDATE_LOGIN,
12437 COMPLETED_PERCENTAGE,
12438 PROJECT_ID,
12439 CURRENT_FLAG,
12440 PERCENT_COMPLETE_ID,
12441 object_VERSION_ID,
12442 OBJECT_TYPE,
12443 OBJECT_id,
12444 PROGRESS_STATUS_CODE,
12445 ACTUAL_START_DATE,
12446 ACTUAL_FINISH_DATE,
12447 ESTIMATED_START_DATE,
12448 ESTIMATED_FINISH_DATE,
12449 PUBLISHED_FLAG,
12450 published_BY_party_ID,
12451 history_flag,
12452 status_code,
12453 RECORD_VERSION_NUMBER,
12454 structure_type,
12455 description,
12456 progress_comment
12457 ) values
12458 ( l_task_id_tbl(i)
12459 ,l_as_of_date
12460 ,sysdate
12461 ,l_user_id
12462 ,sysdate
12463 ,l_user_id
12464 ,l_login_id
12465 ,l_completed_percentage_tbl(i)
12466 ,l_project_id_tbl(i)
12467 ,'Y'
12468 ,PA_PERCENT_COMPLETES_S.nextval
12469 ,l_object_version_id_tbl(i)
12470 ,l_object_type_tbl(i)
12471 ,l_object_id_tbl(i)
12472 ,l_progress_status_code_tbl(i)
12473 ,l_act_start_date_tbl(i)
12474 ,l_act_finish_date_tbl(i)
12475 ,l_est_start_date_tbl(i)
12476 ,l_est_finish_date_tbl(i)
12477 ,'Y'
12478 ,l_published_by_party_id
12479 ,'N'
12480 ,l_task_status_code_tbl(i)
12481 ,to_number(1)
12482 ,'WORKPLAN'
12483 ,l_description(i)
12484 ,l_progress_comment(i)
12485 )
12486 RETURNING PERCENT_COMPLETE_ID
12487 BULK COLLECT INTO l_percent_complete_id_tbl;
12488
12489 IF g1_debug_mode = 'Y' THEN
12490 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk insert' , x_Log_Level=> 3);
12491 END IF;
12492
12493 -- Bug 4282618 Begin
12494 -- The seprate delete is added after the insertion
12495 -- This is because of Bulk returning clause, we can not use select .. from dual ..where with bulk returning
12496 FOR i IN 1..l_index LOOP
12497 IF l_prog_enabled_tbl(i) = 'N' THEN
12498 DELETE pa_percent_completes
12499 where percent_complete_id = l_percent_complete_id_tbl(i);
12500
12501 l_percent_complete_id_tbl(i):=null;
12502 END IF;
12503 END LOOP;
12504 -- Bug 4282618 End
12505
12506
12507 ---5212999
12508 if (l_upd_rollup_prog = 'N') then
12509 FORALL i IN 1..l_index
12510 update pa_progress_rollup
12511 set current_flag = 'N'
12512 where project_id = l_project_id_tbl(i)
12513 and current_flag = 'Y'
12514 and structure_version_id is null
12515 and structure_type = 'WORKPLAN'
12516 and object_type = l_object_type_tbl(i)
12517 and object_id = l_object_id_tbl(i)
12518 and proj_element_id = l_task_id_tbl(i);
12519
12520 else
12521 FORALL i IN 1..l_index
12522 delete from pa_progress_rollup
12523 where project_id = l_project_id_tbl(i)
12524 and current_flag = 'Y'
12525 and structure_version_id is null
12526 and structure_type = 'WORKPLAN'
12527 and object_type = l_object_type_tbl(i)
12528 and object_id = l_object_id_tbl(i)
12529 and proj_element_id = l_task_id_tbl(i);
12530 end if;
12531
12532 IF g1_debug_mode = 'Y' THEN
12533 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After third bulk update' , x_Log_Level=> 3);
12534 /* For Debug Purposes, Can be removed
12535 FOR i IN 1..l_index LOOP
12536 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);
12537 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);
12538 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);
12539 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);
12540 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);
12541 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);
12542 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);
12543 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);
12544 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);
12545 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);
12546 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);
12547 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);
12548 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);
12549 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);
12550 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);
12551 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);
12552 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);
12553 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);
12554 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);
12555 END LOOP;
12556 */
12557 END IF;
12558
12559
12560
12561 FORALL i IN 1..l_index
12562 insert into pa_progress_rollup(
12563 PROGRESS_ROLLUP_ID
12564 ,PROJECT_ID
12565 ,OBJECT_ID
12566 ,OBJECT_TYPE
12567 ,AS_OF_DATE
12568 ,OBJECT_VERSION_ID
12569 ,LAST_UPDATE_DATE
12570 ,LAST_UPDATED_BY
12571 ,CREATION_DATE
12572 ,CREATED_BY
12573 ,PROGRESS_STATUS_CODE
12574 ,LAST_UPDATE_LOGIN
12575 ,INCREMENTAL_WORK_QUANTITY
12576 ,CUMULATIVE_WORK_QUANTITY
12577 ,EFF_ROLLUP_PERCENT_COMP
12578 ,COMPLETED_PERCENTAGE
12579 ,ESTIMATED_START_DATE
12580 ,ESTIMATED_FINISH_DATE
12581 ,ACTUAL_START_DATE
12582 ,ACTUAL_FINISH_DATE
12583 ,ESTIMATED_REMAINING_EFFORT
12584 ,RECORD_VERSION_NUMBER
12585 ,BASE_PERCENT_COMP_DERIV_CODE
12586 ,BASE_PROGRESS_STATUS_CODE
12587 ,EFF_ROLLUP_PROG_STAT_CODE
12588 ,PERCENT_COMPLETE_ID
12589 ,STRUCTURE_TYPE
12590 ,PROJ_ELEMENT_ID
12591 ,PPL_ACT_EFFORT_TO_DATE
12592 ,EQPMT_ACT_EFFORT_TO_DATE
12593 ,EQPMT_ETC_EFFORT
12594 ,OTH_ACT_COST_TO_DATE_TC
12595 ,OTH_ACT_COST_TO_DATE_FC
12596 ,OTH_ACT_COST_TO_DATE_PC
12597 ,OTH_ETC_COST_TC
12598 ,OTH_ETC_COST_FC
12599 ,OTH_ETC_COST_PC
12600 ,PPL_ACT_COST_TO_DATE_TC
12601 ,PPL_ACT_COST_TO_DATE_FC
12602 ,PPL_ACT_COST_TO_DATE_PC
12603 ,PPL_ETC_COST_TC
12604 ,PPL_ETC_COST_FC
12605 ,PPL_ETC_COST_PC
12606 ,EQPMT_ACT_COST_TO_DATE_TC
12607 ,EQPMT_ACT_COST_TO_DATE_FC
12608 ,EQPMT_ACT_COST_TO_DATE_PC
12609 ,EQPMT_ETC_COST_TC
12610 ,EQPMT_ETC_COST_FC
12611 ,EQPMT_ETC_COST_PC
12612 ,EARNED_VALUE
12613 ,TASK_WT_BASIS_CODE
12614 ,CURRENT_FLAG
12615 ,PROJFUNC_COST_RATE_TYPE
12616 ,PROJFUNC_COST_EXCHANGE_RATE
12617 ,PROJFUNC_COST_RATE_DATE
12618 ,PROJ_COST_RATE_TYPE
12619 ,PROJ_COST_EXCHANGE_RATE
12620 ,PROJ_COST_RATE_DATE
12621 ,TXN_CURRENCY_CODE
12622 ,PROG_PA_PERIOD_NAME
12623 ,PROG_GL_PERIOD_NAME
12624 ,OTH_QUANTITY_TO_DATE
12625 ,OTH_ETC_QUANTITY
12626 ,OTH_ACT_RAWCOST_TO_DATE_TC
12627 ,OTH_ACT_RAWCOST_TO_DATE_FC
12628 ,OTH_ACT_RAWCOST_TO_DATE_PC
12629 ,OTH_ETC_RAWCOST_TC
12630 ,OTH_ETC_RAWCOST_FC
12631 ,OTH_ETC_RAWCOST_PC
12632 ,PPL_ACT_RAWCOST_TO_DATE_TC
12633 ,PPL_ACT_RAWCOST_TO_DATE_FC
12634 ,PPL_ACT_RAWCOST_TO_DATE_PC
12635 ,PPL_ETC_RAWCOST_TC
12636 ,PPL_ETC_RAWCOST_FC
12637 ,PPL_ETC_RAWCOST_PC
12638 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
12639 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
12640 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
12641 ,EQPMT_ETC_RAWCOST_TC
12642 ,EQPMT_ETC_RAWCOST_FC
12643 ,EQPMT_ETC_RAWCOST_PC
12644 ,BASE_PERCENT_COMPLETE -- 4604661
12645 ) VALUES (
12646 PA_PROGRESS_ROLLUP_S.nextval
12647 ,l_project_id_tbl(i)
12648 ,l_object_id_tbl(i)
12649 ,l_object_type_tbl(i)
12650 ,l_as_of_date
12651 ,l_object_version_id_tbl(i)
12652 ,sysdate
12653 ,l_user_id
12654 ,sysdate
12655 ,l_user_id
12656 ,l_progress_status_code_tbl(i)
12657 ,l_login_id
12658 ,l_incr_work_quantity_tbl(i)
12659 ,l_cumu_work_quantity_tbl(i)
12660 ,l_eff_rollup_percent_comp_tbl(i)
12661 ,l_completed_percentage_tbl(i)
12662 ,l_est_start_date_tbl(i)
12663 ,l_est_finish_date_tbl(i)
12664 ,l_act_start_date_tbl(i)
12665 ,l_act_finish_date_tbl(i)
12666 ,l_est_remaining_effort_tbl(i)
12667 ,to_number(1)
12668 ,l_base_per_comp_deriv_code_tbl(i)
12669 ,l_base_prog_status_code_tbl(i)
12670 ,l_eff_roll_prog_stat_code_tbl(i)
12671 ,l_percent_complete_id_tbl(i)
12672 ,'WORKPLAN'
12673 ,l_task_id_tbl(i)
12674 ,l_ppl_act_effort_to_date_tbl(i)
12675 ,l_eqpmt_act_effort_to_date_tbl(i)
12676 ,l_eqpmt_etc_effort_tbl(i)
12677 ,l_oth_act_cost_to_date_tc_tbl(i)
12678 ,l_oth_act_cost_to_date_fc_tbl(i)
12679 ,l_oth_act_cost_to_date_pc_tbl(i)
12680 ,l_oth_etc_cost_tc_tbl(i)
12681 ,l_oth_etc_cost_fc_tbl(i)
12682 ,l_oth_etc_cost_pc_tbl(i)
12683 ,l_ppl_act_cost_to_date_tc_tbl(i)
12684 ,l_ppl_act_cost_to_date_fc_tbl(i)
12685 ,l_ppl_act_cost_to_date_pc_tbl(i)
12686 ,l_ppl_etc_cost_tc_tbl(i)
12687 ,l_ppl_etc_cost_fc_tbl(i)
12688 ,l_ppl_etc_cost_pc_tbl(i)
12689 ,l_eqp_act_cost_to_date_tc_tbl(i)
12690 ,l_eqp_act_cost_to_date_fc_tbl(i)
12691 ,l_eqp_act_cost_to_date_pc_tbl(i)
12692 ,l_eqpmt_etc_cost_tc_tbl(i)
12693 ,l_eqpmt_etc_cost_fc_tbl(i)
12694 ,l_eqpmt_etc_cost_pc_tbl(i)
12695 ,l_earned_value_tbl(i)
12696 ,l_task_weight_basis_code
12697 ,'Y'
12698 ,l_projfunc_cost_rate_type_tbl(i)
12699 ,l_projfunc_cost_exc_rate_tbl(i)
12700 ,l_projfunc_cost_rate_date_tbl(i)
12701 ,l_proj_cost_rate_type_tbl(i)
12702 ,l_proj_cost_exchange_rate_tbl(i)
12703 ,l_proj_cost_rate_date_tbl(i)
12704 ,l_txn_currency_code_tbl(i)
12705 ,l_prog_pa_period_name
12706 ,l_prog_gl_period_name
12707 ,l_oth_quantity_to_date_tbl(i)
12708 ,l_oth_etc_quantity_tbl(i)
12709 ,l_oth_act_raw_to_date_tc_tbl(i)
12710 ,l_oth_act_raw_to_date_fc_tbl(i)
12711 ,l_oth_act_raw_to_date_pc_tbl(i)
12712 ,l_oth_etc_rawcost_tc_tbl(i)
12713 ,l_oth_etc_rawcost_fc_tbl(i)
12714 ,l_oth_etc_rawcost_pc_tbl(i)
12715 ,l_ppl_act_raw_to_date_tc_tbl(i)
12716 ,l_ppl_act_raw_to_date_fc_tbl(i)
12717 ,l_ppl_act_raw_to_date_pc_tbl(i)
12718 ,l_ppl_etc_rawcost_tc_tbl(i)
12719 ,l_ppl_etc_rawcost_fc_tbl(i)
12720 ,l_ppl_etc_rawcost_pc_tbl(i)
12721 ,l_eqpmt_act_raw_to_date_tc_tbl(i)
12722 ,l_eqpmt_act_raw_to_date_fc_tbl(i)
12723 ,l_eqpmt_act_raw_to_date_pc_tbl(i)
12724 ,l_eqpmt_etc_rawcost_tc_tbl(i)
12725 ,l_eqpmt_etc_rawcost_fc_tbl(i)
12726 ,l_eqpmt_etc_rawcost_pc_tbl(i)
12727 ,l_base_perc_comp_tbl(i) -- 4604661
12728 );
12729
12730 IF g1_debug_mode = 'Y' THEN
12731 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk insert' , x_Log_Level=> 3);
12732 END IF;
12733
12734 -- ETC Changes End
12735
12736 --reset the ETC whenever workplan gets published.
12737 -- This code is removed now. Now we select all progress record from published or working wp version
12738
12739 -- Now l_upd_new_elem_ver_id_flag wil not be used as we are creating progress records always,
12740 -- irrespective whether Apply Progress id Done or not.
12741
12742 IF g1_debug_mode = 'Y' THEN
12743 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
12744 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);
12745 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'x_return_status='||x_return_status, x_Log_Level=> 3);
12746 END IF;
12747
12748 -- 4600547 : We should only assign x_as_of_date to next cycle date only if progress records are found.
12749 -- otherwise it was doing unnecessary calling rollup api in process_wbs_updates and creating prog records
12750 IF nvl(l_prog_rec_found,'N') = 'Y' THEN
12751 x_as_of_date := l_as_of_date;
12752 ELSE
12753 x_as_of_date := null;
12754 END IF;
12755
12756 x_task_weight_basis_code := l_task_weight_basis_code;
12757 --rtarway, BUG 3951024
12758 x_upd_new_elem_ver_id_flag := l_upd_new_elem_ver_id_flag;
12759
12760 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12761 x_return_status := 'E';
12762 x_msg_count := x_msg_count;
12763 RAISE FND_API.G_EXC_ERROR;
12764 END IF;
12765
12766
12767 IF (p_commit = FND_API.G_TRUE) THEN
12768 COMMIT;
12769 END IF;
12770 EXCEPTION
12771 when FND_API.G_EXC_ERROR then
12772 if p_commit = FND_API.G_TRUE then
12773 rollback to PUBLISH_PROGRESS;
12774 end if;
12775 x_return_status := FND_API.G_RET_STS_ERROR;
12776 when FND_API.G_EXC_UNEXPECTED_ERROR then
12777 if p_commit = FND_API.G_TRUE then
12778 rollback to PUBLISH_PROGRESS;
12779 end if;
12780 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12781 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
12782 p_procedure_name => 'PUBLISH_PROGRESS',
12783 p_error_text => SUBSTRB(SQLERRM,1,120));
12784 when OTHERS then
12785 if p_commit = FND_API.G_TRUE then
12786 rollback to PUBLISH_PROGRESS;
12787 end if;
12788 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12789 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
12790 p_procedure_name => 'PUBLISH_PROGRESS',
12791 p_error_text => SUBSTRB(SQLERRM,1,120));
12792 raise;
12793
12794 END PUBLISH_PROGRESS;
12795
12796 PROCEDURE GET_SUMMARIZED_ACTUALS(p_project_id_list IN SYSTEM.pa_num_tbl_type,
12797 p_extraction_type IN VARCHAR2,
12798 p_plan_res_level IN VARCHAR2,
12799 p_proj_pgm_level IN SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type(),
12800 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
12801 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
12802 x_msg_data OUT NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
12803
12804 l_project_id NUMBER;
12805 l_object_id NUMBER;
12806 l_object_version_id NUMBER;
12807 l_task_version_id NUMBER;
12808 l_object_Type VARCHAR2(80);
12809 l_base_pc_deriv_code VARCHAR2(150);
12810 l_task_wt_basis_code VARCHAR2(30);
12811 l_txn_curr_code VARCHAR2(30);
12812 l_org_id NUMBER;
12813 l_shared_structure VARCHAR2(30);
12814 l_db_case VARCHAR2(1);
12815 l_last_projelemid NUMBER:=0;
12816 l_last_res_list_mem_id NUMBER:=0;
12817 l_new_res_list_member_id NUMBER; -- Bug 3764224 : RLM Id Changes
12818 l_last_object_Type VARCHAR2(80);
12819 l_txn_raw_cost NUMBER(22,5); --start 5343956
12820 l_txn_brdn_cost NUMBER(22,5);
12821 l_txn_raw_cost_tot NUMBER(22,5);
12822 l_txn_brdn_cost_tot NUMBER(22,5); --end 5343956
12823 l_sch_start_date DATE;
12824 l_sch_end_date DATE;
12825 l_asgn_sch_start_date DATE;
12826 l_asgn_sch_finish_date DATE;
12827 l_res_list_member_id NUMBER;
12828 l_res_assignment_id NUMBER;
12829 l_res_class_code VARCHAR2(30);
12830 l_task_id NUMBER;
12831 l_planned_eff NUMBER;
12832 l_planned_cost NUMBER(22,5); --5343956
12833 l_percent_comp NUMBER;
12834 l_eff_rollup_pc NUMBER;
12835 l_earned_val NUMBER;
12836 l_rate_based_flag VARCHAR2(1);
12837 l_init_prog_stat_code VARCHAR2(150);
12838 l_uncategorized_flag VARCHAR2(1);
12839 l_ppl_res_list_mem_id NUMBER;
12840 l_plan_type VARCHAR2(1);
12841 l_plan_type_id NUMBER;
12842 l_plan_version_id NUMBER;
12843 l_rbs_element_id NUMBER;
12844
12845 x_txn_rate_type VARCHAR2(30);
12846 x_txn_rate_date DATE;
12847 x_txn_exch_rate NUMBER(22,5); --start 5343956
12848 x_txn_raw_cost NUMBER(22,5);
12849 x_txn_brdn_cost NUMBER(22,5);
12850 x_txn_raw_cost_tot NUMBER(22,5);
12851 x_txn_brdn_cost_tot NUMBER(22,5); --end 5343956
12852 x_projfunc_curr_code VARCHAR2(30);
12853 x_projfunc_cost_rate_type VARCHAR2(30);
12854 x_projfunc_cost_rate_date DATE;
12855 x_projfunc_cost_exch_rate NUMBER(22,5); --5343956
12856 x_projfunc_raw_cost NUMBER(22,5); --5343956
12857 x_msg_code VARCHAR2(80);
12858
12859 l_init_vars VARCHAR2(1);
12860 l_ignore_rec VARCHAR2(1);
12861 l_match_found VARCHAR2(1);
12862 l_index NUMBER;
12863 l_index1 NUMBER;
12864 l_index2 NUMBER;
12865 l_index3 NUMBER;
12866 l_index4 NUMBER;
12867 l_temp_index2 NUMBER;
12868 l_latest_wp_struct_ver_id NUMBER;
12869 l_base_struct_ver_id NUMBER;
12870 l_period_start_date DATE;
12871 l_temp_as_of_date DATE;
12872 l_conv_rate_date DATE;
12873 l_max_as_of_date DATE;
12874 l_max_as_of_date_assign DATE;
12875 l_pa_period_name VARCHAR2(80);
12876 l_gl_period_name VARCHAR2(80);
12877 l_period_name VARCHAR2(80);
12878 l_working_rec_found VARCHAR2(1);
12879 l_return_status VARCHAR2(1);
12880 l_track_wp_cost_flag VARCHAR2(1) := 'Y'; -- Bug 3801745
12881 l_proj_curr_code VARCHAR2(15);
12882 l_proj_func_curr_code VARCHAR2(15);
12883
12884
12885 L_ACT_COST_TO_DATE_TC NUMBER(22,5); --start 5343956
12886 L_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
12887 L_PPL_ACT_COST_TO_DATE_TC NUMBER(22,5);
12888 L_PPL_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
12889 L_EQPMT_ACT_COST_TO_DATE_TC NUMBER(22,5);
12890 L_EQPMT_ACT_RAWCOST_TO_DATE_TC NUMBER(22,5);
12891 l_asgn_plan_quantity NUMBER(22,5);
12892 l_asgn_plan_bur_cost_tc NUMBER(22,5);
12893 l_asgn_plan_bur_cost_fc NUMBER(22,5);
12894 l_asgn_plan_bur_cost_pc NUMBER(22,5);
12895 l_asgn_plan_raw_cost_tc NUMBER(22,5);
12896 l_asgn_plan_raw_cost_fc NUMBER(22,5);
12897 l_asgn_plan_raw_cost_pc NUMBER(22,5); --end 5343956
12898
12899 l_no_rate_exception Exception;
12900 cursor projects_in_range is
12901 select ppa.org_id, ppa.project_currency_code, ppa.projfunc_currency_code,
12902 PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(ppa.project_id) shared_structure
12903 from pa_projects_all ppa
12904 where ppa.project_id = l_project_id;
12905
12906 -- tables to hold project_ids, latest WP ids and res list ids.
12907 proj_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12908 latest_wp_struct_ver_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12909 res_list_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12910 proj_org_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12911 proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
12912 calendar_type_tbl SYSTEM.pa_varchar2_1_tbl_type:= SYSTEM.pa_varchar2_1_tbl_type();
12913 proj_curr_code_tbl SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
12914 proj_func_curr_code_tbl SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
12915 proj_pgm_level_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12916
12917 -- Added for bug 5464875
12918 base_struct_ver_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12919 populate_in_tbl PJI_FM_XBS_ACCUM_UTILS.populate_in_tbl_type;
12920
12921 /* Begin: Fix for Bug # 5526638. */
12922 l_act_err_flag SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12923 l_act_err_msg SYSTEM.pa_varchar2_240_tbl_type:= SYSTEM.pa_varchar2_240_tbl_type();
12924 l_act_out_report VARCHAR2(1) := 'N';
12925 l_err_msg VARCHAR2(255);
12926 l_skip_exception Exception;
12927 l_pji_wp_exception Exception;
12928 skip_proj_ids_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12929 skip_latest_wp_str_ver_id_tbl SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
12930 skip_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
12931 /* End: Fix for Bug # 5526638. */
12932
12933 cursor max_as_of_Date is
12934 select max(date_computed) from pa_percent_completes ppc
12935 where project_id = l_project_id
12936 and published_flag ='Y'
12937 and current_flag = 'Y'
12938 and object_type = 'PA_TASKS'
12939 and structure_type = 'WORKPLAN'
12940 and not exists (select '1' --- 4871809,5503428
12941 from pa_object_relationships
12942 where object_Type_from = 'PA_TASKS'
12943 and relationship_type = 'S'
12944 and object_id_from1 = ppc.object_version_id);
12945
12946 cursor max_as_of_date_assign is
12947 select max(date_computed) from pa_percent_completes
12948 where project_id = l_project_id
12949 and published_flag ='Y'
12950 and current_flag = 'Y'
12951 and object_type = 'PA_ASSIGNMENTS'
12952 and structure_type = 'WORKPLAN';
12953
12954 cursor max_as_of_date_rollup is
12955 select max(as_of_date) from pa_progress_rollup
12956 where project_id = l_project_id
12957 and structure_type = 'WORKPLAN'
12958 and structure_version_id is null
12959 and current_flag = 'Y';
12960
12961 cursor max_as_of_date_rollup_tsk is
12962 select max(as_of_date) from pa_progress_rollup
12963 where project_id = l_project_id
12964 and object_type = 'PA_TASKS'
12965 and structure_type = 'WORKPLAN'
12966 and structure_version_id is null
12967 and current_flag = 'Y';
12968
12969 -- table for rollup records
12970 PROGRESS_ROLLUP_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12971 PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12972 PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12973 OBJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12974 OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
12975 AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12976 OBJECT_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12977 LAST_UPDATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12978 LAST_UPDATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
12979 CREATION_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12980 CREATED_BY PA_PLSQL_DATATYPES.Num15TabTyp;
12981 PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
12982 LAST_UPDATE_LOGIN PA_PLSQL_DATATYPES.Num15TabTyp;
12983 INCREMENTAL_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
12984 CUMULATIVE_WORK_QUANTITY PA_PLSQL_DATATYPES.QtyTabtyp;
12985 BASE_PERCENT_COMPLETE PA_PLSQL_DATATYPES.QtyTabtyp;
12986 EFF_ROLLUP_PERCENT_COMP PA_PLSQL_DATATYPES.QtyTabtyp;
12987 COMPLETED_PERCENTAGE PA_PLSQL_DATATYPES.QtyTabtyp;
12988 ESTIMATED_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12989 ESTIMATED_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12990 ACTUAL_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12991 ACTUAL_FINISH_DATE PA_PLSQL_DATATYPES.DateTabTyp;
12992 ESTIMATED_REMAINING_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
12993 RECORD_VERSION_NUMBER PA_PLSQL_DATATYPES.Num15TabTyp;
12994 BASE_PERCENT_COMP_DERIV_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
12995 BASE_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
12996 EFF_ROLLUP_PROG_STAT_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
12997 STRUCTURE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
12998 PROJ_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
12999 STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13000 PPL_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
13001 EQPMT_ACT_EFFORT_TO_DATE PA_PLSQL_DATATYPES.QtyTabtyp;
13002 EQPMT_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13003 OTH_QTY PA_PLSQL_DATATYPES.AmtTabTyp;
13004 OTH_ETC_QTY PA_PLSQL_DATATYPES.AmtTabTyp;
13005 OTH_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13006 OTH_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13007 OTH_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13008 OTH_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13009 OTH_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13010 OTH_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13011 OTH_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13012 OTH_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13013 OTH_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13014 OTH_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13015 OTH_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13016 OTH_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13017 PPL_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13018 PPL_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13019 PPL_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13020 PPL_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13021 PPL_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13022 PPL_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13023 PPL_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13024 PPL_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13025 PPL_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13026 PPL_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13027 PPL_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13028 PPL_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13029 EQPMT_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13030 EQPMT_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13031 EQPMT_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13032 EQPMT_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13033 EQPMT_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13034 EQPMT_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13035 EQPMT_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13036 EQPMT_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13037 EQPMT_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13038 EQPMT_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13039 EQPMT_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13040 EQPMT_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13041 EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
13042 TASK_WT_BASIS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13043 SUBPRJ_PPL_ACT_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13044 SUBPRJ_EQPMT_ACT_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13045 SUBPRJ_PPL_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13046 SUBPRJ_EQPMT_ETC_EFFORT PA_PLSQL_DATATYPES.QtyTabtyp;
13047 SUBPRJ_OTH_ACT_COST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13048 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13049 SUBPRJ_OTH_ACT_COST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13050 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13051 SUBPRJ_OTH_ACT_COST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13052 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13053 SUBPRJ_PPL_ACT_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13054 SUBPRJ_PPL_ACT_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13055 SUBPRJ_PPL_ACT_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13056 SUBPRJ_PPL_ACT_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13057 SUBPRJ_PPL_ACT_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13058 SUBPRJ_PPL_ACT_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13059 SUBPRJ_EQPMT_ACT_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13060 SUBPRJ_EQPMT_ACT_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13061 SUBPRJ_EQPMT_ACT_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13062 SUBPRJ_EQPMT_ACT_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13063 SUBPRJ_EQPMT_ACT_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13064 SUBPRJ_EQPMT_ACT_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13065 SUBPRJ_OTH_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13066 SUBPRJ_OTH_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13067 SUBPRJ_OTH_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13068 SUBPRJ_OTH_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13069 SUBPRJ_OTH_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13070 SUBPRJ_OTH_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13071 SUBPRJ_PPL_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13072 SUBPRJ_PPL_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13073 SUBPRJ_PPL_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13074 SUBPRJ_PPL_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13075 SUBPRJ_PPL_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13076 SUBPRJ_PPL_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13077 SUBPRJ_EQPMT_ETC_COST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13078 SUBPRJ_EQPMT_ETC_RAWCOST_TC PA_PLSQL_DATATYPES.AmtTabTyp;
13079 SUBPRJ_EQPMT_ETC_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13080 SUBPRJ_EQPMT_ETC_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13081 SUBPRJ_EQPMT_ETC_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13082 SUBPRJ_EQPMT_ETC_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13083 SUBPRJ_EARNED_VALUE PA_PLSQL_DATATYPES.QtyTabtyp;
13084 CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13085 PROJFUNC_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13086 PROJFUNC_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
13087 PROJFUNC_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13088 PROJ_COST_RATE_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13089 PROJ_COST_EXCHANGE_RATE PA_PLSQL_DATATYPES.AmtTabTyp;
13090 PROJ_COST_RATE_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13091 TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
13092 PROG_PA_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13093 PROG_GL_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13094
13095 u_progress_rollup_id PA_PLSQL_DATATYPES.Num15TabTyp;
13096 u_object_version_id PA_PLSQL_DATATYPES.Num15TabTyp;
13097 u_completed_percentage PA_PLSQL_DATATYPES.QtyTabtyp;
13098 u_eff_rollup_percent_comp PA_PLSQL_DATATYPES.QtyTabtyp;
13099 u_earned_val PA_PLSQL_DATATYPES.QtyTabtyp;
13100 u_actual_finish_date PA_PLSQL_DATATYPES.DateTabTyp;
13101 u_oth_qty PA_PLSQL_DATATYPES.AmtTabTyp;
13102 u_oth_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13103 u_oth_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13104 u_oth_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13105 u_oth_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13106 u_oth_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13107 u_oth_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13108 u_oth_etc_qty PA_PLSQL_DATATYPES.AmtTabTyp;
13109 u_oth_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13110 u_oth_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13111 u_oth_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13112 u_oth_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13113 u_oth_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13114 u_oth_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13115 u_ppl_act_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13116 u_ppl_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13117 u_ppl_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13118 u_ppl_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13119 u_ppl_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13120 u_ppl_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13121 u_ppl_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13122 u_ppl_etc_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13123 u_ppl_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13124 u_ppl_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13125 u_ppl_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13126 u_ppl_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13127 u_ppl_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13128 u_ppl_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13129 u_eqpmt_act_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13130 u_eqpmt_act_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13131 u_eqpmt_act_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13132 u_eqpmt_act_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13133 u_eqpmt_act_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13134 u_eqpmt_act_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13135 u_eqpmt_act_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13136 u_eqpmt_etc_effort_to_date PA_PLSQL_DATATYPES.QtyTabtyp;
13137 u_eqpmt_etc_cost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13138 u_eqpmt_etc_rawcost_to_date_tc PA_PLSQL_DATATYPES.AmtTabTyp;
13139 u_eqpmt_etc_cost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13140 u_eqpmt_etc_rawcost_to_date_pc PA_PLSQL_DATATYPES.AmtTabTyp;
13141 u_eqpmt_etc_cost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13142 u_eqpmt_etc_rawcost_to_date_fc PA_PLSQL_DATATYPES.AmtTabTyp;
13143
13144 u1_progress_rollup_id PA_PLSQL_DATATYPES.Num15TabTyp;
13145
13146 ETC_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13147 ETC_PROJECT_ORG_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13148 ETC_PROJECT_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13149 ETC_STRUCT_VER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13150 ETC_PERIOD_NAME PA_PLSQL_DATATYPES.Char80TabTyp;
13151 ETC_CALENDAR_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
13152 ETC_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13153 ETC_END_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13154 ETC_RBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13155 ETC_RBS_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13156 ETC_PLAN_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13157 ETC_PLAN_TYPE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13158 ETC_WP_VERSION_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13159 ETC_ROLLUP_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
13160 ETC_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13161 ETC_QUANTITY PA_PLSQL_DATATYPES.AmtTabTyp;
13162 ETC_TXN_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13163 ETC_PRJ_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13164 ETC_PFC_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13165 ETC_TXN_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13166 ETC_PRJ_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13167 ETC_PFC_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13168 ETC_RESOURCE_CLASS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13169 ETC_RATE_BASED_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13170 ETC_PRJ_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13171 ETC_PFC_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
13172
13173 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13174
13175 t_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13176 t_STRUCTURE_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13177 t_TASK_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13178 t_RESOURCE_ASSIGNMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13179 t_AS_OF_DATE PA_PLSQL_DATATYPES.DateTabTyp;
13180 t_ACTUAL_COST PA_PLSQL_DATATYPES.AmtTabTyp;
13181 t_ACTUAL_EFFORT PA_PLSQL_DATATYPES.QtyTabTyp;
13182 t_PERIOD_NAME PA_PLSQL_DATATYPES.Char30TabTyp;
13183 t_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char15TabTyp;
13184 t_ACTUAL_COST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13185 t_ACTUAL_COST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13186 t_ACTUAL_RAWCOST PA_PLSQL_DATATYPES.AmtTabTyp;
13187 t_ACTUAL_RAWCOST_PC PA_PLSQL_DATATYPES.AmtTabTyp;
13188 t_ACTUAL_RAWCOST_FC PA_PLSQL_DATATYPES.AmtTabTyp;
13189 t_HIDDEN_RES_ASSGN_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13190 t_RESOURCE_LIST_MEMBER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13191 t_CURRENT_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
13192 t_OBJECT_TYPE PA_PLSQL_DATATYPES.Char30TabTyp;
13193 t_PERCENT_COMPLETE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
13194 t_track_wp_cost_flag PA_PLSQL_DATATYPES.Char1TabTyp;
13195 t_min_start_date PA_PLSQL_DATATYPES.DateTabTyp;
13196 t_max_end_date PA_PLSQL_DATATYPES.DateTabTyp;
13197
13198 l_t_index NUMBER:=0;
13199 l_index_etc NUMBER:=0;
13200 l_t_temp_index NUMBER:=0;
13201 i NUMBER;
13202 l_period_flag VARCHAR2(1);
13203 l_last_period_flag VARCHAR2(1);
13204 l_extraction_type VARCHAR2(30);
13205
13206 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13207
13208 -- cursor to get rollup record for as of date
13209 cursor rollup_rec_asofdate is
13210 select PROGRESS_ROLLUP_ID,
13211 PERCENT_COMPLETE_ID,
13212 PROJECT_ID,
13213 OBJECT_ID,
13214 OBJECT_TYPE,
13215 AS_OF_DATE,
13216 OBJECT_VERSION_ID,
13217 LAST_UPDATE_DATE,
13218 LAST_UPDATED_BY,
13219 CREATION_DATE,
13220 CREATED_BY,
13221 PROGRESS_STATUS_CODE,
13222 LAST_UPDATE_LOGIN,
13223 INCREMENTAL_WORK_QUANTITY,
13224 CUMULATIVE_WORK_QUANTITY,
13225 BASE_PERCENT_COMPLETE,
13226 EFF_ROLLUP_PERCENT_COMP,
13227 COMPLETED_PERCENTAGE,
13228 ESTIMATED_START_DATE,
13229 ESTIMATED_FINISH_DATE,
13230 ACTUAL_START_DATE,
13231 ACTUAL_FINISH_DATE,
13232 ESTIMATED_REMAINING_EFFORT,
13233 RECORD_VERSION_NUMBER,
13234 BASE_PERCENT_COMP_DERIV_CODE,
13235 BASE_PROGRESS_STATUS_CODE,
13236 EFF_ROLLUP_PROG_STAT_CODE,
13237 STRUCTURE_TYPE,
13238 PROJ_ELEMENT_ID,
13239 STRUCTURE_VERSION_ID,
13240 PPL_ACT_EFFORT_TO_DATE,
13241 EQPMT_ACT_EFFORT_TO_DATE,
13242 EQPMT_ETC_EFFORT,
13243 OTH_ACT_COST_TO_DATE_TC,
13244 OTH_ACT_RAWCOST_TO_DATE_TC,
13245 OTH_ACT_COST_TO_DATE_FC,
13246 OTH_ACT_RAWCOST_TO_DATE_FC,
13247 OTH_ACT_COST_TO_DATE_PC,
13248 OTH_ACT_RAWCOST_TO_DATE_PC,
13249 OTH_ETC_COST_TC,
13250 OTH_ETC_RAWCOST_TC,
13251 OTH_ETC_COST_FC,
13252 OTH_ETC_RAWCOST_FC,
13253 OTH_ETC_COST_PC,
13254 OTH_ETC_RAWCOST_PC,
13255 PPL_ACT_COST_TO_DATE_TC,
13256 PPL_ACT_RAWCOST_TO_DATE_TC,
13257 PPL_ACT_COST_TO_DATE_FC,
13258 PPL_ACT_RAWCOST_TO_DATE_FC,
13259 PPL_ACT_COST_TO_DATE_PC,
13260 PPL_ACT_RAWCOST_TO_DATE_PC,
13261 PPL_ETC_COST_TC,
13262 PPL_ETC_RAWCOST_TC,
13263 PPL_ETC_COST_FC,
13264 PPL_ETC_RAWCOST_FC,
13265 PPL_ETC_COST_PC,
13266 PPL_ETC_RAWCOST_PC,
13267 EQPMT_ACT_COST_TO_DATE_TC,
13268 EQPMT_ACT_RAWCOST_TO_DATE_TC,
13269 EQPMT_ACT_COST_TO_DATE_FC,
13270 EQPMT_ACT_RAWCOST_TO_DATE_FC,
13271 EQPMT_ACT_COST_TO_DATE_PC,
13272 EQPMT_ACT_RAWCOST_TO_DATE_PC,
13273 EQPMT_ETC_COST_TC,
13274 EQPMT_ETC_RAWCOST_TC,
13275 EQPMT_ETC_COST_FC,
13276 EQPMT_ETC_RAWCOST_FC,
13277 EQPMT_ETC_COST_PC,
13278 EQPMT_ETC_RAWCOST_PC,
13279 EARNED_VALUE,
13280 TASK_WT_BASIS_CODE,
13281 SUBPRJ_PPL_ACT_EFFORT,
13282 SUBPRJ_EQPMT_ACT_EFFORT,
13283 SUBPRJ_PPL_ETC_EFFORT,
13284 SUBPRJ_EQPMT_ETC_EFFORT,
13285 SUBPRJ_OTH_ACT_COST_TO_DATE_TC,
13286 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC,
13287 SUBPRJ_OTH_ACT_COST_TO_DATE_FC,
13288 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC,
13289 SUBPRJ_OTH_ACT_COST_TO_DATE_PC,
13290 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC,
13291 SUBPRJ_PPL_ACT_COST_TC,
13292 SUBPRJ_PPL_ACT_RAWCOST_TC,
13293 SUBPRJ_PPL_ACT_COST_FC,
13294 SUBPRJ_PPL_ACT_RAWCOST_FC,
13295 SUBPRJ_PPL_ACT_COST_PC,
13296 SUBPRJ_PPL_ACT_RAWCOST_PC,
13297 SUBPRJ_EQPMT_ACT_COST_TC,
13298 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13299 SUBPRJ_EQPMT_ACT_COST_FC,
13300 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13301 SUBPRJ_EQPMT_ACT_COST_PC,
13302 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13303 SUBPRJ_OTH_ETC_COST_TC,
13304 SUBPRJ_OTH_ETC_RAWCOST_TC,
13305 SUBPRJ_OTH_ETC_COST_FC,
13306 SUBPRJ_OTH_ETC_RAWCOST_FC,
13307 SUBPRJ_OTH_ETC_COST_PC,
13308 SUBPRJ_OTH_ETC_RAWCOST_PC,
13309 SUBPRJ_PPL_ETC_COST_TC,
13310 SUBPRJ_PPL_ETC_RAWCOST_TC,
13311 SUBPRJ_PPL_ETC_COST_FC,
13312 SUBPRJ_PPL_ETC_RAWCOST_FC,
13313 SUBPRJ_PPL_ETC_COST_PC,
13314 SUBPRJ_PPL_ETC_RAWCOST_PC,
13315 SUBPRJ_EQPMT_ETC_COST_TC,
13316 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13317 SUBPRJ_EQPMT_ETC_COST_FC,
13318 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13319 SUBPRJ_EQPMT_ETC_COST_PC,
13320 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13321 SUBPRJ_EARNED_VALUE,
13322 CURRENT_FLAG,
13323 PROJFUNC_COST_RATE_TYPE,
13324 PROJFUNC_COST_EXCHANGE_RATE,
13325 PROJFUNC_COST_RATE_DATE,
13326 PROJ_COST_RATE_TYPE,
13327 PROJ_COST_EXCHANGE_RATE,
13328 PROJ_COST_RATE_DATE,
13329 TXN_CURRENCY_CODE,
13330 PROG_PA_PERIOD_NAME,
13331 PROG_GL_PERIOD_NAME,
13332 OTH_QUANTITY_TO_DATE,
13333 OTH_ETC_QUANTITY
13334 from pa_progress_rollup
13335 where project_id = l_project_id
13336 and object_id = l_object_id
13337 and object_Type = l_object_type
13338 and structure_type = 'WORKPLAN'
13339 and structure_version_id is null
13340 and proj_element_id = l_task_id
13341 AND current_flag <> 'W' -- Bug 3879461
13342 and trunc(as_of_date) = (select max(trunc(as_of_Date))
13343 from pa_progress_rollup
13344 where project_id = l_project_id
13345 and object_id = l_object_id
13346 and object_Type = l_object_type
13347 and structure_type = 'WORKPLAN'
13348 and structure_version_id is null
13349 and proj_element_id = l_task_id
13350 AND current_flag <> 'W' -- Bug 3879461
13351 and trunc(as_of_Date) <= l_temp_as_of_date);
13352
13353 l_rollup_rec_asofdate rollup_rec_asofdate%rowtype;
13354
13355 -- cursor to get working rollup record for as of date
13356 cursor w_rollup_rec_asofdate is
13357 select PROGRESS_ROLLUP_ID,
13358 PERCENT_COMPLETE_ID,
13359 PROJECT_ID,
13360 OBJECT_ID,
13361 OBJECT_TYPE,
13362 AS_OF_DATE,
13363 OBJECT_VERSION_ID,
13364 LAST_UPDATE_DATE,
13365 LAST_UPDATED_BY,
13366 CREATION_DATE,
13367 CREATED_BY,
13368 PROGRESS_STATUS_CODE,
13369 LAST_UPDATE_LOGIN,
13370 INCREMENTAL_WORK_QUANTITY,
13371 CUMULATIVE_WORK_QUANTITY,
13372 BASE_PERCENT_COMPLETE,
13373 EFF_ROLLUP_PERCENT_COMP,
13374 COMPLETED_PERCENTAGE,
13375 ESTIMATED_START_DATE,
13376 ESTIMATED_FINISH_DATE,
13377 ACTUAL_START_DATE,
13378 ACTUAL_FINISH_DATE,
13379 ESTIMATED_REMAINING_EFFORT,
13380 RECORD_VERSION_NUMBER,
13381 BASE_PERCENT_COMP_DERIV_CODE,
13382 BASE_PROGRESS_STATUS_CODE,
13383 EFF_ROLLUP_PROG_STAT_CODE,
13384 STRUCTURE_TYPE,
13385 PROJ_ELEMENT_ID,
13386 STRUCTURE_VERSION_ID,
13387 PPL_ACT_EFFORT_TO_DATE,
13388 EQPMT_ACT_EFFORT_TO_DATE,
13389 EQPMT_ETC_EFFORT,
13390 OTH_ACT_COST_TO_DATE_TC,
13391 OTH_ACT_RAWCOST_TO_DATE_TC,
13392 OTH_ACT_COST_TO_DATE_FC,
13393 OTH_ACT_RAWCOST_TO_DATE_FC,
13394 OTH_ACT_COST_TO_DATE_PC,
13395 OTH_ACT_RAWCOST_TO_DATE_PC,
13396 OTH_ETC_COST_TC,
13397 OTH_ETC_RAWCOST_TC,
13398 OTH_ETC_COST_FC,
13399 OTH_ETC_RAWCOST_FC,
13400 OTH_ETC_COST_PC,
13401 OTH_ETC_RAWCOST_PC,
13402 PPL_ACT_COST_TO_DATE_TC,
13403 PPL_ACT_RAWCOST_TO_DATE_TC,
13404 PPL_ACT_COST_TO_DATE_FC,
13405 PPL_ACT_RAWCOST_TO_DATE_FC,
13406 PPL_ACT_COST_TO_DATE_PC,
13407 PPL_ACT_RAWCOST_TO_DATE_PC,
13408 PPL_ETC_COST_TC,
13409 PPL_ETC_RAWCOST_TC,
13410 PPL_ETC_COST_FC,
13411 PPL_ETC_RAWCOST_FC,
13412 PPL_ETC_COST_PC,
13413 PPL_ETC_RAWCOST_PC,
13414 EQPMT_ACT_COST_TO_DATE_TC,
13415 EQPMT_ACT_RAWCOST_TO_DATE_TC,
13416 EQPMT_ACT_COST_TO_DATE_FC,
13417 EQPMT_ACT_RAWCOST_TO_DATE_FC,
13418 EQPMT_ACT_COST_TO_DATE_PC,
13419 EQPMT_ACT_RAWCOST_TO_DATE_PC,
13420 EQPMT_ETC_COST_TC,
13421 EQPMT_ETC_RAWCOST_TC,
13422 EQPMT_ETC_COST_FC,
13423 EQPMT_ETC_RAWCOST_FC,
13424 EQPMT_ETC_COST_PC,
13425 EQPMT_ETC_RAWCOST_PC,
13426 EARNED_VALUE,
13427 TASK_WT_BASIS_CODE,
13428 SUBPRJ_PPL_ACT_EFFORT,
13429 SUBPRJ_EQPMT_ACT_EFFORT,
13430 SUBPRJ_PPL_ETC_EFFORT,
13431 SUBPRJ_EQPMT_ETC_EFFORT,
13432 SUBPRJ_OTH_ACT_COST_TO_DATE_TC,
13433 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC,
13434 SUBPRJ_OTH_ACT_COST_TO_DATE_FC,
13435 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC,
13436 SUBPRJ_OTH_ACT_COST_TO_DATE_PC,
13437 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC,
13438 SUBPRJ_PPL_ACT_COST_TC,
13439 SUBPRJ_PPL_ACT_RAWCOST_TC,
13440 SUBPRJ_PPL_ACT_COST_FC,
13441 SUBPRJ_PPL_ACT_RAWCOST_FC,
13442 SUBPRJ_PPL_ACT_COST_PC,
13443 SUBPRJ_PPL_ACT_RAWCOST_PC,
13444 SUBPRJ_EQPMT_ACT_COST_TC,
13445 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13446 SUBPRJ_EQPMT_ACT_COST_FC,
13447 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13448 SUBPRJ_EQPMT_ACT_COST_PC,
13449 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13450 SUBPRJ_OTH_ETC_COST_TC,
13451 SUBPRJ_OTH_ETC_RAWCOST_TC,
13452 SUBPRJ_OTH_ETC_COST_FC,
13453 SUBPRJ_OTH_ETC_RAWCOST_FC,
13454 SUBPRJ_OTH_ETC_COST_PC,
13455 SUBPRJ_OTH_ETC_RAWCOST_PC,
13456 SUBPRJ_PPL_ETC_COST_TC,
13457 SUBPRJ_PPL_ETC_RAWCOST_TC,
13458 SUBPRJ_PPL_ETC_COST_FC,
13459 SUBPRJ_PPL_ETC_RAWCOST_FC,
13460 SUBPRJ_PPL_ETC_COST_PC,
13461 SUBPRJ_PPL_ETC_RAWCOST_PC,
13462 SUBPRJ_EQPMT_ETC_COST_TC,
13463 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13464 SUBPRJ_EQPMT_ETC_COST_FC,
13465 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13466 SUBPRJ_EQPMT_ETC_COST_PC,
13467 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13468 SUBPRJ_EARNED_VALUE,
13469 CURRENT_FLAG,
13470 PROJFUNC_COST_RATE_TYPE,
13471 PROJFUNC_COST_EXCHANGE_RATE,
13472 PROJFUNC_COST_RATE_DATE,
13473 PROJ_COST_RATE_TYPE,
13474 PROJ_COST_EXCHANGE_RATE,
13475 PROJ_COST_RATE_DATE,
13476 TXN_CURRENCY_CODE,
13477 PROG_PA_PERIOD_NAME,
13478 PROG_GL_PERIOD_NAME,
13479 OTH_QUANTITY_TO_DATE,
13480 OTH_ETC_QUANTITY
13481 from pa_progress_rollup
13482 where project_id = l_project_id
13483 and object_id = l_object_id
13484 and object_Type = l_object_type
13485 and structure_type = 'WORKPLAN'
13486 and structure_version_id is null
13487 and proj_element_id = l_task_id
13488 AND current_flag = 'W'; -- Bug 3879461
13489
13490 l_w_rollup_rec_asofdate w_rollup_rec_asofdate%rowtype;
13491
13492 -- cursor to get rollup records after as of date
13493 cursor future_rollup_recs is
13494 select PROGRESS_ROLLUP_ID,
13495 PERCENT_COMPLETE_ID,
13496 PROJECT_ID,
13497 OBJECT_ID,
13498 OBJECT_TYPE,
13499 AS_OF_DATE,
13500 OBJECT_VERSION_ID,
13501 LAST_UPDATE_DATE,
13502 LAST_UPDATED_BY,
13503 CREATION_DATE,
13504 CREATED_BY,
13505 PROGRESS_STATUS_CODE,
13506 LAST_UPDATE_LOGIN,
13507 INCREMENTAL_WORK_QUANTITY,
13508 CUMULATIVE_WORK_QUANTITY,
13509 BASE_PERCENT_COMPLETE,
13510 EFF_ROLLUP_PERCENT_COMP,
13511 COMPLETED_PERCENTAGE,
13512 ESTIMATED_START_DATE,
13513 ESTIMATED_FINISH_DATE,
13514 ACTUAL_START_DATE,
13515 ACTUAL_FINISH_DATE,
13516 ESTIMATED_REMAINING_EFFORT,
13517 RECORD_VERSION_NUMBER,
13518 BASE_PERCENT_COMP_DERIV_CODE,
13519 BASE_PROGRESS_STATUS_CODE,
13520 EFF_ROLLUP_PROG_STAT_CODE,
13521 STRUCTURE_TYPE,
13522 PROJ_ELEMENT_ID,
13523 STRUCTURE_VERSION_ID,
13524 PPL_ACT_EFFORT_TO_DATE,
13525 EQPMT_ACT_EFFORT_TO_DATE,
13526 EQPMT_ETC_EFFORT,
13527 OTH_ACT_COST_TO_DATE_TC,
13528 OTH_ACT_RAWCOST_TO_DATE_TC,
13529 OTH_ACT_COST_TO_DATE_FC,
13530 OTH_ACT_RAWCOST_TO_DATE_FC,
13531 OTH_ACT_COST_TO_DATE_PC,
13532 OTH_ACT_RAWCOST_TO_DATE_PC,
13533 OTH_ETC_COST_TC,
13534 OTH_ETC_RAWCOST_TC,
13535 OTH_ETC_COST_FC,
13536 OTH_ETC_RAWCOST_FC,
13537 OTH_ETC_COST_PC,
13538 OTH_ETC_RAWCOST_PC,
13539 PPL_ACT_COST_TO_DATE_TC,
13540 PPL_ACT_RAWCOST_TO_DATE_TC,
13541 PPL_ACT_COST_TO_DATE_FC,
13542 PPL_ACT_RAWCOST_TO_DATE_FC,
13543 PPL_ACT_COST_TO_DATE_PC,
13544 PPL_ACT_RAWCOST_TO_DATE_PC,
13545 PPL_ETC_COST_TC,
13546 PPL_ETC_RAWCOST_TC,
13547 PPL_ETC_COST_FC,
13548 PPL_ETC_RAWCOST_FC,
13549 PPL_ETC_COST_PC,
13550 PPL_ETC_RAWCOST_PC,
13551 EQPMT_ACT_COST_TO_DATE_TC,
13552 EQPMT_ACT_RAWCOST_TO_DATE_TC,
13553 EQPMT_ACT_COST_TO_DATE_FC,
13554 EQPMT_ACT_RAWCOST_TO_DATE_FC,
13555 EQPMT_ACT_COST_TO_DATE_PC,
13556 EQPMT_ACT_RAWCOST_TO_DATE_PC,
13557 EQPMT_ETC_COST_TC,
13558 EQPMT_ETC_RAWCOST_TC,
13559 EQPMT_ETC_COST_FC,
13560 EQPMT_ETC_RAWCOST_FC,
13561 EQPMT_ETC_COST_PC,
13562 EQPMT_ETC_RAWCOST_PC,
13563 EARNED_VALUE,
13564 TASK_WT_BASIS_CODE,
13565 SUBPRJ_PPL_ACT_EFFORT,
13566 SUBPRJ_EQPMT_ACT_EFFORT,
13567 SUBPRJ_PPL_ETC_EFFORT,
13568 SUBPRJ_EQPMT_ETC_EFFORT,
13569 SUBPRJ_OTH_ACT_COST_TO_DATE_TC,
13570 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC,
13571 SUBPRJ_OTH_ACT_COST_TO_DATE_FC,
13572 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC,
13573 SUBPRJ_OTH_ACT_COST_TO_DATE_PC,
13574 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC,
13575 SUBPRJ_PPL_ACT_COST_TC,
13576 SUBPRJ_PPL_ACT_RAWCOST_TC,
13577 SUBPRJ_PPL_ACT_COST_FC,
13578 SUBPRJ_PPL_ACT_RAWCOST_FC,
13579 SUBPRJ_PPL_ACT_COST_PC,
13580 SUBPRJ_PPL_ACT_RAWCOST_PC,
13581 SUBPRJ_EQPMT_ACT_COST_TC,
13582 SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13583 SUBPRJ_EQPMT_ACT_COST_FC,
13584 SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13585 SUBPRJ_EQPMT_ACT_COST_PC,
13586 SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13587 SUBPRJ_OTH_ETC_COST_TC,
13588 SUBPRJ_OTH_ETC_RAWCOST_TC,
13589 SUBPRJ_OTH_ETC_COST_FC,
13590 SUBPRJ_OTH_ETC_RAWCOST_FC,
13591 SUBPRJ_OTH_ETC_COST_PC,
13592 SUBPRJ_OTH_ETC_RAWCOST_PC,
13593 SUBPRJ_PPL_ETC_COST_TC,
13594 SUBPRJ_PPL_ETC_RAWCOST_TC,
13595 SUBPRJ_PPL_ETC_COST_FC,
13596 SUBPRJ_PPL_ETC_RAWCOST_FC,
13597 SUBPRJ_PPL_ETC_COST_PC,
13598 SUBPRJ_PPL_ETC_RAWCOST_PC,
13599 SUBPRJ_EQPMT_ETC_COST_TC,
13600 SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13601 SUBPRJ_EQPMT_ETC_COST_FC,
13602 SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13603 SUBPRJ_EQPMT_ETC_COST_PC,
13604 SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13605 SUBPRJ_EARNED_VALUE,
13606 CURRENT_FLAG,
13607 PROJFUNC_COST_RATE_TYPE,
13608 PROJFUNC_COST_EXCHANGE_RATE,
13609 PROJFUNC_COST_RATE_DATE,
13610 PROJ_COST_RATE_TYPE,
13611 PROJ_COST_EXCHANGE_RATE,
13612 PROJ_COST_RATE_DATE,
13613 TXN_CURRENCY_CODE,
13614 PROG_PA_PERIOD_NAME,
13615 PROG_GL_PERIOD_NAME,
13616 OTH_QUANTITY_TO_DATE,
13617 OTH_ETC_QUANTITY
13618 from pa_progress_rollup
13619 where project_id = l_project_id
13620 and object_id = l_object_id
13621 and object_type = l_object_type
13622 and structure_type = 'WORKPLAN'
13623 and structure_version_id is null
13624 and proj_element_id = l_task_id
13625 and as_of_Date > l_temp_as_of_date;
13626
13627 l_future_rollup_recs future_rollup_recs%rowtype;
13628
13629 -- cursor to get all assignment records for that as of date
13630 cursor all_assignments_asofdate is
13631 select *
13632 from pa_progress_rollup
13633 where project_id = l_project_id
13634 and object_type = 'PA_ASSIGNMENTS'
13635 and structure_version_id is null
13636 and structure_Type = 'WORKPLAN'
13637 --- and nvl(ppl_act_effort_to_date,0) + nvl(eqpmt_act_effort_to_date,0) + nvl(oth_quantity_to_date,0) > 0
13638 AND current_flag <> 'W' -- Bug 3879461
13639 and as_of_date = l_temp_as_of_Date;
13640
13641 -- cursor to get all assignment records for the previous as of date
13642 cursor all_assign_prev_asofdate is
13643 select *
13644 from pa_progress_rollup ppr
13645 where ppr.project_id = l_project_id
13646 and ppr.object_type = 'PA_ASSIGNMENTS'
13647 and ppr.structure_version_id is null
13648 and ppr.structure_Type = 'WORKPLAN'
13649 AND current_flag <> 'W' -- Bug 3879461
13650 and ppr.as_of_date = (select max(as_of_date)
13651 from pa_progress_rollup ppr1
13652 where ppr1.project_id = l_project_id
13653 and ppr1.object_type = 'PA_ASSIGNMENTS'
13654 and ppr1.object_id = ppr.object_id
13655 and ppr1.proj_element_id = ppr.proj_element_id
13656 and ppr1.structure_version_id is null
13657 and ppr1.structure_Type = 'WORKPLAN'
13658 AND current_flag <> 'W' -- Bug 3879461
13659 and ppr1.as_of_date < l_temp_as_of_Date
13660 and not exists (select 1 ---4871809 performance bug
13661 from pa_progress_rollup ppr2
13662 where ppr2.project_id = l_project_id
13663 and ppr2.object_type = 'PA_ASSIGNMENTS'
13664 and ppr2.object_id = ppr.object_id
13665 and ppr2.proj_element_id = ppr.proj_element_id
13666 and ppr2.structure_version_id is null
13667 and ppr2.structure_Type = 'WORKPLAN'
13668 AND current_flag <> 'W' -- Bug 3879461
13669 and ppr2.as_of_date = l_temp_as_of_Date));
13670
13671 -- cursor to get all objects from summ temp table
13672 cursor all_objects_in_temp is
13673 select
13674 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Bug # 4162534.
13675 *
13676 from pji_fm_xbs_accum_tmp1
13677 where project_id = l_project_id
13678 and struct_version_id = l_latest_wp_struct_ver_id
13679 and nvl(plan_version_id,-1) = decode(p_plan_res_level,'Y',-1,nvl(plan_version_id,-1))
13680 and project_element_id > 0
13681 -- and nvl(act_labor_hrs,0)+nvl(act_equip_hrs,0)+nvl(act_prj_raw_cost,0) > 0 --4654495,5091800
13682 order by project_id,struct_version_id,project_element_id,res_list_member_id,period_name;
13683
13684 -- cursor to get resource_list_member_id's resource_class code
13685 cursor get_resource_class_code is
13686 select resource_class_code
13687 from pa_resource_list_members
13688 where resource_list_member_id = l_res_list_member_id;
13689
13690 -- cursor to check if resource_list_memebr_id is that of a planned assignment
13691 cursor get_assignment_info is
13692 select resource_assignment_id,
13693 rbs_element_id,
13694 resource_class_code,
13695 rate_based_flag,
13696 txn_currency_code,
13697 assignment_start_date,
13698 assignment_end_date,
13699 planned_quantity,
13700 planned_bur_cost_txn_cur,
13701 planned_bur_cost_projfunc,
13702 planned_bur_cost_proj_cur,
13703 planned_raw_cost_txn_cur,
13704 planned_raw_cost_projfunc,
13705 planned_raw_cost_proj_cur
13706 from pa_task_asgmts_v
13707 where project_id = l_project_id
13708 and structure_version_id = l_latest_wp_struct_ver_id
13709 and task_id = l_task_id
13710 and resource_list_member_id = l_res_list_member_id;
13711
13712 l_get_assignment_info get_assignment_info%rowtype;
13713
13714 -- cursor to get task information
13715 cursor task_info(l_obj number) is
13716 select ppev.element_version_id,
13717 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,
13718 ptt.initial_progress_status_code,
13719 ppevs.scheduled_start_date,
13720 ppevs.scheduled_finish_date
13721 from pa_proj_elements ppe,
13722 pa_proj_element_versions ppev,
13723 pa_proj_elem_ver_schedule ppevs,
13724 pa_task_types ptt
13725 where ppev.proj_element_id = l_obj
13726 and ppev.parent_structure_version_id = l_latest_wp_struct_ver_id
13727 and ppev.proj_element_id = ppe.proj_element_id
13728 and ppevs.element_version_id = ppev.element_version_id
13729 and ppe.type_id = ptt.task_type_id(+);
13730
13731 -- cursor to get progress rollup attrs
13732 cursor rollup_method is
13733 select TASK_WEIGHT_BASIS_CODE
13734 from pa_proj_progress_attr
13735 where project_id = l_project_id
13736 and structure_type = 'WORKPLAN';
13737
13738 -- cursor to get planned value for task
13739 cursor get_planned_val_for_task is
13740 select labor_effort, labor_brdn_cost
13741 from pji_xbs_plans_v
13742 where project_id = l_project_id
13743 and structure_version_id = l_latest_wp_struct_ver_id
13744 and proj_element_id = l_object_id
13745 and structure_type = 'WORKPLAN';
13746
13747 /* Begin: Fix for Bug # 4018249. */
13748
13749 cursor cur_record_count(l_cur_project_id NUMBER) is
13750 select
13751 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
13752 count(*)
13753 from pji_fm_xbs_accum_tmp1
13754 where project_id = l_cur_project_id;
13755
13756 l_record_count NUMBER := null;
13757
13758 /* End: Fix for Bug # 4018249. CURSOR NOT USED ANYMORE, PJI passes period dates*/
13759 --- this cursor is used to get start_date for periods
13760 --- need this for converting act txn curr to plan txn curr
13761 CURSOR get_gl_pa_st_date_csr IS
13762 SELECT gp.START_DATE
13763 FROM gl_periods gp,
13764 gl_sets_of_books gsb,
13765 pa_implementations_all pia,
13766 pa_projects_all ppa
13767 WHERE ppa.project_id = l_project_id
13768 and nvl(ppa.org_id,-99) = nvl(pia.org_id,-99)
13769 and gsb.set_of_books_id = pia.set_of_books_id
13770 and gp.period_set_name = gsb.period_set_name
13771 AND gp.period_name = l_period_name
13772 AND gp.period_type = decode(l_plan_type,'G',gsb.accounted_period_type,'P',pia.pa_period_type)
13773 AND gp.adjustment_period_flag = 'N'
13774 ORDER BY gp.start_date;
13775
13776 CURSOR cur_prog_setup(c_proj_element_id NUMBER, c_project_id number)
13777 IS
13778 SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N'),initial_progress_status_code
13779 from pa_task_types ttype
13780 , pa_proj_elements elem
13781 where elem.project_id = c_project_id
13782 and elem.proj_element_id = c_proj_element_id
13783 and elem.object_type = 'PA_TASKS'
13784 and elem.type_id = ttype.task_type_id;
13785 l_prog_stat_code varchar2(240);
13786 l_prog_enable_flag varchar2(30);
13787
13788 -- Added for Bug 6917961
13789
13790 CURSOR c_get_prog_roll(c_progress_rollup_id NUMBER) IS
13791 SELECT ppr.progress_status_code
13792 , ppr.actual_start_date
13793 , ppr.actual_finish_date
13794 , ppr.proj_element_id
13795 , ppr.object_type
13796 , ppr.project_id
13797 FROM pa_progress_rollup ppr
13798 , pa_proj_elements ppe
13799 WHERE ppr.progress_rollup_id = c_progress_rollup_id
13800 AND ppr.proj_element_id = ppe.proj_element_id
13801 ;
13802
13803 l_t_progress_status_code varchar2(240);
13804 l_t_actual_start_date date;
13805 l_t_actual_finish_date date;
13806 l_t_proj_element_id number;
13807 l_t_object_type varchar2(100);
13808 l_t_project_id number;
13809
13810 U_PROGRESS_STATUS_CODE PA_PLSQL_DATATYPES.Char150TabTyp;
13811
13812 -- Added for Bug 6917961
13813
13814 l_get_summ_call_contxt VARCHAR2(1) := 'W'; -- 4415960
13815
13816 -- 4533112 Begin
13817 CURSOR c_get_dates_overrides(c_project_id number, c_object_id number, c_object_type varchar2, c_as_of_date Date) IS
13818 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
13819 , ppr.estimated_start_date
13820 , ppr.estimated_finish_date
13821 , ppr.actual_start_date
13822 , ppr.actual_finish_date
13823 , ppe.status_code
13824 FROM pa_progress_rollup ppr
13825 , pa_proj_elements ppe
13826 WHERE ppr.project_id = c_project_id
13827 AND ppr.object_id = c_object_id
13828 AND ppr.object_type = c_object_type
13829 AND ppr.structure_type = 'WORKPLAN'
13830 AND ppr.structure_version_id is null
13831 AND trunc(ppr.as_of_date) <= trunc(c_as_of_date)
13832 AND ppr.current_flag IN ('Y', 'N')
13833 AND ppr.proj_element_id = ppe.proj_element_id
13834 ORDER by as_of_date desc;
13835
13836 CURSOR c_get_rec_overrides(c_progress_rollup_id NUMBER) IS
13837 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
13838 , ppr.estimated_start_date
13839 , ppr.estimated_finish_date
13840 , ppr.actual_start_date
13841 , ppr.actual_finish_date
13842 , ppe.status_code
13843 , ppr.object_id
13844 , ppr.object_version_id
13845 , ppr.proj_element_id
13846 , ppr.object_type
13847 , ppr.as_of_date
13848 , ppr.project_id
13849 , ppr.current_flag
13850 FROM pa_progress_rollup ppr
13851 , pa_proj_elements ppe
13852 WHERE ppr.progress_rollup_id = c_progress_rollup_id
13853 AND ppr.proj_element_id = ppe.proj_element_id
13854 ;
13855
13856 l_date_override_flag VARCHAR2(1):='N';
13857 l_db_date_override_flag VARCHAR2(1):='N';
13858 l_db_estimated_start_date DATE;
13859 l_db_estimated_finish_date DATE;
13860 l_db_actual_start_date DATE;
13861 l_db_actual_finish_date DATE;
13862 l_clex_estimated_start_date DATE;
13863 l_clex_estimated_finish_date DATE;
13864 l_clex_actual_start_date DATE;
13865 l_clex_actual_finish_date DATE;
13866 l_task_status_code VARCHAR2(150);
13867 u_actual_start_date PA_PLSQL_DATATYPES.DateTabTyp;
13868 u_estimated_start_date PA_PLSQL_DATATYPES.DateTabTyp;
13869 u_estimated_finish_date PA_PLSQL_DATATYPES.DateTabTyp;
13870 u_base_progress_status_code PA_PLSQL_DATATYPES.Char150TabTyp;
13871 l_db_object_id NUMBER;
13872 l_db_object_version_id NUMBER;
13873 l_db_proj_element_id NUMBER;
13874 l_db_object_type VARCHAR2(30);
13875 l_db_as_of_date DATE;
13876 l_db_project_id NUMBER;
13877 l_db_current_flag VARCHAR2(1);
13878 l_clex_pc NUMBER;
13879 -- 4533112 End
13880
13881 -- 4654495
13882 cursor some_progress_exists is
13883 select 'Y'
13884 from pa_progress_rollup
13885 where project_id = l_project_id
13886 and proj_element_id = l_task_id
13887 and object_type in ('PA_TASKS','PA_ASSIGNMENTS');
13888
13889 l_some_progress_exists some_progress_exists%rowtype;
13890 -- Bug 6321238
13891 cursor check_pup_pue(c_project_id number,
13892 c_latest_published_version_id number) is
13893 select 'Y'
13894 from pa_proj_elem_ver_structure
13895 where project_id = c_project_id
13896 and element_version_id = c_latest_published_version_id
13897 and process_code = 'PUE';
13898
13899 l_check_pup_pue VARCHAR2(1);
13900
13901
13902 l_data VARCHAR2(1000);-- 4746476
13903 l_msg_index_out NUMBER; -- 4746476
13904
13905 l_conc_request_id NUMBER; -- Added for Bug#5659575
13906
13907 BEGIN
13908 pa_debug.set_process('PLSQL');
13909 pa_debug.log_message('Begin GET_SUMM_ACT: p_extraction: '||p_extraction_type||' p_res_level: '||p_plan_res_level, 1);
13910
13911 x_return_status := 'S';
13912 l_return_status := 'S';
13913 l_index := 0;
13914 l_extraction_type := p_extraction_type;
13915 if (p_extraction_type = 'INITIAL' OR p_extraction_type = 'PUBLISH') then -- 4415960 Added PUBLISH
13916 l_extraction_type := 'FULL';
13917 end if;
13918 -- 4415960
13919 if p_extraction_type = 'PUBLISH' then
13920 l_get_summ_call_contxt := 'P';
13921 end if;
13922
13923 for l_index2 in 1..p_project_id_list.COUNT loop
13924 l_project_id := p_project_id_list(l_index2);
13925 l_org_id := to_number(null);
13926 l_shared_structure := 'N';
13927
13928 open projects_in_range;
13929 fetch projects_in_range into l_org_id, l_proj_curr_code, l_proj_func_curr_code, l_shared_structure;
13930 close projects_in_range;
13931
13932 if l_shared_structure = 'SHARE_FULL' then
13933
13934 /* Commented for Bug 6414995 and reverted as above.
13935
13936 if p_extraction_type = 'PUBLISH' then -- Added If block for bug#5659575
13937 l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id);
13938 else
13939 l_latest_wp_struct_ver_id := pa_project_structure_utils.GET_LATEST_FIN_STRUC_VER_ID(l_project_id);
13940 end if;
13941 Bug 6414995 */
13942 l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id); -- Bug 6414995
13943 if l_latest_wp_struct_ver_id is not null then
13944 IF g1_debug_mode = 'Y' THEN
13945 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
13946 x_Msg => 'Project:'||l_project_id||' Structure:'||l_latest_wp_struct_ver_id,
13947 x_Log_Level=> 3);
13948 END IF;
13949 l_index := l_index + 1;
13950 --- find the max published as_of_date for all lowest level tasks
13951 open max_as_of_date;
13952 fetch max_as_of_date into l_max_as_of_Date;
13953 close max_as_of_date;
13954
13955 open max_as_of_date_assign;
13956 fetch max_as_of_date_assign into l_max_as_of_Date_assign;
13957 close max_as_of_date_assign;
13958
13959 if (l_max_as_of_Date is null and l_max_as_of_Date_assign is null) then
13960 if (p_plan_res_level = 'Y') then
13961 open max_as_of_date_rollup;
13962 fetch max_as_of_date_rollup into l_max_as_of_Date;
13963 if (l_max_as_of_Date is not null) then
13964 l_max_as_of_Date := l_max_as_of_Date; ---5226910(5212999)
13965 end if;
13966 close max_as_of_date_rollup;
13967 else
13968 open max_as_of_date_rollup_tsk;
13969 fetch max_as_of_date_rollup_tsk into l_max_as_of_Date;
13970 if (l_max_as_of_Date is not null) then
13971 l_max_as_of_Date := l_max_as_of_Date; ---5226910(5212999)
13972 end if;
13973 close max_as_of_date_rollup_tsk;
13974 end if;
13975 end if;
13976
13977 if nvl(l_max_as_of_date,trunc(sysdate)) <= trunc(sysdate) then
13978 l_max_as_of_date := trunc(sysdate) - 1;
13979 end if;
13980
13981 if nvl(l_max_as_of_Date_assign,l_max_as_of_date) > l_max_as_of_date then
13982 l_max_as_of_date := l_max_as_of_Date_assign;
13983 end if;
13984
13985 --- 5226910(5212999)
13986 if (l_max_as_of_date >= trunc(sysdate)) then
13987 l_temp_as_of_date := l_max_as_of_date;
13988 else
13989 --- get next cycle date after l_max_as_of_date
13990 l_temp_as_of_date := trunc(pa_progress_utils.get_next_progress_cycle(p_project_id => l_project_id,
13991 p_task_id => to_number(null),
13992 p_start_date => l_max_as_of_date));
13993 end if;
13994 proj_ids_tbl.extend;
13995 latest_wp_struct_ver_ids_tbl.extend;
13996 res_list_ids_tbl.extend;
13997 proj_org_ids_tbl.extend;
13998 proj_thru_dates_tbl.extend;
13999 calendar_type_tbl.extend;
14000 proj_curr_code_tbl.extend;
14001 proj_func_curr_code_tbl.extend;
14002 proj_pgm_level_tbl.extend;
14003 base_struct_ver_ids_tbl.extend; -- Added for bug 5464875
14004
14005 proj_ids_tbl(l_index) := l_project_id;
14006 latest_wp_struct_ver_ids_tbl(l_index) := l_latest_wp_struct_ver_id;
14007 res_list_ids_tbl(l_index) := pa_fin_plan_utils.Get_wp_bv_res_list_id(l_latest_wp_struct_ver_id);
14008 proj_org_ids_tbl(l_index) := l_org_id;
14009 proj_thru_dates_tbl(l_index) := trunc(l_temp_as_of_date);
14010 calendar_type_tbl(l_index) := pa_progress_utils.get_time_phase_period(l_latest_wp_struct_ver_id, l_project_id);
14011 proj_curr_code_tbl(l_index) := l_proj_curr_code;
14012 proj_func_curr_code_tbl(l_index) := l_proj_func_curr_code;
14013 if (p_proj_pgm_level.exists(l_index2)) then
14014 proj_pgm_level_tbl(l_index) := p_proj_pgm_level(l_index2);
14015 else
14016 proj_pgm_level_tbl(l_index) := 1;
14017 end if;
14018
14019 -- Added for bug 5464875
14020 if (p_plan_res_level = 'N') then
14021 base_struct_ver_ids_tbl(l_index) := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14022 if (base_struct_ver_ids_tbl(l_index) = -1) then
14023 base_struct_ver_ids_tbl(l_index) := null;
14024 end if;
14025 end if;
14026 end if;
14027 end if;
14028 end loop;
14029
14030 --- update next_progress_cycle_date column to stamp the date upto which
14031 --- actuals are pulled in
14032 forall l_index in 1..proj_ids_tbl.count
14033 update pa_proj_progress_attr
14034 set next_progress_update_date = proj_thru_dates_tbl(l_index)
14035 where project_id = proj_ids_tbl(l_index)
14036 and object_type = 'PA_STRUCTURES'
14037 and structure_type = 'WORKPLAN';
14038
14039 begin
14040 if (p_plan_res_level = 'Y') then
14041 pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.get_summarized_data', 1);
14042 --- Call Reporting API to populate temp table with summarized actuals
14043 pji_fm_xbs_accum_utils.get_summarized_data(p_project_ids => proj_ids_tbl,
14044 p_resource_list_ids => res_list_ids_tbl,
14045 p_struct_ver_ids => latest_wp_struct_ver_ids_tbl,
14046 p_end_Date => proj_thru_dates_tbl,
14047 p_calendar_type => calendar_type_tbl,
14048 p_record_type => 'NYN',
14049 p_currency_type => 6,
14050 --p_calling_context => 'W',
14051 p_calling_context => l_get_summ_call_contxt, -- 4415960
14052 p_extraction_type => l_extraction_type,
14053 x_return_status => x_return_status,
14054 x_msg_code => x_msg_code);
14055
14056 /* Begin: Added for bug 5526638*/
14057 /* Added and condition for bug#5659575*/
14058 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') then
14059 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14060 p_msg_name => x_msg_code);
14061 x_msg_data := x_msg_code;
14062 x_return_status := 'E';
14063 pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.get_summarized_data', 1);
14064 RAISE l_pji_wp_exception;
14065 END IF;
14066 /* End: Added for bug 5526638*/
14067
14068 IF g1_debug_mode = 'Y' THEN
14069 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14070 x_Msg => 'Done with pji_fm_xbs_accum_utils.get_summarized_data',
14071 x_Log_Level=> 3);
14072 END IF;
14073 end if;
14074 exception when others then
14075 pa_debug.log_message('GET_SUMM_ACT: get_summarized_data failed with exception', 1);
14076 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14077 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14078 p_error_text => SUBSTRB('pji_fm_xbs_accum_utils.get_summarized_data:'||SQLERRM,1,120));
14079 raise;
14080 end;
14081
14082 -- Added for bug 5464875. Used Bulk Processing
14083 --- here call populate_workplan_data when plan_res_level is 'N'
14084 if (p_plan_res_level = 'N') then
14085 begin
14086 for i in 1..proj_ids_tbl.COUNT loop
14087 populate_in_tbl(i).project_id := proj_ids_tbl(i);
14088 populate_in_tbl(i).struct_ver_id := latest_wp_struct_ver_ids_tbl(i);
14089 populate_in_tbl(i).base_struct_ver_id := base_struct_ver_ids_tbl(i);
14090 populate_in_tbl(i).plan_version_id := Null;
14091 populate_in_tbl(i).as_of_date := proj_thru_dates_tbl(i);
14092 populate_in_tbl(i).project_element_id := Null;
14093
14094 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
14095 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);
14096 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);
14097 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);
14098 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);
14099 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);
14100 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);
14101
14102 end loop;
14103
14104 pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14105 --- Call Reporting API to populate temp table with workplan data
14106 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_populate_in_tbl => populate_in_tbl,
14107 p_calling_context => 'SUMMARIZE',
14108 p_program_rollup_flag => 'Y',
14109 x_return_status => x_return_status,
14110 x_msg_code => x_msg_code );
14111 /* Begin: Added for bug 5526638*/
14112 /* Added and condition for bug#5659575*/
14113 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') THEN
14114 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14115 p_msg_name => x_msg_code);
14116 x_msg_data := x_msg_code;
14117 x_return_status := 'E';
14118 pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14119 RAISE l_pji_wp_exception;
14120 END IF;
14121 /* End: Added for bug 5526638*/
14122
14123 IF g1_debug_mode = 'Y' THEN
14124 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14125 x_Msg => 'Done with pji_fm_xbs_accum_utils.populate_workplan_data',
14126 x_Log_Level=> 3);
14127 END IF;
14128 exception when others then
14129 pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14130 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14131 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14132 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14133 raise;
14134 end;
14135 end if;
14136
14137 --- Once the temp table is populated we need to update progress rollup
14138 --- records with the summarized actuals.
14139
14140 if (x_return_status = 'S') then
14141 l_t_index := 0; -- init here because this can be for range of projects
14142 l_index_etc := 0; -- init here because this can be for range of projects
14143 for l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
14144 /* Begin: Fix for Bug # 5526638. */
14145 Begin
14146 l_act_err_flag.extend;
14147 l_act_err_msg.extend;
14148 l_err_msg := null;
14149 l_act_err_flag(l_index) := 0;
14150 l_act_err_msg(l_index) := l_err_msg;
14151 SAVEPOINT ACT_PROJECT;
14152 /* End: Fix for Bug # 5526638. */
14153
14154 l_project_id := proj_ids_tbl(l_index);
14155 l_temp_as_of_date := proj_thru_dates_tbl(l_index);
14156 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);
14157 l_latest_wp_struct_ver_id := latest_wp_struct_ver_ids_tbl(l_index);
14158
14159 /* Added for Bug 6414995 */
14160 l_check_pup_pue := 'N';
14161 if p_extraction_type <> 'PUBLISH' then
14162 open check_pup_pue(l_project_id, l_latest_wp_struct_ver_id);
14163 fetch check_pup_pue into l_check_pup_pue;
14164 close check_pup_pue;
14165
14166 if (l_check_pup_pue = 'Y') then
14167 l_err_msg := 'Workplan publish for this project has failed.';
14168 raise l_skip_exception;
14169 end if;
14170 end if;
14171 /* End for Bug 6414995 */
14172
14173 l_track_wp_cost_flag := pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(l_project_id); --Bug 3801745
14174 l_plan_type := calendar_type_tbl(l_index);
14175 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => l_project_id);
14176 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
14177 p_project_id => l_project_id,
14178 p_plan_type_id => -1,
14179 p_proj_str_ver_id => l_latest_wp_struct_ver_id) ;
14180 l_proj_curr_code := proj_curr_code_tbl(l_index);
14181 l_proj_func_curr_code := proj_func_curr_code_tbl(l_index);
14182
14183 /* Begin: Fix for Bug # 4018249. */
14184
14185 open cur_record_count(l_project_id);
14186 fetch cur_record_count into l_record_count;
14187 close cur_record_count;
14188
14189 if (nvl(l_record_count,0) <> 0) then
14190
14191 /* End: Fix for Bug # 4018249. */
14192
14193 --- call api to get pa and gl period names for this date
14194
14195 begin
14196
14197 l_pa_period_name := pa_utils2.get_pa_period_name(P_TXN_DATE => l_temp_as_of_date,
14198 p_org_id => proj_org_ids_tbl(l_index));
14199 l_gl_period_name := pa_utils2.get_gl_period_name(p_gl_date => l_temp_as_of_date,
14200 p_org_id => proj_org_ids_tbl(l_index));
14201
14202 exception when others then
14203 pa_debug.log_message('GET_SUMM_ACT: Project Id:'||l_project_id||' Issue in finding periods.', 1);
14204 /* Begin: Fix for Bug # 5526638. */
14205 -- l_return_status := 'W';
14206 -- l_project_id := -99999; --- so that the next loop won't get executed
14207
14208 /* Added If condition for Bug#5659575*/
14209 if p_extraction_type = 'PUBLISH' then
14210 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14211 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14212 p_error_text => SUBSTRB('Call of pa_utils2.get_gl_period_name failed: x_msg_data='||SQLERRM,1,120));
14213 x_return_status := 'E';
14214 RAISE;
14215 else
14216 l_err_msg := 'Periods are not defined for the transaction date :'||l_temp_as_of_date;
14217 raise l_skip_exception;
14218 end if;
14219 /* End: Fix for Bug # 5526638. */
14220 end;
14221
14222 end if;
14223
14224 IF g1_debug_mode = 'Y' THEN
14225 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14226 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),
14227 x_Log_Level=> 3);
14228 END IF;
14229
14230 /**** Commented for bug 5464875 and moved above for batch processing
14231 --- here call populate_workplan_data when plan_res_level is 'N'
14232 if (p_plan_res_level = 'N' and l_return_status = 'S') then
14233 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14234 if (l_base_struct_ver_id = -1) then
14235 l_base_struct_ver_id := null;
14236 end if;
14237 begin
14238 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_project_id => l_project_id,
14239 p_struct_ver_id => l_latest_wp_struct_ver_id,
14240 p_base_struct_ver_id => l_base_struct_ver_id,
14241 p_as_of_date => l_temp_as_of_date,
14242 p_program_rollup_flag => 'Y',
14243 p_calling_context => 'SUMMARIZE',
14244 x_return_status => x_return_status,
14245 x_msg_code => x_msg_code );
14246 exception when others then
14247 pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14248 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14249 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14250 p_error_text => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14251 raise;
14252 end;
14253 end if;
14254 ****/
14255 --- here check if resource_list assigned to project is 'None' i.e. uncategorized
14256 --- ignore all RLMIds for such project other than 'PEOPLE' class RLMId.
14257 begin
14258 select uncategorized_flag
14259 into l_uncategorized_flag
14260 from pa_resource_lists_all_bg ---4355004
14261 where resource_list_id = res_list_ids_tbl(l_index);
14262
14263 if (l_uncategorized_flag = 'Y') then
14264 select resource_list_member_id
14265 into l_ppl_res_list_mem_id
14266 from pa_resource_list_members
14267 where resource_class_code = 'PEOPLE'
14268 and resource_class_flag = 'Y'
14269 and resource_list_id = res_list_ids_tbl(l_index);
14270 end if;
14271 exception
14272 when others then
14273 l_uncategorized_flag := 'N';
14274 end;
14275
14276 --- for all objects in summ temp table
14277 l_index2 := 0;
14278 l_index3 := 0;
14279 l_index4 := 0;
14280 l_temp_index2 := 0;
14281 l_db_case := '0';
14282
14283 for all_objects_in_temp_rec in all_objects_in_temp loop -- FOR each OBJECT
14284 l_ignore_rec := 'N';
14285 l_latest_wp_struct_ver_id := all_objects_in_temp_rec.struct_version_id;
14286 l_period_flag := all_objects_in_temp_rec.period_flag;
14287 l_period_name := all_objects_in_temp_rec.period_name;
14288
14289 if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id) then
14290 open task_info(all_objects_in_temp_rec.project_element_id);
14291 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;
14292 close task_info;
14293 end if;
14294 L_PPL_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14295 L_PPL_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14296 L_EQPMT_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14297 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14298 L_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_brdn_cost;
14299 L_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_raw_cost;
14300 l_task_id := all_objects_in_temp_rec.project_element_id;
14301 l_txn_curr_code := all_objects_in_temp_rec.txn_currency_code;
14302 l_percent_comp := to_number(null);
14303 l_earned_val := to_number(null);
14304 l_planned_eff := 0;
14305 l_planned_cost := 0;
14306
14307 -- 4654495
14308 if (p_plan_res_level = 'N' and
14309 (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
14310 --- check in pa_progress_rollup table if data already exists for this task
14311 open some_progress_exists;
14312 fetch some_progress_exists into l_some_progress_exists;
14313 if (some_progress_exists%notfound) then
14314 l_ignore_rec := 'Y';
14315 end if;
14316 close some_progress_exists;
14317 end if;
14318
14319 if (all_objects_in_temp_rec.res_list_member_id is not null and
14320 l_uncategorized_flag = 'Y' and
14321 all_objects_in_temp_rec.res_list_member_id <> l_ppl_res_list_mem_id) then
14322 l_ignore_rec := 'Y';
14323 end if;
14324
14325 if (l_ignore_rec = 'N') then
14326 if (all_objects_in_temp_rec.res_list_member_id is not null) then --11
14327 l_res_list_member_id := all_objects_in_temp_rec.res_list_member_id;
14328
14329 -- check if assignment exists
14330 open get_assignment_info;
14331 fetch get_assignment_info into l_get_assignment_info;
14332
14333 if get_assignment_info%found then
14334 l_object_type := 'PA_ASSIGNMENTS';
14335 l_object_id := l_res_list_member_id;
14336 l_res_assignment_id := l_get_assignment_info.resource_assignment_id;
14337 l_txn_curr_code := l_get_assignment_info.txn_currency_code;
14338 l_new_res_list_member_id := l_res_list_member_id;
14339 l_task_version_id := l_object_version_id;
14340 l_rate_based_flag := l_get_assignment_info.rate_based_flag;
14341 l_res_class_code := l_get_assignment_info.resource_class_code;
14342 l_rbs_element_id := l_get_assignment_info.rbs_element_id;
14343 l_asgn_sch_start_date := l_get_assignment_info.assignment_start_date;
14344 l_asgn_sch_finish_date := l_get_assignment_info.assignment_end_date;
14345 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
14346 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
14347 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
14348 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
14349 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
14350 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
14351 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
14352 close get_assignment_info; -- Bug 6595475
14353
14354 else
14355 close get_assignment_info; -- Bug 6595475
14356 open get_resource_class_code;
14357 fetch get_resource_class_code into l_res_class_code;
14358 close get_resource_class_code;
14359
14360 begin
14361 pa_task_assignments_pvt.Derive_Task_Assignments
14362 ( p_project_id => l_project_id
14363 ,p_task_version_id => l_object_version_id
14364 ,p_scheduled_start => l_sch_start_date
14365 ,p_scheduled_end => l_sch_end_date
14366 ,p_resource_class_code => l_res_class_code
14367 ,p_resource_list_member_id => l_res_list_member_id
14368 ,p_unplanned_flag => 'Y'
14369 ,x_resource_assignment_id => l_res_assignment_id
14370 ,x_task_version_id => l_task_version_id
14371 ,x_currency_code => l_txn_curr_code
14372 ,x_resource_list_member_id => l_new_res_list_member_id -- Bug 3764224 RLM ID Changes
14373 ,x_rate_based_flag => l_rate_based_flag
14374 ,x_rbs_element_id => l_rbs_element_id
14375 ,x_msg_count => x_msg_count
14376 ,x_msg_data => x_msg_data
14377 ,x_return_status => x_return_status);
14378 exception when others then
14379 x_return_status := 'E';
14380 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
14381 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14382 p_error_text => SUBSTRB('pa_task_assignments_pvt.Derive_Task_Assignments:'||SQLERRM,1,120));
14383 -- Added for Bug # 5526638
14384 l_err_msg := substrb('Derive task assignment to track actuals failed:'||SQLERRM,1,240) ;
14385 raise;
14386 end;
14387
14388 if (x_return_status = 'S' and l_res_assignment_id is not null) then
14389 l_object_type := 'PA_ASSIGNMENTS';
14390 l_object_id := l_new_res_list_member_id; ---l_res_assignment_id;
14391 l_asgn_sch_start_date := l_sch_start_date;
14392 l_asgn_sch_finish_date := l_sch_end_date;
14393 l_asgn_plan_quantity := 0;
14394 l_asgn_plan_bur_cost_tc := 0;
14395 l_asgn_plan_bur_cost_fc := 0;
14396 l_asgn_plan_bur_cost_pc := 0;
14397 l_asgn_plan_raw_cost_tc := 0;
14398 l_asgn_plan_raw_cost_fc := 0;
14399 l_asgn_plan_raw_cost_pc := 0;
14400 else
14401 l_ignore_rec := 'Y';
14402 --- l_return_status := 'W'; bug 5526638
14403 l_return_status := 'E'; -- Added for bug#5659575
14404 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);
14405 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14406 p_msg_name => 'Derive Task Assignment failed for RLMId: '||l_res_list_member_id);
14407 /* Begin: Fix for Bug # 5526638. */
14408 if p_extraction_type <> 'PUBLISH' then
14409 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;
14410 raise l_skip_exception;
14411 end if;
14412 /* End: Fix for Bug # 5526638. */
14413 end if;
14414
14415 end if;
14416 -- close get_assignment_info; Commented for bug 6730979
14417 --- assignment is found but check if txn curr is same or not
14418 if l_txn_curr_code <> all_objects_in_temp_rec.txn_currency_code
14419 and l_ignore_rec = 'N' then --33
14420
14421 l_conv_rate_date := l_temp_as_of_date;
14422 --- find period_start_date to be used for currency conversion
14423 if (l_plan_type = 'G' or l_plan_type = 'P') then
14424 l_conv_rate_date := all_objects_in_temp_rec.min_start_date;
14425 end if;
14426
14427 --- convert txn curr into planned txn curr and then process
14428 if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
14429 all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
14430 l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14431 l_txn_raw_cost := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14432 else
14433 l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14434 l_txn_raw_cost := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14435 end if;
14436 l_txn_brdn_cost_tot := all_objects_in_temp_rec.act_txn_brdn_cost;
14437 l_txn_raw_cost_tot := all_objects_in_temp_rec.act_txn_raw_cost;
14438 -- convert both raw and burdened costs
14439 begin
14440 pa_progress_utils.convert_currency_amounts(
14441 p_project_id => l_project_id
14442 ,p_task_id => all_objects_in_temp_rec.project_element_id
14443 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14444 ,p_as_of_date => l_conv_rate_date
14445 ,P_txn_cost => l_txn_brdn_cost
14446 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
14447 ,P_project_curr_code => l_txn_curr_code
14448 ,P_project_rate_type => x_txn_rate_type
14449 ,P_project_rate_date => x_txn_rate_date
14450 ,P_project_exch_rate => x_txn_exch_rate
14451 ,P_project_raw_cost => x_txn_brdn_cost
14452 ,P_projfunc_curr_code => x_projfunc_curr_code
14453 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
14454 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
14455 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
14456 ,P_projfunc_raw_cost => x_projfunc_raw_cost
14457 ,x_return_status => x_return_status
14458 ,x_msg_count => x_msg_count
14459 ,x_msg_data => x_msg_data) ;
14460
14461 pa_progress_utils.convert_currency_amounts(
14462 p_project_id => l_project_id
14463 ,p_task_id => all_objects_in_temp_rec.project_element_id
14464 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14465 ,p_as_of_date => l_conv_rate_date
14466 ,P_txn_cost => l_txn_raw_cost
14467 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
14468 ,P_project_curr_code => l_txn_curr_code
14469 ,P_project_rate_type => x_txn_rate_type
14470 ,P_project_rate_date => x_txn_rate_date
14471 ,P_project_exch_rate => x_txn_exch_rate
14472 ,P_project_raw_cost => x_txn_raw_cost
14473 ,P_projfunc_curr_code => x_projfunc_curr_code
14474 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
14475 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
14476 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
14477 ,P_projfunc_raw_cost => x_projfunc_raw_cost
14478 ,x_return_status => x_return_status
14479 ,x_msg_count => x_msg_count
14480 ,x_msg_data => x_msg_data) ;
14481
14482 pa_progress_utils.convert_currency_amounts(
14483 p_project_id => l_project_id
14484 ,p_task_id => all_objects_in_temp_rec.project_element_id
14485 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14486 ,p_as_of_date => l_conv_rate_date
14487 ,P_txn_cost => l_txn_raw_cost_tot
14488 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
14489 ,P_project_curr_code => l_txn_curr_code
14490 ,P_project_rate_type => x_txn_rate_type
14491 ,P_project_rate_date => x_txn_rate_date
14492 ,P_project_exch_rate => x_txn_exch_rate
14493 ,P_project_raw_cost => x_txn_raw_cost_tot
14494 ,P_projfunc_curr_code => x_projfunc_curr_code
14495 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
14496 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
14497 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
14498 ,P_projfunc_raw_cost => x_projfunc_raw_cost
14499 ,x_return_status => x_return_status
14500 ,x_msg_count => x_msg_count
14501 ,x_msg_data => x_msg_data) ;
14502
14503 pa_progress_utils.convert_currency_amounts(
14504 p_project_id => l_project_id
14505 ,p_task_id => all_objects_in_temp_rec.project_element_id
14506 ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14507 ,p_as_of_date => l_conv_rate_date
14508 ,P_txn_cost => l_txn_brdn_cost_tot
14509 ,P_txn_curr_code => all_objects_in_temp_rec.txn_currency_code
14510 ,P_project_curr_code => l_txn_curr_code
14511 ,P_project_rate_type => x_txn_rate_type
14512 ,P_project_rate_date => x_txn_rate_date
14513 ,P_project_exch_rate => x_txn_exch_rate
14514 ,P_project_raw_cost => x_txn_brdn_cost_tot
14515 ,P_projfunc_curr_code => x_projfunc_curr_code
14516 ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
14517 ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
14518 ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
14519 ,P_projfunc_raw_cost => x_projfunc_raw_cost
14520 ,x_return_status => x_return_status
14521 ,x_msg_count => x_msg_count
14522 ,x_msg_data => x_msg_data) ;
14523 exception when others then
14524 l_err_msg := substrb('Currency conversion failed '||sqlerrm,1,240); -- Added for bug 5526638
14525 raise;
14526 end;
14527
14528 if (x_return_status <> 'S') then
14529 ----l_return_status := 'W'; 5526638
14530 l_return_status := 'E'; -- Added for Bug #5659575
14531 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||
14532 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
14533 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||
14534 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
14535 l_ignore_rec := 'Y';
14536 /* Begin: Fix for Bug # 5526638. */
14537 /* Added for Bug #5659575 */
14538 if p_extraction_type <> 'PUBLISH' then
14539 l_err_msg := 'Currency conversion failed for Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
14540 ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code;
14541 raise l_skip_exception;
14542 end if;
14543 /* End: Fix for Bug # 5526638. */
14544 else
14545 if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
14546 all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
14547 L_PPL_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
14548 L_PPL_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
14549 else
14550 L_EQPMT_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
14551 L_EQPMT_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
14552 end if;
14553 L_ACT_COST_TO_DATE_TC := x_txn_brdn_cost_tot;
14554 L_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost_Tot;
14555 end if;
14556 end if; --33
14557 else --11 res_list_mem_id is null
14558 l_object_id := all_objects_in_temp_rec.project_element_id;
14559 l_object_type := 'PA_TASKS';
14560 --- here get the planned value if task is lowest level and PC deriv is EFFORT based and no assignments for the task
14561 if (l_base_pc_deriv_code = 'EFFORT' or l_base_pc_deriv_code = 'COST') and
14562 (PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_object_version_id ) = 'Y') and
14563 (PA_PROGRESS_UTILS.check_assignment_exists(l_project_id,l_object_version_id,'PA_TASKS') <> 'Y') then
14564 open get_planned_val_for_task;
14565 fetch get_planned_val_for_task into l_planned_eff, l_planned_cost;
14566 close get_planned_val_for_task;
14567 end if;
14568 end if; --11
14569
14570 if (l_object_version_id = l_latest_wp_struct_ver_id) then
14571 l_object_type := 'PA_STRUCTURES';
14572 end if;
14573 end if;
14574 if (l_ignore_rec = 'N') then --11
14575 if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id or
14576 l_object_type <> l_last_object_Type or
14577 nvl(l_period_flag,'N') <> nvl(l_last_period_flag,'N') or
14578 (l_object_Type = 'PA_ASSIGNMENTS' and (nvl(l_last_res_list_mem_id,-99) <> nvl(l_new_res_list_member_id,-99)))) then --22
14579
14580 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
14581
14582 if (l_object_Type = 'PA_ASSIGNMENTS') then
14583
14584 -- create a new record in the temp table:
14585 l_db_case := '0';
14586 l_t_index := l_t_index + 1;
14587
14588 t_PROJECT_ID(l_t_index) := l_project_id;
14589 t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
14590 t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
14591 t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
14592 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
14593 t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
14594 if (l_rate_based_flag = 'N') then
14595 t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
14596 (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)));
14597 else
14598 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)+
14599 (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)));
14600 end if;
14601 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
14602 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
14603 t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
14604 t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
14605 t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
14606 t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
14607 t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
14608 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
14609 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
14610 t_CURRENT_FLAG(l_t_index) := 'Y';
14611 t_OBJECT_TYPE(l_t_index) := l_object_type;
14612 t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
14613 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
14614 t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
14615 t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
14616
14617 end if;
14618
14619 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
14620
14621 open w_rollup_rec_asofdate;
14622 fetch w_rollup_rec_asofdate into l_w_rollup_rec_asofdate;
14623 if w_rollup_rec_asofdate%notfound then
14624 l_working_rec_found := 'N';
14625 else
14626 l_working_rec_found := 'Y';
14627 l_index3 := l_index3 + 1;
14628 if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
14629 u_ppl_act_effort_to_date(l_index3) :=0;
14630 u_eqpmt_act_effort_to_date(l_index3) :=0;
14631 u_oth_qty(l_index3) :=0;
14632 u_oth_act_cost_to_date_tc(l_index3) :=0;
14633 u_oth_act_rawcost_to_date_tc(l_index3) :=0;
14634 u_oth_act_cost_to_date_pc(l_index3) :=0;
14635 u_oth_act_rawcost_to_date_pc(l_index3) :=0;
14636 u_oth_act_cost_to_date_fc(l_index3) :=0;
14637 u_oth_act_rawcost_to_date_fc(l_index3) :=0;
14638 u_ppl_act_cost_to_date_tc(l_index3) :=0;
14639 u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
14640 u_ppl_act_cost_to_date_pc(l_index3) :=0;
14641 u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
14642 u_ppl_act_cost_to_date_fc(l_index3) :=0;
14643 u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
14644 u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
14645 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
14646 u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
14647 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
14648 u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
14649 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
14650 u_oth_etc_qty(l_index3) :=0;
14651 u_oth_etc_cost_to_date_tc(l_index3) :=0;
14652 u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
14653 u_oth_etc_cost_to_date_pc(l_index3) :=0;
14654 u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
14655 u_oth_etc_cost_to_date_fc(l_index3) :=0;
14656 u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
14657 u_ppl_etc_cost_to_date_tc(l_index3) :=0;
14658 u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
14659 u_ppl_etc_cost_to_date_pc(l_index3) :=0;
14660 u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
14661 u_ppl_etc_cost_to_date_fc(l_index3) :=0;
14662 u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
14663 u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
14664 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
14665 u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
14666 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
14667 u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
14668 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
14669 else
14670 u_ppl_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_effort_to_date;
14671 u_eqpmt_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_effort_to_date;
14672 u_oth_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_quantity_to_date;
14673 u_oth_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_tc;
14674 u_oth_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
14675 u_oth_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_pc;
14676 u_oth_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
14677 u_oth_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_fc;
14678 u_oth_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
14679 u_ppl_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
14680 u_ppl_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
14681 u_ppl_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
14682 u_ppl_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
14683 u_ppl_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
14684 u_ppl_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
14685 u_eqpmt_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
14686 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
14687 u_eqpmt_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
14688 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
14689 u_eqpmt_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
14690 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
14691 u_oth_etc_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_quantity;
14692 u_oth_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_tc;
14693 u_oth_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
14694 u_oth_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_pc;
14695 u_oth_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
14696 u_oth_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_fc;
14697 u_oth_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
14698 u_ppl_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
14699 u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
14700 u_ppl_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
14701 u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
14702 u_ppl_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
14703 u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
14704 u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
14705 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
14706 u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
14707 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
14708 u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
14709 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
14710 end if;
14711 end if;
14712 close w_rollup_rec_asofdate;
14713
14714 -- End fix for bug # 4041048.
14715
14716 open rollup_rec_asofdate;
14717 fetch rollup_rec_asofdate into l_rollup_rec_asofdate;
14718 if rollup_rec_asofdate%notfound then --44
14719 --- if it is an assignment rec we should check if it is
14720 --- already processed or not. if it is then just update for that index
14721 --- and reset the index back
14722 l_temp_index2 := l_index2;
14723 l_init_vars := 'Y';
14724 if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
14725 --- find the assignment
14726 l_index2 := 1;
14727 loop
14728 if project_id(l_index2) = l_project_id and
14729 object_id(l_index2) = l_object_id and
14730 object_type(l_index2) = l_object_Type and
14731 proj_element_id(l_index2) = l_task_id then
14732 l_init_vars := 'N';
14733 exit;
14734 end if;
14735 if l_index2 >= l_temp_index2 then
14736 exit;
14737 end if;
14738 l_index2 := l_index2 + 1;
14739 end loop;
14740 l_index_etc := l_index_etc + 1;
14741 elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
14742 l_index_etc := l_index_etc + 1;
14743 end if;
14744 --- set l_index2 to index of found assignment
14745 if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
14746 l_index2 := l_index2 + 1;
14747 l_temp_index2 := l_index2;
14748 l_db_case := '1';
14749 if (l_init_vars = 'Y') then
14750 ppl_act_effort_to_date(l_index2) :=0;
14751 eqpmt_act_effort_to_date(l_index2) :=0;
14752 oth_qty(l_index2) :=0;
14753 oth_act_cost_to_date_tc(l_index2) :=0;
14754 oth_act_rawcost_to_date_tc(l_index2) :=0;
14755 oth_act_cost_to_date_pc(l_index2) :=0;
14756 oth_act_rawcost_to_date_pc(l_index2) :=0;
14757 oth_act_cost_to_date_fc(l_index2) :=0;
14758 oth_act_rawcost_to_date_fc(l_index2) :=0;
14759 ppl_act_cost_to_date_tc(l_index2) :=0;
14760 ppl_act_rawcost_to_date_tc(l_index2) :=0;
14761 ppl_act_cost_to_date_pc(l_index2) :=0;
14762 ppl_act_rawcost_to_date_pc(l_index2) :=0;
14763 ppl_act_cost_to_date_fc(l_index2) :=0;
14764 ppl_act_rawcost_to_date_fc(l_index2) :=0;
14765 eqpmt_act_cost_to_date_tc(l_index2) :=0;
14766 eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
14767 eqpmt_act_cost_to_date_pc(l_index2) :=0;
14768 eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
14769 eqpmt_act_cost_to_date_fc(l_index2) :=0;
14770 eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
14771 end if;
14772 end if;
14773 else --44
14774 if trunc(l_rollup_rec_asofdate.as_of_Date) = trunc(l_temp_as_of_date) then --55
14775 l_index3 := l_index3 + 1;
14776 if (l_object_Type = 'PA_ASSIGNMENTS') then
14777 l_index_etc := l_index_etc + 1;
14778 end if;
14779 l_db_case := '2';
14780 if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
14781 u_ppl_act_effort_to_date(l_index3) :=0;
14782 u_eqpmt_act_effort_to_date(l_index3) :=0;
14783 u_oth_qty(l_index3) :=0;
14784 u_oth_act_cost_to_date_tc(l_index3) :=0;
14785 u_oth_act_rawcost_to_date_tc(l_index3) :=0;
14786 u_oth_act_cost_to_date_pc(l_index3) :=0;
14787 u_oth_act_rawcost_to_date_pc(l_index3) :=0;
14788 u_oth_act_cost_to_date_fc(l_index3) :=0;
14789 u_oth_act_rawcost_to_date_fc(l_index3) :=0;
14790 u_ppl_act_cost_to_date_tc(l_index3) :=0;
14791 u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
14792 u_ppl_act_cost_to_date_pc(l_index3) :=0;
14793 u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
14794 u_ppl_act_cost_to_date_fc(l_index3) :=0;
14795 u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
14796 u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
14797 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
14798 u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
14799 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
14800 u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
14801 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
14802 u_oth_etc_qty(l_index3) :=0;
14803 u_oth_etc_cost_to_date_tc(l_index3) :=0;
14804 u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
14805 u_oth_etc_cost_to_date_pc(l_index3) :=0;
14806 u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
14807 u_oth_etc_cost_to_date_fc(l_index3) :=0;
14808 u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
14809 u_ppl_etc_cost_to_date_tc(l_index3) :=0;
14810 u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
14811 u_ppl_etc_cost_to_date_pc(l_index3) :=0;
14812 u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
14813 u_ppl_etc_cost_to_date_fc(l_index3) :=0;
14814 u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
14815 u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
14816 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
14817 u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
14818 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
14819 u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
14820 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
14821 else
14822 u_ppl_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
14823 u_eqpmt_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
14824 u_oth_qty(l_index3) :=l_rollup_rec_asofdate.oth_quantity_to_date;
14825 u_oth_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
14826 u_oth_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
14827 u_oth_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
14828 u_oth_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
14829 u_oth_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
14830 u_oth_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
14831 u_ppl_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
14832 u_ppl_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
14833 u_ppl_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
14834 u_ppl_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
14835 u_ppl_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
14836 u_ppl_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
14837 u_eqpmt_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
14838 u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
14839 u_eqpmt_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
14840 u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
14841 u_eqpmt_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
14842 u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
14843 u_oth_etc_qty(l_index3) :=l_rollup_rec_asofdate.oth_etc_quantity;
14844 u_oth_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_tc;
14845 u_oth_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_tc;
14846 u_oth_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_pc;
14847 u_oth_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_pc;
14848 u_oth_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_fc;
14849 u_oth_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_fc;
14850 u_ppl_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_tc;
14851 u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
14852 u_ppl_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_pc;
14853 u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
14854 u_ppl_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_fc;
14855 u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
14856 u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
14857 u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
14858 u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
14859 u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
14860 u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
14861 u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
14862 end if;
14863 else --55
14864 --- if it is an assignment rec we should check if it is
14865 --- already processed or not. if it is, just update for that index
14866 --- and reset the index back
14867 l_temp_index2 := l_index2;
14868 l_init_vars := 'Y';
14869 if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
14870 --- find the assignment
14871 l_index2 := 1;
14872 loop
14873 if project_id(l_index2) = l_project_id and
14874 object_id(l_index2) = l_object_id and
14875 OBJECT_TYPE(l_index2) = l_object_Type and
14876 proj_element_id(l_index2) = l_task_id then
14877 l_init_vars := 'N';
14878 exit;
14879 end if;
14880 if l_index2 >= l_temp_index2 then
14881 exit;
14882 end if;
14883 l_index2 := l_index2 + 1;
14884 end loop;
14885 l_index_etc := l_index_etc + 1;
14886 elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
14887 l_index_etc := l_index_etc + 1;
14888 end if;
14889 --- set l_index2 to index of found assignment
14890 if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
14891 l_index2 := l_index2 + 1;
14892 l_temp_index2 := l_index2;
14893 l_db_case := '3';
14894 if (l_init_vars = 'Y' and (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL')) then
14895 ppl_act_effort_to_date(l_index2) :=0;
14896 eqpmt_act_effort_to_date(l_index2) :=0;
14897 oth_qty(l_index2) := 0;
14898 oth_act_cost_to_date_tc(l_index2) :=0;
14899 oth_act_rawcost_to_date_tc(l_index2) :=0;
14900 oth_act_cost_to_date_pc(l_index2) := 0;
14901 oth_act_rawcost_to_date_pc(l_index2) := 0;
14902 oth_act_cost_to_date_fc(l_index2) := 0;
14903 oth_act_rawcost_to_date_fc(l_index2) := 0;
14904 ppl_act_cost_to_date_tc(l_index2) :=0;
14905 ppl_act_rawcost_to_date_tc(l_index2) :=0;
14906 ppl_act_cost_to_date_pc(l_index2) :=0;
14907 ppl_act_rawcost_to_date_pc(l_index2) :=0;
14908 ppl_act_cost_to_date_fc(l_index2) :=0;
14909 ppl_act_rawcost_to_date_fc(l_index2) :=0;
14910 eqpmt_act_cost_to_date_tc(l_index2) :=0;
14911 eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
14912 eqpmt_act_cost_to_date_pc(l_index2) :=0;
14913 eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
14914 eqpmt_act_cost_to_date_fc(l_index2) :=0;
14915 eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
14916 elsif (l_init_vars = 'Y') then
14917 ppl_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
14918 eqpmt_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
14919 oth_qty(l_index2) := l_rollup_rec_asofdate.oth_quantity_to_date;
14920 oth_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
14921 oth_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
14922 oth_act_cost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
14923 oth_act_rawcost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
14924 oth_act_cost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
14925 oth_act_rawcost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
14926 ppl_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
14927 ppl_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
14928 ppl_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
14929 ppl_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
14930 ppl_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
14931 ppl_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
14932 eqpmt_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
14933 eqpmt_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
14934 eqpmt_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
14935 eqpmt_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
14936 eqpmt_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
14937 eqpmt_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
14938 end if;
14939 end if; --55
14940 end if; --44
14941 end if; --33
14942 close rollup_rec_asofdate;
14943 else --22
14944 if (l_period_flag = 'Y') then
14945 -- or (l_plan_type = 'N' and l_object_Type = 'PA_ASSIGNMENTS')) then
14946 -- Check if the period name is the same as the current record.
14947 if (t_period_name(l_t_index) <> all_objects_in_temp_rec.period_name) then
14948 -- create a new record in the temp table:
14949 l_t_index := l_t_index + 1;
14950 t_PROJECT_ID(l_t_index) := l_project_id;
14951 t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
14952 t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
14953 t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
14954 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
14955 t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
14956 if (l_rate_based_flag = 'N') then
14957 t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
14958 (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)));
14959 else
14960 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)+
14961 (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)));
14962 end if;
14963 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
14964 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
14965 t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
14966 t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
14967 t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
14968 t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
14969 t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
14970 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
14971 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
14972 t_CURRENT_FLAG(l_t_index) := 'Y';
14973 t_OBJECT_TYPE(l_t_index) := l_object_type;
14974 t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
14975 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
14976 t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
14977 t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
14978
14979 else
14980
14981 -- Update the current record in the temp table.
14982
14983 t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
14984 t_ACTUAL_COST(l_t_index) := (t_ACTUAL_COST(l_t_index) + L_ACT_COST_TO_DATE_TC);
14985 if (l_rate_based_flag = 'N') then
14986 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)) +
14987 (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)));
14988 else
14989 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)+
14990 (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)));
14991 end if;
14992 t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
14993 t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
14994 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));
14995 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));
14996 t_ACTUAL_RAWCOST(l_t_index) := (t_ACTUAL_RAWCOST(l_t_index) + L_ACT_RAWCOST_TO_DATE_TC);
14997 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));
14998 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));
14999 t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15000 t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15001 t_CURRENT_FLAG(l_t_index) := 'Y';
15002 t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15003 end if;
15004 end if;
15005 end if; -- 44
15006
15007 -- Begin fix for bug # 4041048.
15008 if (l_working_rec_found = 'Y') then
15009 --- update working record on that date
15010 l_working_rec_found := 'N';
15011 if (l_db_case = '2') then
15012 l_index3 := l_index3 - 1;
15013 end if;
15014 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15015 u_earned_val(l_index3) := l_earned_val;
15016 u_progress_rollup_id(l_index3) := l_w_rollup_rec_asofdate.progress_rollup_id;
15017 u_object_version_id(l_index3) := l_object_version_id;
15018 if (l_object_Type = 'PA_ASSIGNMENTS') then
15019 if (l_rate_based_flag = 'N') then
15020 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)));
15021 else
15022 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);
15023 end if;
15024 end if;
15025 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)));
15026 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)));
15027 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)
15028 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
15029 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)
15030 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
15031 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)
15032 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
15033 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)
15034 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
15035 u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15036 u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_TC;
15037 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
15038 u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_FC;
15039 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
15040 u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_PC;
15041 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
15042 if l_object_type = 'PA_ASSIGNMENTS' and
15043 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
15044 ---5726773
15045 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
15046 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));
15047 if (u_oth_etc_qty(l_index3) <> 0) then
15048 u_oth_etc_qty(l_index3) := l_asgn_plan_quantity - u_oth_qty(l_index3);
15049 pa_progress_utils.get_plan_costs_for_qty
15050 ( p_resource_list_mem_id => l_object_id
15051 ,p_project_id => l_project_id
15052 ,p_task_id => all_objects_in_temp_rec.project_element_id
15053 ,p_as_of_date => l_temp_as_of_date
15054 ,p_structure_version_id => l_latest_wp_struct_ver_id
15055 ,p_txn_currency_code => l_txn_curr_code
15056 ,p_rate_based_flag => l_rate_based_flag
15057 ,p_quantity => u_oth_etc_qty(l_index3)
15058 ,p_budget_version_id => l_plan_version_id --4372462
15059 ,p_res_assignment_id => l_res_assignment_id
15060 ,x_rawcost_tc => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
15061 ,x_brdncost_tc => u_OTH_ETC_COST_to_date_TC(l_index3)
15062 ,x_rawcost_pc => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
15063 ,x_brdncost_pc => u_OTH_ETC_COST_to_date_PC(l_index3)
15064 ,x_rawcost_fc => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
15065 ,x_brdncost_fc => u_OTH_ETC_COST_to_date_FC(l_index3)
15066 ,x_return_status => x_return_status
15067 ,x_msg_count => x_msg_count
15068 ,x_msg_data => x_msg_data);
15069 if (x_return_status <> 'S') then
15070 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15071 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15072 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15073 -- Added for bug 5526638
15074 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15075 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15076 raise l_no_rate_exception;
15077 end if;
15078 u_actual_finish_date(l_index3) := to_date(null);
15079 else
15080 u_oth_etc_qty(l_index3) := 0;
15081 u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
15082 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15083 u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
15084 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15085 u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
15086 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15087 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15088 end if;
15089 else
15090 u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15091 u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_tc;
15092 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
15093 u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_fc;
15094 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
15095 u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_pc;
15096 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
15097 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15098 end if;
15099 end if;
15100 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);
15101 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);
15102 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);
15103 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);
15104 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);
15105 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);
15106 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);
15107 u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15108 u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15109 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15110 u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15111 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15112 u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15113 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15114 if l_object_type = 'PA_ASSIGNMENTS' and
15115 l_res_class_code = 'PEOPLE' then
15116 ---5726773
15117 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
15118 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));
15119 if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
15120 pa_progress_utils.get_plan_costs_for_qty
15121 (p_resource_list_mem_id => l_object_id
15122 ,p_project_id => l_project_id
15123 ,p_task_id => all_objects_in_temp_rec.project_element_id
15124 ,p_as_of_date => l_temp_as_of_date
15125 ,p_structure_version_id => l_latest_wp_struct_ver_id
15126 ,p_txn_currency_code => l_txn_curr_code
15127 ,p_rate_based_flag => l_rate_based_flag
15128 ,p_quantity => u_ppl_etc_effort_to_date(l_index3)
15129 ,p_budget_version_id => l_plan_version_id --4372462
15130 ,p_res_assignment_id => l_res_assignment_id
15131 ,x_rawcost_tc => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
15132 ,x_brdncost_tc => u_ppl_ETC_COST_to_date_TC(l_index3)
15133 ,x_rawcost_pc => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
15134 ,x_brdncost_pc => u_ppl_ETC_COST_to_date_PC(l_index3)
15135 ,x_rawcost_fc => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
15136 ,x_brdncost_fc => u_ppl_ETC_COST_to_date_FC(l_index3)
15137 ,x_return_status => x_return_status
15138 ,x_msg_count => x_msg_count
15139 ,x_msg_data => x_msg_data);
15140 if (x_return_status <> 'S') then
15141 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15142 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15143 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15144 -- Added for bug 5526638
15145 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15146 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15147 raise l_no_rate_exception;
15148 end if;
15149 u_actual_finish_date(l_index3) := to_date(null);
15150 else
15151 u_ppl_etc_effort_to_date(l_index3) := 0;
15152 u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
15153 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15154 u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
15155 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15156 u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
15157 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15158 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15159 end if;
15160 else
15161 u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15162 u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15163 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15164 u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15165 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15166 u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15167 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15168 u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15169 end if;
15170 end if;
15171 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);
15172 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);
15173 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);
15174 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);
15175 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);
15176 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);
15177 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);
15178 u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15179 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15180 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15181 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15182 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15183 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15184 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15185 if l_object_type = 'PA_ASSIGNMENTS' and
15186 l_res_class_code = 'EQUIPMENT' then
15187 ---5726773
15188 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
15189 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));
15190 if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
15191 pa_progress_utils.get_plan_costs_for_qty
15192 (p_resource_list_mem_id => l_object_id
15193 ,p_project_id => l_project_id
15194 ,p_task_id => all_objects_in_temp_rec.project_element_id
15195 ,p_as_of_date => l_temp_as_of_date
15196 ,p_structure_version_id => l_latest_wp_struct_ver_id
15197 ,p_txn_currency_code => l_txn_curr_code
15198 ,p_rate_based_flag => l_rate_based_flag
15199 ,p_quantity => u_eqpmt_etc_effort_to_date(l_index3)
15200 ,p_budget_version_id => l_plan_version_id --4372462
15201 ,p_res_assignment_id => l_res_assignment_id
15202 ,x_rawcost_tc => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
15203 ,x_brdncost_tc => u_eqpmt_ETC_COST_to_date_TC(l_index3)
15204 ,x_rawcost_pc => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
15205 ,x_brdncost_pc => u_eqpmt_ETC_COST_to_date_PC(l_index3)
15206 ,x_rawcost_fc => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
15207 ,x_brdncost_fc => u_eqpmt_ETC_COST_to_date_FC(l_index3)
15208 ,x_return_status => x_return_status
15209 ,x_msg_count => x_msg_count
15210 ,x_msg_data => x_msg_data);
15211 if (x_return_status <> 'S') then
15212 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15213 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15214 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15215 -- Added for bug 5526638
15216 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15217 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15218 raise l_no_rate_exception;
15219 end if;
15220 u_actual_finish_date(l_index3) := to_date(null);
15221 else
15222 u_eqpmt_etc_effort_to_date(l_index3) := 0;
15223 u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
15224 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15225 u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
15226 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15227 u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
15228 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15229 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15230 end if;
15231 else
15232 u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15233 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15234 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15235 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15236 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15237 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15238 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15239 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15240 end if;
15241 end if;
15242 --5726773
15243 --since ETC is already calculated we can calculate % complete as
15244 --(act / act + etc)
15245 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
15246 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;
15247 if (l_percent_comp > 100) then
15248 l_percent_comp := 100;
15249 elsif (l_percent_comp < 0) then
15250 l_percent_comp := 0;
15251 end if;
15252 l_earned_val := l_percent_comp * l_planned_eff;
15253 l_eff_rollup_pc := l_percent_comp;
15254 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COSTbased
15255 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;
15256 if (l_percent_comp > 100) then
15257 l_percent_comp := 100;
15258 elsif (l_percent_comp < 0) then
15259 l_percent_comp := 0;
15260 end if;
15261 l_earned_val := l_percent_comp * l_planned_cost;
15262 l_eff_rollup_pc := l_percent_comp;
15263 else
15264 l_percent_comp := l_w_rollup_rec_asofdate.completed_percentage;
15265 l_eff_rollup_pc := l_w_rollup_rec_asofdate.eff_rollup_percent_comp;
15266 l_earned_val := l_w_rollup_rec_asofdate.earned_value;
15267 end if;
15268 u_completed_percentage(l_index3) := l_w_rollup_rec_asofdate.completed_percentage;
15269 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
15270 u_earned_val(l_index3) := l_earned_val;
15271 if (l_db_case = '2') then
15272 l_index3 := l_index3 + 1;
15273 end if;
15274 end if;
15275
15276 -- End fix for bug # 4041048.
15277
15278 --- if rollup record exists on the as_of_date then populate the
15279 --- u_ tables else populate the insert tables, for bulk processing
15280 --- call an api to check if a record exists on that date
15281 if (l_db_case = '1') then
15282 --- insert with defaults
15283 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
15284 percent_complete_id(l_index2) := to_number(null);
15285 project_id(l_index2) := l_project_id;
15286 object_id(l_index2) := l_object_id;
15287 OBJECT_TYPE(l_index2) := l_object_Type;
15288 as_of_Date(l_index2) := l_temp_as_of_date;
15289 object_version_id(l_index2) := l_object_version_id;
15290 LAST_UPDATE_DATE(l_index2) := sysdate;
15291 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
15292 CREATION_DATE(l_index2) := sysdate;
15293 CREATED_BY(l_index2) := fnd_global.user_id;
15294 PROGRESS_STATUS_CODE(l_index2) := null;
15295 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
15296 INCREMENTAL_WORK_QUANTITY(l_index2) := to_number(null);
15297 CUMULATIVE_WORK_QUANTITY(l_index2) := to_number(null);
15298 base_percent_complete(l_index2) := to_number(null);
15299 ESTIMATED_START_DATE(l_index2) := to_date(null);
15300 ESTIMATED_FINISH_DATE(l_index2) := to_date(null);
15301 if (l_object_Type = 'PA_ASSIGNMENTS') then
15302 actual_start_date(l_index2) := l_asgn_sch_start_date;
15303
15304 -- Bug 6917961
15305 OPEN cur_prog_setup(all_objects_in_temp_rec.project_element_id,l_project_id);
15306 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
15307 CLOSE cur_prog_setup;
15308 if (l_prog_enable_flag = 'Y') then
15309 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
15310 end if;
15311 -- Bug 6917961
15312 else
15313 actual_start_date(l_index2) := l_sch_start_date; -- set actual start
15314 end if;
15315 actual_finish_date(l_index2) := to_date(null);
15316 RECORD_VERSION_NUMBER(l_index2) := 1;
15317 base_percent_comp_deriv_code(l_index2) := l_base_pc_deriv_code;
15318 BASE_PROGRESS_STATUS_CODE(l_index2) := null;
15319 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := null;
15320 STRUCTURE_TYPE(l_index2) := 'WORKPLAN';
15321 PROJ_ELEMENT_ID(l_index2) := all_objects_in_temp_rec.project_element_id;
15322 STRUCTURE_VERSION_ID(l_index2) := to_number(null);
15323 if (l_object_type = 'PA_ASSIGNMENTS') then
15324 if (l_rate_based_flag = 'N') then
15325 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)));
15326 else
15327 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));
15328 end if;
15329 end if;
15330 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)));
15331 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)));
15332 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)
15333 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
15334 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)
15335 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
15336 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)
15337 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
15338 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)
15339 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
15340 oth_etc_qty(l_index2) := to_number(null);
15341 OTH_ETC_COST_TC(l_index2) := to_number(null);
15342 OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
15343 OTH_ETC_COST_FC(l_index2) := to_number(null);
15344 OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
15345 OTH_ETC_COST_PC(l_index2) := to_number(null);
15346 OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
15347 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
15348 ---5726773
15349 oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
15350 if (oth_etc_qty(l_index2) <> 0) then
15351 oth_etc_qty(l_index2) := l_asgn_plan_quantity - oth_qty(l_index2);
15352 pa_progress_utils.get_plan_costs_for_qty
15353 ( p_resource_list_mem_id => l_object_id
15354 ,p_project_id => l_project_id
15355 ,p_task_id => all_objects_in_temp_rec.project_element_id
15356 ,p_as_of_date => l_temp_as_of_date
15357 ,p_structure_version_id => l_latest_wp_struct_ver_id
15358 ,p_txn_currency_code => l_txn_curr_code
15359 ,p_rate_based_flag => l_rate_based_flag
15360 ,p_quantity => oth_etc_qty(l_index2)
15361 ,p_budget_version_id => l_plan_version_id --4372462
15362 ,p_res_assignment_id => l_res_assignment_id
15363 ,x_rawcost_tc => OTH_ETC_RAWCOST_TC(l_index2)
15364 ,x_brdncost_tc => OTH_ETC_COST_TC(l_index2)
15365 ,x_rawcost_pc => OTH_ETC_RAWCOST_PC(l_index2)
15366 ,x_brdncost_pc => OTH_ETC_COST_PC(l_index2)
15367 ,x_rawcost_fc => OTH_ETC_RAWCOST_FC(l_index2)
15368 ,x_brdncost_fc => OTH_ETC_COST_FC(l_index2)
15369 ,x_return_status => x_return_status
15370 ,x_msg_count => x_msg_count
15371 ,x_msg_data => x_msg_data);
15372 if (x_return_status <> 'S') then
15373 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15374 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15375 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15376 -- Added for bug 5526638
15377 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15378 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15379 raise l_no_rate_exception;
15380 end if;
15381 actual_finish_date(l_index2) := to_date(null);
15382 else
15383 oth_etc_qty(l_index2) := 0;
15384 OTH_ETC_COST_TC(l_index2) := 0;
15385 OTH_ETC_RAWCOST_TC(l_index2) := 0;
15386 OTH_ETC_COST_FC(l_index2) := 0;
15387 OTH_ETC_RAWCOST_FC(l_index2) := 0;
15388 OTH_ETC_COST_PC(l_index2) := 0;
15389 OTH_ETC_RAWCOST_PC(l_index2) := 0;
15390 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
15391 end if;
15392 -- here insert in PJI temp table for ETC
15393 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15394 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15395 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15396 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15397 if (l_plan_type = 'P') then
15398 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15399 elsif (l_plan_type = 'G') then
15400 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15401 else
15402 ETC_PERIOD_NAME(l_index_etc) := null;
15403 end if;
15404 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15405 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15406 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15407 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15408 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15409 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15410 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15411 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15412 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
15413 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
15414 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
15415 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
15416 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
15417 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
15418 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
15419 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15420 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15421 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15422 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15423 end if;
15424 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);
15425 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);
15426 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);
15427 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);
15428 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);
15429 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);
15430 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);
15431 ESTIMATED_REMAINING_EFFORT(l_index2) := to_number(null);
15432 PPL_ETC_COST_TC(l_index2) := to_number(null);
15433 PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
15434 PPL_ETC_COST_PC(l_index2) := to_number(null);
15435 PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
15436 PPL_ETC_COST_FC(l_index2) := to_number(null);
15437 PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
15438 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
15439 ---5726773
15440 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));
15441 if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
15442 pa_progress_utils.get_plan_costs_for_qty
15443 ( p_resource_list_mem_id => l_object_id
15444 ,p_project_id => l_project_id
15445 ,p_task_id => all_objects_in_temp_rec.project_element_id
15446 ,p_as_of_date => l_temp_as_of_date
15447 ,p_structure_version_id => l_latest_wp_struct_ver_id
15448 ,p_txn_currency_code => l_txn_curr_code
15449 ,p_rate_based_flag => l_rate_based_flag
15450 ,p_quantity => ESTIMATED_REMAINING_EFFORT(l_index2)
15451 ,p_budget_version_id => l_plan_version_id --4372462
15452 ,p_res_assignment_id => l_res_assignment_id
15453 ,x_rawcost_tc => PPL_ETC_RAWCOST_TC(l_index2)
15454 ,x_brdncost_tc => PPL_ETC_COST_TC(l_index2)
15455 ,x_rawcost_pc => PPL_ETC_RAWCOST_PC(l_index2)
15456 ,x_brdncost_pc => PPL_ETC_COST_PC(l_index2)
15457 ,x_rawcost_fc => PPL_ETC_RAWCOST_FC(l_index2)
15458 ,x_brdncost_fc => PPL_ETC_COST_FC(l_index2)
15459 ,x_return_status => x_return_status
15460 ,x_msg_count => x_msg_count
15461 ,x_msg_data => x_msg_data);
15462 if (x_return_status <> 'S') then
15463 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15464 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15465 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15466 -- Added for bug 5526638
15467 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15468 ' , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15469 raise l_no_rate_exception;
15470 end if;
15471 actual_finish_date(l_index2) := to_date(null);
15472 else
15473 ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
15474 PPL_ETC_COST_TC(l_index2) := 0;
15475 PPL_ETC_RAWCOST_TC(l_index2) := 0;
15476 PPL_ETC_COST_PC(l_index2) := 0;
15477 PPL_ETC_RAWCOST_PC(l_index2) := 0;
15478 PPL_ETC_COST_FC(l_index2) := 0;
15479 PPL_ETC_RAWCOST_FC(l_index2) := 0;
15480 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
15481 end if;
15482 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15483 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15484 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15485 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15486 if (l_plan_type = 'P') then
15487 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15488 elsif (l_plan_type = 'G') then
15489 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15490 else
15491 ETC_PERIOD_NAME(l_index_etc) := null;
15492 end if;
15493 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15494 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15495 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15496 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15497 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15498 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15499 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15500 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15501 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
15502 ETC_TXN_BURDENED_COST(l_index_etc) := PPL_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
15503 ETC_PRJ_BURDENED_COST(l_index_etc) := PPL_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
15504 ETC_PFC_BURDENED_COST(l_index_etc) := PPL_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
15505 ETC_TXN_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
15506 ETC_PRJ_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
15507 ETC_PFC_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
15508 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15509 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15510 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15511 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15512 end if;
15513 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);
15514 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);
15515 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);
15516 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);
15517 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);
15518 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);
15519 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);
15520 EQPMT_ETC_EFFORT(l_index2) := to_number(null);
15521 EQPMT_ETC_COST_TC(l_index2) := to_number(null);
15522 EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
15523 EQPMT_ETC_COST_PC(l_index2) := to_number(null);
15524 EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
15525 EQPMT_ETC_COST_FC(l_index2) := to_number(null);
15526 EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
15527 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
15528 ---5726773
15529 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));
15530 if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
15531 pa_progress_utils.get_plan_costs_for_qty
15532 ( p_resource_list_mem_id => l_object_id
15533 ,p_project_id => l_project_id
15534 ,p_task_id => all_objects_in_temp_rec.project_element_id
15535 ,p_as_of_date => l_temp_as_of_date
15536 ,p_structure_version_id => l_latest_wp_struct_ver_id
15537 ,p_txn_currency_code => l_txn_curr_code
15538 ,p_rate_based_flag => l_rate_based_flag
15539 ,p_quantity => EQPMT_ETC_EFFORT(l_index2)
15540 ,p_budget_version_id => l_plan_version_id --4372462
15541 ,p_res_assignment_id => l_res_assignment_id
15542 ,x_rawcost_tc => EQPMT_ETC_RAWCOST_TC(l_index2)
15543 ,x_brdncost_tc => EQPMT_ETC_COST_TC(l_index2)
15544 ,x_rawcost_pc => EQPMT_ETC_RAWCOST_PC(l_index2)
15545 ,x_brdncost_pc => EQPMT_ETC_COST_PC(l_index2)
15546 ,x_rawcost_fc => EQPMT_ETC_RAWCOST_FC(l_index2)
15547 ,x_brdncost_fc => EQPMT_ETC_COST_FC(l_index2)
15548 ,x_return_status => x_return_status
15549 ,x_msg_count => x_msg_count
15550 ,x_msg_data => x_msg_data);
15551 if (x_return_status <> 'S') then
15552 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15553 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15554 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15555 -- Added for bug 5526638
15556 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15557 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15558 raise l_no_rate_exception;
15559 end if;
15560 actual_finish_date(l_index2) := to_date(null);
15561 else
15562 EQPMT_ETC_EFFORT(l_index2) := 0;
15563 EQPMT_ETC_COST_TC(l_index2) := 0;
15564 EQPMT_ETC_RAWCOST_TC(l_index2) := 0;
15565 EQPMT_ETC_COST_PC(l_index2) := 0;
15566 EQPMT_ETC_RAWCOST_PC(l_index2) := 0;
15567 EQPMT_ETC_COST_FC(l_index2) := 0;
15568 EQPMT_ETC_RAWCOST_FC(l_index2) := 0;
15569 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
15570 end if;
15571 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15572 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15573 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15574 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15575 if (l_plan_type = 'P') then
15576 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15577 elsif (l_plan_type = 'G') then
15578 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15579 else
15580 ETC_PERIOD_NAME(l_index_etc) := null;
15581 end if;
15582 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15583 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15584 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15585 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15586 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15587 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15588 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15589 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15590 ETC_QUANTITY(l_index_etc) := EQPMT_ETC_EFFORT(l_index2) - l_asgn_plan_quantity;
15591 ETC_TXN_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
15592 ETC_PRJ_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
15593 ETC_PFC_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
15594 ETC_TXN_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
15595 ETC_PRJ_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
15596 ETC_PFC_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
15597 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15598 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15599 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15600 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15601 end if;
15602 --- if task is lowest and flag for calc PC and EV is true then
15603 --- 5726773 changed > 0 condition to <> 0
15604 if (l_base_pc_deriv_code = 'EFFORT' and l_planned_eff <> 0) then
15605 -- Bug 3830673 : Calculate % Complete, multiplication with 100 was missing
15606 l_percent_comp := (ppl_act_effort_to_date(l_index2)/l_planned_eff)*100;
15607 if (l_percent_comp > 100) then
15608 l_percent_comp := 100;
15609 elsif (l_percent_comp < 0) then
15610 l_percent_comp := 0;
15611 end if;
15612 l_earned_val := l_percent_comp * l_planned_eff;
15613 elsif (l_base_pc_deriv_code = 'COST' and l_planned_cost <> 0) then
15614 l_percent_comp := (ppl_act_cost_to_date_pc(l_index2)/l_planned_cost)*100;
15615 if (l_percent_comp > 100) then
15616 l_percent_comp := 100;
15617 elsif (l_percent_comp < 0) then
15618 l_percent_comp := 0;
15619 end if;
15620 l_earned_val := l_percent_comp * l_planned_cost;
15621 else
15622 l_percent_comp := to_number(null);
15623 l_earned_val := to_number(null);
15624 end if;
15625 completed_percentage(l_index2) := to_number(null);
15626 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_percent_comp;
15627 earned_value(l_index2) := l_earned_val;
15628 TASK_WT_BASIS_CODE(l_index2) := null;
15629 SUBPRJ_PPL_ACT_EFFORT(l_index2) := to_number(null);
15630 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := to_number(null);
15631 SUBPRJ_PPL_ETC_EFFORT(l_index2) := to_number(null);
15632 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := to_number(null);
15633 SUBPRJ_OTH_ACT_COST_TO_DATE_TC(l_index2) := to_number(null);
15634 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC(l_index2) := to_number(null);
15635 SUBPRJ_OTH_ACT_COST_TO_DATE_FC(l_index2) := to_number(null);
15636 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC(l_index2) := to_number(null);
15637 SUBPRJ_OTH_ACT_COST_TO_DATE_PC(l_index2) := to_number(null);
15638 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC(l_index2) := to_number(null);
15639 SUBPRJ_PPL_ACT_COST_TC(l_index2) := to_number(null);
15640 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := to_number(null);
15641 SUBPRJ_PPL_ACT_COST_FC(l_index2) := to_number(null);
15642 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := to_number(null);
15643 SUBPRJ_PPL_ACT_COST_PC(l_index2) := to_number(null);
15644 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := to_number(null);
15645 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := to_number(null);
15646 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := to_number(null);
15647 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := to_number(null);
15648 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := to_number(null);
15649 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := to_number(null);
15650 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := to_number(null);
15651 SUBPRJ_OTH_ETC_COST_TC(l_index2) := to_number(null);
15652 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
15653 SUBPRJ_OTH_ETC_COST_FC(l_index2) := to_number(null);
15654 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
15655 SUBPRJ_OTH_ETC_COST_PC(l_index2) := to_number(null);
15656 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
15657 SUBPRJ_PPL_ETC_COST_TC(l_index2) := to_number(null);
15658 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
15659 SUBPRJ_PPL_ETC_COST_FC(l_index2) := to_number(null);
15660 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
15661 SUBPRJ_PPL_ETC_COST_PC(l_index2) := to_number(null);
15662 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
15663 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := to_number(null);
15664 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
15665 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := to_number(null);
15666 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
15667 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := to_number(null);
15668 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
15669 SUBPRJ_EARNED_VALUE(l_index2) := to_number(null);
15670 PROJFUNC_COST_RATE_TYPE(l_index2) := null;
15671 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := to_number(null);
15672 PROJFUNC_COST_RATE_DATE(l_index2) := to_date(null);
15673 PROJ_COST_RATE_TYPE(l_index2) := null;
15674 PROJ_COST_EXCHANGE_RATE(l_index2) := to_number(null);
15675 PROJ_COST_RATE_DATE(l_index2) := to_date(null);
15676 TXN_CURRENCY_CODE(l_index2) := l_txn_curr_code;
15677 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
15678 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
15679 --- here we check if future rollup records exist. if they do current_flag
15680 --- should be 'N' else 'Y'
15681 open future_rollup_recs;
15682 fetch future_rollup_recs into l_future_rollup_recs;
15683 if future_rollup_recs%found then
15684 CURRENT_FLAG(l_index2) := 'N';
15685 else
15686 CURRENT_FLAG(l_index2) := 'Y';
15687 end if;
15688 close future_rollup_recs;
15689 l_index2 := l_temp_index2;
15690 else
15691 if (l_db_case = '2') then
15692 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15693 u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
15694 u_object_version_id(l_index3) := l_object_version_id;
15695 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);
15696 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);
15697 if (l_object_Type = 'PA_ASSIGNMENTS') then
15698 if (l_rate_based_flag = 'N') then
15699 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)));
15700 else
15701 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);
15702 end if;
15703 end if;
15704 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)));
15705 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)));
15706 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)
15707 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
15708 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)
15709 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
15710 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)
15711 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
15712 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) +
15713 nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
15714 u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
15715 u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
15716 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15717 u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
15718 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15719 u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
15720 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15721 if (l_object_type = 'PA_ASSIGNMENTS' and
15722 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS')) then
15723 ---5726773
15724 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
15725 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));
15726 if (u_oth_etc_qty(l_index3) <> 0) then
15727 pa_progress_utils.get_plan_costs_for_qty
15728 ( p_resource_list_mem_id => l_object_id
15729 ,p_project_id => l_project_id
15730 ,p_task_id => all_objects_in_temp_rec.project_element_id
15731 ,p_as_of_date => l_temp_as_of_date
15732 ,p_structure_version_id => l_latest_wp_struct_ver_id
15733 ,p_txn_currency_code => l_txn_curr_code
15734 ,p_rate_based_flag => l_rate_based_flag
15735 ,p_quantity => u_oth_etc_qty(l_index3)
15736 ,p_budget_version_id => l_plan_version_id --4372462
15737 ,p_res_assignment_id => l_res_assignment_id
15738 ,x_rawcost_tc => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
15739 ,x_brdncost_tc => u_OTH_ETC_COST_to_date_TC(l_index3)
15740 ,x_rawcost_pc => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
15741 ,x_brdncost_pc => u_OTH_ETC_COST_to_date_PC(l_index3)
15742 ,x_rawcost_fc => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
15743 ,x_brdncost_fc => u_OTH_ETC_COST_to_date_FC(l_index3)
15744 ,x_return_status => x_return_status
15745 ,x_msg_count => x_msg_count
15746 ,x_msg_data => x_msg_data);
15747 if (x_return_status <> 'S') then
15748 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15749 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15750 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15751 -- Added for bug 5526638
15752 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15753 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15754 raise l_no_rate_exception;
15755 end if;
15756 u_actual_finish_date(l_index3) := to_date(null);
15757 else
15758 u_oth_etc_qty(l_index3) := 0;
15759 u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
15760 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15761 u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
15762 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15763 u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
15764 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15765 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15766 end if;
15767 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15768 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15769 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15770 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15771 if (l_plan_type = 'P') then
15772 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15773 elsif (l_plan_type = 'G') then
15774 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15775 else
15776 ETC_PERIOD_NAME(l_index_etc) := null;
15777 end if;
15778 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15779 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15780 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15781 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15782 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15783 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15784 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15785 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15786 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15787 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15788 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15789 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15790 -- here if extraction type is FULL we pass to_date values otherwise
15791 -- incremental values only
15792 if (p_extraction_type = 'FULL') then
15793 ---5726773 ETC_QUANTITY(l_index_etc) := -u_oth_qty(l_index3);
15794 ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_asgn_plan_quantity;
15795 ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
15796 ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
15797 ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
15798 ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
15799 ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
15800 ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
15801 else
15802 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
15803 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
15804 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
15805 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
15806 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
15807 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15808 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15809 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15810 else
15811 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_quantity_to_date - u_oth_qty(l_index3);
15812 ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_rollup_rec_asofdate.oth_etc_quantity;
15813 ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_tc;
15814 ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_pc;
15815 ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_fc;
15816 ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15817 ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15818 ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15819 end if;
15820 end if;
15821 else
15822 u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
15823 u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
15824 u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15825 u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
15826 u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15827 u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
15828 u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15829 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15830 if (p_extraction_type = 'FULL') then
15831 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15832 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15833 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15834 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15835 if (l_plan_type = 'P') then
15836 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15837 elsif (l_plan_type = 'G') then
15838 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15839 else
15840 ETC_PERIOD_NAME(l_index_etc) := null;
15841 end if;
15842 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15843 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15844 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15845 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15846 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15847 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15848 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15849 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15850 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15851 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15852 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15853 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15854 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
15855 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
15856 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
15857 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
15858 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
15859 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
15860 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
15861 else
15862 l_index_etc := l_index_etc - 1;
15863 end if;
15864 end if;
15865 end if;
15866 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);
15867 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);
15868 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);
15869 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);
15870 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);
15871 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);
15872 u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
15873 u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
15874 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15875 u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
15876 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15877 u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
15878 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15879 if l_object_type = 'PA_ASSIGNMENTS' and
15880 l_res_class_code = 'PEOPLE' then
15881 ---5726773
15882 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
15883 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));
15884 if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
15885 pa_progress_utils.get_plan_costs_for_qty
15886 (p_resource_list_mem_id => l_object_id
15887 ,p_project_id => l_project_id
15888 ,p_task_id => all_objects_in_temp_rec.project_element_id
15889 ,p_as_of_date => l_temp_as_of_date
15890 ,p_structure_version_id => l_latest_wp_struct_ver_id
15891 ,p_txn_currency_code => l_txn_curr_code
15892 ,p_rate_based_flag => l_rate_based_flag
15893 ,p_quantity => u_ppl_etc_effort_to_date(l_index3)
15894 ,p_budget_version_id => l_plan_version_id --4372462
15895 ,p_res_assignment_id => l_res_assignment_id
15896 ,x_rawcost_tc => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
15897 ,x_brdncost_tc => u_ppl_ETC_COST_to_date_TC(l_index3)
15898 ,x_rawcost_pc => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
15899 ,x_brdncost_pc => u_ppl_ETC_COST_to_date_PC(l_index3)
15900 ,x_rawcost_fc => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
15901 ,x_brdncost_fc => u_ppl_ETC_COST_to_date_FC(l_index3)
15902 ,x_return_status => x_return_status
15903 ,x_msg_count => x_msg_count
15904 ,x_msg_data => x_msg_data);
15905 if (x_return_status <> 'S') then
15906 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15907 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15908 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15909 -- Added for bug 5526638
15910 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15911 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15912 raise l_no_rate_exception;
15913 end if;
15914 u_actual_finish_date(l_index3) := to_date(null);
15915 else
15916 u_ppl_etc_effort_to_date(l_index3) := 0;
15917 u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
15918 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15919 u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
15920 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15921 u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
15922 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15923 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15924 end if;
15925 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15926 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15927 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15928 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15929 if (l_plan_type = 'P') then
15930 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15931 elsif (l_plan_type = 'G') then
15932 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15933 else
15934 ETC_PERIOD_NAME(l_index_etc) := null;
15935 end if;
15936 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
15937 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
15938 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
15939 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
15940 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
15941 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
15942 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
15943 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
15944 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
15945 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
15946 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
15947 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
15948 -- here if extraction type is FULL we pass to_date values otherwise
15949 -- incremental values only
15950 if (p_extraction_type = 'FULL') then
15951 ---5726773 ETC_QUANTITY(l_index_etc) := -u_ppl_act_effort_to_date(l_index3);
15952 ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
15953 ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
15954 ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
15955 ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
15956 ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
15957 ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
15958 ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
15959 else
15960 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
15961 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
15962 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
15963 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
15964 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
15965 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15966 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15967 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15968 else
15969 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - u_ppl_act_effort_to_date(l_index3);
15970 ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.estimated_remaining_effort;
15971 ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
15972 ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
15973 ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
15974 ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15975 ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15976 ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15977 end if;
15978 end if;
15979 else
15980 u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
15981 u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
15982 u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15983 u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
15984 u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15985 u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
15986 u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15987 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15988 if (p_extraction_type = 'FULL') then
15989 ETC_PROJECT_ID(l_index_etc) := l_project_id;
15990 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
15991 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
15992 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
15993 if (l_plan_type = 'P') then
15994 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
15995 elsif (l_plan_type = 'G') then
15996 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
15997 else
15998 ETC_PERIOD_NAME(l_index_etc) := null;
15999 end if;
16000 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16001 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16002 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16003 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16004 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16005 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16006 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16007 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16008 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16009 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16010 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16011 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16012 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
16013 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16014 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16015 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16016 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16017 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16018 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16019 else
16020 l_index_etc := l_index_etc - 1;
16021 end if;
16022 end if;
16023 end if;
16024 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);
16025 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);
16026 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);
16027 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);
16028 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);
16029 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);
16030 u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
16031 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16032 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16033 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16034 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16035 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16036 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16037 if l_object_type = 'PA_ASSIGNMENTS' and
16038 l_res_class_code = 'EQUIPMENT' then
16039 ---5726773
16040 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
16041 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));
16042 if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
16043 pa_progress_utils.get_plan_costs_for_qty
16044 (p_resource_list_mem_id => l_object_id
16045 ,p_project_id => l_project_id
16046 ,p_task_id => all_objects_in_temp_rec.project_element_id
16047 ,p_as_of_date => l_temp_as_of_date
16048 ,p_structure_version_id => l_latest_wp_struct_ver_id
16049 ,p_txn_currency_code => l_txn_curr_code
16050 ,p_rate_based_flag => l_rate_based_flag
16051 ,p_quantity => u_eqpmt_etc_effort_to_date(l_index3)
16052 ,p_budget_version_id => l_plan_version_id --4372462
16053 ,p_res_assignment_id => l_res_assignment_id
16054 ,x_rawcost_tc => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
16055 ,x_brdncost_tc => u_eqpmt_ETC_COST_to_date_TC(l_index3)
16056 ,x_rawcost_pc => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
16057 ,x_brdncost_pc => u_eqpmt_ETC_COST_to_date_PC(l_index3)
16058 ,x_rawcost_fc => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
16059 ,x_brdncost_fc => u_eqpmt_ETC_COST_to_date_FC(l_index3)
16060 ,x_return_status => x_return_status
16061 ,x_msg_count => x_msg_count
16062 ,x_msg_data => x_msg_data);
16063 if (x_return_status <> 'S') then
16064 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16065 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16066 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16067 -- Added for bug 5526638
16068 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16069 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16070 raise l_no_rate_exception;
16071 end if;
16072 u_actual_finish_date(l_index3) := to_date(null);
16073 else
16074 u_eqpmt_etc_effort_to_date(l_index3) := 0;
16075 u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
16076 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
16077 u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
16078 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
16079 u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
16080 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
16081 u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
16082 end if;
16083 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16084 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16085 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16086 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16087 if (l_plan_type = 'P') then
16088 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16089 elsif (l_plan_type = 'G') then
16090 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16091 else
16092 ETC_PERIOD_NAME(l_index_etc) := null;
16093 end if;
16094 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16095 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16096 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16097 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16098 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16099 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16100 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16101 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16102 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16103 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16104 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16105 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16106 -- here if extraction type is FULL we pass to_date values otherwise
16107 -- incremental values only
16108 if (p_extraction_type = 'FULL') then
16109 ---5726773 ETC_QUANTITY(l_index_etc) := -u_eqpmt_act_effort_to_date(l_index3);
16110 ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
16111 ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
16112 ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
16113 ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
16114 ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
16115 ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
16116 ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
16117 else
16118 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
16119 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
16120 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16121 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16122 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16123 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16124 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16125 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16126 else
16127 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - u_eqpmt_act_effort_to_date(l_index3);
16128 ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_effort;
16129 ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16130 ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16131 ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16132 ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16133 ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16134 ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16135 end if;
16136 end if;
16137 else
16138 u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
16139 u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16140 u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16141 u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16142 u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16143 u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16144 u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16145 u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16146 if (p_extraction_type = 'FULL') then
16147 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16148 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16149 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16150 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16151 if (l_plan_type = 'P') then
16152 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16153 elsif (l_plan_type = 'G') then
16154 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16155 else
16156 ETC_PERIOD_NAME(l_index_etc) := null;
16157 end if;
16158 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16159 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16160 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16161 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16162 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16163 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16164 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16165 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16166 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16167 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16168 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16169 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16170 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
16171 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16172 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16173 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16174 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16175 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16176 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16177 else
16178 l_index_etc := l_index_etc - 1;
16179 end if;
16180 end if;
16181 end if;
16182 --- here we need to calc PC and EV
16183 --- 5726773
16184 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
16185 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;
16186 if (l_percent_comp > 100) then
16187 l_percent_comp := 100;
16188 elsif (l_percent_comp < 0) then
16189 l_percent_comp := 0;
16190 end if;
16191 l_eff_rollup_pc := l_percent_comp;
16192 l_earned_val := l_percent_comp * l_planned_eff;
16193 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COST based
16194 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;
16195 if (l_percent_comp > 100) then
16196 l_percent_comp := 100;
16197 elsif (l_percent_comp < 0) then
16198 l_percent_comp := 0;
16199 end if;
16200 l_eff_rollup_pc := l_percent_comp;
16201 l_earned_val := l_percent_comp * l_planned_cost;
16202 else
16203 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
16204 l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
16205 l_earned_val := l_rollup_rec_asofdate.earned_value;
16206 end if;
16207 u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
16208 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
16209 u_earned_val(l_index3) := l_earned_val;
16210
16211 elsif (l_db_case = '3') then
16212 --- get progress attrs for the task/assignment
16213
16214 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
16215 percent_complete_id(l_index2) := to_number(null);
16216 project_id(l_index2) := l_project_id;
16217 object_id(l_index2) := l_object_id;
16218 OBJECT_TYPE(l_index2) := l_rollup_rec_asofdate.object_Type;
16219 as_of_Date(l_index2) := l_temp_as_of_date;
16220 object_version_id(l_index2) := l_object_version_id;
16221 LAST_UPDATE_DATE(l_index2) := sysdate;
16222 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
16223 CREATION_DATE(l_index2) := sysdate;
16224 CREATED_BY(l_index2) := fnd_global.user_id;
16225 PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.progress_status_code;
16226 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
16227 INCREMENTAL_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.INCREMENTAL_WORK_QUANTITY;
16228 CUMULATIVE_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.CUMULATIVE_WORK_QUANTITY;
16229 base_percent_complete(l_index2) := l_rollup_rec_asofdate.base_percent_complete;
16230 ESTIMATED_START_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_START_DATE;
16231 ESTIMATED_FINISH_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_FINISH_DATE;
16232 actual_start_date(l_index2) := l_rollup_rec_asofdate.actual_start_date;
16233 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
16234 RECORD_VERSION_NUMBER(l_index2) := 1;
16235 base_percent_comp_deriv_code(l_index2) := l_rollup_rec_asofdate.base_percent_comp_deriv_code;
16236 BASE_PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.BASE_PROGRESS_STATUS_CODE;
16237 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := l_rollup_rec_asofdate.EFF_ROLLUP_PROG_STAT_CODE;
16238 STRUCTURE_TYPE(l_index2) := l_rollup_rec_asofdate.STRUCTURE_TYPE;
16239 PROJ_ELEMENT_ID(l_index2) := l_rollup_rec_asofdate.PROJ_ELEMENT_ID;
16240 STRUCTURE_VERSION_ID(l_index2) := l_rollup_rec_asofdate.STRUCTURE_VERSION_ID;
16241 if (l_object_Type = 'PA_ASSIGNMENTS') then
16242 if (l_rate_based_flag = 'N') then
16243 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)));
16244 else
16245 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);
16246 end if;
16247 -- Bug 6917961
16248 if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
16249 and actual_finish_date(l_index2) is null) then
16250 l_prog_enable_flag := 'N';
16251 l_prog_stat_code := null;
16252 OPEN cur_prog_setup(l_rollup_rec_asofdate.PROJ_ELEMENT_ID,l_project_id);
16253 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
16254 CLOSE cur_prog_setup;
16255 if (l_prog_enable_flag = 'Y') then
16256 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
16257 end if;
16258 end if;
16259 -- Bug 6917961
16260 end if;
16261 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)));
16262 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)));
16263 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)
16264 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
16265 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)
16266 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
16267 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)
16268 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
16269 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)
16270 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
16271 oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
16272 OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
16273 OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
16274 OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
16275 OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
16276 OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
16277 OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
16278 if l_object_type = 'PA_ASSIGNMENTS' and
16279 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
16280 ---5726773
16281 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
16282 oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
16283 if (oth_etc_qty(l_index2) <> 0) then
16284 pa_progress_utils.get_plan_costs_for_qty
16285 ( p_resource_list_mem_id => l_object_id
16286 ,p_project_id => l_project_id
16287 ,p_task_id => all_objects_in_temp_rec.project_element_id
16288 ,p_as_of_date => l_temp_as_of_date
16289 ,p_structure_version_id => l_latest_wp_struct_ver_id
16290 ,p_txn_currency_code => l_txn_curr_code
16291 ,p_rate_based_flag => l_rate_based_flag
16292 ,p_quantity => oth_etc_qty(l_index2)
16293 ,p_budget_version_id => l_plan_version_id --4372462
16294 ,p_res_assignment_id => l_res_assignment_id
16295 ,x_rawcost_tc => OTH_ETC_RAWCOST_TC(l_index2)
16296 ,x_brdncost_tc => OTH_ETC_COST_TC(l_index2)
16297 ,x_rawcost_pc => OTH_ETC_RAWCOST_PC(l_index2)
16298 ,x_brdncost_pc => OTH_ETC_COST_PC(l_index2)
16299 ,x_rawcost_fc => OTH_ETC_RAWCOST_FC(l_index2)
16300 ,x_brdncost_fc => OTH_ETC_COST_FC(l_index2)
16301 ,x_return_status => x_return_status
16302 ,x_msg_count => x_msg_count
16303 ,x_msg_data => x_msg_data);
16304 if (x_return_status <> 'S') then
16305 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16306 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16307 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16308 -- Added for bug 5526638
16309 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16310 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16311 raise l_no_rate_exception;
16312 end if;
16313 actual_finish_date(l_index2) := to_date(null);
16314 else
16315 oth_etc_qty(l_index2) := 0;
16316 OTH_ETC_COST_TC(l_index2) := 0;
16317 OTH_ETC_RAWCOST_TC(l_index2) := 0;
16318 OTH_ETC_COST_FC(l_index2) := 0;
16319 OTH_ETC_RAWCOST_FC(l_index2) := 0;
16320 OTH_ETC_COST_PC(l_index2) := 0;
16321 OTH_ETC_RAWCOST_PC(l_index2) := 0;
16322 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16323 end if;
16324 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16325 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16326 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16327 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16328 if (l_plan_type = 'P') then
16329 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16330 elsif (l_plan_type = 'G') then
16331 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16332 else
16333 ETC_PERIOD_NAME(l_index_etc) := null;
16334 end if;
16335 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16336 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16337 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16338 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16339 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16340 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16341 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16342 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16343 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16344 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16345 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16346 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16347 -- here if extraction type is FULL we pass to_date values otherwise
16348 -- incremental values only
16349 if (p_extraction_type = 'FULL') then
16350 --- 5726773 ETC_QUANTITY(l_index_etc) := -oth_qty(l_index2);
16351 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
16352 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16353 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16354 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16355 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16356 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
16357 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
16358 else
16359 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
16360 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
16361 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
16362 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
16363 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
16364 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16365 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16366 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16367 else
16368 ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_rollup_rec_asofdate.oth_etc_quantity;
16369 ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_tc;
16370 ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_pc;
16371 ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_fc;
16372 ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16373 ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16374 ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16375 end if;
16376 end if;
16377 else
16378 oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
16379 OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
16380 OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
16381 OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
16382 OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
16383 OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
16384 OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
16385 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
16386 if (p_extraction_type = 'FULL') then
16387 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16388 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16389 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16390 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16391 if (l_plan_type = 'P') then
16392 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16393 elsif (l_plan_type = 'G') then
16394 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16395 else
16396 ETC_PERIOD_NAME(l_index_etc) := null;
16397 end if;
16398 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16399 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16400 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16401 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16402 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16403 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16404 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16405 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16406 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16407 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16408 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16409 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16410 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
16411 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16412 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16413 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16414 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16415 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16416 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16417 else
16418 l_index_etc := l_index_etc - 1;
16419 end if;
16420 end if;
16421 end if;
16422 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);
16423 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);
16424 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);
16425 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);
16426 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);
16427 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);
16428 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);
16429 ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
16430 PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
16431 PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
16432 PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
16433 PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
16434 PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
16435 PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
16436 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
16437 ---5726773
16438 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
16439 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));
16440 if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
16441 pa_progress_utils.get_plan_costs_for_qty
16442 ( p_resource_list_mem_id => l_object_id
16443 ,p_project_id => l_project_id
16444 ,p_task_id => all_objects_in_temp_rec.project_element_id
16445 ,p_as_of_date => l_temp_as_of_date
16446 ,p_structure_version_id => l_latest_wp_struct_ver_id
16447 ,p_txn_currency_code => l_txn_curr_code
16448 ,p_rate_based_flag => l_rate_based_flag
16449 ,p_quantity => ESTIMATED_REMAINING_EFFORT(l_index2)
16450 ,p_budget_version_id => l_plan_version_id --4372462
16451 ,p_res_assignment_id => l_res_assignment_id
16452 ,x_rawcost_tc => PPL_ETC_RAWCOST_TC(l_index2)
16453 ,x_brdncost_tc => PPL_ETC_COST_TC(l_index2)
16454 ,x_rawcost_pc => PPL_ETC_RAWCOST_PC(l_index2)
16455 ,x_brdncost_pc => PPL_ETC_COST_PC(l_index2)
16456 ,x_rawcost_fc => PPL_ETC_RAWCOST_FC(l_index2)
16457 ,x_brdncost_fc => PPL_ETC_COST_FC(l_index2)
16458 ,x_return_status => x_return_status
16459 ,x_msg_count => x_msg_count
16460 ,x_msg_data => x_msg_data);
16461 if (x_return_status <> 'S') then
16462 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16463 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16464 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16465 -- Added for bug 5526638
16466 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16467 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr :'||l_txn_curr_code;
16468 raise l_no_rate_exception;
16469 end if;
16470 actual_finish_date(l_index2) := to_date(null);
16471 else
16472 ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
16473 PPL_ETC_COST_TC(l_index2) := 0;
16474 PPL_ETC_RAWCOST_TC(l_index2) := 0;
16475 PPL_ETC_COST_PC(l_index2) := 0;
16476 PPL_ETC_RAWCOST_PC(l_index2) := 0;
16477 PPL_ETC_COST_FC(l_index2) := 0;
16478 PPL_ETC_RAWCOST_FC(l_index2) := 0;
16479 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16480 end if;
16481 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16482 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16483 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16484 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16485 if (l_plan_type = 'P') then
16486 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16487 elsif (l_plan_type = 'G') then
16488 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16489 else
16490 ETC_PERIOD_NAME(l_index_etc) := null;
16491 end if;
16492 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16493 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16494 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16495 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16496 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16497 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16498 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16499 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16500 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16501 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16502 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16503 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16504 -- here if extraction type is FULL we pass to_date values otherwise
16505 -- incremental values only
16506 if (p_extraction_type = 'FULL') then
16507 ---5726773 ETC_QUANTITY(l_index_etc) := -ppl_act_effort_to_date(l_index2);
16508 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
16509 ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16510 ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16511 ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16512 ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16513 ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
16514 ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
16515 else
16516 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
16517 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
16518 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
16519 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
16520 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
16521 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16522 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16523 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16524 else
16525 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - ppl_act_effort_to_date(l_index2);
16526 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_rollup_rec_asofdate.estimated_remaining_effort;
16527 ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
16528 ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
16529 ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
16530 ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16531 ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16532 ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16533 end if;
16534 end if;
16535 else
16536 ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
16537 PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
16538 PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
16539 PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
16540 PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
16541 PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
16542 PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
16543 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
16544 if (p_extraction_type = 'FULL') then
16545 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16546 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16547 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16548 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16549 if (l_plan_type = 'P') then
16550 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16551 elsif (l_plan_type = 'G') then
16552 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16553 else
16554 ETC_PERIOD_NAME(l_index_etc) := null;
16555 end if;
16556 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16557 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16558 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16559 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16560 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16561 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16562 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16563 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16564 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16565 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16566 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16567 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16568 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
16569 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16570 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16571 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16572 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16573 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16574 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16575 else
16576 l_index_etc := l_index_etc - 1;
16577 end if;
16578 end if;
16579 end if;
16580 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);
16581 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);
16582 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);
16583 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);
16584 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);
16585 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);
16586 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);
16587 EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
16588 EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
16589 EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
16590 EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
16591 EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
16592 EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
16593 EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
16594 if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
16595 ---5726773
16596 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
16597 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));
16598 if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
16599 pa_progress_utils.get_plan_costs_for_qty
16600 ( p_resource_list_mem_id => l_object_id
16601 ,p_project_id => l_project_id
16602 ,p_task_id => all_objects_in_temp_rec.project_element_id
16603 ,p_as_of_date => l_temp_as_of_date
16604 ,p_structure_version_id => l_latest_wp_struct_ver_id
16605 ,p_txn_currency_code => l_txn_curr_code
16606 ,p_rate_based_flag => l_rate_based_flag
16607 ,p_quantity => EQPMT_ETC_EFFORT(l_index2)
16608 ,p_budget_version_id => l_plan_version_id --4372462
16609 ,p_res_assignment_id => l_res_assignment_id
16610 ,x_rawcost_tc => EQPMT_ETC_RAWCOST_TC(l_index2)
16611 ,x_brdncost_tc => EQPMT_ETC_COST_TC(l_index2)
16612 ,x_rawcost_pc => EQPMT_ETC_RAWCOST_PC(l_index2)
16613 ,x_brdncost_pc => EQPMT_ETC_COST_PC(l_index2)
16614 ,x_rawcost_fc => EQPMT_ETC_RAWCOST_FC(l_index2)
16615 ,x_brdncost_fc => EQPMT_ETC_COST_FC(l_index2)
16616 ,x_return_status => x_return_status
16617 ,x_msg_count => x_msg_count
16618 ,x_msg_data => x_msg_data);
16619 if (x_return_status <> 'S') then
16620 pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16621 , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16622 , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16623 -- Added for bug 5526638
16624 l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16625 ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id :'||l_plan_version_id||' , Txn Curr :'||l_txn_curr_code;
16626 raise l_no_rate_exception;
16627 end if;
16628 actual_finish_date(l_index2) := to_date(null);
16629 else
16630 EQPMT_ETC_EFFORT(l_index2) := 0;
16631 eqpmt_ETC_COST_TC(l_index2) := 0;
16632 eqpmt_ETC_RAWCOST_TC(l_index2) := 0;
16633 eqpmt_ETC_COST_PC(l_index2) := 0;
16634 eqpmt_ETC_RAWCOST_PC(l_index2) := 0;
16635 eqpmt_ETC_COST_FC(l_index2) := 0;
16636 eqpmt_ETC_RAWCOST_FC(l_index2) := 0;
16637 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16638 end if;
16639 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16640 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16641 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16642 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16643 if (l_plan_type = 'P') then
16644 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16645 elsif (l_plan_type = 'G') then
16646 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16647 else
16648 ETC_PERIOD_NAME(l_index_etc) := null;
16649 end if;
16650 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16651 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16652 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16653 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16654 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16655 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16656 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16657 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16658 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16659 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16660 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16661 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16662 -- here if extraction type is FULL we pass to_date values otherwise
16663 -- incremental values only
16664 if (p_extraction_type = 'FULL') then
16665 ---5726773 ETC_QUANTITY(l_index_etc) := -eqpmt_act_effort_to_date(l_index2);
16666 ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_asgn_plan_quantity;
16667 ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16668 ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16669 ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16670 ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16671 ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
16672 ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
16673 else
16674 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
16675 ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
16676 ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16677 ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16678 ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16679 ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16680 ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16681 ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16682 else
16683 ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - eqpmt_act_effort_to_date(l_index2);
16684 ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_effort;
16685 ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16686 ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16687 ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16688 ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16689 ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16690 ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16691 end if;
16692 end if;
16693 else
16694 EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
16695 EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
16696 EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
16697 EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
16698 EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
16699 EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
16700 EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
16701 actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
16702 if (p_extraction_type = 'FULL') then
16703 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16704 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16705 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16706 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16707 if (l_plan_type = 'P') then
16708 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16709 elsif (l_plan_type = 'G') then
16710 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16711 else
16712 ETC_PERIOD_NAME(l_index_etc) := null;
16713 end if;
16714 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16715 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16716 ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16717 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16718 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16719 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16720 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16721 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16722 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16723 ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16724 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16725 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16726 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
16727 ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16728 ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16729 ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16730 ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16731 ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16732 ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16733 else
16734 l_index_etc := l_index_etc - 1;
16735 end if;
16736 end if;
16737 end if;
16738 --- here we need to calc PC and EV
16739 --- 5726773
16740 if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
16741 l_percent_comp := (ppl_act_effort_to_date(l_index2)/(ppl_act_effort_to_date(l_index2) + estimated_remaining_effort(l_index2)))*100;
16742 if (l_percent_comp > 100) then
16743 l_percent_comp := 100;
16744 elsif (l_percent_comp < 0) then
16745 l_percent_comp := 0;
16746 end if;
16747 l_earned_val := l_percent_comp * l_planned_eff;
16748 l_eff_rollup_pc := l_percent_comp;
16749 elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COST based
16750 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;
16751 if (l_percent_comp > 100) then
16752 l_percent_comp := 100;
16753 elsif (l_percent_comp < 0) then
16754 l_percent_comp := 0;
16755 end if;
16756 l_earned_val := l_percent_comp * l_planned_cost;
16757 l_eff_rollup_pc := l_percent_comp;
16758 else
16759 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
16760 l_earned_val := l_rollup_rec_asofdate.earned_value;
16761 l_eff_rollup_pc := l_rollup_rec_asofdate.EFF_ROLLUP_PERCENT_COMP;
16762 end if;
16763 completed_percentage(l_index2) := l_rollup_rec_asofdate.completed_percentage;
16764 EFF_ROLLUP_PERCENT_COMP(l_index2) := l_eff_rollup_pc;
16765 earned_value(l_index2) := l_earned_val;
16766 TASK_WT_BASIS_CODE(l_index2) := l_rollup_rec_asofdate.TASK_WT_BASIS_CODE;
16767 SUBPRJ_PPL_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_EFFORT;
16768 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_EFFORT;
16769 SUBPRJ_PPL_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_EFFORT;
16770 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_EFFORT;
16771 SUBPRJ_OTH_ACT_COST_TO_DATE_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DATE_TC;
16772 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DATE_TC;
16773 SUBPRJ_OTH_ACT_COST_TO_DATE_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DATE_FC;
16774 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DATE_FC;
16775 SUBPRJ_OTH_ACT_COST_TO_DATE_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DATE_PC;
16776 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DATE_PC;
16777 SUBPRJ_PPL_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_TC;
16778 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_TC;
16779 SUBPRJ_PPL_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_FC;
16780 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_FC;
16781 SUBPRJ_PPL_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_PC;
16782 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_PC;
16783 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_TC;
16784 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
16785 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_FC;
16786 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
16787 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_PC;
16788 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
16789 SUBPRJ_OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_TC;
16790 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_TC;
16791 SUBPRJ_OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_FC;
16792 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_FC;
16793 SUBPRJ_OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_PC;
16794 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_PC;
16795 SUBPRJ_PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_TC;
16796 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_TC;
16797 SUBPRJ_PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_FC;
16798 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_FC;
16799 SUBPRJ_PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_PC;
16800 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_PC;
16801 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_TC;
16802 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
16803 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_FC;
16804 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
16805 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_PC;
16806 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
16807 SUBPRJ_EARNED_VALUE(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EARNED_VALUE;
16808 CURRENT_FLAG(l_index2) := l_rollup_rec_asofdate.CURRENT_FLAG; -- if last rec is 'Y' this should be 'Y' else it should be 'N'
16809 if (l_rollup_rec_asofdate.CURRENT_FLAG = 'Y') then
16810 l_index4 := l_index4 + 1;
16811 u1_progress_rollup_id(l_index4) := l_rollup_rec_asofdate.PROGRESS_ROLLUP_ID;
16812 end if;
16813 PROJFUNC_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_TYPE;
16814 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_EXCHANGE_RATE;
16815 PROJFUNC_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_DATE;
16816 PROJ_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_TYPE;
16817 PROJ_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_EXCHANGE_RATE;
16818 PROJ_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_DATE;
16819 TXN_CURRENCY_CODE(l_index2) := l_rollup_rec_asofdate.TXN_CURRENCY_CODE;
16820 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
16821 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
16822 l_index2 := l_temp_index2;
16823 end if;
16824 end if;
16825 /*
16826 --- here just update the future rollup recs if exist.
16827 open future_rollup_recs;
16828 loop
16829 fetch future_rollup_recs into l_rollup_rec_asofdate;
16830 if future_rollup_recs%notfound then
16831 exit;
16832 else
16833 l_index3 := l_index3 + 1;
16834 if (l_planned_eff > 0 and l_base_pc_deriv_code = 'EFFORT') then
16835 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
16836 nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
16837 l_percent_comp := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)/l_planned_eff)*100;
16838 else
16839 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;
16840 end if;
16841 if (l_percent_comp > 100) then
16842 l_percent_comp := 100;
16843 elsif (l_percent_comp < 0) then
16844 l_percent_comp := 0;
16845 end if;
16846 l_earned_val := l_percent_comp * l_planned_eff;
16847 l_eff_rollup_pc := l_percent_comp;
16848 elsif (l_planned_cost > 0 and l_base_pc_deriv_code = 'COST') then -- COST based
16849 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
16850 nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
16851 l_percent_comp := (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)/l_planned_cost)*100;
16852 else
16853 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;
16854 end if;
16855 if (l_percent_comp > 100) then
16856 l_percent_comp := 100;
16857 elsif (l_percent_comp < 0) then
16858 l_percent_comp := 0;
16859 end if;
16860 l_earned_val := l_percent_comp * l_planned_cost;
16861 l_eff_rollup_pc := l_percent_comp;
16862 else
16863 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
16864 l_earned_val := l_rollup_rec_asofdate.earned_value;
16865 l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
16866 end if;
16867 u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
16868 u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
16869 u_earned_val(l_index3) := l_earned_val;
16870 u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
16871 u_object_version_id(l_index3) := l_object_version_id;
16872 u_ppl_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_labor_hrs;
16873 u_eqpmt_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_equip_hrs;
16874 if (l_object_Type = 'PA_ASSIGNMENTS') then
16875 if (l_rate_based_flag = 'N') then
16876 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);
16877 else
16878 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;
16879 end if;
16880 end if;
16881 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);
16882 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);
16883 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);
16884 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);
16885 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);
16886 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);
16887 u_ppl_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
16888 u_ppl_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_raw_cost;
16889 u_ppl_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_brdn_cost;
16890 u_ppl_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_raw_cost;
16891 u_ppl_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_brdn_cost;
16892 u_ppl_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_raw_cost;
16893 u_eqpmt_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
16894 u_eqpmt_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_raw_cost;
16895 u_eqpmt_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_brdn_cost;
16896 u_eqpmt_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_raw_cost;
16897 u_eqpmt_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_brdn_cost;
16898 u_eqpmt_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_raw_cost;
16899 end if;
16900 end loop;
16901 close future_rollup_recs;
16902 */
16903 l_last_projelemid := all_objects_in_temp_rec.project_element_id;
16904 l_last_res_list_mem_id := l_new_res_list_member_id; ---all_objects_in_temp_rec.res_list_member_id;
16905 l_last_object_Type := l_object_Type;
16906 l_last_period_flag := l_period_flag;
16907 end if; --- 33 ignore rec
16908
16909 end loop;
16910 pa_debug.log_message('GET_SUMM_ACT: Done looping thru all the records. Inserts = '||l_index2||' Updates = '||l_index3, 1);
16911
16912 IF g1_debug_mode = 'Y' THEN
16913 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
16914 x_Msg => 'Done with updating pl/sql tables for summarized actuals',
16915 x_Log_Level=> 3);
16916 END IF;
16917 --- here we check if any actuals are mapped to a different assignment
16918 --- from last time.
16919 if (p_plan_res_level = 'Y' and p_extraction_type = 'FULL') then
16920 for all_assignments_asofdate_rec in all_assignments_asofdate loop
16921 l_match_found := 'N';
16922 for l_index1 in 1..l_index3 loop
16923 if all_assignments_asofdate_rec.progress_rollup_id = u_progress_rollup_id(l_index1) then
16924 l_match_found := 'Y';
16925 exit;
16926 end if;
16927 end loop;
16928 if (l_match_found = 'N') then
16929 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)
16930 + 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
16931 l_index3 := l_index3 + 1;
16932 u_completed_percentage(l_index3) := to_number(null);
16933 u_eff_rollup_percent_comp(l_index3) := to_number(null);
16934 u_earned_val(l_index3) := to_number(null);
16935 u_actual_finish_date(l_index3) := to_date(null);
16936 u_progress_rollup_id(l_index3) := all_assignments_asofdate_rec.progress_rollup_id;
16937 u_object_version_id(l_index3) := all_assignments_asofdate_rec.object_version_id;
16938 u_ppl_act_effort_to_date(l_index3) := 0;
16939 u_eqpmt_act_effort_to_date(l_index3) := 0;
16940 u_oth_qty(l_index3) := 0;
16941 u_oth_act_cost_to_date_tc(l_index3) := 0;
16942 u_oth_act_rawcost_to_date_tc(l_index3) := 0;
16943 u_oth_act_cost_to_date_pc(l_index3) := 0;
16944 u_oth_act_rawcost_to_date_pc(l_index3) := 0;
16945 u_oth_act_cost_to_date_fc(l_index3) := 0;
16946 u_oth_act_rawcost_to_date_fc(l_index3) := 0;
16947 u_ppl_act_cost_to_date_tc(l_index3) := 0;
16948 u_ppl_act_rawcost_to_date_tc(l_index3) := 0;
16949 u_ppl_act_cost_to_date_pc(l_index3) := 0;
16950 u_ppl_act_rawcost_to_date_pc(l_index3) := 0;
16951 u_ppl_act_cost_to_date_fc(l_index3) := 0;
16952 u_ppl_act_rawcost_to_date_fc(l_index3) := 0;
16953 u_eqpmt_act_cost_to_date_tc(l_index3) := 0;
16954 u_eqpmt_act_rawcost_to_date_tc(l_index3) := 0;
16955 u_eqpmt_act_cost_to_date_pc(l_index3) := 0;
16956 u_eqpmt_act_rawcost_to_date_pc(l_index3) := 0;
16957 u_eqpmt_act_cost_to_date_fc(l_index3) := 0;
16958 u_eqpmt_act_rawcost_to_date_fc(l_index3) := 0;
16959 u_oth_etc_cost_to_date_tc(l_index3) := null;
16960 u_oth_etc_rawcost_to_date_tc(l_index3) := null;
16961 u_oth_etc_cost_to_date_pc(l_index3) := null;
16962 u_oth_etc_rawcost_to_date_pc(l_index3) := null;
16963 u_oth_etc_cost_to_date_fc(l_index3) := null;
16964 u_oth_etc_rawcost_to_date_fc(l_index3) := null;
16965 u_ppl_etc_cost_to_date_tc(l_index3) := null;
16966 u_ppl_etc_rawcost_to_date_tc(l_index3) := null;
16967 u_ppl_etc_cost_to_date_pc(l_index3) := null;
16968 u_ppl_etc_rawcost_to_date_pc(l_index3) := null;
16969 u_ppl_etc_cost_to_date_fc(l_index3) := null;
16970 u_ppl_etc_rawcost_to_date_fc(l_index3) := null;
16971 u_eqpmt_etc_cost_to_date_tc(l_index3) := null;
16972 u_eqpmt_etc_rawcost_to_date_tc(l_index3) := null;
16973 u_eqpmt_etc_cost_to_date_pc(l_index3) := null;
16974 u_eqpmt_etc_rawcost_to_date_pc(l_index3) := null;
16975 u_eqpmt_etc_cost_to_date_fc(l_index3) := null;
16976 u_eqpmt_etc_rawcost_to_date_fc(l_index3) := null;
16977 u_ppl_etc_effort_to_date(l_index3) := null;
16978 u_eqpmt_etc_effort_to_date(l_index3) := null;
16979 u_oth_etc_qty(l_index3) := null;
16980 else
16981
16982 --- 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.
16983 if (p_extraction_type = 'FULL') then
16984 l_index_etc := l_index_etc + 1;
16985 ETC_PROJECT_ID(l_index_etc) := l_project_id;
16986 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16987 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assignments_asofdate_rec.proj_element_id;
16988 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16989 if (l_plan_type = 'P') then
16990 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16991 elsif (l_plan_type = 'G') then
16992 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16993 else
16994 ETC_PERIOD_NAME(l_index_etc) := null;
16995 end if;
16996 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16997 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16998 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16999 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17000 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17001 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17002 l_task_id := all_assignments_asofdate_rec.proj_element_id;
17003 l_res_list_member_id := all_assignments_asofdate_rec.object_id;
17004 open get_assignment_info;
17005 fetch get_assignment_info into l_get_assignment_info;
17006 close get_assignment_info;
17007 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
17008 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
17009 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
17010 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
17011 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
17012 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
17013 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
17014 ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
17015 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
17016 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
17017
17018 ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
17019 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17020 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17021 if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
17022 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
17023 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17024 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17025 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17026 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17027 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17028 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17029 elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
17030 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
17031 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17032 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17033 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17034 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17035 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17036 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17037 else
17038 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
17039 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17040 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17041 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17042 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17043 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17044 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17045 end if;
17046 end if;
17047 end if;
17048 end if;
17049 end loop;
17050
17051
17052 for all_assign_prev_asofdate_rec in all_assign_prev_asofdate loop
17053 l_match_found := 'N';
17054 for l_index1 in 1..l_index2 loop
17055 if all_assign_prev_asofdate_rec.object_id = object_id(l_index1) and
17056 all_assign_prev_asofdate_rec.proj_element_id = proj_element_id(l_index1) and
17057 all_assign_prev_asofdate_rec.object_type = object_type(l_index1) then
17058 l_match_found := 'Y';
17059 exit;
17060 end if;
17061 end loop;
17062 if (l_match_found = 'N') then
17063 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)
17064 + 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
17065 l_index2 := l_index2 + 1;
17066 select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
17067 percent_complete_id(l_index2) := to_number(null);
17068 project_id(l_index2) := l_project_id;
17069 object_id(l_index2) := all_assign_prev_asofdate_rec.object_id;
17070 OBJECT_TYPE(l_index2) := all_assign_prev_asofdate_rec.object_Type;
17071 as_of_Date(l_index2) := l_temp_as_of_date;
17072 object_version_id(l_index2) := all_assign_prev_asofdate_rec.object_version_id;
17073 LAST_UPDATE_DATE(l_index2) := sysdate;
17074 LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
17075 CREATION_DATE(l_index2) := sysdate;
17076 CREATED_BY(l_index2) := fnd_global.user_id;
17077 PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.progress_status_code;
17078 LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
17079 INCREMENTAL_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.INCREMENTAL_WORK_QUANTITY;
17080 CUMULATIVE_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.CUMULATIVE_WORK_QUANTITY;
17081 base_percent_complete(l_index2) := all_assign_prev_asofdate_rec.base_percent_complete;
17082 EFF_ROLLUP_PERCENT_COMP(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PERCENT_COMP;
17083 completed_percentage(l_index2) := 0;
17084 ESTIMATED_START_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_START_DATE;
17085 ESTIMATED_FINISH_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_FINISH_DATE;
17086 actual_start_date(l_index2) := all_assign_prev_asofdate_rec.actual_start_date;
17087 actual_finish_date(l_index2) := all_assign_prev_asofdate_rec.actual_finish_date;
17088 ESTIMATED_REMAINING_EFFORT(l_index2) := null;
17089 RECORD_VERSION_NUMBER(l_index2) := 1;
17090 base_percent_comp_deriv_code(l_index2) := all_assign_prev_asofdate_rec.base_percent_comp_deriv_code;
17091 BASE_PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.BASE_PROGRESS_STATUS_CODE;
17092 EFF_ROLLUP_PROG_STAT_CODE(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PROG_STAT_CODE;
17093 STRUCTURE_TYPE(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_TYPE;
17094 PROJ_ELEMENT_ID(l_index2) := all_assign_prev_asofdate_rec.PROJ_ELEMENT_ID;
17095 STRUCTURE_VERSION_ID(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_VERSION_ID;
17096
17097 -- Bug 6917961
17098 if (OBJECT_TYPE(l_index2) = 'PA_ASSIGNMENTS') then
17099 if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
17100 and actual_finish_date(l_index2) is null) then
17101 l_prog_enable_flag := 'N';
17102 l_prog_stat_code := null;
17103 OPEN cur_prog_setup(PROJ_ELEMENT_ID(l_index2),l_project_id);
17104 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
17105 CLOSE cur_prog_setup;
17106 if (l_prog_enable_flag = 'Y') then
17107 PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
17108 end if;
17109 end if;
17110 end if;
17111 -- Bug 6917961
17112
17113 ppl_act_effort_to_date(l_index2) := 0;
17114 eqpmt_act_effort_to_date(l_index2) := 0;
17115 oth_qty(l_index2) := 0;
17116 EQPMT_ETC_EFFORT(l_index2) := null;
17117 oth_etc_qty(l_index2) := null;
17118 oth_act_cost_to_date_tc(l_index2) := 0;
17119 oth_act_rawcost_to_date_tc(l_index2) := 0;
17120 oth_act_cost_to_date_pc(l_index2) := 0;
17121 oth_act_rawcost_to_date_pc(l_index2) := 0;
17122 oth_act_cost_to_date_fc(l_index2) := 0;
17123 oth_act_rawcost_to_date_fc(l_index2) := 0;
17124 OTH_ETC_COST_TC(l_index2) := null;
17125 OTH_ETC_RAWCOST_TC(l_index2) := null;
17126 OTH_ETC_COST_FC(l_index2) := null;
17127 OTH_ETC_RAWCOST_FC(l_index2) := null;
17128 OTH_ETC_COST_PC(l_index2) := null;
17129 OTH_ETC_RAWCOST_PC(l_index2) := null;
17130 ppl_act_cost_to_date_tc(l_index2) := 0;
17131 ppl_act_rawcost_to_date_tc(l_index2) := 0;
17132 ppl_act_cost_to_date_pc(l_index2) := 0;
17133 ppl_act_rawcost_to_date_pc(l_index2) := 0;
17134 ppl_act_cost_to_date_fc(l_index2) := 0;
17135 ppl_act_rawcost_to_date_fc(l_index2) := 0;
17136 PPL_ETC_COST_TC(l_index2) := null;
17137 PPL_ETC_RAWCOST_TC(l_index2) := null;
17138 PPL_ETC_COST_PC(l_index2) := null;
17139 PPL_ETC_RAWCOST_PC(l_index2) := null;
17140 PPL_ETC_COST_FC(l_index2) := null;
17141 PPL_ETC_RAWCOST_FC(l_index2) := null;
17142 eqpmt_act_cost_to_date_tc(l_index2) := 0;
17143 eqpmt_act_rawcost_to_date_tc(l_index2) := 0;
17144 eqpmt_act_cost_to_date_pc(l_index2) := 0;
17145 eqpmt_act_rawcost_to_date_pc(l_index2) := 0;
17146 eqpmt_act_cost_to_date_fc(l_index2) := 0;
17147 eqpmt_act_rawcost_to_date_fc(l_index2) := 0;
17148 EQPMT_ETC_COST_TC(l_index2) := null;
17149 EQPMT_ETC_RAWCOST_TC(l_index2) := null;
17150 EQPMT_ETC_COST_PC(l_index2) := null;
17151 EQPMT_ETC_RAWCOST_PC(l_index2) := null;
17152 EQPMT_ETC_COST_FC(l_index2) := null;
17153 EQPMT_ETC_RAWCOST_FC(l_index2) := null;
17154 earned_value(l_index2) := 0;
17155 TASK_WT_BASIS_CODE(l_index2) := all_assign_prev_asofdate_rec.TASK_WT_BASIS_CODE;
17156 SUBPRJ_PPL_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_EFFORT;
17157 SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_EFFORT;
17158 SUBPRJ_PPL_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_EFFORT;
17159 SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_EFFORT;
17160 SUBPRJ_OTH_ACT_COST_TO_DATE_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_TC;
17161 SPJ_OTH_ACT_RAWCOST_TO_DATE_TC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_TC;
17162 SUBPRJ_OTH_ACT_COST_TO_DATE_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_FC;
17163 SPJ_OTH_ACT_RAWCOST_TO_DATE_FC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_FC;
17164 SUBPRJ_OTH_ACT_COST_TO_DATE_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_PC;
17165 SPJ_OTH_ACT_RAWCOST_TO_DATE_PC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_PC;
17166 SUBPRJ_PPL_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_TC;
17167 SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_TC;
17168 SUBPRJ_PPL_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_FC;
17169 SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_FC;
17170 SUBPRJ_PPL_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_PC;
17171 SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_PC;
17172 SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_TC;
17173 SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
17174 SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_FC;
17175 SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
17176 SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_PC;
17177 SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
17178 SUBPRJ_OTH_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_TC;
17179 SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_TC;
17180 SUBPRJ_OTH_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_FC;
17181 SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_FC;
17182 SUBPRJ_OTH_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_PC;
17183 SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_PC;
17184 SUBPRJ_PPL_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_TC;
17185 SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_TC;
17186 SUBPRJ_PPL_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_FC;
17187 SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_FC;
17188 SUBPRJ_PPL_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_PC;
17189 SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_PC;
17190 SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_TC;
17191 SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
17192 SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_FC;
17193 SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
17194 SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_PC;
17195 SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
17196 SUBPRJ_EARNED_VALUE(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EARNED_VALUE;
17197 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'
17198 if (all_assign_prev_asofdate_rec.CURRENT_FLAG = 'Y') then
17199 l_index4 := l_index4 + 1;
17200 u1_progress_rollup_id(l_index4) := all_assign_prev_asofdate_rec.PROGRESS_ROLLUP_ID;
17201 end if;
17202 PROJFUNC_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_TYPE;
17203 PROJFUNC_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_EXCHANGE_RATE;
17204 PROJFUNC_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_DATE;
17205 PROJ_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_TYPE;
17206 PROJ_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_EXCHANGE_RATE;
17207 PROJ_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_DATE;
17208 TXN_CURRENCY_CODE(l_index2) := all_assign_prev_asofdate_rec.TXN_CURRENCY_CODE;
17209 PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
17210 PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
17211 else
17212 --- 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.
17213 if (p_extraction_type = 'FULL') then
17214 l_index_etc := l_index_etc + 1;
17215 ETC_PROJECT_ID(l_index_etc) := l_project_id;
17216 ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17217 ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assign_prev_asofdate_rec.proj_element_id;
17218 ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17219 if (l_plan_type = 'P') then
17220 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17221 elsif (l_plan_type = 'G') then
17222 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17223 else
17224 ETC_PERIOD_NAME(l_index_etc) := null;
17225 end if;
17226 ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17227 ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17228 ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17229 ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17230 ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17231 ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17232 l_task_id := all_assign_prev_asofdate_rec.proj_element_id;
17233 l_res_list_member_id := all_assign_prev_asofdate_rec.object_id;
17234 open get_assignment_info;
17235 fetch get_assignment_info into l_get_assignment_info;
17236 close get_assignment_info;
17237 l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
17238 l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
17239 l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
17240 l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
17241 l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
17242 l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
17243 l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
17244 ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
17245 ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
17246 ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
17247
17248 ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
17249 ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17250 ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17251 if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
17252 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
17253 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17254 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17255 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17256 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17257 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17258 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17259 elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
17260 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
17261 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17262 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17263 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17264 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17265 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17266 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17267 else
17268 ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
17269 ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17270 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17271 ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17272 ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17273 ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17274 ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17275 end if;
17276 end if;
17277 end if;
17278 end if;
17279 end loop;
17280 end if;
17281
17282 pa_debug.log_message('GET_SUMM_ACT: Done looping thru all assignments which are now re-mapped.', 1);
17283
17284 -- Bug 4533112 Begin
17285 pa_debug.log_message('GET_SUMM_ACT: Calling Progress Client Extension.', 1);
17286 FOR l_index1 IN 1..l_index2 LOOP
17287
17288 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')
17289 THEN
17290
17291 l_db_date_override_flag := 'N';
17292 l_db_estimated_start_date := null;
17293 l_db_estimated_finish_date := null;
17294 l_db_actual_start_date := null;
17295 l_db_actual_finish_date := null;
17296 l_clex_estimated_start_date := null;
17297 l_clex_estimated_finish_date := null;
17298 l_clex_actual_start_date := null;
17299 l_clex_actual_finish_date := null;
17300 l_task_status_code := null;
17301 l_clex_pc := null;
17302
17303 OPEN c_get_dates_overrides(PROJECT_ID(l_index1),OBJECT_ID(l_index1),OBJECT_TYPE(l_index1),AS_OF_DATE(l_index1));
17304 FETCH c_get_dates_overrides INTO
17305 l_db_date_override_flag
17306 , l_db_estimated_start_date
17307 , l_db_estimated_finish_date
17308 , l_db_actual_start_date
17309 , l_db_actual_finish_date
17310 , l_task_status_code;
17311 CLOSE c_get_dates_overrides;
17312
17313 IF g1_debug_mode = 'Y' THEN
17314 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Insert Case : Client Extension Logic starts here', x_Log_Level=> 3);
17315 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);
17316 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);
17317 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);
17318 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);
17319 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);
17320 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);
17321 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);
17322 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);
17323 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);
17324 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);
17325 END IF;
17326
17327
17328 l_date_override_flag := 'N';
17329 l_clex_pc := null;
17330 IF OBJECT_TYPE(l_index1) = 'PA_TASKS' THEN
17331 l_clex_pc := nvl(COMPLETED_PERCENTAGE(l_index1), EFF_ROLLUP_PERCENT_COMP(l_index1));
17332 END IF;
17333
17334 IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
17335 l_date_override_flag := 'Y';
17336 ESTIMATED_START_DATE(l_index1) := l_db_estimated_start_date;
17337 ESTIMATED_FINISH_DATE(l_index1) := l_db_estimated_finish_date;
17338 ACTUAL_START_DATE(l_index1) := l_db_actual_start_date;
17339 ACTUAL_FINISH_DATE(l_index1) := l_db_actual_finish_date;
17340 END IF;
17341
17342 IF g1_debug_mode = 'Y' THEN
17343 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);
17344 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);
17345 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);
17346 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);
17347 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);
17348 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);
17349 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);
17350 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);
17351 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
17352 END IF;
17353
17354
17355 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
17356 p_project_id => PROJECT_ID(l_index1),
17357 p_structure_type => 'WORKPLAN',
17358 p_structure_version_id => latest_wp_struct_ver_ids_tbl(l_index),
17359 p_object_type => OBJECT_TYPE(l_index1),
17360 p_object_id => OBJECT_ID(l_index1),
17361 p_object_version_id => OBJECT_VERSION_ID(l_index1),
17362 p_proj_element_id => PROJ_ELEMENT_ID(l_index1),
17363 p_task_status => l_task_status_code,
17364 p_percent_complete => l_clex_pc,
17365 p_estimated_start_date => ESTIMATED_START_DATE(l_index1),
17366 p_estimated_finish_date => ESTIMATED_FINISH_DATE(l_index1),
17367 p_actual_start_date => ACTUAL_START_DATE(l_index1),
17368 p_actual_finish_date => ACTUAL_FINISH_DATE(l_index1),
17369 x_estimated_start_date => l_clex_estimated_start_date,
17370 x_estimated_finish_date => l_clex_estimated_finish_date,
17371 x_actual_start_date => l_clex_actual_start_date,
17372 x_actual_finish_date => l_clex_actual_finish_date,
17373 x_return_status => x_return_status,
17374 x_msg_count => x_msg_count,
17375 x_msg_data => x_msg_data
17376 );
17377
17378 IF g1_debug_mode = 'Y' THEN
17379 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);
17380 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);
17381 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);
17382 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);
17383 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);
17384 END IF;
17385
17386 IF x_return_status <> 'S' THEN
17387 pa_debug.log_message('GET_SUMM_ACT: For Insert GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
17388 -- Added for bug 5526638
17389 l_err_msg := 'Progress Client extension returned error for object_id='||OBJECT_ID(l_index1);
17390 raise FND_API.G_EXC_ERROR;
17391 END IF;
17392
17393 IF nvl(ESTIMATED_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
17394 OR nvl(ESTIMATED_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
17395 OR nvl(ACTUAL_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
17396 OR nvl(ACTUAL_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
17397 THEN
17398 l_date_override_flag := 'Y';
17399 ESTIMATED_START_DATE(l_index1) := l_clex_estimated_start_date;
17400 ESTIMATED_FINISH_DATE(l_index1) := l_clex_estimated_finish_date;
17401 ACTUAL_START_DATE(l_index1) := l_clex_actual_start_date;
17402 ACTUAL_FINISH_DATE(l_index1) := l_clex_actual_finish_date;
17403 IF ESTIMATED_REMAINING_EFFORT(l_index1) > 0 OR EQPMT_ETC_EFFORT(l_index1) > 0 OR oth_etc_qty(l_index1) > 0 THEN
17404 ACTUAL_FINISH_DATE(l_index1) := null;
17405 END IF;
17406 END IF;
17407
17408 BASE_PROGRESS_STATUS_CODE(l_index1) := l_date_override_flag;
17409 IF g1_debug_mode = 'Y' THEN
17410 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);
17411 END IF;
17412 END IF;
17413 END LOOP;
17414
17415 FOR l_index1 IN 1..l_index3 LOOP
17416
17417 l_db_date_override_flag := 'N';
17418 l_db_estimated_start_date := null;
17419 l_db_estimated_finish_date := null;
17420 l_db_actual_start_date := null;
17421 l_db_actual_finish_date := null;
17422 l_clex_estimated_start_date := null;
17423 l_clex_estimated_finish_date := null;
17424 l_clex_actual_start_date := null;
17425 l_clex_actual_finish_date := null;
17426 l_task_status_code := null;
17427 l_date_override_flag := 'N';
17428 l_db_object_id := null;
17429 l_db_object_version_id := null;
17430 l_db_proj_element_id := null;
17431 l_db_object_type := null;
17432 l_db_as_of_date := null;
17433 l_db_project_id := null;
17434 l_db_current_flag := null;
17435 l_clex_pc := null;
17436
17437 OPEN c_get_rec_overrides(u_progress_rollup_id(l_index1));
17438 FETCH c_get_rec_overrides INTO
17439 l_db_date_override_flag
17440 , l_db_estimated_start_date
17441 , l_db_estimated_finish_date
17442 , l_db_actual_start_date
17443 , l_db_actual_finish_date
17444 , l_task_status_code
17445 , l_db_object_id
17446 , l_db_object_version_id
17447 , l_db_proj_element_id
17448 , l_db_object_type
17449 , l_db_as_of_date
17450 , l_db_project_id
17451 , l_db_current_flag;
17452 CLOSE c_get_rec_overrides;
17453
17454 IF g1_debug_mode = 'Y' THEN
17455 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Update Case : Client Extension Logic starts here', x_Log_Level=> 3);
17456 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);
17457 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);
17458 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);
17459 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);
17460 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);
17461 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);
17462 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);
17463 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);
17464 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);
17465 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);
17466 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);
17467 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);
17468 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);
17469 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);
17470 END IF;
17471
17472
17473 u_estimated_start_date(l_index1) := l_db_estimated_start_date;
17474 u_estimated_finish_date(l_index1) := l_db_estimated_finish_date;
17475 u_actual_start_date(l_index1) := l_db_actual_start_date;
17476 u_base_progress_status_code(l_index1) := l_db_date_override_flag;
17477
17478
17479 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'))
17480 AND l_db_current_flag IN ('Y','N')
17481 THEN
17482
17483 IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
17484 l_date_override_flag := 'Y';
17485 u_actual_finish_date(l_index1) := l_db_actual_finish_date;
17486 END IF;
17487
17488 IF l_db_object_type = 'PA_TASKS' THEN
17489 l_clex_pc := nvl(u_completed_percentage(l_index1), u_eff_rollup_percent_comp(l_index1));
17490 END IF;
17491
17492 IF g1_debug_mode = 'Y' THEN
17493 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);
17494 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);
17495 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);
17496 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
17497 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);
17498 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);
17499 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);
17500 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);
17501 END IF;
17502
17503 PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
17504 p_project_id => l_db_project_id,
17505 p_structure_type => 'WORKPLAN',
17506 p_structure_version_id => latest_wp_struct_ver_ids_tbl(l_index),
17507 p_object_type => l_db_object_type,
17508 p_object_id => l_db_object_id,
17509 p_object_version_id => l_db_object_version_id,
17510 p_proj_element_id => l_db_proj_element_id,
17511 p_task_status => l_task_status_code,
17512 p_percent_complete => l_clex_pc,
17513 p_estimated_start_date => u_estimated_start_date(l_index1),
17514 p_estimated_finish_date => u_estimated_finish_date(l_index1),
17515 p_actual_start_date => u_actual_start_date(l_index1),
17516 p_actual_finish_date => u_actual_finish_date(l_index1),
17517 x_estimated_start_date => l_clex_estimated_start_date,
17518 x_estimated_finish_date => l_clex_estimated_finish_date,
17519 x_actual_start_date => l_clex_actual_start_date,
17520 x_actual_finish_date => l_clex_actual_finish_date,
17521 x_return_status => x_return_status,
17522 x_msg_count => x_msg_count,
17523 x_msg_data => x_msg_data
17524 );
17525
17526 IF g1_debug_mode = 'Y' THEN
17527 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);
17528 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);
17529 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);
17530 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);
17531 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);
17532 END IF;
17533
17534 IF x_return_status <> 'S' THEN
17535 pa_debug.log_message('GET_SUMM_ACT: For Update GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
17536 -- Added for bug 5526638
17537 l_err_msg := 'Progress client extension returned error for object_id='||OBJECT_ID(l_index1);
17538 raise FND_API.G_EXC_ERROR;
17539 END IF;
17540
17541 IF nvl(u_estimated_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
17542 OR nvl(u_estimated_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
17543 OR nvl(u_actual_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
17544 OR nvl(u_actual_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
17545 THEN
17546 l_date_override_flag := 'Y';
17547 u_estimated_start_date(l_index1) := l_clex_estimated_start_date;
17548 u_estimated_finish_date(l_index1) := l_clex_estimated_finish_date;
17549 u_actual_start_date(l_index1) := l_clex_actual_start_date;
17550 u_actual_finish_date(l_index1) := l_clex_actual_finish_date;
17551 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
17552 u_actual_finish_date(l_index1) := null;
17553 END IF;
17554 END IF;
17555
17556 u_base_progress_status_code(l_index1) := l_date_override_flag;
17557 IF g1_debug_mode = 'Y' THEN
17558 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);
17559 END IF;
17560 END IF;
17561 END LOOP;
17562
17563 pa_debug.log_message('GET_SUMM_ACT: End Progress Client Extension.', 1);
17564 -- Bug 4533112 End
17565
17566
17567 --- do bulk insert
17568 forall l_index1 in 1..l_index2
17569 insert into pa_progress_rollup(
17570 PROGRESS_ROLLUP_ID
17571 ,PROJECT_ID
17572 ,OBJECT_ID
17573 ,OBJECT_TYPE
17574 ,AS_OF_DATE
17575 ,OBJECT_VERSION_ID
17576 ,LAST_UPDATE_DATE
17577 ,LAST_UPDATED_BY
17578 ,CREATION_DATE
17579 ,CREATED_BY
17580 ,PROGRESS_STATUS_CODE
17581 ,LAST_UPDATE_LOGIN
17582 ,INCREMENTAL_WORK_QUANTITY
17583 ,CUMULATIVE_WORK_QUANTITY
17584 ,BASE_PERCENT_COMPLETE
17585 ,EFF_ROLLUP_PERCENT_COMP
17586 ,COMPLETED_PERCENTAGE
17587 ,ESTIMATED_START_DATE
17588 ,ESTIMATED_FINISH_DATE
17589 ,ACTUAL_START_DATE
17590 ,ACTUAL_FINISH_DATE
17591 ,ESTIMATED_REMAINING_EFFORT
17592 ,RECORD_VERSION_NUMBER
17593 ,BASE_PERCENT_COMP_DERIV_CODE
17594 ,BASE_PROGRESS_STATUS_CODE
17595 ,EFF_ROLLUP_PROG_STAT_CODE
17596 ,PERCENT_COMPLETE_ID
17597 ,STRUCTURE_TYPE
17598 ,PROJ_ELEMENT_ID
17599 ,STRUCTURE_VERSION_ID
17600 ,PPL_ACT_EFFORT_TO_DATE
17601 ,EQPMT_ACT_EFFORT_TO_DATE
17602 ,EQPMT_ETC_EFFORT
17603 ,OTH_ACT_COST_TO_DATE_TC
17604 ,OTH_ACT_RAWCOST_TO_DATE_TC
17605 ,OTH_ACT_COST_TO_DATE_FC
17606 ,OTH_ACT_RAWCOST_TO_DATE_FC
17607 ,OTH_ACT_COST_TO_DATE_PC
17608 ,OTH_ACT_RAWCOST_TO_DATE_PC
17609 ,OTH_ETC_COST_TC
17610 ,OTH_ETC_RAWCOST_TC
17611 ,OTH_ETC_COST_FC
17612 ,OTH_ETC_RAWCOST_FC
17613 ,OTH_ETC_COST_PC
17614 ,OTH_ETC_RAWCOST_PC
17615 ,PPL_ACT_COST_TO_DATE_TC
17616 ,PPL_ACT_RAWCOST_TO_DATE_TC
17617 ,PPL_ACT_COST_TO_DATE_FC
17618 ,PPL_ACT_RAWCOST_TO_DATE_FC
17619 ,PPL_ACT_COST_TO_DATE_PC
17620 ,PPL_ACT_RAWCOST_TO_DATE_PC
17621 ,PPL_ETC_COST_TC
17622 ,PPL_ETC_RAWCOST_TC
17623 ,PPL_ETC_COST_FC
17624 ,PPL_ETC_RAWCOST_FC
17625 ,PPL_ETC_COST_PC
17626 ,PPL_ETC_RAWCOST_PC
17627 ,EQPMT_ACT_COST_TO_DATE_TC
17628 ,EQPMT_ACT_RAWCOST_TO_DATE_TC
17629 ,EQPMT_ACT_COST_TO_DATE_FC
17630 ,EQPMT_ACT_RAWCOST_TO_DATE_FC
17631 ,EQPMT_ACT_COST_TO_DATE_PC
17632 ,EQPMT_ACT_RAWCOST_TO_DATE_PC
17633 ,EQPMT_ETC_COST_TC
17634 ,EQPMT_ETC_RAWCOST_TC
17635 ,EQPMT_ETC_COST_FC
17636 ,EQPMT_ETC_RAWCOST_FC
17637 ,EQPMT_ETC_COST_PC
17638 ,EQPMT_ETC_RAWCOST_PC
17639 ,EARNED_VALUE
17640 ,TASK_WT_BASIS_CODE
17641 ,SUBPRJ_PPL_ACT_EFFORT
17642 ,SUBPRJ_EQPMT_ACT_EFFORT
17643 ,SUBPRJ_PPL_ETC_EFFORT
17644 ,SUBPRJ_EQPMT_ETC_EFFORT
17645 ,SUBPRJ_OTH_ACT_COST_TO_DATE_TC
17646 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_TC
17647 ,SUBPRJ_OTH_ACT_COST_TO_DATE_FC
17648 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_FC
17649 ,SUBPRJ_OTH_ACT_COST_TO_DATE_PC
17650 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_PC
17651 ,SUBPRJ_PPL_ACT_COST_TC
17652 ,SUBPRJ_PPL_ACT_RAWCOST_TC
17653 ,SUBPRJ_PPL_ACT_COST_FC
17654 ,SUBPRJ_PPL_ACT_RAWCOST_FC
17655 ,SUBPRJ_PPL_ACT_COST_PC
17656 ,SUBPRJ_PPL_ACT_RAWCOST_PC
17657 ,SUBPRJ_EQPMT_ACT_COST_TC
17658 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC
17659 ,SUBPRJ_EQPMT_ACT_COST_FC
17660 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC
17661 ,SUBPRJ_EQPMT_ACT_COST_PC
17662 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC
17663 ,SUBPRJ_OTH_ETC_COST_TC
17664 ,SUBPRJ_OTH_ETC_RAWCOST_TC
17665 ,SUBPRJ_OTH_ETC_COST_FC
17666 ,SUBPRJ_OTH_ETC_RAWCOST_FC
17667 ,SUBPRJ_OTH_ETC_COST_PC
17668 ,SUBPRJ_OTH_ETC_RAWCOST_PC
17669 ,SUBPRJ_PPL_ETC_COST_TC
17670 ,SUBPRJ_PPL_ETC_RAWCOST_TC
17671 ,SUBPRJ_PPL_ETC_COST_FC
17672 ,SUBPRJ_PPL_ETC_RAWCOST_FC
17673 ,SUBPRJ_PPL_ETC_COST_PC
17674 ,SUBPRJ_PPL_ETC_RAWCOST_PC
17675 ,SUBPRJ_EQPMT_ETC_COST_TC
17676 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC
17677 ,SUBPRJ_EQPMT_ETC_COST_FC
17678 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC
17679 ,SUBPRJ_EQPMT_ETC_COST_PC
17680 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC
17681 ,SUBPRJ_EARNED_VALUE
17682 ,CURRENT_FLAG
17683 ,PROJFUNC_COST_RATE_TYPE
17684 ,PROJFUNC_COST_EXCHANGE_RATE
17685 ,PROJFUNC_COST_RATE_DATE
17686 ,PROJ_COST_RATE_TYPE
17687 ,PROJ_COST_EXCHANGE_RATE
17688 ,PROJ_COST_RATE_DATE
17689 ,TXN_CURRENCY_CODE
17690 ,PROG_PA_PERIOD_NAME
17691 ,PROG_GL_PERIOD_NAME
17692 ,OTH_QUANTITY_TO_DATE
17693 ,OTH_ETC_QUANTITY
17694 ) VALUES (PROGRESS_ROLLUP_ID(l_index1)
17695 ,PROJECT_ID(l_index1)
17696 ,OBJECT_ID(l_index1)
17697 ,OBJECT_TYPE(l_index1)
17698 ,AS_OF_DATE(l_index1)
17699 ,OBJECT_VERSION_ID(l_index1)
17700 ,LAST_UPDATE_DATE(l_index1)
17701 ,LAST_UPDATED_BY(l_index1)
17702 ,CREATION_DATE(l_index1)
17703 ,CREATED_BY(l_index1)
17704 ,PROGRESS_STATUS_CODE(l_index1)
17705 ,LAST_UPDATE_LOGIN(l_index1)
17706 ,INCREMENTAL_WORK_QUANTITY(l_index1)
17707 ,CUMULATIVE_WORK_QUANTITY(l_index1)
17708 ,BASE_PERCENT_COMPLETE(l_index1)
17709 ,EFF_ROLLUP_PERCENT_COMP(l_index1)
17710 ,COMPLETED_PERCENTAGE(l_index1)
17711 ,ESTIMATED_START_DATE(l_index1)
17712 ,ESTIMATED_FINISH_DATE(l_index1)
17713 ,ACTUAL_START_DATE(l_index1)
17714 ,ACTUAL_FINISH_DATE(l_index1)
17715 ,ESTIMATED_REMAINING_EFFORT(l_index1)
17716 ,record_version_number(l_index1)
17717 ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
17718 ,BASE_PROGRESS_STATUS_CODE(l_index1)
17719 ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
17720 ,PERCENT_COMPLETE_ID(l_index1)
17721 ,STRUCTURE_TYPE(l_index1)
17722 ,PROJ_ELEMENT_ID(l_index1)
17723 ,STRUCTURE_VERSION_ID(l_index1)
17724 ,PPL_ACT_EFFORT_TO_DATE(l_index1)
17725 ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
17726 ,EQPMT_ETC_EFFORT(l_index1)
17727 --Bug 3801745 Begin
17728 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_TC(l_index1), null)
17729 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17730 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_FC(l_index1), null)
17731 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17732 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_PC(l_index1), null)
17733 ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17734 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_TC(l_index1), null)
17735 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_TC(l_index1), null)
17736 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_FC(l_index1), null)
17737 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_FC(l_index1), null)
17738 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_PC(l_index1), null)
17739 ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_PC(l_index1), null)
17740 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_TC(l_index1), null)
17741 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17742 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_FC(l_index1), null)
17743 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17744 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_PC(l_index1), null)
17745 ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17746 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_TC(l_index1), null)
17747 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_TC(l_index1), null)
17748 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_FC(l_index1), null)
17749 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_FC(l_index1), null)
17750 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_PC(l_index1), null)
17751 ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_PC(l_index1), null)
17752 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
17753 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17754 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
17755 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17756 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
17757 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17758 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_TC(l_index1), null)
17759 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_TC(l_index1), null)
17760 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_FC(l_index1), null)
17761 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_FC(l_index1), null)
17762 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_PC(l_index1), null)
17763 ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_PC(l_index1), null)
17764 --Bug 3801745 End
17765 ,EARNED_VALUE(l_index1)
17766 ,TASK_WT_BASIS_CODE(l_index1)
17767 ,SUBPRJ_PPL_ACT_EFFORT(l_index1)
17768 ,SUBPRJ_EQPMT_ACT_EFFORT(l_index1)
17769 ,SUBPRJ_PPL_ETC_EFFORT(l_index1)
17770 ,SUBPRJ_EQPMT_ETC_EFFORT(l_index1)
17771 ,SUBPRJ_OTH_ACT_COST_TO_DATE_TC(l_index1)
17772 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_TC(l_index1)
17773 ,SUBPRJ_OTH_ACT_COST_TO_DATE_FC(l_index1)
17774 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_FC(l_index1)
17775 ,SUBPRJ_OTH_ACT_COST_TO_DATE_PC(l_index1)
17776 ,SPJ_OTH_ACT_RAWCOST_TO_DATE_PC(l_index1)
17777 ,SUBPRJ_PPL_ACT_COST_TC(l_index1)
17778 ,SUBPRJ_PPL_ACT_RAWCOST_TC(l_index1)
17779 ,SUBPRJ_PPL_ACT_COST_FC(l_index1)
17780 ,SUBPRJ_PPL_ACT_RAWCOST_FC(l_index1)
17781 ,SUBPRJ_PPL_ACT_COST_PC(l_index1)
17782 ,SUBPRJ_PPL_ACT_RAWCOST_PC(l_index1)
17783 ,SUBPRJ_EQPMT_ACT_COST_TC(l_index1)
17784 ,SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index1)
17785 ,SUBPRJ_EQPMT_ACT_COST_FC(l_index1)
17786 ,SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index1)
17787 ,SUBPRJ_EQPMT_ACT_COST_PC(l_index1)
17788 ,SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index1)
17789 ,SUBPRJ_OTH_ETC_COST_TC(l_index1)
17790 ,SUBPRJ_OTH_ETC_RAWCOST_TC(l_index1)
17791 ,SUBPRJ_OTH_ETC_COST_FC(l_index1)
17792 ,SUBPRJ_OTH_ETC_RAWCOST_FC(l_index1)
17793 ,SUBPRJ_OTH_ETC_COST_PC(l_index1)
17794 ,SUBPRJ_OTH_ETC_RAWCOST_PC(l_index1)
17795 ,SUBPRJ_PPL_ETC_COST_TC(l_index1)
17796 ,SUBPRJ_PPL_ETC_RAWCOST_TC(l_index1)
17797 ,SUBPRJ_PPL_ETC_COST_FC(l_index1)
17798 ,SUBPRJ_PPL_ETC_RAWCOST_FC(l_index1)
17799 ,SUBPRJ_PPL_ETC_COST_PC(l_index1)
17800 ,SUBPRJ_PPL_ETC_RAWCOST_PC(l_index1)
17801 ,SUBPRJ_EQPMT_ETC_COST_TC(l_index1)
17802 ,SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index1)
17803 ,SUBPRJ_EQPMT_ETC_COST_FC(l_index1)
17804 ,SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index1)
17805 ,SUBPRJ_EQPMT_ETC_COST_PC(l_index1)
17806 ,SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index1)
17807 ,SUBPRJ_EARNED_VALUE(l_index1)
17808 ,CURRENT_FLAG(l_index1)
17809 ,PROJFUNC_COST_RATE_TYPE(l_index1)
17810 ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
17811 ,PROJFUNC_COST_RATE_DATE(l_index1)
17812 ,PROJ_COST_RATE_TYPE(l_index1)
17813 ,PROJ_COST_EXCHANGE_RATE(l_index1)
17814 ,PROJ_COST_RATE_DATE(l_index1)
17815 ,TXN_CURRENCY_CODE(l_index1)
17816 ,PROG_PA_PERIOD_NAME(l_index1)
17817 ,PROG_GL_PERIOD_NAME(l_index1)
17818 ,oth_qty(l_index1)
17819 ,oth_etc_qty(l_index1)
17820 );
17821 IF g1_debug_mode = 'Y' THEN
17822 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17823 x_Msg => 'Done with bulk insert into pa_progress_rollup',
17824 x_Log_Level=> 3);
17825 END IF;
17826
17827 -- Bug 6917961
17828 FOR l_index1 IN 1..l_index3 LOOP
17829 l_t_progress_status_code := null;
17830 l_t_actual_start_date := null;
17831 l_t_actual_finish_date := null;
17832 l_t_proj_element_id := null;
17833 l_t_object_type := null;
17834 l_t_project_id := null;
17835
17836 OPEN c_get_prog_roll(u_progress_rollup_id(l_index1));
17837 FETCH c_get_prog_roll INTO
17838 l_t_progress_status_code
17839 , l_t_actual_start_date
17840 , l_t_actual_finish_date
17841 , l_t_proj_element_id
17842 , l_t_object_type
17843 , l_t_project_id;
17844 CLOSE c_get_prog_roll;
17845 u_progress_status_code(l_index1) := l_t_progress_status_code;
17846
17847 if (l_t_object_type = 'PA_ASSIGNMENTS') then
17848 if (l_t_progress_status_code is null and l_t_actual_start_date is not null
17849 and l_t_actual_finish_date is null) then
17850 l_prog_enable_flag := 'N';
17851 l_prog_stat_code := null;
17852 OPEN cur_prog_setup(l_t_proj_element_id,l_t_project_id);
17853 FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
17854 CLOSE cur_prog_setup;
17855 if (l_prog_enable_flag = 'Y') then
17856 u_progress_status_code(l_index1) := l_prog_stat_code;
17857 end if;
17858 end if;
17859 end if;
17860
17861 end loop;
17862 -- Bug 6917961
17863
17864 --- do bulk update
17865 forall l_index1 in 1..l_index3
17866 update pa_progress_rollup set
17867 OBJECT_VERSION_ID = u_object_version_id(l_index1)
17868 ,LAST_UPDATE_DATE = sysdate
17869 ,LAST_UPDATED_BY = fnd_global.user_id
17870 ,LAST_UPDATE_LOGIN = fnd_global.login_id
17871 ,record_version_number = record_version_number + 1
17872 ,completed_percentage = u_completed_percentage(l_index1)
17873 ,progress_status_code = u_progress_status_code(l_index1) -- Bug 6917961
17874 ,eff_rollup_percent_comp = u_eff_rollup_percent_comp(l_index1)
17875 ,earned_value = u_earned_val(l_index1)
17876 --4533112
17877 ,actual_start_date = u_actual_start_date(l_index1)
17878 ,estimated_start_date = u_estimated_start_date(l_index1)
17879 ,estimated_finish_date = u_estimated_finish_date(l_index1)
17880 ,base_progress_status_code = u_base_progress_status_code(l_index1)
17881 --4533112
17882 ,actual_finish_date = u_actual_finish_date(l_index1)
17883 ,PPL_ACT_EFFORT_TO_DATE = u_PPL_ACT_EFFORT_TO_DATE(l_index1)
17884 ,EQPMT_ACT_EFFORT_TO_DATE = u_EQPMT_ACT_EFFORT_TO_DATE(l_index1)
17885 --Bug 3801745 Begin
17886 ,OTH_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_TC(l_index1), null)
17887 ,OTH_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17888 ,OTH_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_FC(l_index1), null)
17889 ,OTH_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17890 ,OTH_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_PC(l_index1), null)
17891 ,OTH_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17892 ,PPL_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_TC(l_index1), null)
17893 ,PPL_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17894 ,PPL_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_FC(l_index1), null)
17895 ,PPL_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17896 ,PPL_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_PC(l_index1), null)
17897 ,PPL_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17898 ,EQPMT_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
17899 ,EQPMT_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
17900 ,EQPMT_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
17901 ,EQPMT_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
17902 ,EQPMT_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
17903 ,EQPMT_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
17904 --Bug 3801745 End
17905 ,OTH_QUANTITY_TO_DATE = u_oth_qty(l_index1)
17906 ,oth_etc_cost_tc = u_oth_etc_cost_to_date_tc(l_index1)
17907 ,oth_etc_rawcost_tc = u_oth_etc_rawcost_to_date_tc(l_index1)
17908 ,oth_etc_cost_pc = u_oth_etc_cost_to_date_pc(l_index1)
17909 ,oth_etc_rawcost_pc = u_oth_etc_rawcost_to_date_pc(l_index1)
17910 ,oth_etc_cost_fc = u_oth_etc_cost_to_date_fc(l_index1)
17911 ,oth_etc_rawcost_fc = u_oth_etc_rawcost_to_date_fc(l_index1)
17912 ,ppl_etc_cost_tc = u_ppl_etc_cost_to_date_tc(l_index1)
17913 ,ppl_etc_rawcost_tc = u_ppl_etc_rawcost_to_date_tc(l_index1)
17914 ,ppl_etc_cost_pc = u_ppl_etc_cost_to_date_pc(l_index1)
17915 ,ppl_etc_rawcost_pc = u_ppl_etc_rawcost_to_date_pc(l_index1)
17916 ,ppl_etc_cost_fc = u_ppl_etc_cost_to_date_fc(l_index1)
17917 ,ppl_etc_rawcost_fc = u_ppl_etc_rawcost_to_date_fc(l_index1)
17918 ,eqpmt_etc_cost_tc = u_eqpmt_etc_cost_to_date_tc(l_index1)
17919 ,eqpmt_etc_rawcost_tc = u_eqpmt_etc_rawcost_to_date_tc(l_index1)
17920 ,eqpmt_etc_cost_pc = u_eqpmt_etc_cost_to_date_pc(l_index1)
17921 ,eqpmt_etc_rawcost_pc = u_eqpmt_etc_rawcost_to_date_pc(l_index1)
17922 ,eqpmt_etc_cost_fc = u_eqpmt_etc_cost_to_date_fc(l_index1)
17923 ,eqpmt_etc_rawcost_fc = u_eqpmt_etc_rawcost_to_date_fc(l_index1)
17924 ,estimated_remaining_effort = u_ppl_etc_effort_to_date(l_index1)
17925 ,eqpmt_etc_effort = u_eqpmt_etc_effort_to_date(l_index1)
17926 ,oth_etc_quantity = u_oth_etc_qty(l_index1)
17927 where progress_rollup_id = u_progress_rollup_id(l_index1);
17928
17929 IF g1_debug_mode = 'Y' THEN
17930 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17931 x_Msg => 'Done with bulk update into pa_progress_rollup',
17932 x_Log_Level=> 3);
17933 END IF;
17934
17935 forall l_index1 in 1..l_index4
17936 update pa_progress_rollup set
17937 CURRENT_FLAG = 'N'
17938 where progress_rollup_id = u1_progress_rollup_id(l_index1);
17939
17940 IF g1_debug_mode = 'Y' THEN
17941 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17942 x_Msg => 'Done with bulk update of current flag in pa_progress_rollup',
17943 x_Log_Level=> 3);
17944 END IF;
17945
17946 pa_debug.log_message('GET_SUMM_ACT: Done insert/update of pa_progress_rollup.', 1);
17947
17948 if ((l_index2 > 0 or l_index3 > 0) and p_plan_res_level = 'N') then
17949 --- now we are done with updating all actuals
17950 --- we need to rollup data for the l_temp_as_of_date
17951 open rollup_method;
17952 fetch rollup_method into l_task_wt_basis_code;
17953 close rollup_method;
17954
17955 begin
17956 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17957 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 ,
17958 x_Log_Level=> 3);
17959
17960 pa_progress_pub.rollup_progress_pvt(P_INIT_MSG_LIST => FND_API.G_FALSE,
17961 P_VALIDATE_ONLY => FND_API.G_FALSE,
17962 P_PROGRESS_MODE => 'FUTURE',
17963 P_PROJECT_ID => l_project_id,
17964 P_OBJECT_TYPE => 'PA_STRUCTURES',
17965 P_AS_OF_DATE => l_temp_as_of_date,
17966 P_PROCESS_WHOLE_TREE => 'Y',
17967 P_STRUCTURE_VERSION_ID => latest_wp_struct_ver_ids_tbl(l_index),
17968 P_STRUCTURE_TYPE => 'WORKPLAN',
17969 P_WP_ROLLUP_METHOD => l_task_wt_basis_code,
17970 P_ROLLUP_ENTIRE_WBS => 'Y',
17971 X_RETURN_STATUS => x_return_status,
17972 X_MSG_COUNT => x_msg_count,
17973 X_MSG_DATA => x_msg_data);
17974 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17975 x_Msg => 'After call x_return_status='||x_return_status ,
17976 x_Log_Level=> 3);
17977
17978
17979 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
17980 pa_debug.log_message('GET_SUMM_ACT: Rollup_Progress_Pvt returned error.', 1);
17981 -- Added for bug 5526638
17982 l_err_msg := 'Error in rollup of progress attributes';
17983 RAISE FND_API.G_EXC_ERROR;
17984 END IF;
17985
17986 IF g1_debug_mode = 'Y' THEN
17987 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
17988 x_Msg => 'Done with rollup for this project.',
17989 x_Log_Level=> 3);
17990 END IF;
17991 EXCEPTION when others then
17992 x_return_status := 'E';
17993 pa_debug.log_message('GET_SUMM_ACT: Exception in rollup of progress attributes.', 1);
17994 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
17995 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
17996 p_error_text => SUBSTRB('pa_progress_pub.rollup_progress_pvt:'||SQLERRM,1,120));
17997 -- Added for bug 5526638
17998 l_err_msg := substrb('Exception in rollup of progress attributes :'||SQLERRM,1,240);
17999 raise;
18000 end;
18001 if (proj_pgm_level_tbl(l_index) > 1) then
18002 begin
18003 --- call program rollup api only when project level is > 1
18004 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18005 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 ,
18006 x_Log_Level=> 3);
18007
18008 pa_progress_pvt.program_rollup_pvt(p_init_msg_list => 'F'
18009 ,p_validate_only => 'F'
18010 ,p_project_id => l_project_id
18011 ,p_as_of_date => l_temp_as_of_date
18012 ,p_structure_type => 'WORKPLAN'
18013 ,p_structure_ver_id => latest_wp_struct_ver_ids_tbl(l_index)
18014 ,x_return_status => x_return_status
18015 ,x_msg_count => x_msg_count
18016 ,x_msg_data => x_msg_data);
18017 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18018 x_Msg => 'After call x_return_status='||x_return_status ,
18019 x_Log_Level=> 3);
18020
18021
18022 IF g1_debug_mode = 'Y' THEN
18023 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.GET_SUMMMARIZED_ACTUALS',
18024 x_Msg => 'After Calling program_rollup_pvt return_status='||x_return_status, x_Log_Level=> 3);
18025 END IF;
18026 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
18027 pa_debug.log_message('GET_SUMM_ACT: Program_Rollup_Pvt returned error.', 1);
18028 -- Added for bug 5526638
18029 l_err_msg := 'Error in program rollup';
18030 RAISE FND_API.G_EXC_ERROR;
18031 END IF;
18032 EXCEPTION when others then
18033 x_return_status := 'E';
18034 pa_debug.log_message('GET_SUMM_ACT: Exception in program rollup.', 1);
18035 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
18036 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
18037 p_error_text => SUBSTRB('pa_progress_pub.program_rollup_pvt:'||SQLERRM,1,120));
18038 -- Added for bug 5526638
18039 l_err_msg := substrb('Exception in program rollup :'||SQLERRM,1,240);
18040 raise;
18041 end;
18042 end if;
18043 end if;
18044 --- and also for future as of dates, call future rollup api ??
18045 --- we insert ETC in plan lines table for those assignments which have progress records but no actuals
18046
18047 /* Begin: Fix for Bug # 5526638. */
18048 EXCEPTION when others then
18049 /* Added for Bug #5659575 */
18050 if p_extraction_type = 'PUBLISH' then
18051 raise;
18052 else
18053 l_act_err_flag(l_index) := 1;
18054 /* Commented and Modified for Bug #6156129
18055 l_act_err_msg(l_index) := l_err_msg; */
18056 l_act_err_msg(l_index) := nvl(l_err_msg, SUBSTRB('PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS: '|| SQLERRM,1,240));
18057 l_act_out_report := 'Y';
18058 Rollback to ACT_PROJECT;
18059 end if;
18060 END; --- Skipping Begin
18061 /* End: Fix for Bug # 5526638. */
18062
18063 end loop; --- for each project
18064
18065 else
18066 pa_debug.log_message('GET_SUMM_ACT: Get_summarized_data returned error.', 1);
18067 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18068 x_Msg => 'pji_fm_xbs_accum_utils.get_summarized_data returned error',
18069 x_Log_Level=> 3);
18070 end if; -- if status is not success
18071
18072 ---here call the budget lines api
18073 IF g1_debug_mode = 'Y' THEN
18074 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18075 x_Msg => 'Calling PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
18076 x_Log_Level=> 3);
18077 END IF;
18078
18079 FORALL i IN 1..l_index_etc
18080 INSERT INTO PJI_FM_EXTR_PLAN_LINES(
18081 PROJECT_ID
18082 ,PROJECT_ORG_ID
18083 ,PROJECT_ELEMENT_ID
18084 ,STRUCT_VER_ID
18085 ,PERIOD_NAME
18086 ,CALENDAR_TYPE
18087 ,END_DATE
18088 ,RBS_ELEMENT_ID
18089 ,PLAN_VERSION_ID
18090 ,PLAN_TYPE_ID
18091 ,WP_VERSION_FLAG
18092 ,ROLLUP_TYPE
18093 ,TXN_CURRENCY_CODE
18094 ,ETC_QUANTITY
18095 ,ETC_TXN_BURDENED_COST
18096 ,ETC_PRJ_BURDENED_COST
18097 ,ETC_PFC_BURDENED_COST
18098 ,ETC_TXN_RAW_COST
18099 ,ETC_PRJ_RAW_COST
18100 ,ETC_PFC_RAW_COST
18101 ,RESOURCE_CLASS_CODE
18102 ,RATE_BASED_FLAG
18103 ,PRJ_CURRENCY_CODE
18104 ,PFC_CURRENCY_CODE)
18105 VALUES( ETC_PROJECT_ID(i)
18106 ,ETC_PROJECT_ORG_ID(i)
18107 ,ETC_PROJECT_ELEMENT_ID(i)
18108 ,ETC_STRUCT_VER_ID(i)
18109 ,ETC_PERIOD_NAME(i)
18110 ,ETC_CALENDAR_TYPE(i)
18111 ,ETC_END_DATE(i)
18112 ,ETC_RBS_ELEMENT_ID(i)
18113 ,ETC_PLAN_VERSION_ID(i)
18114 ,ETC_PLAN_TYPE_ID(i)
18115 ,ETC_WP_VERSION_FLAG(i)
18116 ,ETC_ROLLUP_TYPE(i)
18117 ,ETC_TXN_CURRENCY_CODE(i)
18118 ,ETC_QUANTITY(i)
18119 ,ETC_TXN_BURDENED_COST(i)
18120 ,ETC_PRJ_BURDENED_COST(i)
18121 ,ETC_PFC_BURDENED_COST(i)
18122 ,ETC_TXN_RAW_COST(i)
18123 ,ETC_PRJ_RAW_COST(i)
18124 ,ETC_PFC_RAW_COST(i)
18125 ,ETC_RESOURCE_CLASS_CODE(i)
18126 ,ETC_RATE_BASED_FLAG(i)
18127 ,ETC_PRJ_CURRENCY_CODE(i)
18128 ,ETC_PFC_CURRENCY_CODE(i));
18129
18130 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
18131
18132 -- Bulk insert into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
18133 pa_debug.log_message('GET_SUMM_ACT: Before inserting records in PA_PROG_ACT_BY_PERIOD_TEMP. Record Count = '||l_t_index, 1);
18134
18135 delete from PA_PROG_ACT_BY_PERIOD_TEMP;
18136
18137 FORALL i IN 1..l_t_index
18138 INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
18139 project_id
18140 ,structure_version_id
18141 ,task_id
18142 ,resource_assignment_id
18143 ,as_of_date
18144 ,actual_cost
18145 ,actual_effort
18146 ,period_name
18147 ,txn_currency_code
18148 ,actual_cost_pc
18149 ,actual_cost_fc
18150 ,actual_rawcost
18151 ,actual_rawcost_pc
18152 ,actual_rawcost_fc
18153 ,hidden_res_assgn_id
18154 ,resource_list_member_id
18155 ,current_flag
18156 ,object_type
18157 ,percent_complete_id
18158 ,attribute1
18159 ,attribute2
18160 ,attribute3
18161 ,attribute4
18162 ,attribute5
18163 ,attribute6
18164 ,start_date
18165 ,finish_date)
18166 VALUES (
18167 t_PROJECT_ID(i)
18168 ,t_STRUCTURE_VERSION_ID(i)
18169 ,t_TASK_ID(i)
18170 ,t_RESOURCE_ASSIGNMENT_ID(i)
18171 ,t_AS_OF_DATE(i)
18172 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST(i), null)
18173 ,t_ACTUAL_EFFORT(i)
18174 ,t_PERIOD_NAME(i)
18175 ,t_TXN_CURRENCY_CODE(i)
18176 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_PC(i), null)
18177 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_FC(i), null)
18178 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST(i), null)
18179 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_PC(i), null)
18180 ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_FC(i), null)
18181 ,t_HIDDEN_RES_ASSGN_ID(i)
18182 ,t_RESOURCE_LIST_MEMBER_ID(i)
18183 ,t_CURRENT_FLAG(i)
18184 ,t_OBJECT_TYPE(i)
18185 ,t_PERCENT_COMPLETE_ID(i)
18186 ,to_char(null)
18187 ,to_char(null)
18188 ,to_char(null)
18189 ,to_number(null)
18190 ,to_number(null)
18191 ,to_number(null)
18192 ,t_min_start_date(i)
18193 ,t_max_end_date(i));
18194
18195 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
18196
18197 /* Begin: Fix for Bug # 5526638. */
18198 /* Added If for Bug # 5659575*/
18199 if p_extraction_type <> 'PUBLISH' then
18200 FOR i IN 1..proj_ids_tbl.COUNT loop
18201 if l_act_err_flag(i) = 0 and (l_t_index <> 0) then /* Added (l_t_index <> 0) for bug 6163049 */
18202 BEGIN
18203 SAVEPOINT ACT_FP_PROJECT;
18204
18205 skip_proj_ids_tbl.delete;
18206 skip_latest_wp_str_ver_id_tbl.delete;
18207 skip_proj_thru_dates_tbl.delete;
18208
18209 skip_proj_ids_tbl.extend;
18210 skip_latest_wp_str_ver_id_tbl.extend;
18211 skip_proj_thru_dates_tbl.extend;
18212
18213 skip_proj_ids_tbl(1) := proj_ids_tbl(i);
18214 skip_latest_wp_str_ver_id_tbl(1) := latest_wp_struct_ver_ids_tbl(i);
18215 skip_proj_thru_dates_tbl(1) := proj_thru_dates_tbl(i);
18216 /* Call this Api in single project mode */
18217 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
18218 (P_PROJECT_ID_TAB => skip_proj_ids_tbl,
18219 P_WP_STR_VERSION_ID_TAB => skip_latest_wp_str_ver_id_tbl,
18220 P_ACTUALS_THRU_DATE => skip_proj_thru_dates_tbl,
18221 P_CALLING_CONTEXT => 'WP_SUMMARIZED_ACTUAL',
18222 P_extraction_type => l_extraction_type,
18223 P_COMMIT_FLAG => 'N',
18224 P_INIT_MSG_FLAG => 'N',
18225 x_RETURN_STATUS => x_return_status,
18226 x_MSG_COUNT => x_msg_count,
18227 x_MSG_DATA => x_msg_data);
18228 if (x_return_status <> 'S') then
18229 l_err_msg := x_msg_data ;
18230 l_act_err_flag(i) := 1;
18231 l_act_err_msg(i) := l_err_msg;
18232 l_act_out_report := 'Y';
18233 Rollback to ACT_FP_PROJECT;
18234 end if;
18235
18236 EXCEPTION WHEN OTHERS THEN
18237 l_err_msg := SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP: '||SQLERRM,1,120);
18238 l_act_err_flag(i) := 1;
18239 l_act_err_msg(i) := l_err_msg;
18240 l_act_out_report := 'Y';
18241 Rollback to ACT_FP_PROJECT;
18242 END;
18243
18244 end if;
18245
18246 END LOOP;
18247 x_return_status := 'S';
18248 /* Commented an moved out of if block for bug#5659575
18249 if NVL(l_act_out_report,'N') = 'Y' then
18250 For l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
18251 if l_act_err_flag(l_index) = 1 then
18252 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18253 p_err_flag => l_act_err_flag(l_index),
18254 p_err_msg => l_act_err_msg(l_index));
18255 DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
18256 DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
18257 else
18258 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
18259 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18260 p_calendar_type => calendar_type_tbl(l_index),
18261 p_end_Date => proj_thru_dates_tbl(l_index));
18262 end if;
18263 end if;
18264 End Loop;
18265 else
18266 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
18267 For l_index in 1..proj_ids_tbl.COUNT loop
18268 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18269 p_calendar_type => calendar_type_tbl(l_index),
18270 p_end_Date => proj_thru_dates_tbl(l_index));
18271 End Loop;
18272 end if;
18273
18274 end if;*/
18275 /* End: Fix for Bug # 5526638. */
18276 else /* Uncommented for Bug #5659575*/
18277 /* Commented for bug 5526638
18278 Begin: Fix for Bug # 4018249. */
18279
18280 if (l_t_index <> 0) then
18281
18282 -- End: Fix for Bug # 4018249.
18283
18284 begin
18285 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
18286 (P_PROJECT_ID_TAB => proj_ids_tbl,
18287 P_WP_STR_VERSION_ID_TAB => latest_wp_struct_ver_ids_tbl,
18288 P_ACTUALS_THRU_DATE => proj_thru_dates_tbl,
18289 P_CALLING_CONTEXT => 'WP_SUMMARIZED_ACTUAL',
18290 P_extraction_type => l_extraction_type,
18291 P_COMMIT_FLAG => 'N',
18292 P_INIT_MSG_FLAG => 'N',
18293 x_RETURN_STATUS => x_return_status,
18294 x_MSG_COUNT => x_msg_count,
18295 x_MSG_DATA => x_msg_data);
18296
18297 if (x_return_status <> 'S') then
18298 pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned error.', 1);
18299 end if;
18300
18301 IF g1_debug_mode = 'Y' THEN
18302 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18303 x_Msg => 'Done PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
18304 x_Log_Level=> 3);
18305 END IF;
18306
18307 EXCEPTION when others then
18308 pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned exception.', 1);
18309 x_return_status := 'E';
18310 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
18311 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
18312 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
18313 raise;
18314 end;
18315
18316 -- Begin: Fix for Bug # 4018249.
18317
18318 end if;
18319
18320 /* Added for Bug #5659575 */
18321 if l_return_status = 'E' then
18322 x_return_status := 'E';
18323 end if;
18324
18325 --End: Fix for Bug # 4018249.
18326 end if;
18327
18328 if p_extraction_type <> 'PUBLISH' then
18329 l_conc_request_id := FND_GLOBAL.CONC_REQUEST_ID;
18330 end if;
18331 /* Added for bug #5659575 If block executes only in PJI flow*/
18332 if NVL(l_act_out_report,'N') = 'Y' then
18333 For l_index in 1..proj_ids_tbl.COUNT loop --- FOR each PROJECT
18334 if l_act_err_flag(l_index) = 1 then
18335 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18336 p_err_flag => l_act_err_flag(l_index),
18337 p_err_msg => l_act_err_msg(l_index));
18338 DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
18339 DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
18340 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
18341 latest_wp_struct_ver_ids_tbl(l_index),
18342 'PRE',
18343 l_conc_request_id,
18344 l_return_status);
18345
18346 else
18347 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
18348 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18349 p_calendar_type => calendar_type_tbl(l_index),
18350 p_end_Date => proj_thru_dates_tbl(l_index));
18351 end if;
18352 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
18353 latest_wp_struct_ver_ids_tbl(l_index),
18354 NULL,
18355 l_conc_request_id,
18356 l_return_status);
18357
18358 end if;
18359 End Loop;
18360 else
18361 if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
18362 For l_index in 1..proj_ids_tbl.COUNT loop
18363 PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id => proj_ids_tbl(l_index),
18364 p_calendar_type => calendar_type_tbl(l_index),
18365 p_end_Date => proj_thru_dates_tbl(l_index));
18366 if p_extraction_type <> 'PUBLISH' then
18367 PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
18368 latest_wp_struct_ver_ids_tbl(l_index),
18369 NULL,
18370 l_conc_request_id,
18371 l_return_status);
18372 end if;
18373
18374 End Loop;
18375 end if;
18376 end if;
18377
18378 pa_debug.log_message('GET_SUMM_ACT: Done with Get_Summarized_Actuals.', 1);
18379 --- assigning l_return_status so that if any of the project had issues the program
18380 --- should finish with a warning
18381 /* Commented and moved above for bug#5659575
18382 x_return_status := l_return_status; */
18383 pa_debug.set_process('IGNORE');
18384 EXCEPTION
18385 when l_pji_wp_exception then /* Bug 5526638*/
18386 pa_debug.log_message('GET_SUMM_ACT: Error while calling PJI api', 1);
18387 x_return_status :='E' ;
18388 when others then
18389 x_return_status := 'E';
18390 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
18391 p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
18392 p_error_text => SUBSTRB('pa_progress_pub.get_summarized_actuals:'||SQLERRM,1,120));
18393 -- 4746476 : Priniting stack
18394 FOR i in 1..fnd_msg_pub.count_msg LOOP
18395 pa_interface_utils_pub.get_messages (
18396 p_encoded => Fnd_Api.G_FALSE
18397 ,p_data => l_data
18398 ,p_msg_index => i
18399 ,p_msg_index_out => l_msg_index_out );
18400 pa_debug.log_message('GET_SUMM_ACT: Error '||i||' ='||substr(l_data,1,200), 1);
18401 END LOOP;
18402 pa_debug.set_process('IGNORE');
18403 /* Added if condition for bug#5659575 */
18404 if p_extraction_type = 'PUBLISH' then
18405 RAISE;
18406 end if;
18407
18408 END GET_SUMMARIZED_ACTUALS;
18409 -- Start of comments
18410 -- API name : UPDATE_FINANCIAL_TASK_PROGRESS
18411 -- Type : Public
18412 -- Purpose : Updates Financial Percent Complete
18413 -- Parameters Desc :
18414 -- p_object_type PA_TASKS
18415 -- p_as_of_date The as_of_date for which progress to be entered
18416 -- p_object_version_id The task version id
18417 -- p_structure_version_id Structure version id of the publsihed or working structure version
18418 -- p_progress_comment Progress comment
18419 -- p_brief_overview Brief Overview
18420 -- p_structure_type FINANCIAL
18421 -- p_rollup_entire_wbs To indicate if it requires the whole structure rollup, in this
18422 -- case it will ignore the passed object and starts with the lowest
18423 -- task
18424 -- History : 29-MAR-04 sdnambia Written For FPM Development Tracking Bug 3420093
18425 -- End of comments
18426
18427 --FPM Dev CR 1 : Added following procedure
18428
18429 PROCEDURE UPDATE_FINANCIAL_TASK_PROGRESS(
18430 p_api_version IN NUMBER :=1.0
18431 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
18432 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
18433 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
18434 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
18435 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
18436 ,p_debug_mode IN VARCHAR2 :='N'
18437 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18438 ,p_action IN VARCHAR2 :='SAVE'
18439 ,P_rollup_entire_wbs_flag IN VARCHAR2 :='N'
18440 ,p_progress_mode IN VARCHAR2 :='FUTURE'
18441 ,p_percent_complete_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18442 ,p_project_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18443 ,p_object_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18444 ,p_object_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18445 ,p_object_type IN VARCHAR2 :='PA_TASKS'
18446 ,p_as_of_date IN DATE :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
18447 ,p_percent_complete IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18448 ,p_progress_status_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18449 ,p_progress_comment IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18450 ,p_brief_overview IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18451 ,p_record_version_number IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18452 ,p_pm_product_code IN VARCHAR2 :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18453 ,p_structure_type IN VARCHAR2 :='FINANCIAL'
18454 ,p_task_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18455 ,p_structure_version_id IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18456 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
18457 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
18458 ,x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
18459 IS
18460
18461 l_api_name CONSTANT VARCHAR(30) := 'UPDATE_FINANCIAL_TASK_PROGRESS' ;
18462 l_api_version CONSTANT NUMBER := 1.0 ;
18463 l_return_status VARCHAR2(1) ;
18464 l_msg_count NUMBER ;
18465 l_msg_data VARCHAR2(250) ;
18466 l_data VARCHAR2(250) ;
18467 l_msg_index_out NUMBER ;
18468 l_error_msg_code VARCHAR2(250) ;
18469 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
18470 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
18471 l_task_id NUMBER ;
18472 l_object_id NUMBER ;
18473 l_project_id NUMBER ;
18474 l_percent_complete_id NUMBER ;
18475 l_PROGRESS_ROLLUP_ID NUMBER ;
18476 l_last_progress_date DATE ;
18477 l_progress_exists_on_aod VARCHAR2(15) ;
18478 l_db_action VARCHAR2(10) ;
18479 l_published_flag VARCHAR2(1) ;
18480 l_current_flag VARCHAR2(1) ;
18481 l_actual_start_date DATE ;
18482 l_actual_finish_date DATE ;
18483 l_estimated_start_date DATE ;
18484 l_estimated_finish_date DATE ;
18485 l_rollup_rec_ver_number NUMBER ;
18486 l_published_by_party_id NUMBER := PA_UTILS.get_party_id( l_user_id ) ;
18487 l_object_type VARCHAR2(15) := p_object_type ;
18488 -- Bug 3595585 : Initialized l_object_type to p_object_type instead of PA_TASKS
18489 l_structure_version_id NUMBER ;
18490 l_published_structure VARCHAR2(1) ;
18491 l_object_version_id NUMBER ;
18492 g1_debug_mode VARCHAR2(1) ;
18493 l_structure_shared VARCHAR2(1) ;
18494 l_brief_overview VARCHAR2(250) ;
18495 l_progress_comment VARCHAR2(4000) ;
18496 l_pm_product_code VARCHAR2(30) ;
18497 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE ;
18498 l_lowest_level_task VARCHAR2(1) ;
18499
18500
18501 l_prog_pa_period_name VARCHAR2(30) ;
18502 l_prog_gl_period_name VARCHAR2(30) ;
18503
18504 -- required for compilation
18505 l_percent_complete NUMBER ;
18506 l_progress_status_code VARCHAR2(30) ;
18507 l_task_status VARCHAR2(150) ;
18508 l_rollup_progress_status VARCHAR2(150) ;
18509 l_INCREMENTAL_WORK_QTY NUMBER ;
18510 l_CUMULATIVE_WORK_QTY NUMBER ;
18511 l_BASE_PERCENT_COMPLETE NUMBER ;
18512 l_EFF_ROLLUP_PERCENT_COMP NUMBER ;
18513 l_rollup_completed_percentage NUMBER ;
18514 l_BASE_PERCENT_COMP_DERIV_CODE VARCHAR2(30) ;
18515 l_BASE_PROGRESS_STATUS_CODE VARCHAR2(30) ;
18516 l_EFF_ROLLUP_PROG_STAT_CODE VARCHAR2(150) ;
18517 l_ACTUAL_WQ_ENTRY_CODE VARCHAR2(30) ;
18518 l_wq_enabled_flag VARCHAR2(1) ;
18519 l_percent_complete_flag VARCHAR2(1) ;
18520 l_allow_collab_prog_entry VARCHAR2(1) ;
18521 l_allw_phy_prcnt_cmp_overrides VARCHAR2(1) ;
18522 l_task_weight_basis_code VARCHAR2(30) ;
18523
18524
18525 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
18526 IS
18527 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
18528 FROM pa_proj_elem_ver_structure str, pa_project_statuses status
18529 where str.element_version_id = c_structure_version_id
18530 AND str.project_id = c_project_id
18531 AND str.status_code = status.project_status_code;
18532
18533 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
18534 IS
18535 SELECT task_weight_basis_code
18536 FROM pa_proj_progress_attr
18537 WHERE project_id = c_project_id
18538 AND structure_type = c_structure_type;
18539
18540
18541 l_record_version_number NUMBER ; -- FPM Dev CR 6
18542 BEGIN
18543
18544 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
18545 IF g1_debug_mode = 'Y' THEN
18546 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'ENTERED', x_Log_Level=> 3);
18547 END IF;
18548
18549 IF g1_debug_mode = 'Y' THEN
18550 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS');
18551 END IF;
18552
18553 IF (p_commit = FND_API.G_TRUE) THEN
18554 savepoint UPDATE_FINANCIAL_TASK_PROGRESS;
18555 END IF;
18556
18557 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
18558 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
18559 END IF;
18560
18561 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
18562 FND_MSG_PUB.initialize;
18563 END IF;
18564
18565 IF g1_debug_mode = 'Y' THEN
18566 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_task_id: '||p_task_id, x_Log_Level=> 3);
18567 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);
18568 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_project_id: '||p_project_id, x_Log_Level=> 3);
18569 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_object_id: '||p_object_id, x_Log_Level=> 3);
18570 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);
18571 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);
18572 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_percent_complete: '||p_percent_complete, x_Log_Level=> 3);
18573 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);
18574 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_structure_type: '||p_structure_type, x_Log_Level=> 3);
18575 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);
18576 END IF;
18577
18578
18579 x_return_status := FND_API.G_RET_STS_SUCCESS;
18580
18581
18582 IF p_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18583 THEN
18584 l_task_id := 0;
18585 ELSE
18586 -- Bug 3876091 : Added IF for STRUCTURES
18587 IF p_object_type = 'PA_STRUCTURES' THEN
18588 l_task_id := 0;
18589 ELSE
18590 l_task_id := nvl(p_task_id, 0);
18591 END IF;
18592 END IF;
18593
18594 -- Bug 3919211
18595 IF p_object_type = 'PA_STRUCTURES' THEN
18596 l_task_id := 0;
18597 END IF;
18598
18599
18600 IF p_object_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18601 THEN
18602 l_object_id := 0;
18603 ELSE
18604 l_object_id := nvl(p_object_id, 0);
18605 END IF;
18606
18607 IF p_object_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18608 THEN
18609 l_object_version_id := 0;
18610 ELSE
18611 l_object_version_id := nvl(p_object_version_id, 0);
18612 END IF;
18613
18614 IF p_brief_overview = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18615 THEN
18616 l_brief_overview := null;
18617 ELSE
18618 l_brief_overview := p_brief_overview;
18619 END IF;
18620
18621 IF p_progress_comment = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18622 THEN
18623 l_progress_comment := null;
18624 ELSE
18625 l_progress_comment := p_progress_comment;
18626 END IF;
18627
18628 IF p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
18629 THEN
18630 l_pm_product_code := null;
18631 ELSE
18632 l_pm_product_code := p_pm_product_code;
18633 END IF;
18634
18635 -- Bug 4938333 Begin
18636 -- In case of financial struture, no need to check for published version
18637 -- populate structure_version_id always null.
18638 /*
18639 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
18640 FETCH cur_check_published_version INTO l_published_structure;
18641 CLOSE cur_check_published_version;
18642
18643 IF l_published_structure = 'Y'
18644 THEN
18645 l_structure_version_id := null;
18646 ELSE
18647 l_structure_version_id := p_structure_version_id;
18648 END IF;
18649 */
18650 l_published_structure := 'Y';
18651 l_structure_version_id := null;
18652 -- Bug 4938333 End
18653 IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
18654 THEN
18655 l_percent_complete := 0;
18656 ELSE
18657 l_percent_complete := nvl(p_percent_complete,0);
18658 --Changed for BIG 3950574, rtarway
18659 --l_percent_complete := round ( nvl(p_percent_complete,0),2 );
18660 END IF;
18661
18662 --bug 3850475, Percent complete should be between 0 and 100
18663 IF l_percent_complete < 0 OR l_percent_complete > 100
18664 THEN
18665 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
18666 ,p_msg_name => 'PA_FIN_PERCENT_INVALID');
18667 x_msg_data := 'PA_FIN_PERCENT_INVALID';
18668 x_return_status := 'E';
18669 RAISE FND_API.G_EXC_ERROR;
18670 END IF;
18671
18672
18673 ---- if status is CANCELLED
18674 IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) = 'CANCELLED'
18675 THEN
18676 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
18677 ,p_msg_name => 'PA_TP_CANT_NTER_PRG_CANCEL');
18678 x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
18679 x_return_status := 'E';
18680 RAISE FND_API.G_EXC_ERROR;
18681 END IF;
18682 ---- if status is CANCELLED
18683
18684 ----- Invalid DATE
18685 IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
18686 THEN
18687 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
18688 ,p_msg_name => 'PA_TP_INV_AOD');
18689 x_msg_data := 'PA_TP_INV_AOD';
18690 x_return_status := 'E';
18691 RAISE FND_API.G_EXC_ERROR;
18692 END IF;
18693 ----- Wrong DATE
18694
18695
18696 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
18697 p_task_id => l_task_id--p_task_id Bug 3876091
18698 ,p_project_id => p_project_id
18699 ,p_object_id => l_object_id
18700 ,p_object_type => l_object_type
18701 ,p_structure_type => p_structure_type
18702 );
18703
18704
18705 IF g1_debug_mode = 'Y' THEN
18706 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);
18707 END IF;
18708
18709 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
18710 p_project_id => p_project_id
18711 ,p_object_type => l_object_type
18712 ,p_object_version_id => l_object_version_id
18713 ,p_task_id => l_task_id -- l_object_id Bug 3876091
18714 ,p_as_of_date => p_as_of_date
18715 ,p_structure_type => p_structure_type
18716 ,p_object_id => l_object_id -- Bug 3764224
18717 );
18718
18719 IF g1_debug_mode = 'Y' THEN
18720 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);
18721 END IF;
18722
18723 -- Bug 3603636 : IF record is already published then we maintain the history of changes.
18724 -- So percent complete will have data inserted and roll up table will be updated.
18725 --??? One issue here is tregaring the history_flag in ppc table. I think it shoul dbe updated with Y for the existing
18726 -- record on that as_of_date
18727 -- IF l_progress_exists_on_aod = 'PUBLISHED'
18728 -- THEN
18729 -- l_db_action := 'UPDATE';
18730 -- ELSE
18731 l_db_action := 'CREATE';
18732 -- END IF;
18733
18734 IF p_as_of_date >= NVL( l_last_progress_date, p_as_of_date ) -- FPM Dev CR 5 : Equal to was missing
18735 THEN
18736 l_current_flag := 'Y';
18737 UPDATE pa_percent_completes
18738 SET current_flag = 'N'
18739 WHERE project_id = p_project_id
18740 AND object_id = l_object_id
18741 AND current_flag = 'Y'
18742 AND object_type = l_object_type
18743 AND structure_type = p_structure_type;
18744
18745 UPDATE pa_progress_rollup
18746 SET current_flag = 'N'
18747 WHERE project_id = p_project_id
18748 AND object_id = p_object_id
18749 AND object_type = p_object_type
18750 --AND as_of_date = p_as_of_date
18751 AND current_flag = 'Y'
18752 --AND object_version_id = p_object_version_id Bug 3603636, We shd not rely on object_version_id
18753 AND structure_version_id IS NULL
18754 AND structure_type = p_structure_type;
18755
18756 ELSIF p_as_of_date < NVL( l_last_progress_date, p_as_of_date )
18757 THEN
18758 l_current_flag := 'N';
18759 END IF;
18760
18761
18762
18763 l_published_flag := 'Y';
18764
18765 IF g1_debug_mode = 'Y' THEN
18766 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_db_action: '||l_db_action, x_Log_Level=> 3);
18767 END IF;
18768
18769 l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
18770 l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date);
18771
18772
18773 IF l_db_action = 'CREATE'
18774 THEN
18775 /* Bug 3603636 : Putiing the following code. After confirmation we will uncomment
18776 UPDATE pa_percent_completes
18777 SET history_flag = 'Y'
18778 WHERE project_id = p_project_id
18779 AND object_id = l_object_id
18780 AND trunc(date_computed) = trunc(p_as_of_date)
18781 AND object_type = l_object_type
18782 AND structure_type = p_structure_type;
18783 */
18784
18785 PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
18786 p_TASK_ID => l_task_id
18787 ,p_DATE_COMPUTED => p_as_of_date
18788 ,p_LAST_UPDATE_DATE => SYSDATE
18789 ,p_LAST_UPDATED_BY => l_user_id
18790 ,p_CREATION_DATE => SYSDATE
18791 ,p_CREATED_BY => l_user_id
18792 ,p_LAST_UPDATE_LOGIN => l_login_id
18793 ,p_COMPLETED_PERCENTAGE => l_percent_complete
18794 ,p_DESCRIPTION => l_brief_overview
18795 ,p_PROJECT_ID => p_project_id
18796 ,p_PM_PRODUCT_CODE => l_pm_product_code
18797 ,p_CURRENT_FLAG => l_current_flag
18798 ,p_OBJECT_TYPE => l_object_type
18799 ,p_OBJECT_ID => l_object_id
18800 ,p_OBJECT_VERSION_ID => l_object_version_id
18801 ,p_PROGRESS_STATUS_CODE => l_progress_status_code
18802 ,p_ACTUAL_START_DATE => l_actual_start_date
18803 ,p_ACTUAL_FINISH_DATE => l_actual_finish_date
18804 ,p_ESTIMATED_START_DATE => l_estimated_start_date
18805 ,p_ESTIMATED_FINISH_DATE => l_estimated_finish_date
18806 ,p_PUBLISHED_FLAG => l_published_flag
18807 ,p_PUBLISHED_BY_PARTY_ID => l_published_by_party_id
18808 ,p_PROGRESS_COMMENT => l_progress_comment
18809 ,p_HISTORY_FLAG => 'N'
18810 ,p_status_code => l_task_status
18811 ,x_PERCENT_COMPLETE_ID => l_percent_complete_id
18812 ,p_ATTRIBUTE_CATEGORY => null
18813 ,p_ATTRIBUTE1 => null
18814 ,p_ATTRIBUTE2 => null
18815 ,p_ATTRIBUTE3 => null
18816 ,p_ATTRIBUTE4 => null
18817 ,p_ATTRIBUTE5 => null
18818 ,p_ATTRIBUTE6 => null
18819 ,p_ATTRIBUTE7 => null
18820 ,p_ATTRIBUTE8 => null
18821 ,p_ATTRIBUTE9 => null
18822 ,p_ATTRIBUTE10 => null
18823 ,p_ATTRIBUTE11 => null
18824 ,p_ATTRIBUTE12 => null
18825 ,p_ATTRIBUTE13 => null
18826 ,p_ATTRIBUTE14 => null
18827 ,p_ATTRIBUTE15 => null
18828 ,p_structure_type => p_structure_type
18829 );
18830
18831 IF g1_debug_mode = 'Y' THEN
18832 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPC', x_Log_Level=> 3);
18833 END IF;
18834
18835 IF g1_debug_mode = 'Y' THEN
18836 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTING IN PPR', x_Log_Level=> 3);
18837 END IF;
18838
18839
18840 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
18841 p_project_id => p_project_id
18842 ,p_object_id => l_object_id
18843 ,p_object_type => l_object_type
18844 ,p_object_version_id => l_object_version_id
18845 ,p_as_of_date => p_as_of_date
18846 ,p_structure_type => p_structure_type
18847 ,p_structure_version_id => l_structure_version_id
18848 ,p_proj_element_id => l_task_id -- Bug 3919211 --l_object_id -- Bug 3764224
18849 ,x_record_version_number => l_rollup_rec_ver_number
18850 );
18851
18852 IF l_PROGRESS_ROLLUP_ID IS NULL
18853 THEN
18854 PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
18855 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
18856 ,X_PROJECT_ID => p_project_id
18857 ,X_OBJECT_ID => l_object_id
18858 ,X_OBJECT_TYPE => l_object_type
18859 ,X_AS_OF_DATE => p_as_of_date
18860 ,X_OBJECT_VERSION_ID => l_object_version_id
18861 ,X_LAST_UPDATE_DATE => SYSDATE
18862 ,X_LAST_UPDATED_BY => l_user_id
18863 ,X_CREATION_DATE => SYSDATE
18864 ,X_CREATED_BY => l_user_id
18865 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
18866 ,X_LAST_UPDATE_LOGIN => l_login_id
18867 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
18868 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
18869 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
18870 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
18871 ,X_COMPLETED_PERCENTAGE => l_percent_complete
18872 ,X_ESTIMATED_START_DATE => l_estimated_start_date
18873 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
18874 ,X_ACTUAL_START_DATE => l_actual_start_date
18875 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
18876 ,X_EST_REMAINING_EFFORT => null
18877 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
18878 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
18879 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
18880 ,x_percent_complete_id => l_percent_complete_id
18881 ,X_STRUCTURE_TYPE => p_structure_type
18882 ,X_PROJ_ELEMENT_ID => l_task_id -- p_task_id Bug 3876091
18883 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
18884 ,X_PPL_ACT_EFFORT_TO_DATE => null
18885 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
18886 ,X_EQPMT_ETC_EFFORT => null
18887 ,X_OTH_ACT_COST_TO_DATE_TC => null
18888 ,X_OTH_ACT_COST_TO_DATE_FC => null
18889 ,X_OTH_ACT_COST_TO_DATE_PC => null
18890 ,X_OTH_ETC_COST_TC => null
18891 ,X_OTH_ETC_COST_FC => null
18892 ,X_OTH_ETC_COST_PC => null
18893 ,X_PPL_ACT_COST_TO_DATE_TC => null
18894 ,X_PPL_ACT_COST_TO_DATE_FC => null
18895 ,X_PPL_ACT_COST_TO_DATE_PC => null
18896 ,X_PPL_ETC_COST_TC => null
18897 ,X_PPL_ETC_COST_FC => null
18898 ,X_PPL_ETC_COST_PC => null
18899 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
18900 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
18901 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
18902 ,X_EQPMT_ETC_COST_TC => null
18903 ,X_EQPMT_ETC_COST_FC => null
18904 ,X_EQPMT_ETC_COST_PC => null
18905 ,X_EARNED_VALUE => null
18906 ,X_TASK_WT_BASIS_CODE => null
18907 ,X_SUBPRJ_PPL_ACT_EFFORT => null
18908 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
18909 ,X_SUBPRJ_PPL_ETC_EFFORT => null
18910 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
18911 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
18912 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
18913 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
18914 ,X_SUBPRJ_PPL_ACT_COST_TC => null
18915 ,X_SUBPRJ_PPL_ACT_COST_FC => null
18916 ,X_SUBPRJ_PPL_ACT_COST_PC => null
18917 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
18918 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
18919 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
18920 ,X_SUBPRJ_OTH_ETC_COST_TC => null
18921 ,X_SUBPRJ_OTH_ETC_COST_FC => null
18922 ,X_SUBPRJ_OTH_ETC_COST_PC => null
18923 ,X_SUBPRJ_PPL_ETC_COST_TC => null
18924 ,X_SUBPRJ_PPL_ETC_COST_FC => null
18925 ,X_SUBPRJ_PPL_ETC_COST_PC => null
18926 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
18927 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
18928 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
18929 ,X_SUBPRJ_EARNED_VALUE => null
18930 ,X_CURRENT_FLAG => l_current_flag
18931 ,X_PROJFUNC_COST_RATE_TYPE => null
18932 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
18933 ,X_PROJFUNC_COST_RATE_DATE => null
18934 ,X_PROJ_COST_RATE_TYPE => null
18935 ,X_PROJ_COST_EXCHANGE_RATE => null
18936 ,X_PROJ_COST_RATE_DATE => null
18937 ,X_TXN_CURRENCY_CODE => null
18938 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
18939 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
18940 ,X_OTH_QUANTITY_TO_DATE => null
18941 ,X_OTH_ETC_QUANTITY => null
18942 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
18943 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
18944 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
18945 ,X_OTH_ETC_RAWCOST_TC => null
18946 ,X_OTH_ETC_RAWCOST_FC => null
18947 ,X_OTH_ETC_RAWCOST_PC => null
18948 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
18949 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
18950 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
18951 ,X_PPL_ETC_RAWCOST_TC => null
18952 ,X_PPL_ETC_RAWCOST_FC => null
18953 ,X_PPL_ETC_RAWCOST_PC => null
18954 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
18955 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
18956 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
18957 ,X_EQPMT_ETC_RAWCOST_TC => null
18958 ,X_EQPMT_ETC_RAWCOST_FC => null
18959 ,X_EQPMT_ETC_RAWCOST_PC => null
18960 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
18961 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
18962 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
18963 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
18964 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
18965 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
18966 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
18967 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
18968 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
18969 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
18970 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
18971 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
18972 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
18973 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
18974 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
18975 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
18976 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
18977 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null);
18978 ELSE
18979 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
18980 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
18981 ,X_PROJECT_ID => p_project_id
18982 ,X_OBJECT_ID => l_object_id
18983 ,X_OBJECT_TYPE => l_object_type
18984 ,X_AS_OF_DATE => p_as_of_date
18985 ,X_OBJECT_VERSION_ID => l_object_version_id
18986 ,X_LAST_UPDATE_DATE => SYSDATE
18987 ,X_LAST_UPDATED_BY => l_user_id
18988 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
18989 ,X_LAST_UPDATE_LOGIN => l_login_id
18990 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
18991 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
18992 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
18993 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
18994 ,X_COMPLETED_PERCENTAGE => l_percent_complete
18995 ,X_ESTIMATED_START_DATE => l_estimated_start_date
18996 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
18997 ,X_ACTUAL_START_DATE => l_actual_start_date
18998 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
18999 ,X_EST_REMAINING_EFFORT => null
19000 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
19001 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
19002 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
19003 ,X_RECORD_VERSION_NUMBER => l_rollup_rec_ver_number
19004 ,x_percent_complete_id => l_percent_complete_id
19005 ,X_STRUCTURE_TYPE => p_structure_type
19006 ,X_PROJ_ELEMENT_ID => l_task_id --p_task_id Bug 3876091
19007 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
19008 ,X_PPL_ACT_EFFORT_TO_DATE => null
19009 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
19010 ,X_EQPMT_ETC_EFFORT => null
19011 ,X_OTH_ACT_COST_TO_DATE_TC => null
19012 ,X_OTH_ACT_COST_TO_DATE_FC => null
19013 ,X_OTH_ACT_COST_TO_DATE_PC => null
19014 ,X_OTH_ETC_COST_TC => null
19015 ,X_OTH_ETC_COST_FC => null
19016 ,X_OTH_ETC_COST_PC => null
19017 ,X_PPL_ACT_COST_TO_DATE_TC => null
19018 ,X_PPL_ACT_COST_TO_DATE_FC => null
19019 ,X_PPL_ACT_COST_TO_DATE_PC => null
19020 ,X_PPL_ETC_COST_TC => null
19021 ,X_PPL_ETC_COST_FC => null
19022 ,X_PPL_ETC_COST_PC => null
19023 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
19024 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
19025 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
19026 ,X_EQPMT_ETC_COST_TC => null
19027 ,X_EQPMT_ETC_COST_FC => null
19028 ,X_EQPMT_ETC_COST_PC => null
19029 ,X_EARNED_VALUE => null
19030 ,X_TASK_WT_BASIS_CODE => null
19031 ,X_SUBPRJ_PPL_ACT_EFFORT => null
19032 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
19033 ,X_SUBPRJ_PPL_ETC_EFFORT => null
19034 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
19035 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
19036 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
19037 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
19038 ,X_SUBPRJ_PPL_ACT_COST_TC => null
19039 ,X_SUBPRJ_PPL_ACT_COST_FC => null
19040 ,X_SUBPRJ_PPL_ACT_COST_PC => null
19041 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
19042 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
19043 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
19044 ,X_SUBPRJ_OTH_ETC_COST_TC => null
19045 ,X_SUBPRJ_OTH_ETC_COST_FC => null
19046 ,X_SUBPRJ_OTH_ETC_COST_PC => null
19047 ,X_SUBPRJ_PPL_ETC_COST_TC => null
19048 ,X_SUBPRJ_PPL_ETC_COST_FC => null
19049 ,X_SUBPRJ_PPL_ETC_COST_PC => null
19050 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
19051 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
19052 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
19053 ,X_SUBPRJ_EARNED_VALUE => null
19054 ,X_CURRENT_FLAG => l_current_flag
19055 ,X_PROJFUNC_COST_RATE_TYPE => null
19056 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
19057 ,X_PROJFUNC_COST_RATE_DATE => null
19058 ,X_PROJ_COST_RATE_TYPE => null
19059 ,X_PROJ_COST_EXCHANGE_RATE => null
19060 ,X_PROJ_COST_RATE_DATE => null
19061 ,X_TXN_CURRENCY_CODE => null
19062 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
19063 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
19064 ,X_OTH_QUANTITY_TO_DATE => null
19065 ,X_OTH_ETC_QUANTITY => null
19066 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
19067 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
19068 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
19069 ,X_OTH_ETC_RAWCOST_TC => null
19070 ,X_OTH_ETC_RAWCOST_FC => null
19071 ,X_OTH_ETC_RAWCOST_PC => null
19072 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
19073 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
19074 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
19075 ,X_PPL_ETC_RAWCOST_TC => null
19076 ,X_PPL_ETC_RAWCOST_FC => null
19077 ,X_PPL_ETC_RAWCOST_PC => null
19078 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
19079 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
19080 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
19081 ,X_EQPMT_ETC_RAWCOST_TC => null
19082 ,X_EQPMT_ETC_RAWCOST_FC => null
19083 ,X_EQPMT_ETC_RAWCOST_PC => null
19084 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
19085 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
19086 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
19087 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
19088 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
19089 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
19090 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
19091 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
19092 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
19093 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
19094 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
19095 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
19096 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
19097 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
19098 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
19099 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
19100 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
19101 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null);
19102
19103 -- FPM Dev CR 6
19104 IF Fnd_Msg_Pub.count_msg > 0 THEN
19105 RAISE FND_API.G_EXC_ERROR;
19106 END IF;
19107
19108
19109 END IF;
19110
19111 IF g1_debug_mode = 'Y' THEN
19112 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPR', x_Log_Level=> 3);
19113 END IF;
19114
19115 ELSIF l_db_action = 'UPDATE'
19116 THEN
19117
19118 IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19119 THEN
19120 l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
19121 p_project_id => p_project_id
19122 ,p_object_id => l_object_id
19123 ,p_task_id => l_task_id -- l_object_id -- Bug 3764224 Bug 3876091
19124 ,p_object_type => l_object_type
19125 ,p_object_version_id => l_object_version_id
19126 ,p_as_of_date => p_as_of_date
19127 ,p_structure_type => p_structure_type
19128 );
19129 -- FPM Dev CR 6 Getting Record Version Number too
19130 BEGIN
19131 SELECT record_version_number into l_record_version_number
19132 FROM pa_percent_completes
19133 where percent_complete_id = l_percent_complete_id;
19134 END;
19135
19136 ELSE
19137 l_percent_complete_id := p_percent_complete_id;
19138 l_record_version_number := p_record_version_number;
19139 END IF;
19140
19141 IF g1_debug_mode = 'Y' THEN
19142 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);
19143 END IF;
19144
19145
19146 PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
19147 p_TASK_ID => l_task_id
19148 ,p_DATE_COMPUTED => p_as_of_date
19149 ,p_LAST_UPDATE_DATE => SYSDATE
19150 ,p_LAST_UPDATED_BY => l_user_id
19151 ,p_LAST_UPDATE_LOGIN => l_login_id
19152 ,p_COMPLETED_PERCENTAGE => l_percent_complete
19153 ,p_DESCRIPTION => l_brief_overview
19154 ,p_PM_PRODUCT_CODE => l_pm_product_code
19155 ,p_CURRENT_FLAG => l_current_flag
19156 ,p_PERCENT_COMPLETE_ID => l_percent_complete_id
19157 ,p_project_id => p_project_id
19158 ,p_OBJECT_TYPE => l_object_type
19159 ,p_OBJECT_ID => l_object_id
19160 ,p_OBJECT_VERSION_ID => l_object_version_id
19161 ,p_PROGRESS_STATUS_CODE => l_progress_status_code
19162 ,p_ACTUAL_START_DATE => l_actual_start_date
19163 ,p_ACTUAL_FINISH_DATE => l_actual_finish_date
19164 ,p_ESTIMATED_START_DATE => l_estimated_start_date
19165 ,p_ESTIMATED_FINISH_DATE => l_estimated_finish_date
19166 ,p_PUBLISHED_FLAG => l_published_flag
19167 ,p_PUBLISHED_BY_PARTY_ID => l_published_by_party_id
19168 ,p_PROGRESS_COMMENT => l_progress_comment
19169 ,p_HISTORY_FLAG => 'N'
19170 ,p_status_code => l_task_status
19171 ,p_RECORD_VERSION_NUMBER => l_record_version_number -- FPM Dev CR 6
19172 ,p_ATTRIBUTE_CATEGORY => null
19173 ,p_ATTRIBUTE1 => null
19174 ,p_ATTRIBUTE2 => null
19175 ,p_ATTRIBUTE3 => null
19176 ,p_ATTRIBUTE4 => null
19177 ,p_ATTRIBUTE5 => null
19178 ,p_ATTRIBUTE6 => null
19179 ,p_ATTRIBUTE7 => null
19180 ,p_ATTRIBUTE8 => null
19181 ,p_ATTRIBUTE9 => null
19182 ,p_ATTRIBUTE10 => null
19183 ,p_ATTRIBUTE11 => null
19184 ,p_ATTRIBUTE12 => null
19185 ,p_ATTRIBUTE13 => null
19186 ,p_ATTRIBUTE14 => null
19187 ,p_ATTRIBUTE15 => null
19188 ,p_structure_type => p_structure_type
19189
19190 );
19191 -- FPM Dev CR 6
19192 IF Fnd_Msg_Pub.count_msg > 0 THEN
19193 RAISE FND_API.G_EXC_ERROR;
19194 END IF;
19195
19196
19197
19198 --update progress rollup
19199 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
19200 p_project_id => p_project_id
19201 ,p_object_id => l_object_id
19202 ,p_object_type => l_object_type
19203 ,p_object_version_id => l_object_version_id
19204 ,p_as_of_date => p_as_of_date
19205 ,p_structure_type => p_structure_type
19206 ,p_structure_version_id => l_structure_version_id
19207 ,p_proj_element_id => l_task_id -- Bug 3919211 l_object_id -- Bug 3764224
19208 ,x_record_version_number => l_rollup_rec_ver_number
19209 );
19210
19211 IF g1_debug_mode = 'Y' THEN
19212 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);
19213 END IF;
19214
19215
19216 PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
19217 X_PROGRESS_ROLLUP_ID => l_PROGRESS_ROLLUP_ID
19218 ,X_PROJECT_ID => p_project_id
19219 ,X_OBJECT_ID => l_object_id
19220 ,X_OBJECT_TYPE => l_object_type
19221 ,X_AS_OF_DATE => p_as_of_date
19222 ,X_OBJECT_VERSION_ID => l_object_version_id
19223 ,X_LAST_UPDATE_DATE => SYSDATE
19224 ,X_LAST_UPDATED_BY => l_user_id
19225 ,X_PROGRESS_STATUS_CODE => l_rollup_progress_status
19226 ,X_LAST_UPDATE_LOGIN => l_login_id
19227 ,X_INCREMENTAL_WORK_QTY => l_INCREMENTAL_WORK_QTY
19228 ,X_CUMULATIVE_WORK_QTY => l_CUMULATIVE_WORK_QTY
19229 ,X_BASE_PERCENT_COMPLETE => l_BASE_PERCENT_COMPLETE
19230 ,X_EFF_ROLLUP_PERCENT_COMP => l_EFF_ROLLUP_PERCENT_COMP
19231 ,X_COMPLETED_PERCENTAGE => l_percent_complete
19232 ,X_ESTIMATED_START_DATE => l_estimated_start_date
19233 ,X_ESTIMATED_FINISH_DATE => l_estimated_finish_date
19234 ,X_ACTUAL_START_DATE => l_actual_start_date
19235 ,X_ACTUAL_FINISH_DATE => l_actual_finish_date
19236 ,X_EST_REMAINING_EFFORT => null
19237 ,X_BASE_PERCENT_COMP_DERIV_CODE => l_BASE_PERCENT_COMP_DERIV_CODE
19238 ,X_BASE_PROGRESS_STATUS_CODE => l_BASE_PROGRESS_STATUS_CODE
19239 ,X_EFF_ROLLUP_PROG_STAT_CODE => l_EFF_ROLLUP_PROG_STAT_CODE
19240 ,X_RECORD_VERSION_NUMBER => l_rollup_rec_ver_number
19241 ,x_percent_complete_id => l_percent_complete_id
19242 ,X_STRUCTURE_TYPE => p_structure_type
19243 ,X_PROJ_ELEMENT_ID => l_task_id --p_task_id Bug 3876091
19244 ,X_STRUCTURE_VERSION_ID => l_structure_version_id
19245 ,X_PPL_ACT_EFFORT_TO_DATE => null
19246 ,X_EQPMT_ACT_EFFORT_TO_DATE => null
19247 ,X_EQPMT_ETC_EFFORT => null
19248 ,X_OTH_ACT_COST_TO_DATE_TC => null
19249 ,X_OTH_ACT_COST_TO_DATE_FC => null
19250 ,X_OTH_ACT_COST_TO_DATE_PC => null
19251 ,X_OTH_ETC_COST_TC => null
19252 ,X_OTH_ETC_COST_FC => null
19253 ,X_OTH_ETC_COST_PC => null
19254 ,X_PPL_ACT_COST_TO_DATE_TC => null
19255 ,X_PPL_ACT_COST_TO_DATE_FC => null
19256 ,X_PPL_ACT_COST_TO_DATE_PC => null
19257 ,X_PPL_ETC_COST_TC => null
19258 ,X_PPL_ETC_COST_FC => null
19259 ,X_PPL_ETC_COST_PC => null
19260 ,X_EQPMT_ACT_COST_TO_DATE_TC => null
19261 ,X_EQPMT_ACT_COST_TO_DATE_FC => null
19262 ,X_EQPMT_ACT_COST_TO_DATE_PC => null
19263 ,X_EQPMT_ETC_COST_TC => null
19264 ,X_EQPMT_ETC_COST_FC => null
19265 ,X_EQPMT_ETC_COST_PC => null
19266 ,X_EARNED_VALUE => null
19267 ,X_TASK_WT_BASIS_CODE => null
19268 ,X_SUBPRJ_PPL_ACT_EFFORT => null
19269 ,X_SUBPRJ_EQPMT_ACT_EFFORT => null
19270 ,X_SUBPRJ_PPL_ETC_EFFORT => null
19271 ,X_SUBPRJ_EQPMT_ETC_EFFORT => null
19272 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC => null
19273 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC => null
19274 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC => null
19275 ,X_SUBPRJ_PPL_ACT_COST_TC => null
19276 ,X_SUBPRJ_PPL_ACT_COST_FC => null
19277 ,X_SUBPRJ_PPL_ACT_COST_PC => null
19278 ,X_SUBPRJ_EQPMT_ACT_COST_TC => null
19279 ,X_SUBPRJ_EQPMT_ACT_COST_FC => null
19280 ,X_SUBPRJ_EQPMT_ACT_COST_PC => null
19281 ,X_SUBPRJ_OTH_ETC_COST_TC => null
19282 ,X_SUBPRJ_OTH_ETC_COST_FC => null
19283 ,X_SUBPRJ_OTH_ETC_COST_PC => null
19284 ,X_SUBPRJ_PPL_ETC_COST_TC => null
19285 ,X_SUBPRJ_PPL_ETC_COST_FC => null
19286 ,X_SUBPRJ_PPL_ETC_COST_PC => null
19287 ,X_SUBPRJ_EQPMT_ETC_COST_TC => null
19288 ,X_SUBPRJ_EQPMT_ETC_COST_FC => null
19289 ,X_SUBPRJ_EQPMT_ETC_COST_PC => null
19290 ,X_SUBPRJ_EARNED_VALUE => null
19291 ,X_CURRENT_FLAG => l_current_flag
19292 ,X_PROJFUNC_COST_RATE_TYPE => null
19293 ,X_PROJFUNC_COST_EXCHANGE_RATE => null
19294 ,X_PROJFUNC_COST_RATE_DATE => null
19295 ,X_PROJ_COST_RATE_TYPE => null
19296 ,X_PROJ_COST_EXCHANGE_RATE => null
19297 ,X_PROJ_COST_RATE_DATE => null
19298 ,X_TXN_CURRENCY_CODE => null
19299 ,X_PROG_PA_PERIOD_NAME => l_prog_pa_period_name
19300 ,X_PROG_GL_PERIOD_NAME => l_prog_gl_period_name
19301 ,X_OTH_QUANTITY_TO_DATE => null
19302 ,X_OTH_ETC_QUANTITY => null
19303 ,X_OTH_ACT_RAWCOST_TO_DATE_TC => null
19304 ,X_OTH_ACT_RAWCOST_TO_DATE_FC => null
19305 ,X_OTH_ACT_RAWCOST_TO_DATE_PC => null
19306 ,X_OTH_ETC_RAWCOST_TC => null
19307 ,X_OTH_ETC_RAWCOST_FC => null
19308 ,X_OTH_ETC_RAWCOST_PC => null
19309 ,X_PPL_ACT_RAWCOST_TO_DATE_TC => null
19310 ,X_PPL_ACT_RAWCOST_TO_DATE_FC => null
19311 ,X_PPL_ACT_RAWCOST_TO_DATE_PC => null
19312 ,X_PPL_ETC_RAWCOST_TC => null
19313 ,X_PPL_ETC_RAWCOST_FC => null
19314 ,X_PPL_ETC_RAWCOST_PC => null
19315 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC => null
19316 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC => null
19317 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC => null
19318 ,X_EQPMT_ETC_RAWCOST_TC => null
19319 ,X_EQPMT_ETC_RAWCOST_FC => null
19320 ,X_EQPMT_ETC_RAWCOST_PC => null
19321 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC => null
19322 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC => null
19323 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC => null
19324 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC => null
19325 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC => null
19326 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC => null
19327 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC => null
19328 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC => null
19329 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC => null
19330 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC => null
19331 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC => null
19332 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC => null
19333 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC => null
19334 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC => null
19335 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC => null
19336 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC => null
19337 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC => null
19338 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC => null
19339 );
19340 -- FPM Dev CR 6
19341 IF Fnd_Msg_Pub.count_msg > 0 THEN
19342 RAISE FND_API.G_EXC_ERROR;
19343 END IF;
19344
19345 IF g1_debug_mode = 'Y' THEN
19346 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'COMPLETED ', x_Log_Level=> 3);
19347 END IF;
19348
19349 END IF; --<l_db_action>
19350
19351
19352 IF g1_debug_mode = 'Y' THEN
19353 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'EXITING ', x_Log_Level=> 3);
19354 END IF;
19355
19356 EXCEPTION
19357 when FND_API.G_EXC_ERROR then
19358 x_return_status := FND_API.G_RET_STS_ERROR;
19359 l_msg_count := Fnd_Msg_Pub.count_msg;
19360
19361 if p_commit = FND_API.G_TRUE then
19362 rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
19363 end if;
19364
19365 IF l_msg_count = 1 AND x_msg_data IS NULL
19366 THEN
19367 Pa_Interface_Utils_Pub.get_messages
19368 ( p_encoded => Fnd_Api.G_TRUE
19369 , p_msg_index => 1
19370 , p_msg_count => l_msg_count
19371 , p_msg_data => l_msg_data
19372 , p_data => l_data
19373 , p_msg_index_out => l_msg_index_out);
19374 x_msg_data := l_data;
19375 x_msg_count := l_msg_count;
19376 ELSE
19377 x_msg_count := l_msg_count;
19378 END IF;
19379
19380 when FND_API.G_EXC_UNEXPECTED_ERROR then
19381 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
19382 x_msg_count := 1;
19383 x_msg_data := SQLERRM;
19384
19385 if p_commit = FND_API.G_TRUE then
19386 rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
19387 end if;
19388 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19389 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19390 p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
19391 p_error_text => SUBSTRB(SQLERRM,1,120));
19392 when OTHERS then
19393 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
19394 x_msg_count := 1;
19395 x_msg_data := SUBSTRB(SQLERRM,1,120);
19396 if p_commit = FND_API.G_TRUE then
19397 rollback to UPDATE_DELIVERABLE_PROGRESS;
19398 end if;
19399
19400 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19401 p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
19402 p_error_text => SUBSTRB(SQLERRM,1,120));
19403 raise;
19404
19405
19406 END UPDATE_FINANCIAL_TASK_PROGRESS;
19407
19408 -- Progress Management Changes. Bug # 3420093.
19409
19410 PROCEDURE re_rollup_progress(
19411 p_api_version IN NUMBER :=1.0
19412 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
19413 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
19414 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
19415 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
19416 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
19417 ,p_debug_mode IN VARCHAR2 :='N'
19418 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19419 ,p_project_id IN NUMBER
19420 ,p_structure_version_id IN NUMBER
19421 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19422 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
19423 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19424 )
19425
19426 IS
19427 l_api_name CONSTANT VARCHAR2(30) := 'RE_ROLLUP_PROGRESS';
19428 l_api_version CONSTANT NUMBER := p_api_version;
19429 l_user_id NUMBER := FND_GLOBAL.USER_ID;
19430 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
19431 l_return_status VARCHAR2(1);
19432 l_msg_count NUMBER;
19433 l_msg_data VARCHAR2(250);
19434 l_msg_code VARCHAR2(12000);
19435
19436
19437 -- Bug 3693757 : This cursor is wrong as it may return wrong task_wt_basis_code of some other projects' task
19438
19439 cursor l_ve_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
19440 select as_of_date, task_wt_basis_code
19441 from pa_progress_rollup
19442 where project_id = p_project_id -- Bug 3693757
19443 and structure_version_id = p_structure_version_id -- Bug 3693757
19444 and object_type = 'PA_STRUCTURES' -- Bug 3693757
19445 ;
19446 /* Bug 3693757
19447 and as_of_date = (select max(as_of_date)
19448 from pa_progress_rollup
19449 where project_id = p_project_id
19450 and structure_version_id = p_structure_version_id
19451 and current_flag = 'Y');
19452 */
19453 --bug # 3792713 Satish start
19454 l_published_structure VARCHAR2(1) ;
19455
19456 CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
19457 IS
19458 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
19459 FROM pa_proj_elem_ver_structure str
19460 , pa_project_statuses status
19461 where str.element_version_id = c_structure_version_id
19462 AND str.project_id = c_project_id
19463 AND str.status_code = status.project_status_code;
19464
19465 --bug # 3792713 Satish end
19466
19467 cursor l_vd_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
19468 select as_of_date, task_wt_basis_code
19469 from pa_progress_rollup
19470 where project_id = p_project_id
19471 and structure_version_id = p_structure_version_id;
19472
19473 --added by maansari for
19474 cursor cur_task_weight IS
19475 select pppa.task_weight_basis_code
19476 from pa_proj_progress_attr pppa
19477 where pppa.project_id = p_project_id
19478 and pppa.structure_type = 'WORKPLAN';
19479
19480 l_as_of_date DATE;
19481 l_task_wt_basis_code VARCHAR2(30);
19482 l_base_struct_ver_id NUMBER;
19483
19484 BEGIN
19485 IF g1_debug_mode = 'Y' THEN
19486 pa_debug.init_err_stack ('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
19487 END IF;
19488
19489 IF (p_debug_mode = 'Y') THEN
19490 IF g1_debug_mode = 'Y' THEN
19491 pa_debug.debug('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
19492 END IF;
19493 END IF;
19494 IF (p_commit = FND_API.G_TRUE) THEN
19495 savepoint RE_ROLLUP_PROGRESS;
19496 END IF;
19497
19498 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
19499 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19500 END IF;
19501
19502 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
19503 FND_MSG_PUB.initialize;
19504 END IF;
19505
19506 x_return_status := FND_API.G_RET_STS_SUCCESS;
19507
19508 -- Get as_of_date and task_wt_basis_code for the project.
19509
19510 /* replacing with cur_task_weight
19511 if (PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'Y') then
19512
19513 open l_ve_cur(p_project_id, p_structure_version_id);
19514 fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
19515 close l_ve_cur;
19516 else
19517
19518 open l_vd_cur(p_project_id, p_structure_version_id);
19519 fetch l_vd_cur into l_as_of_date, l_task_wt_basis_code;
19520 close l_vd_cur;
19521 end if;
19522 */
19523
19524 --bug # 3792713 Satish start
19525 OPEN cur_check_published_version(p_structure_version_id, p_project_id);
19526 FETCH cur_check_published_version INTO l_published_structure;
19527 CLOSE cur_check_published_version;
19528
19529 IF l_published_structure = 'Y'
19530 THEN
19531 return;
19532 ELSE
19533 open l_ve_cur(p_project_id, p_structure_version_id);
19534 fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
19535 close l_ve_cur;
19536 END IF;
19537 --bug # 3792713 Satish end
19538
19539
19540
19541 --Added by rtarway for BUG # 3616810, check if as_of_date is null
19542 if (l_as_of_date IS NOT NULL ) then
19543 -- Call Rollup API for the whole structure.
19544
19545 -- Bug 3764224 : calling it here as this procedure gets called two times in publishing flow. One for
19546 -- Publsihed version and one for working version
19547 -- Bug 3693757 : 13-Jul-04 PJI tmp1 table shd be populated so that rollup API can access actuals values in RE_ROLLUP_PROGRESS
19548 BEGIN
19549 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
19550 pa_progress_pub.populate_pji_tab_for_plan(
19551 p_init_msg_list => FND_API.G_FALSE,
19552 p_project_id => p_project_id,
19553 p_structure_version_id => p_structure_version_id,
19554 p_baselined_str_ver_id => l_base_struct_ver_id,
19555 p_structure_type => 'WORKPLAN',
19556 x_return_status => x_return_status,
19557 x_msg_count => x_msg_count,
19558 x_msg_data => x_msg_data
19559 );
19560
19561 EXCEPTION
19562 WHEN OTHERS THEN
19563 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19564 p_procedure_name => 'RE_ROLLUP_PROGRESS',
19565 p_error_text => SUBSTRB('PA_PROGRESS_PUB.populate_pji_tab_for_plan:'||SQLERRM,1,240));
19566 RAISE FND_API.G_EXC_ERROR;
19567 END;
19568
19569
19570 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19571 Raise FND_API.G_EXC_ERROR;
19572 END IF;
19573
19574
19575 OPEN cur_task_weight;
19576 FETCH cur_task_weight INTO l_task_wt_basis_code;
19577 CLOSE cur_task_weight;
19578
19579 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
19580 p_init_msg_list => p_init_msg_list
19581 ,p_commit => p_commit
19582 ,p_validate_only => p_validate_only
19583 --Added by rtarway for BUG 3696263
19584 ,p_calling_module => p_calling_module
19585 ,p_project_id => p_project_id
19586 ,p_structure_version_id => p_structure_version_id
19587 ,p_as_of_date => l_as_of_date
19588 ,p_wp_rollup_method => l_task_wt_basis_code
19589 ,p_rollup_entire_wbs => 'Y'
19590 ,x_return_status => l_return_status
19591 ,x_msg_count => l_msg_count
19592 ,x_msg_data => l_msg_data);
19593
19594 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19595 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
19596 p_msg_name => l_msg_data);
19597 x_msg_data := l_msg_data;
19598 x_return_status := 'E';
19599 x_msg_count := l_msg_count;
19600 RAISE FND_API.G_EXC_ERROR;
19601 END IF;
19602 end if;
19603
19604 IF (p_commit = FND_API.G_TRUE) THEN
19605 COMMIT;
19606 END IF;
19607 EXCEPTION
19608 when FND_API.G_EXC_ERROR then
19609 if p_commit = FND_API.G_TRUE then
19610 rollback to RE_ROLLUP_PROGRESS;
19611 end if;
19612 x_return_status := FND_API.G_RET_STS_ERROR;
19613 when FND_API.G_EXC_UNEXPECTED_ERROR then
19614 if p_commit = FND_API.G_TRUE then
19615 rollback to RE_ROLLUP_PROGRESS;
19616 end if;
19617 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19618 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19619 p_procedure_name => 'RE_ROLLUP_PROGRESS',
19620 p_error_text => SUBSTRB(SQLERRM,1,120));
19621 when OTHERS then
19622 if p_commit = FND_API.G_TRUE then
19623 rollback to RE_ROLLUP_PROGRESS;
19624 end if;
19625 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19626 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19627 p_procedure_name => 'RE_ROLLUP_PROGRESS',
19628 p_error_text => SUBSTRB(SQLERRM,1,120));
19629 raise;
19630 END re_rollup_progress;
19631
19632 -- Bug 3633293 : Added populate_bulk_pji_tab_for_plan
19633 PROCEDURE populate_bulk_pji_tab_for_plan(
19634 p_api_version IN NUMBER :=1.0
19635 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
19636 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
19637 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
19638 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
19639 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
19640 ,p_debug_mode IN VARCHAR2 :='N'
19641 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19642 ,p_person_id NUMBER
19643 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19644 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
19645 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19646 ) AS
19647 l_api_name CONSTANT VARCHAR2(30) := 'populate_pji_tab_for_plan';
19648 l_api_version CONSTANT NUMBER := p_api_version;
19649 l_return_status VARCHAR2(1);
19650 l_msg_count NUMBER;
19651 l_msg_data VARCHAR2(250);
19652 l_baseline_version_id NUMBER;
19653
19654 CURSOR c_get_distinct_str_ver_id IS
19655 SELECT distinct asgn.project_id project_id, asgn.structure_version_id structure_version_id
19656 FROM pa_task_asgmts_v asgn
19657 , pa_proj_elem_ver_structure str
19658 , pa_proj_progress_attr prog
19659 , pa_proj_structure_types pstype
19660 WHERE asgn.person_id = p_person_id
19661 AND asgn.structure_version_id = str.element_version_id
19662 AND asgn.project_id = str.project_id
19663 AND str.latest_eff_published_flag = 'Y'
19664 AND str.proj_element_id = pstype.proj_element_id
19665 AND pstype.structure_type_id = 1
19666 AND asgn.project_id = prog.project_id
19667 AND prog.structure_type = 'WORKPLAN'
19668 AND prog.allow_collab_prog_entry = 'Y'
19669 UNION
19670 SELECT distinct elem.project_id project_id, str.element_version_id structure_version_id
19671 FROM pa_proj_elements elem
19672 , pa_proj_elem_ver_structure str
19673 , pa_proj_progress_attr prog
19674 , pa_proj_structure_types pstype
19675 WHERE elem.manager_person_id = p_person_id
19676 AND elem.object_type = 'PA_TASKS'
19677 AND elem.project_id = str.project_id
19678 AND str.latest_eff_published_flag = 'Y'
19679 AND str.proj_element_id = pstype.proj_element_id
19680 AND pstype.structure_type_id = 1
19681 AND elem.project_id = prog.project_id
19682 AND prog.structure_type = 'WORKPLAN'
19683 AND prog.allow_collab_prog_entry = 'Y';
19684 BEGIN
19685
19686 IF g1_debug_mode = 'Y' THEN
19687 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
19688 END IF;
19689
19690 IF (p_debug_mode = 'Y') THEN
19691 IF g1_debug_mode = 'Y' THEN
19692 pa_debug.debug('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
19693 END IF;
19694 END IF;
19695
19696 IF (p_commit = FND_API.G_TRUE) THEN
19697 savepoint populate_bulk_pji_tab_for_plan;
19698 END IF;
19699
19700 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
19701 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19702 END IF;
19703
19704 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
19705 FND_MSG_PUB.initialize;
19706 END IF;
19707
19708 x_return_status := FND_API.G_RET_STS_SUCCESS;
19709
19710 FOR rec IN c_get_distinct_str_ver_id LOOP
19711 l_baseline_version_id := null;
19712 l_baseline_version_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec.project_id);
19713 IF l_baseline_version_id = -1 THEN
19714 l_baseline_version_id := null;
19715 END IF;
19716
19717
19718 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
19719 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
19720 p_calling_module => p_calling_module
19721 ,p_project_id => rec.project_id
19722 ,p_structure_version_id => rec.structure_version_id
19723 ,p_baselined_str_ver_id => l_baseline_version_id
19724 ,p_program_rollup_flag => 'Y'
19725 ,p_calling_context => 'ROLLUP'
19726 ,x_return_status => l_return_status
19727 ,x_msg_count => l_msg_count
19728 ,x_msg_data => l_msg_data
19729 );
19730 /*
19731 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
19732 p_project_id => rec.project_id,
19733 p_struct_ver_id => rec.structure_version_id,
19734 p_base_struct_ver_id => l_baseline_version_id,
19735 x_return_status => l_return_status,
19736 x_msg_code => l_msg_data );
19737 */
19738 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19739 x_msg_data := l_msg_data;
19740 x_return_status := 'E';
19741 x_msg_count := l_msg_count;
19742 RAISE FND_API.G_EXC_ERROR;
19743 END IF;
19744 END LOOP;
19745
19746
19747 EXCEPTION
19748 when FND_API.G_EXC_ERROR then
19749 if p_commit = FND_API.G_TRUE then
19750 rollback to populate_bulk_pji_tab_for_plan;
19751 end if;
19752 x_return_status := FND_API.G_RET_STS_ERROR;
19753 when FND_API.G_EXC_UNEXPECTED_ERROR then
19754 if p_commit = FND_API.G_TRUE then
19755 rollback to populate_bulk_pji_tab_for_plan;
19756 end if;
19757 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19758 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19759 p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
19760 p_error_text => SUBSTRB(SQLERRM,1,120));
19761 when OTHERS then
19762 if p_commit = FND_API.G_TRUE then
19763 rollback to populate_bulk_pji_tab_for_plan;
19764 end if;
19765 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19766 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19767 p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
19768 p_error_text => SUBSTRB(SQLERRM,1,120));
19769 raise;
19770 END populate_bulk_pji_tab_for_plan;
19771
19772
19773 -- Bug 3614828 : Created this procedure for partial rollup.
19774 -- Start of comments
19775 -- API name : ASGN_DLV_TO_TASK_ROLLUP_PVT
19776 -- Type : Private
19777 -- Pre-reqs : None.
19778 -- Purpose : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
19779 -- : This does partial rollup of working progress records
19780 -- History : 15-JUNE-04 amksingh Rewritten For FPM Development Bug 3614828
19781 -- 08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
19782 -- PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT().
19783 -- End of comments
19784
19785 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
19786 p_api_version IN NUMBER :=1.0
19787 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- Since it is a private API so false
19788 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
19789 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
19790 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
19791 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
19792 ,p_debug_mode IN VARCHAR2 :='N'
19793 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19794 ,p_project_id IN NUMBER
19795 ,p_task_id IN NUMBER
19796 ,p_task_version_id IN NUMBER
19797 ,p_as_of_date IN DATE
19798 ,p_structure_version_id IN NUMBER
19799 ,p_wp_rollup_method IN VARCHAR2 := 'COST'
19800 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19801 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
19802 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19803 )
19804 IS
19805
19806 l_api_name CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT' ;
19807 l_api_version CONSTANT NUMBER := 1.0 ;
19808 l_return_status VARCHAR2(1) ;
19809 l_msg_count NUMBER ;
19810 l_msg_data VARCHAR2(250) ;
19811 l_data VARCHAR2(250) ;
19812 l_msg_index_out NUMBER ;
19813 l_error_msg_code VARCHAR2(250) ;
19814 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
19815 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
19816 g1_debug_mode VARCHAR2(1) ;
19817
19818 BEGIN
19819
19820 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
19821
19822 IF g1_debug_mode = 'Y' THEN
19823 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT');
19824 END IF;
19825
19826 IF g1_debug_mode = 'Y' THEN
19827 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);
19828 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);
19829 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
19830 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);
19831 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);
19832 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);
19833 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);
19834 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);
19835 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);
19836 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);
19837 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);
19838 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);
19839 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);
19840 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);
19841 END IF;
19842
19843 IF p_structure_version_id IS NULL THEN
19844 return;
19845 END IF;
19846
19847 IF (p_commit = FND_API.G_TRUE) THEN
19848 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT;
19849 END IF;
19850
19851 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
19852 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19853 END IF;
19854
19855 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
19856 FND_MSG_PUB.initialize;
19857 END IF;
19858
19859 -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
19860
19861 PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT(
19862 p_api_version => p_api_version
19863 ,p_init_msg_list => p_init_msg_list
19864 ,p_commit => p_commit
19865 ,p_validate_only => p_validate_only
19866 ,p_validation_level => p_validation_level
19867 ,p_calling_module => p_calling_module
19868 ,p_debug_mode => p_debug_mode
19869 ,p_max_msg_count => p_max_msg_count
19870 ,p_project_id => p_project_id
19871 ,p_task_id => p_task_id
19872 ,p_task_version_id => p_task_version_id
19873 ,p_as_of_date => p_as_of_date
19874 ,p_structure_version_id => p_structure_version_id
19875 ,p_wp_rollup_method => p_wp_rollup_method
19876 ,x_return_status => l_return_status
19877 ,x_msg_count => l_msg_count
19878 ,x_msg_data => l_msg_data);
19879
19880 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19881 x_msg_data := l_msg_data;
19882 x_return_status := 'E';
19883 x_msg_count := l_msg_count;
19884 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19885 END IF;
19886
19887 x_return_status := FND_API.G_RET_STS_SUCCESS;
19888
19889 IF (p_commit = FND_API.G_TRUE) THEN
19890 COMMIT;
19891 END IF;
19892
19893
19894 IF g1_debug_mode = 'Y' THEN
19895 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);
19896 END IF;
19897
19898 EXCEPTION
19899 WHEN FND_API.G_EXC_ERROR THEN
19900 IF p_commit = FND_API.G_TRUE THEN
19901 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
19902 END IF;
19903 x_return_status := FND_API.G_RET_STS_ERROR;
19904 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
19905 IF p_commit = FND_API.G_TRUE THEN
19906 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
19907 END IF;
19908 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19909 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19910 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
19911 p_error_text => SUBSTRB(SQLERRM,1,120));
19912 WHEN OTHERS THEN
19913 IF p_commit = FND_API.G_TRUE THEN
19914 rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
19915 END IF;
19916 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
19917 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
19918 p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
19919 p_error_text => SUBSTRB(SQLERRM,1,120));
19920 raise;
19921 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
19922
19923 -- Start of comments
19924 -- API name : COPY_PROGRESS_ACT_ETC
19925 -- Type : Private
19926 -- Pre-reqs : None.
19927 -- Purpose : This API is intdended to be used for copying actuals and etc from one structure
19928 -- version to another. If there is no progress records exists then the api pass null
19929 -- for act and etc.
19930 -- History : 30-JUNE-04 Rakesh Raghavan Rewritten For FPM Development Bug
19931 -- 28-JUL-2004 Rakesh Raghavan Added parameter: p_last_pub_str_version_id
19932 -- and modified API.
19933 -- End of comments
19934
19935 PROCEDURE COPY_PROGRESS_ACT_ETC(
19936 p_api_version IN NUMBER :=1.0
19937 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE -- FALSE for private API.
19938 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
19939 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
19940 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
19941 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
19942 ,p_debug_mode IN VARCHAR2 :='N'
19943 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19944 ,p_project_id IN NUMBER
19945 ,p_src_str_ver_id IN NUMBER
19946 ,p_dst_str_ver_id IN NUMBER
19947 ,p_pub_wp_with_prog_flag IN VARCHAR2 := 'Y'
19948 ,p_calling_context IN VARCHAR2 := 'PUBLISH'
19949 ,p_last_pub_str_version_id IN NUMBER := NULL
19950 ,p_copy_actuals_flag IN VARCHAR2 := 'Y'
19951 ,p_copy_ETC_flag IN VARCHAR2 := 'Y'
19952 ,p_pji_conc_prog_context IN VARCHAR2 := 'N' -- Fix for Bug # 3996159.
19953 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19954 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
19955 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19956 ) IS
19957
19958 l_api_name CONSTANT VARCHAR(30) := 'COPY_PROGRESS_ACT_ETC';
19959 l_api_version CONSTANT NUMBER := 1.0;
19960 l_return_status VARCHAR2(1);
19961 l_msg_count NUMBER;
19962 l_msg_data VARCHAR2(250);
19963 l_data VARCHAR2(250);
19964 l_msg_index_out NUMBER;
19965 l_error_msg_code VARCHAR2(250);
19966 l_calling_context VARCHAR2(15);
19967
19968 -- This API will be called in three contexts.
19969 -- 1. From Publish structure API where it needs to get the progress data from published wp version and push to PJI API
19970 -- for the new workplan version which is going to be published.
19971 -- 2. PJI team sometimes truncates the data for a version. In thi scase they will call this API to push the progress data
19972 -- again back to PJI tables. Not sure about this context as how PJI will call. Majid is following up on this.
19973 -- 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
19974 -- null to not null. In this case only ETC needs to be pushed as PJi will derive actuals as planned-etc.
19975
19976 CURSOR cur_working_wp_progress is
19977 select *
19978 from pa_progress_rollup ppr
19979 where ppr.project_id = p_project_id
19980 and ppr.structure_version_id = p_src_str_ver_id
19981 and ppr.object_type = 'PA_ASSIGNMENTS'
19982 and structure_type = 'WORKPLAN'
19983 and current_flag = 'Y';
19984
19985
19986 CURSOR cur_lp_progress is
19987 select *
19988 from pa_progress_rollup ppr
19989 where ppr.project_id = p_project_id
19990 and ppr.structure_version_id is null
19991 and ppr.object_type = 'PA_ASSIGNMENTS'
19992 and structure_type = 'WORKPLAN'
19993 and current_flag = 'Y';
19994 -- Using current_flag = 'Y' may push data of working progress too. Is it fine?
19995
19996 l_working_prog VARCHAR2(1) := 'N';
19997
19998 l_ppr_rec pa_progress_rollup%rowtype;
19999
20000 -- Bug 3764224 : Changed the cusrsor def'n
20001 cursor cur_ptav (p_object_id NUMBER, p_task_id NUMBER) is
20002 select ptav2.resource_list_member_id, ptav2.txn_currency_code
20003 ,ptav2.resource_class_code, ptav2.rate_based_flag
20004 ,ptav2.rbs_element_id,planned_quantity,
20005 planned_bur_cost_txn_cur,
20006 planned_bur_cost_projfunc,
20007 planned_bur_cost_proj_cur,
20008 planned_raw_cost_txn_cur,
20009 planned_raw_cost_projfunc,
20010 planned_raw_cost_proj_cur
20011 from pa_task_asgmts_v ptav2
20012 where ptav2.resource_list_member_id = p_object_id
20013 and ptav2.structure_version_id = p_dst_str_ver_id
20014 and ptav2.task_id = p_task_id
20015 ;
20016
20017 l_ptav_rec cur_ptav%rowtype;
20018
20019 l_act_TXN_COST_this_period NUMBER := 0;
20020 l_act_PRJ_COST_this_period NUMBER := 0;
20021 l_act_POU_COST_this_period NUMBER := 0;
20022 l_act_effort_this_period NUMBER := 0;
20023 l_act_TXN_RAWCOST_this_period NUMBER := 0;
20024 l_act_PRJ_RAWCOST_this_period NUMBER := 0;
20025 l_act_POU_RAWCOST_this_period NUMBER := 0;
20026 l_etc_TXN_COST_this_period NUMBER := 0;
20027 l_etc_PRJ_COST_this_period NUMBER := 0;
20028 l_etc_POU_COST_this_period NUMBER := 0;
20029 l_etc_TXN_RAWCOST_this_period NUMBER := 0;
20030 l_etc_PRJ_RAWCOST_this_period NUMBER := 0;
20031 l_etc_POU_RAWCOST_this_period NUMBER := 0;
20032 l_etc_effort_this_period NUMBER := 0;
20033
20034 l_new_object_id NUMBER;
20035 l_actuals_pushed VARCHAR2(1) :='N';
20036 l_msg_code VARCHAR2(32);
20037 l_src_str_ver_publsihed VARCHAR2(1);
20038 l_resource_class_code pa_task_assignments_v.resource_class_code%TYPE;
20039 L_TXN_CURRENCY_CODE pa_task_assignments_v.txn_currency_code%TYPE;
20040 L_RATE_BASED_FLAG varchar2(1);
20041 L_RBS_ELEMENT_ID number;
20042 l_prog_mode varchar2(1);
20043
20044 cursor cur_task_assgn(p_project_id NUMBER, p_object_version_id NUMBER) is
20045 select count(*)
20046 from pa_progress_rollup ppr
20047 where ppr.project_id = p_project_id
20048 and ppr.object_version_id = p_object_version_id
20049 and ppr.object_type = 'PA_ASSIGNMENTS'
20050 and ppr.structure_version_id is null
20051 and ppr.structure_type = 'WORKPLAN'
20052 and ppr.current_flag = 'Y';
20053
20054 L_TASK_ASSGN number;
20055
20056 /* bug 4871809 this cursor is not used
20057 --bug 3968791
20058 CURSOR cur_select_all_assgns
20059 IS
20060 SELECT ptav.*
20061 FROM pa_progress_rollup ppr2
20062 --,pa_task_assignments_v ptav --bug 3967374
20063 ,pa_task_asgmts_v ptav
20064 WHERE ppr2.project_id=p_project_id
20065 AND ptav.project_id=p_project_id
20066 AND ppr2.object_id = ptav.task_id
20067 AND (ptav.resource_list_member_id ) not in (
20068 SELECT object_id
20069 FROM pa_progress_rollup ppr
20070 where ppr.project_id=p_project_id
20071 and ppr.structure_version_id is null
20072 and ppr.current_flag = 'Y'
20073 and ppr.object_type = 'PA_ASSIGNMENTS'
20074 and ppr.structure_type = 'WORKPLAN'
20075 and ppr.proj_element_id = ppr2.proj_element_id
20076 )
20077 AND ptav.structure_version_id = p_dst_str_ver_id
20078 and ppr2.structure_version_id is null
20079 and ppr2.current_flag = 'Y'
20080 and ppr2.structure_type = 'WORKPLAN'
20081 ;*/
20082 --end bug 3968791
20083 Cursor cur_Summerized_Actuals IS
20084 Select count(1)
20085 FROM PA_Proj_Elem_Ver_Structure ppevs,
20086 PA_Proj_Elements ppe,
20087 PA_Proj_Structure_Types ppst,
20088 PA_Structure_types pst
20089 WHERE ppevs.Project_ID = P_Project_ID
20090 AND ppevs.status_code = 'STRUCTURE_PUBLISHED'
20091 AND ppevs.proj_element_id = ppe.Proj_Element_ID
20092 AND ppe.Project_ID = ppevs.Project_ID
20093 AND ppe.Proj_Element_ID = ppst.Proj_Element_ID
20094 AND ppst.Structure_Type_ID = pst.Structure_Type_ID
20095 AND pst.structure_type = 'WORKPLAN';
20096
20097 l_count number;
20098 l_index number;
20099 l_plan_type_id number;
20100 l_plan_version_id number;
20101 l_period_type varchar2(15);
20102 l_org_id number;
20103 l_proj_curr_code varchar2(15);
20104 l_proj_func_curr_code varchar2(15);
20105 cursor proj_info is
20106 select org_id, project_currency_code, projfunc_currency_code
20107 from pa_projects_all
20108 where project_id = p_project_id;
20109
20110 ETC_PROJECT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20111 ETC_PROJECT_ORG_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20112 ETC_PROJECT_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20113 ETC_STRUCT_VER_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20114 ETC_PERIOD_NAME PA_PLSQL_DATATYPES.Char80TabTyp;
20115 ETC_CALENDAR_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
20116 ETC_START_DATE PA_PLSQL_DATATYPES.DateTabTyp;
20117 ETC_END_DATE PA_PLSQL_DATATYPES.DateTabTyp;
20118 ETC_RBS_ELEMENT_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20119 ETC_RBS_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20120 ETC_PLAN_VERSION_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20121 ETC_PLAN_TYPE_ID PA_PLSQL_DATATYPES.Num15TabTyp;
20122 ETC_WP_VERSION_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
20123 ETC_ROLLUP_TYPE PA_PLSQL_DATATYPES.Char1TabTyp;
20124 ETC_PRJ_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
20125 ETC_PFC_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
20126 ETC_TXN_CURRENCY_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
20127 ETC_QUANTITY PA_PLSQL_DATATYPES.AmtTabTyp;
20128 ETC_TXN_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20129 ETC_PRJ_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20130 ETC_PFC_BURDENED_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20131 ETC_TXN_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20132 ETC_PRJ_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20133 ETC_PFC_RAW_COST PA_PLSQL_DATATYPES.AmtTabTyp;
20134 ETC_RESOURCE_CLASS_CODE PA_PLSQL_DATATYPES.Char30TabTyp;
20135 ETC_RATE_BASED_FLAG PA_PLSQL_DATATYPES.Char1TabTyp;
20136
20137 BEGIN
20138
20139 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
20140
20141 IF g1_debug_mode = 'Y' THEN
20142 pa_debug.init_err_stack ('PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC');
20143 END IF;
20144
20145 IF (p_commit = FND_API.G_TRUE) THEN
20146 savepoint COPY_PROGRESS_ACT_ETC;
20147 END IF;
20148
20149 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
20150 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20151 END IF;
20152
20153 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
20154 FND_MSG_PUB.initialize;
20155 END IF;
20156
20157 IF g1_debug_mode = 'Y' THEN
20158 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);
20159 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
20160 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);
20161 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);
20162 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);
20163 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_calling_context='||p_calling_context, x_Log_Level=> 3);
20164 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);
20165 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);
20166 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);
20167 END IF;
20168
20169
20170 x_return_status := FND_API.G_RET_STS_SUCCESS;
20171 l_calling_context := p_calling_context;
20172 -- code to make sure don't execute this procedure for first time publish structure
20173 if (l_calling_context = 'PUBLISH') then
20174 OPEN cur_Summerized_Actuals;
20175 FETCH cur_Summerized_Actuals INTO l_count;
20176 close cur_Summerized_Actuals;
20177 if l_count = 1 then
20178 l_calling_context := 'FIRST_PUBLISH';
20179 end if;
20180 end if;
20181
20182 -- 3627315 Issue 8, We should not open the cursor cur_working_wp_progress unneccesarily for PUBLSIH context
20183 -- as in this context there will never be working wp version progress
20184 -- For PJI context, it should first check whthere the source str version id is publihed or not.
20185
20186
20187 l_src_str_ver_publsihed := PA_PROJECT_STRUCTURE_UTILS.Check_Struc_Ver_Published(p_project_id, p_src_str_ver_id);
20188
20189
20190 open proj_info;
20191 fetch proj_info into l_org_id,l_proj_curr_code,l_proj_func_curr_code;
20192 close proj_info;
20193 l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase(p_dst_str_ver_id);
20194 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
20195 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
20196 p_project_id => p_project_id,
20197 p_plan_type_id => -1,
20198 p_proj_str_ver_id => p_dst_str_ver_id) ;
20199 IF ( l_calling_context = 'PUBLISH')
20200 OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
20201 l_prog_mode := 'P';
20202 OPEN cur_lp_progress;
20203 ELSIF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')
20204 OR l_calling_context = 'RBS') THEN
20205 l_prog_mode := 'W';
20206 OPEN cur_working_wp_progress;
20207 END IF;
20208
20209 l_index := 0;
20210 LOOP
20211 if (l_prog_mode = 'P') then
20212 FETCH cur_lp_progress INTO l_ppr_rec;
20213 EXIT WHEN cur_lp_progress%NOTFOUND;
20214 elsif (l_prog_mode = 'W') then
20215 FETCH cur_working_wp_progress INTO l_ppr_rec;
20216 EXIT WHEN cur_working_wp_progress%NOTFOUND;
20217 elsif (l_calling_context = 'FIRST_PUBLISH') then
20218 exit;
20219 end if;
20220
20221 -- 4417665 : We will delete assignment rollup records which are unplanned and got remapped to some
20222 -- other assignments after resource list modifications.
20223 -- Note that we could have deleted these in PA_TASK_ASSIGNMENTS_PVT.Copy_Missing_Unplanned_Asgmts too,
20224 -- But there it is difficult, so deleting here
20225
20226 -- Derive the value for l_new_object_id.
20227 l_ptav_rec := null;
20228 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
20229 FETCH cur_ptav INTO l_ptav_rec;
20230 CLOSE cur_ptav;
20231
20232 -- 4417665 : Added Beloe IF and code inside the IF
20233 IF (l_ptav_rec.rbs_element_id IS NULL
20234 AND (((nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)
20235 +nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)) = 0 )
20236 AND
20237 ((nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)) = 0)
20238 AND
20239 ((nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)
20240 +nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)) = 0)
20241 AND
20242 ((nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)) = 0)
20243 )
20244 )
20245 THEN
20246 IF l_prog_mode = 'P' THEN
20247 DELETE from pa_progress_rollup
20248 WHERE project_id = p_project_id
20249 AND structure_version_id is null
20250 AND structure_type = 'WORKPLAN'
20251 AND object_type = 'PA_ASSIGNMENTS'
20252 AND object_id = l_ppr_rec.object_id
20253 AND proj_element_id = l_ppr_rec.proj_element_id;
20254 END IF;
20255 IF l_prog_mode = 'W' THEN
20256 DELETE from pa_progress_rollup
20257 WHERE project_id = p_project_id
20258 AND structure_version_id = p_src_str_ver_id
20259 AND structure_type = 'WORKPLAN'
20260 AND object_type = 'PA_ASSIGNMENTS'
20261 AND object_id = l_ppr_rec.object_id
20262 AND proj_element_id = l_ppr_rec.proj_element_id;
20263 END IF;
20264 ELSE
20265
20266 l_index := l_index + 1;
20267 ETC_PROJECT_ID(l_index) := p_project_id;
20268 ETC_PROJECT_ELEMENT_ID(l_index) := l_ppr_rec.proj_element_id;
20269 ETC_STRUCT_VER_ID(l_index) := p_dst_str_ver_id;
20270 if (l_period_type = 'P') then
20271 ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_pa_period_name;
20272 elsif (l_period_type = 'G') then
20273 ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_gl_period_name;
20274 else
20275 ETC_PERIOD_NAME(l_index) := null;
20276 end if;
20277 ETC_CALENDAR_TYPE(l_index) := l_period_type;
20278 ETC_START_DATE(l_index) := null;
20279 ETC_END_DATE(l_index) := l_ppr_rec.as_of_date;
20280 ETC_RBS_VERSION_ID(l_index) := null;
20281 ETC_PLAN_VERSION_ID(l_index) := l_plan_version_id;
20282 ETC_PLAN_TYPE_ID(l_index) := l_plan_type_id;
20283 ETC_WP_VERSION_FLAG(l_index) := 'Y';
20284 ETC_ROLLUP_TYPE(l_index) := 'W';
20285 ETC_PROJECT_ORG_ID(l_index) := l_org_id;
20286 ETC_PRJ_CURRENCY_CODE(l_index) := l_proj_curr_code;
20287 ETC_PFC_CURRENCY_CODE(l_index) := l_proj_func_curr_code;
20288
20289 -- 4417665 : Moving this code up
20290 /*
20291 -- Derive the value for l_new_object_id.
20292 l_ptav_rec := null;
20293 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
20294 FETCH cur_ptav INTO l_ptav_rec;
20295 CLOSE cur_ptav;
20296 */
20297
20298 ETC_RBS_ELEMENT_ID(l_index) := l_ptav_rec.rbs_element_id;
20299 ETC_RATE_BASED_FLAG(l_index) := l_ptav_rec.rate_based_flag;
20300 etc_resource_class_code(l_index) := l_ptav_rec.resource_class_code;
20301 ETC_TXN_CURRENCY_CODE(l_index) := l_ptav_rec.txn_currency_code;
20302
20303 /*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)
20304 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
20305 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)
20306 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
20307 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)
20308 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
20309 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)
20310 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
20311 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)
20312 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
20313 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)
20314 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
20315 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
20316 +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
20317 */
20318 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;
20319
20320 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;
20321 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;
20322 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;
20323 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;
20324 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;
20325 if (l_ptav_rec.resource_class_code in ('PEOPLE','EQUIPMENT')) then
20326 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;
20327 else
20328 ETC_QUANTITY(l_index) := nvl(l_ppr_rec.oth_etc_quantity,0) - l_ptav_rec.planned_quantity;
20329 end if;
20330
20331 ---added logic to copy actuals and ETC selctively bug 3821122
20332
20333 IF p_copy_etc_flag = 'N' THEN
20334 ETC_TXN_BURDENED_COST(l_index) :=null;
20335 ETC_PRJ_BURDENED_COST(l_index) := null;
20336 ETC_PFC_BURDENED_COST(l_index) := null;
20337 ETC_QUANTITY(l_index) := null;
20338 ETC_TXN_RAW_COST(l_index) := null;
20339 ETC_PRJ_RAW_COST(l_index) := null;
20340 ETC_PFC_RAW_COST(l_index) := null;
20341 END IF;
20342 END IF; -- IF (l_ptav_rec.rbs_element_id IS NULL
20343 END LOOP;
20344 if (l_prog_mode = 'P') then
20345 CLOSE cur_lp_progress;
20346 elsif (l_prog_mode = 'W') then
20347 CLOSE cur_working_wp_progress;
20348 end if;
20349
20350 IF g1_debug_mode = 'Y' THEN
20351 for l_count in 1..l_index loop
20352 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);
20353 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
20354 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);
20355 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);
20356 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);
20357 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);
20358 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);
20359 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);
20360 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);
20361 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);
20362 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);
20363 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);
20364 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);
20365 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);
20366 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);
20367 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);
20368 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);
20369 end loop;
20370 END IF;
20371
20372 FORALL l_count IN 1..l_index
20373 INSERT INTO PJI_FM_EXTR_PLAN_LINES(
20374 PROJECT_ID
20375 ,PROJECT_ORG_ID
20376 ,PROJECT_ELEMENT_ID
20377 ,STRUCT_VER_ID
20378 ,PERIOD_NAME
20379 ,CALENDAR_TYPE
20380 ,END_DATE
20381 ,RBS_ELEMENT_ID
20382 ,PLAN_VERSION_ID
20383 ,PLAN_TYPE_ID
20384 ,WP_VERSION_FLAG
20385 ,ROLLUP_TYPE
20386 ,TXN_CURRENCY_CODE
20387 ,ETC_QUANTITY
20388 ,ETC_TXN_BURDENED_COST
20389 ,ETC_PRJ_BURDENED_COST
20390 ,ETC_PFC_BURDENED_COST
20391 ,ETC_TXN_RAW_COST
20392 ,ETC_PRJ_RAW_COST
20393 ,ETC_PFC_RAW_COST
20394 ,RESOURCE_CLASS_CODE
20395 ,RATE_BASED_FLAG
20396 ,PRJ_CURRENCY_CODE
20397 ,PFC_CURRENCY_CODE)
20398 VALUES( ETC_PROJECT_ID(l_count)
20399 ,ETC_PROJECT_ORG_ID(l_count)
20400 ,ETC_PROJECT_ELEMENT_ID(l_count)
20401 ,ETC_STRUCT_VER_ID(l_count)
20402 ,ETC_PERIOD_NAME(l_count)
20403 ,ETC_CALENDAR_TYPE(l_count)
20404 ,ETC_END_DATE(l_count)
20405 ,ETC_RBS_ELEMENT_ID(l_count)
20406 ,ETC_PLAN_VERSION_ID(l_count)
20407 ,ETC_PLAN_TYPE_ID(l_count)
20408 ,ETC_WP_VERSION_FLAG(l_count)
20409 ,ETC_ROLLUP_TYPE(l_count)
20410 ,ETC_TXN_CURRENCY_CODE(l_count)
20411 ,ETC_QUANTITY(l_count)
20412 ,ETC_TXN_BURDENED_COST(l_count)
20413 ,ETC_PRJ_BURDENED_COST(l_count)
20414 ,ETC_PFC_BURDENED_COST(l_count)
20415 ,ETC_TXN_RAW_COST(l_count)
20416 ,ETC_PRJ_RAW_COST(l_count)
20417 ,ETC_PFC_RAW_COST(l_count)
20418 ,ETC_RESOURCE_CLASS_CODE(l_count)
20419 ,ETC_RATE_BASED_FLAG(l_count)
20420 ,ETC_PRJ_CURRENCY_CODE(l_count)
20421 ,ETC_PFC_CURRENCY_CODE(l_count));
20422 if (g1_debug_mode = 'Y') then
20423 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals' , x_Log_Level=> 3);
20424 END IF;
20425
20426 l_actuals_pushed := 'Y';
20427
20428 /******** NOT REQUIRED
20429 --bug 3968791
20430 --select all assignments' planned values whose progress does not exists in progress rollup table and pass them
20431 --to PJI as ETC. This is applicable if any of the assignments for a given task has progress overridden.
20432 --This change will NOT select assignments from those tasks for which there is no single assignment has ETC.
20433 --Also the cursor will not select hidden assignments.
20434
20435 --Push to PJI only if there is progress for some objects and also if copy ETC flag is yes.
20436 IF l_actuals_pushed = 'Y' AND p_copy_etc_flag = 'Y'
20437 THEN
20438 IF ( l_calling_context = 'PUBLISH')
20439 OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
20440 FOR cur_select_all_assgns_rec IN cur_select_all_assgns LOOP
20441
20442 IF g1_debug_mode = 'Y' THEN
20443 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);
20444 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
20445 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);
20446 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);
20447 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);
20448 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);
20449 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);
20450 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);
20451 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);
20452 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);
20453
20454 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);
20455 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);
20456 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);
20457 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);
20458 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);
20459 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);
20460 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);
20461
20462 END IF;
20463 -- Call push workplan actuals.
20464 PA_PROGRESS_PUB.push_workplan_actuals(
20465 p_api_version => p_api_version
20466 ,p_init_msg_list => p_init_msg_list
20467 ,p_commit => p_commit
20468 ,p_validate_only => p_validate_only
20469 ,p_validation_level => p_validation_level
20470 ,p_calling_module => p_calling_module
20471 ,p_debug_mode => p_debug_mode
20472 ,p_max_msg_count => p_max_msg_count
20473 ,p_project_Id => p_project_Id
20474 ,p_structure_version_id => p_dst_str_ver_id
20475 ,p_proj_element_id => cur_select_all_assgns_rec.task_id
20476 ,p_object_id => cur_select_all_assgns_rec.resource_list_member_id
20477 ,p_object_type => 'PA_ASSIGNMENTS'
20478 ,p_as_of_date => cur_select_all_assgns_rec.planning_start_date
20479 ,p_rbs_element_id => cur_select_all_assgns_rec.rbs_element_id
20480 ,p_rate_based_flag => cur_select_all_assgns_rec.rate_based_flag
20481 ,p_resource_class_code => cur_select_all_assgns_rec.resource_class_code
20482 ,p_TXN_CURRENCY_CODE => cur_select_all_assgns_rec.TXN_CURRENCY_CODE
20483 ,p_call_pji_apis_flag => 'N'
20484 ,p_etc_TXN_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_TXN_CUR
20485 ,p_etc_PRJ_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJ_CUR
20486 ,p_etc_POU_COST_this_period => cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJFUNC
20487 ,p_etc_effort_this_period => cur_select_all_assgns_rec.PLANNED_QUANTITY
20488 ,p_etc_TXN_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_TXN_CUR
20489 ,p_etc_PRJ_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJ_CUR
20490 ,p_etc_POU_raw_COST_this_period => cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJFUNC
20491 ,p_pa_period_name => null
20492 ,p_gl_period_name => null --pass null period name. let push workplan actual derive it based on planning start date
20493 ,x_return_status => l_return_status
20494 ,x_msg_count => l_msg_count
20495 ,x_msg_data => l_msg_data
20496 );
20497 END LOOP;
20498 END IF;
20499 END IF;
20500 --bug 3968791
20501
20502 IF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')OR l_calling_context = 'RBS') THEN
20503
20504 OPEN cur_working_wp_progress;
20505 LOOP
20506 FETCH cur_working_wp_progress INTO l_ppr_rec;
20507 EXIT WHEN cur_working_wp_progress%NOTFOUND;
20508
20509 -- Initialize the amount variables.
20510 l_act_TXN_COST_this_period := null;
20511 l_act_PRJ_COST_this_period := null;
20512 l_act_POU_COST_this_period := null;
20513 l_act_TXN_RAWCOST_this_period := null;
20514 l_act_PRJ_RAWCOST_this_period := null;
20515 l_act_POU_RAWCOST_this_period := null;
20516 l_etc_TXN_COST_this_period := null;
20517 l_etc_PRJ_COST_this_period := null;
20518 l_etc_POU_COST_this_period := null;
20519 l_etc_TXN_RAWCOST_this_period := null;
20520 l_etc_PRJ_RAWCOST_this_period := null;
20521 l_etc_POU_RAWCOST_this_period := null;
20522 l_act_effort_this_period := null;
20523 l_etc_effort_this_period := null;
20524
20525 -- Derive the value for l_new_object_id.
20526 l_ptav_rec := null;
20527 IF l_ppr_rec.object_type = 'PA_ASSIGNMENTS' then
20528 OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
20529 FETCH cur_ptav INTO l_ptav_rec;
20530 CLOSE cur_ptav;
20531
20532 --l_new_object_id := l_ptav_rec.resource_assignment_id; Bug 3764224
20533 l_new_object_id := l_ptav_rec.resource_list_member_id; -- Bug 3764224
20534 l_rbs_element_id := l_ptav_rec.rbs_element_id;
20535 l_rate_based_flag := l_ptav_rec.rate_based_flag;
20536 l_resource_class_code := l_ptav_rec.resource_class_code;
20537 l_TXN_CURRENCY_CODE := l_ptav_rec.txn_currency_code;
20538 END IF;
20539
20540 -- Names of these variables are this period but actually it is sending cumulative amounts
20541 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)
20542 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
20543 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)
20544 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
20545 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)
20546 +nvl(l_ppr_rec.subprj_oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
20547 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)
20548 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
20549 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)
20550 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
20551 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)
20552 +nvl(l_ppr_rec.spj_oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
20553 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)
20554 +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));
20555 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)
20556 +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));
20557 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)
20558 +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));
20559 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)
20560 +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));
20561 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)
20562 +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));
20563 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)
20564 +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));
20565 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
20566 +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
20567 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
20568 +nvl(l_ppr_rec.subprj_ppl_etc_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_effort,0));
20569
20570 IF l_calling_context = 'RBS' THEN
20571 l_act_TXN_COST_this_period := null;
20572 l_act_PRJ_COST_this_period := null;
20573 l_act_POU_COST_this_period := null;
20574 l_act_effort_this_period := null;
20575 l_act_TXN_RAWCOST_this_period := null;
20576 l_act_PRJ_RAWCOST_this_period := null;
20577 l_act_POU_RAWCOST_this_period := null;
20578 END IF;
20579
20580
20581 ---added logic to copy actuals and ETC selctively bug 3821122
20582
20583 IF p_copy_actuals_flag = 'N'
20584 THEN
20585 l_act_TXN_COST_this_period := null;
20586 l_act_PRJ_COST_this_period := null;
20587 l_act_POU_COST_this_period := null;
20588 l_act_effort_this_period := null;
20589 l_act_TXN_RAWCOST_this_period := null;
20590 l_act_PRJ_RAWCOST_this_period := null;
20591 l_act_POU_RAWCOST_this_period := null;
20592 END IF;
20593
20594 IF p_copy_etc_flag = 'N'
20595 THEN
20596 l_etc_TXN_COST_this_period :=null;
20597 l_etc_PRJ_COST_this_period := null;
20598 l_etc_POU_COST_this_period := null;
20599 l_etc_effort_this_period := null;
20600 l_etc_TXN_RAWCOST_this_period := null;
20601 l_etc_PRJ_RAWCOST_this_period := null;
20602 l_etc_POU_RAWCOST_this_period := null;
20603 END IF;
20604
20605 IF g1_debug_mode = 'Y' THEN
20606 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);
20607 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
20608 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);
20609 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);
20610 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);
20611 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);
20612 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);
20613 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);
20614 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);
20615 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);
20616 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);
20617 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);
20618 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);
20619 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);
20620 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);
20621 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
20622 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);
20623 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);
20624 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);
20625 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);
20626 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);
20627 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);
20628 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);
20629 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);
20630 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);
20631 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);
20632 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);
20633 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);
20634 END IF;
20635
20636 -- Call push workplan actuals.
20637 PA_PROGRESS_PUB.push_workplan_actuals(
20638 p_api_version => p_api_version
20639 ,p_init_msg_list => p_init_msg_list
20640 ,p_commit => p_commit
20641 ,p_validate_only => p_validate_only
20642 ,p_validation_level => p_validation_level
20643 ,p_calling_module => p_calling_module
20644 ,p_debug_mode => p_debug_mode
20645 ,p_max_msg_count => p_max_msg_count
20646 ,p_project_Id => p_project_Id
20647 ,p_structure_version_id => p_dst_str_ver_id
20648 ,p_proj_element_id => l_ppr_rec.proj_element_id
20649 ,p_object_id => l_new_object_id
20650 ,p_object_type => l_ppr_rec.object_type
20651 ,p_as_of_date => l_ppr_rec.as_of_date
20652 ,p_rbs_element_id => l_rbs_element_id--l_ptav_rec.rbs_element_id
20653 ,p_rate_based_flag => l_rate_based_flag--l_ptav_rec.rate_based_flag
20654 ,p_resource_class_code => l_resource_class_code--l_ptav_rec.resource_class_code
20655 ,p_TXN_CURRENCY_CODE => l_TXN_CURRENCY_CODE--l_ptav_rec.txn_currency_code
20656 ,p_act_TXN_COST_this_period => l_act_TXN_COST_this_period
20657 ,p_act_PRJ_COST_this_period => l_act_PRJ_COST_this_period
20658 ,p_act_POU_COST_this_period => l_act_POU_COST_this_period
20659 ,p_act_effort_this_period => l_act_effort_this_period
20660 ,p_call_pji_apis_flag => 'N'
20661 ,p_act_TXN_raw_COST_this_period => l_act_TXN_RAWCOST_this_period
20662 ,p_act_PRJ_raw_COST_this_period => l_act_PRJ_RAWCOST_this_period
20663 ,p_act_POU_raw_COST_this_period => l_act_POU_RAWCOST_this_period
20664 ,p_etc_TXN_COST_this_period => l_etc_TXN_COST_this_period
20665 ,p_etc_PRJ_COST_this_period => l_etc_PRJ_COST_this_period
20666 ,p_etc_POU_COST_this_period => l_etc_POU_COST_this_period
20667 ,p_etc_effort_this_period => l_etc_effort_this_period
20668 ,p_etc_TXN_raw_COST_this_period => l_etc_TXN_RAWCOST_this_period
20669 ,p_etc_PRJ_raw_COST_this_period => l_etc_PRJ_RAWCOST_this_period
20670 ,p_etc_POU_raw_COST_this_period => l_etc_POU_RAWCOST_this_period
20671 ,p_pa_period_name => l_ppr_rec.prog_pa_period_name
20672 ,p_gl_period_name => l_ppr_rec.prog_gl_period_name
20673 ,x_return_status => l_return_status
20674 ,x_msg_count => l_msg_count
20675 ,x_msg_data => l_msg_data);
20676
20677 IF g1_debug_mode = 'Y' THEN
20678 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);
20679 END IF;
20680
20681
20682 l_actuals_pushed := 'Y';
20683 END LOOP;
20684 CLOSE cur_working_wp_progress;
20685 END IF;
20686 ************/
20687
20688 /*********** NOT REQUIRED as PJI will have ETC as planned
20689 -- This push is required when you do not have progress record. We want PJI to stamp ETC as PLANNED initially
20690 -- So next time onwards when we send +ve ETC, it will subtract that ETC from it.
20691
20692
20693 if NVL(l_actuals_pushed,'N') = 'N' and l_calling_context = 'PUBLISH'
20694 then
20695
20696 OPEN cur_ppev_ptav;
20697
20698 LOOP
20699
20700 FETCH cur_ppev_ptav INTO l_ppev_ptav_rec;
20701
20702 EXIT WHEN cur_ppev_ptav%NOTFOUND;
20703
20704
20705 -- Initialize the amount variables.
20706
20707 l_act_TXN_COST_this_period := null;
20708 l_act_PRJ_COST_this_period := null;
20709 l_act_POU_COST_this_period := null;
20710 l_act_TXN_RAWCOST_this_period := null;
20711 l_act_PRJ_RAWCOST_this_period := null;
20712 l_act_POU_RAWCOST_this_period := null;
20713 l_etc_TXN_COST_this_period := null;
20714 l_etc_PRJ_COST_this_period := null;
20715 l_etc_POU_COST_this_period := null;
20716 l_etc_TXN_RAWCOST_this_period := null;
20717 l_etc_PRJ_RAWCOST_this_period := null;
20718 l_etc_POU_RAWCOST_this_period := null;
20719 l_act_effort_this_period := null;
20720 l_etc_effort_this_period := null;
20721
20722
20723 -- Call push workplan actuals.
20724 IF g1_debug_mode = 'Y' THEN
20725 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);
20726 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
20727 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);
20728 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);
20729 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);
20730 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);
20731 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||trunc(sysdate), x_Log_Level=> 3);
20732 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);
20733 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);
20734 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);
20735 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);
20736 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);
20737 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);
20738 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);
20739 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);
20740 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
20741 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);
20742 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);
20743 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);
20744 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);
20745 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);
20746 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);
20747 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);
20748 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);
20749 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);
20750 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);
20751 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);
20752 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);
20753 END IF;
20754
20755
20756 PA_PROGRESS_PUB.push_workplan_actuals(
20757 p_api_version => p_api_version
20758 ,p_init_msg_list => p_init_msg_list
20759 ,p_commit => p_commit
20760 ,p_validate_only => p_validate_only
20761 ,p_validation_level => p_validation_level
20762 ,p_calling_module => p_calling_module
20763 ,p_debug_mode => p_debug_mode
20764 ,p_max_msg_count => p_max_msg_count
20765 ,p_project_Id => p_project_Id
20766 ,p_structure_version_id => p_dst_str_ver_id
20767 ,p_proj_element_id => l_ppev_ptav_rec.proj_element_id
20768 ,p_object_id => l_ppev_ptav_rec.object_id
20769 ,p_object_type => l_ppev_ptav_rec.object_type
20770 ,p_as_of_date => trunc(sysdate) -- IS it OK to pass this as null, which period this will summarize into?
20771 ,p_rbs_element_id => l_ppev_ptav_rec.rbs_element_id
20772 ,p_rate_based_flag => l_ppev_ptav_rec.rate_based_flag
20773 ,p_resource_class_code => l_ppev_ptav_rec.resource_class_code
20774 ,p_TXN_CURRENCY_CODE => l_ppev_ptav_rec.txn_currency_code
20775 ,p_act_TXN_COST_this_period => l_act_TXN_COST_this_period
20776 ,p_act_PRJ_COST_this_period => l_act_PRJ_COST_this_period
20777 ,p_act_POU_COST_this_period => l_act_POU_COST_this_period
20778 ,p_act_effort_this_period => l_act_effort_this_period
20779 ,p_call_pji_apis_flag => 'N'
20780 ,p_act_TXN_raw_COST_this_period => l_act_TXN_RAWCOST_this_period
20781 ,p_act_PRJ_raw_COST_this_period => l_act_PRJ_RAWCOST_this_period
20782 ,p_act_POU_raw_COST_this_period => l_act_POU_RAWCOST_this_period
20783 ,p_etc_TXN_COST_this_period => l_etc_TXN_COST_this_period
20784 ,p_etc_PRJ_COST_this_period => l_etc_PRJ_COST_this_period
20785 ,p_etc_POU_COST_this_period => l_etc_POU_COST_this_period
20786 ,p_etc_effort_this_period => l_etc_effort_this_period
20787 ,p_etc_TXN_raw_COST_this_period => l_etc_TXN_RAWCOST_this_period
20788 ,p_etc_PRJ_raw_COST_this_period => l_etc_PRJ_RAWCOST_this_period
20789 ,p_etc_POU_raw_COST_this_period => l_etc_POU_RAWCOST_this_period
20790 ,x_return_status => l_return_status
20791 ,x_msg_count => l_msg_count
20792 ,x_msg_data => l_msg_data);
20793
20794 IF g1_debug_mode = 'Y' THEN
20795 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);
20796 END IF;
20797
20798
20799 l_actuals_pushed := 'Y';
20800
20801 END LOOP;
20802 CLOSE cur_ppev_ptav;
20803
20804 END IF; --<<l_actuals_pushed>>
20805 ***************/
20806
20807 if nvl( l_actuals_pushed, 'N') = 'Y' and (p_pji_conc_prog_context = 'N') -- Fix for Bug # 3996159.
20808 then
20809 BEGIN
20810
20811 IF g1_debug_mode = 'Y' THEN
20812 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling PLAN_UPDATE_ACT_ETC', x_Log_Level=> 3);
20813 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);
20814 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);
20815 END IF;
20816
20817
20818 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (p_plan_wbs_ver_id => p_dst_str_ver_id
20819 , p_prev_pub_wbs_ver_id => p_last_pub_str_version_id
20820 , x_msg_code => l_msg_code
20821 , x_return_status => l_return_status);
20822
20823 IF g1_debug_mode = 'Y' THEN
20824 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);
20825 END IF;
20826
20827
20828 EXCEPTION
20829 WHEN OTHERS THEN
20830 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
20831 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
20832 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
20833 RAISE FND_API.G_EXC_ERROR;
20834 END;
20835
20836 -- populate_workplan_data is not called as it is called from page itself.
20837 end if;
20838
20839
20840 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
20841 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
20842 p_msg_name => l_msg_data);
20843 x_msg_data := l_msg_data;
20844 x_return_status := 'E';
20845 x_msg_count := l_msg_count;
20846 RAISE FND_API.G_EXC_ERROR;
20847 END IF;
20848 /***********
20849 -- here we need to make ETC as null on assignment records
20850 if (l_calling_context = 'PUBLISH') then
20851 update pa_progress_rollup
20852 set oth_etc_quantity = to_number(null)
20853 ,oth_etc_rawcost_tc = to_number(null)
20854 ,oth_etc_rawcost_pc = to_number(null)
20855 ,oth_etc_rawcost_fc = to_number(null)
20856 ,oth_etc_cost_tc = to_number(null)
20857 ,oth_etc_cost_pc = to_number(null)
20858 ,oth_etc_cost_fc = to_number(null)
20859 ,estimated_remaining_effort = to_number(null)
20860 ,ppl_etc_rawcost_tc = to_number(null)
20861 ,ppl_etc_rawcost_pc = to_number(null)
20862 ,ppl_etc_rawcost_fc = to_number(null)
20863 ,ppl_etc_cost_tc = to_number(null)
20864 ,ppl_etc_cost_pc = to_number(null)
20865 ,ppl_etc_cost_fc = to_number(null)
20866 ,eqpmt_etc_effort = to_number(null)
20867 ,eqpmt_etc_rawcost_tc = to_number(null)
20868 ,eqpmt_etc_rawcost_pc = to_number(null)
20869 ,eqpmt_etc_rawcost_fc = to_number(null)
20870 ,eqpmt_etc_cost_tc = to_number(null)
20871 ,eqpmt_etc_cost_pc = to_number(null)
20872 ,eqpmt_etc_cost_fc = to_number(null)
20873 ,last_update_date = SYSDATE
20874 where project_id = p_project_id
20875 and object_type = 'PA_ASSIGNMENTS'
20876 and structure_version_id is null
20877 and structure_type = 'WORKPLAN'
20878 and current_flag = 'Y';
20879 end if;
20880 ************/
20881 IF (p_commit = FND_API.G_TRUE) THEN
20882 COMMIT;
20883 END IF;
20884
20885 EXCEPTION
20886
20887 when FND_API.G_EXC_ERROR then
20888 if p_commit = FND_API.G_TRUE then
20889 rollback to COPY_PROGRESS_ACT_ETC;
20890 end if;
20891 x_return_status := FND_API.G_RET_STS_ERROR;
20892
20893 when FND_API.G_EXC_UNEXPECTED_ERROR then
20894 if p_commit = FND_API.G_TRUE then
20895 rollback to COPY_PROGRESS_ACT_ETC;
20896 end if;
20897 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
20898 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
20899 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
20900 p_error_text => SUBSTRB(SQLERRM,1,120));
20901 when OTHERS then
20902 if p_commit = FND_API.G_TRUE then
20903 rollback to COPY_PROGRESS_ACT_ETC;
20904 end if;
20905 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
20906 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
20907 p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
20908 p_error_text => SUBSTRB(SQLERRM,1,120));
20909 raise;
20910
20911 END COPY_PROGRESS_ACT_ETC;
20912
20913
20914
20915 -- Bug 3807299 : new API which will be called from update_progress and AMG pa_status_pub.update_progress
20916 PROCEDURE update_link_proj_rollup_dates(
20917 p_api_version IN NUMBER :=1.0
20918 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
20919 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
20920 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
20921 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
20922 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
20923 ,p_project_id IN NUMBER
20924 ,p_task_id IN NUMBER
20925 ,p_task_version_id IN NUMBER
20926 ,p_as_of_date IN DATE
20927 ,p_structure_version_id IN NUMBER
20928 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20929 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
20930 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20931 )
20932 IS
20933 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_LINK_PROJ_ROLLUP_DATES';
20934 l_api_version CONSTANT NUMBER := p_api_version;
20935 l_user_id NUMBER := FND_GLOBAL.USER_ID;
20936 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
20937 l_return_status VARCHAR2(1);
20938 l_msg_count NUMBER;
20939 l_msg_data VARCHAR2(250);
20940
20941 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
20942 select min(ppr.actual_start_date), max(ppr.actual_finish_date), min(ppr.estimated_start_date), max(ppr.estimated_finish_date)
20943 FROM
20944 --- removed join with pa_structures_links_v for performance improvement
20945 pa_proj_element_versions ppv1 --4871809
20946 ,pa_proj_element_versions ppv2
20947 ,pa_object_relationships por1
20948 ,pa_object_relationships por2
20949 ,pa_progress_rollup ppr
20950 WHERE
20951 ppv2.element_version_id = por1.object_id_to1
20952 AND ppv2.object_type = 'PA_STRUCTURES'
20953 AND por1.relationship_type in ( 'LW', 'LF' )
20954 AND por1.object_id_from1 = por2.object_id_to1
20955 AND por2.object_id_from1 = ppv1.element_version_id
20956 ANd por2.relationship_type = 'S'
20957 and por2.object_id_from2 = c_par_project_id
20958 and por2.object_id_from1 = c_par_task_ver_id
20959 and ppv1.parent_structure_version_id = c_par_str_ver_id
20960 AND por1.object_id_to2 = ppr.project_id
20961 and ppr.structure_type = 'WORKPLAN'
20962 and ppr.structure_version_id is null
20963 and ppr.object_type = 'PA_STRUCTURES'
20964 and ppr.current_flag <> 'W' -- Bug 3879461
20965 and trunc(ppr.as_of_date) <= trunc(c_as_of_date);
20966
20967 CURSOR c_get_sch_dates(c_project_id NUMBER, c_task_id NUMBER, c_task_ver_id NUMBER) IS
20968 select pev_schedule_id, actual_start_date, actual_finish_date, estimated_start_date, estimated_finish_date
20969 from pa_proj_elem_ver_schedule
20970 where project_id = c_project_id
20971 and proj_element_id = c_task_id
20972 and element_version_id = c_task_ver_id
20973 ;
20974
20975 l_min_act_st_date DATE;
20976 l_max_act_fin_date DATE;
20977 l_min_est_st_date DATE;
20978 l_max_est_fin_date DATE;
20979 l_pev_schedule_id NUMBER;
20980 l_act_st_date DATE;
20981 l_act_fin_date DATE;
20982 l_est_st_date DATE;
20983 l_est_fin_date DATE;
20984 l_actual_start_date_rollup NUMBER;
20985 l_actual_finish_date_rollup NUMBER;
20986 l_estimated_start_date_rollup NUMBER;
20987 l_estimated_finish_date_rollup NUMBER;
20988
20989 BEGIN
20990
20991 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
20992
20993 IF g1_debug_mode = 'Y' THEN
20994 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
20995 END IF;
20996
20997 IF g1_debug_mode = 'Y' THEN
20998 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);
20999 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);
21000 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);
21001 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);
21002 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);
21003 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);
21004 END IF;
21005
21006 IF g1_debug_mode = 'Y' THEN
21007 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
21008 END IF;
21009
21010 IF (p_commit = FND_API.G_TRUE) THEN
21011 savepoint UPDATE_LINK_PROJ_ROLLUP_DATES;
21012 END IF;
21013
21014 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21015 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21016 END IF;
21017
21018 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21019 FND_MSG_PUB.initialize;
21020 END IF;
21021
21022 x_return_status := FND_API.G_RET_STS_SUCCESS;
21023
21024 OPEN c_get_min_max_dates(p_project_id, p_task_id, p_task_version_id, p_structure_version_id, p_as_of_date);
21025 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;
21026 CLOSE c_get_min_max_dates;
21027
21028 OPEN c_get_sch_dates(p_project_id, p_task_id, p_task_version_id);
21029 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;
21030 CLOSE c_get_sch_dates;
21031
21032 IF l_min_act_st_date IS NOT NULL OR l_max_act_fin_date IS NOT NULL OR
21033 l_min_est_st_date IS NOT NULL OR l_max_est_fin_date IS NOT NULL THEN
21034
21035 IF l_min_act_st_date IS NOT NULL AND l_act_st_date IS NOT NULL THEN
21036 l_actual_start_date_rollup := l_act_st_date - l_min_act_st_date;
21037 END IF;
21038
21039 IF l_max_act_fin_date IS NOT NULL AND l_act_fin_date IS NOT NULL THEN
21040 l_actual_finish_date_rollup := l_act_fin_date - l_max_act_fin_date;
21041 END IF;
21042
21043 IF l_min_est_st_date IS NOT NULL AND l_est_st_date IS NOT NULL THEN
21044 l_estimated_start_date_rollup := l_est_st_date - l_min_est_st_date;
21045 END IF;
21046
21047 IF l_max_est_fin_date IS NOT NULL AND l_est_fin_date IS NOT NULL THEN
21048 l_estimated_finish_date_rollup := l_est_fin_date - l_max_est_fin_date;
21049 END IF;
21050
21051 UPDATE pa_proj_elem_ver_schedule
21052 SET actual_start_date_rollup= l_actual_start_date_rollup
21053 , actual_finish_date_rollup = l_actual_finish_date_rollup
21054 , estimated_start_date_rollup = l_estimated_start_date_rollup
21055 , estimated_finish_date_rollup = l_estimated_finish_date_rollup
21056 WHERE
21057 project_id = p_project_id
21058 and pev_schedule_id = l_pev_schedule_id
21059 and element_version_id = p_task_version_id
21060 and proj_element_id = p_task_id;
21061 END IF;
21062
21063 IF (p_commit = FND_API.G_TRUE) THEN
21064 COMMIT;
21065 END IF;
21066
21067
21068 EXCEPTION
21069 when FND_API.G_EXC_ERROR then
21070 if p_commit = FND_API.G_TRUE then
21071 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
21072 end if;
21073 x_return_status := FND_API.G_RET_STS_ERROR;
21074 when FND_API.G_EXC_UNEXPECTED_ERROR then
21075 if p_commit = FND_API.G_TRUE then
21076 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
21077 end if;
21078 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21079 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21080 p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
21081 p_error_text => SUBSTRB(SQLERRM,1,120));
21082 when OTHERS then
21083 if p_commit = FND_API.G_TRUE then
21084 rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
21085 end if;
21086 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21087 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21088 p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
21089 p_error_text => SUBSTRB(SQLERRM,1,120));
21090 raise;
21091 END update_link_proj_rollup_dates;
21092
21093 PROCEDURE UPDATE_PROGRESS_BULK(
21094 p_api_version IN NUMBER :=1.0
21095 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
21096 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
21097 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
21098 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
21099 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
21100 ,p_calling_mode IN VARCHAR2 := null
21101 ,p_debug_mode IN VARCHAR2 :='N'
21102 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21103 ,p_action IN VARCHAR2 :='SAVE'
21104 ,p_rollup_entire_wbs_flag IN VARCHAR2 :='N'
21105 ,p_progress_mode IN VARCHAR2 :='FUTURE'
21106 ,p_pm_product_code IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
21107 ,p_structure_type IN VARCHAR2 := 'WORKPLAN'
21108 ,p_project_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21109 ,p_object_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21110 ,p_object_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21111 ,p_object_type_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
21112 ,p_task_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21113 ,p_structure_version_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21114 ,p_as_of_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21115 ,p_rbs_element_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21116 ,p_resource_assignment_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21117 ,p_rate_based_flag_tbl IN SYSTEM.pa_varchar2_1_tbl_type := SYSTEM.pa_varchar2_1_tbl_type()
21118 ,p_resource_class_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
21119 ,p_txn_currency_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
21120 ,p_percent_complete_id_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21121 ,p_record_version_number_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21122 ,p_percent_complete_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21123 ,p_eff_rup_percent_complete_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21124 ,p_task_status_tbl IN SYSTEM.pa_varchar2_150_tbl_type := SYSTEM.pa_varchar2_150_tbl_type()
21125 ,p_progress_status_code_tbl IN SYSTEM.pa_varchar2_30_tbl_type := SYSTEM.pa_varchar2_30_tbl_type()
21126 ,p_progress_comment_tbl IN SYSTEM.pa_varchar2_2000_tbl_type := SYSTEM.pa_varchar2_2000_tbl_type()
21127 ,p_brief_overview_tbl IN SYSTEM.pa_varchar2_240_tbl_type := SYSTEM.pa_varchar2_240_tbl_type()
21128 ,p_actual_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21129 ,p_actual_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21130 ,p_estimated_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21131 ,p_estimated_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21132 ,p_scheduled_start_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21133 ,p_scheduled_finish_date_tbl IN SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type()
21134 ,p_est_remaining_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21135 ,p_etc_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21136 ,p_actual_work_quantity_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21137 ,p_actual_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21138 ,p_actual_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21139 ,p_act_eff_this_period_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21140 ,p_actual_cost_this_period_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21141 ,p_planned_cost_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21142 ,p_planned_effort_tbl IN SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()
21143 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21144 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
21145 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21146 )
21147 IS
21148
21149 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PROGRESSES_BULK' ;
21150 l_api_version CONSTANT NUMBER := p_api_version ;
21151 l_user_id NUMBER := FND_GLOBAL.USER_ID ;
21152 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID ;
21153 l_return_status VARCHAR2(1) ;
21154 l_msg_count NUMBER ;
21155 l_msg_data VARCHAR2(250) ;
21156 l_object_type VARCHAR2(30) ;
21157 l_structure_version_id NUMBER ;
21158 l_task_version_id NUMBER ;
21159 l_wp_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
21160 l_fin_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
21161 l_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
21162 l_last_rollup_method pa_proj_progress_attr.task_weight_basis_code%TYPE;
21163 L_LOWEST_LEVEL_TASK VARCHAR2(1);
21164 l_last_progress_date DATE;
21165 l_flag VARCHAR2(1);
21166
21167 CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
21168 IS
21169 SELECT element_version_id, parent_structure_version_id
21170 FROM pa_proj_element_versions
21171 WHERE proj_element_id = c_proj_element_id
21172 AND object_type = 'PA_TASKS'
21173 AND project_id = c_project_id
21174 AND parent_structure_version_id = c_structure_version_id;
21175
21176 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
21177 IS
21178 SELECT task_weight_basis_code
21179 FROM pa_proj_progress_attr
21180 WHERE project_id = c_project_id
21181 AND structure_type = c_structure_type;
21182
21183 CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
21184 IS
21185 SELECT elemver.element_version_id, elemver.parent_structure_version_id
21186 FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
21187 WHERE elemver.proj_element_id = c_proj_element_id
21188 AND elemver.object_type = 'PA_TASKS'
21189 AND elemver.project_id = c_project_id
21190 AND str.project_id = c_project_id
21191 AND elemver.parent_structure_version_id = str.element_version_id
21192 AND str.latest_eff_published_flag = 'Y';
21193
21194 CURSOR c_get_template_flag(c_project_id NUMBER)
21195 IS
21196 SELECT TEMPLATE_FLAG
21197 FROM PA_PROJECTS_ALL
21198 WHERE PROJECT_ID = c_project_id;
21199
21200 l_structure_sharing_code pa_projects_all.structure_sharing_code%TYPE;
21201 l_last_str_sharing_code pa_projects_all.structure_sharing_code%TYPE;
21202 l_last_project_id NUMBER;
21203 l_last_sharing_Enabled VARCHAR2(1);
21204 l_last_split_workplan VARCHAR2(1);
21205 l_task_id NUMBER;
21206 L_SHARING_ENABLED VARCHAR2(1);
21207 L_SPLIT_WORKPLAN VARCHAR2(1);
21208 l_project_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21209 l_struture_version_ids SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21210 l_struture_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21211 l_proj_thru_dates_tbl SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
21212 l_task_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21213 l_wp_rollup_method_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
21214 l_fin_rollup_method_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
21215 l_object_type_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
21216 l_lowest_level_task_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
21217 l_task_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21218 l_structure_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21219 l_rollup_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
21220 l_budget_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
21221 l_mass_rlp_call_required_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
21222 l_action VARCHAR2(30);
21223 l_resource_list_member_id NUMBER;
21224 l_prog_pa_period_name VARCHAR2(30);
21225 l_prog_gl_period_name VARCHAR2(30);
21226 l_base_struct_ver_id NUMBER;
21227 l_msg_code VARCHAR2(32);
21228 l_record_count NUMBER;
21229 l_count_of_rollup_calls NUMBER;
21230 l_count_of_budget_calls NUMBER;
21231
21232 -- Bug 4218507
21233 l_mass_rollup_task_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
21234 l_unique_rec_exists VARCHAR2(1);
21235 l_calling_mode VARCHAR2(15);
21236 l_check VARCHAR2(1);
21237
21238 -- Begin fix for Bug # 4524977.
21239
21240 cursor l_cur_publish(l_request_id NUMBER) is
21241 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
21242 from fnd_conc_req_summary_v fcrsv
21243 where fcrsv.request_id = l_request_id;
21244
21245 l_rec_publish l_cur_publish%ROWTYPE;
21246
21247 l_wp_ver_enabled_flag VARCHAR2(1):= null;
21248
21249 l_request_id NUMBER := null;
21250 l_process_code VARCHAR2(30) := null;
21251 l_str_version_id NUMBER := null;
21252
21253 -- End fix for Bug # 4524977.
21254
21255 l_plan_version_id NUMBER; -- 4587145
21256
21257 -- MOAC Changes Bug 4698162 Begin
21258 CURSOR c_get_org_id(c_project_id NUMBER) IS
21259 select org_id
21260 from pa_projects_all
21261 where project_id = c_project_id;
21262
21263 l_org_id NUMBER;
21264 -- MOAC Changes Bug 4698162 End
21265 l_structure_id number;
21266
21267 BEGIN
21268 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
21269
21270 IF g1_debug_mode = 'Y' THEN
21271 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK');
21272 END IF;
21273
21274 --IF (p_commit = FND_API.G_TRUE) THEN
21275 savepoint UPDATE_PROGRESS_BULK;
21276 --END IF;
21277
21278 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21279 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21280 END IF;
21281
21282 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21283 FND_MSG_PUB.initialize;
21284 END IF;
21285
21286 x_return_status := FND_API.G_RET_STS_SUCCESS;
21287
21288 l_record_count := p_project_id_tbl.COUNT;
21289
21290 IF g1_debug_mode = 'Y' THEN
21291 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);
21292 END IF;
21293
21294 IF( p_percent_complete_id_tbl.COUNT <> l_record_count OR
21295 p_object_id_tbl.COUNT <> l_record_count OR
21296 p_object_version_id_tbl.COUNT <> l_record_count OR
21297 p_object_type_tbl.COUNT <> l_record_count OR
21298 p_as_of_date_tbl.COUNT <> l_record_count OR
21299 p_percent_complete_tbl.COUNT <> l_record_count OR
21300 p_progress_status_code_tbl.COUNT <> l_record_count OR
21301 p_progress_comment_tbl.COUNT <> l_record_count OR
21302 p_brief_overview_tbl.COUNT <> l_record_count OR
21303 p_actual_start_date_tbl.COUNT <> l_record_count OR
21304 p_actual_finish_date_tbl.COUNT <> l_record_count OR
21305 p_estimated_start_date_tbl.COUNT <> l_record_count OR
21306 p_estimated_finish_date_tbl.COUNT <> l_record_count OR
21307 p_scheduled_start_date_tbl.COUNT <> l_record_count OR
21308 p_scheduled_finish_date_tbl.COUNT <> l_record_count OR
21309 p_record_version_number_tbl.COUNT <> l_record_count OR
21310 p_task_status_tbl.COUNT <> l_record_count OR
21311 p_ETC_cost_tbl.COUNT <> l_record_count OR
21312 p_est_remaining_effort_tbl.COUNT <> l_record_count OR
21313 p_actual_work_quantity_tbl.COUNT <> l_record_count OR
21314 p_actual_effort_tbl.COUNT <> l_record_count OR
21315 p_actual_cost_tbl.COUNT <> l_record_count OR
21316 p_act_eff_this_period_tbl.COUNT <> l_record_count OR
21317 p_actual_cost_this_period_tbl.COUNT <> l_record_count OR
21318 p_task_id_tbl.COUNT <> l_record_count OR
21319 p_structure_version_id_tbl.COUNT <> l_record_count OR
21320 p_planned_cost_tbl.COUNT <> l_record_count OR
21321 p_planned_effort_tbl.COUNT <> l_record_count OR
21322 p_rate_based_flag_tbl.COUNT <> l_record_count OR
21323 p_resource_class_code_tbl.COUNT <> l_record_count OR
21324 p_txn_currency_code_tbl.COUNT <> l_record_count OR
21325 p_rbs_element_id_tbl.COUNT <> l_record_count OR
21326 p_resource_assignment_id_tbl.COUNT <> l_record_count OR
21327 p_eff_rup_percent_complete_tbl.COUNT <> l_record_count )
21328 THEN
21329
21330 IF g1_debug_mode = 'Y' THEN
21331 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);
21332 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);
21333 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);
21334 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);
21335 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);
21336 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);
21337 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);
21338 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);
21339 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);
21340 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);
21341 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);
21342 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);
21343 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);
21344 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);
21345 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);
21346 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);
21347 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);
21348 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);
21349 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);
21350 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);
21351 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);
21352 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);
21353 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);
21354 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);
21355 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);
21356 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);
21357 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);
21358 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);
21359 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);
21360 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);
21361 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);
21362 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);
21363 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);
21364 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);
21365 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);
21366 END IF;
21367
21368 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
21369 ,p_msg_name => 'PA_INV_PARAM_PASSED');
21370 x_msg_data := 'PA_INV_PARAM_PASSED';
21371 x_return_status := FND_API.G_RET_STS_ERROR;
21372 RAISE FND_API.G_EXC_ERROR;
21373 END IF;
21374
21375
21376 l_action := p_action;
21377 l_last_str_sharing_code := 'ABC';
21378 l_last_project_id := -9999;
21379 l_last_sharing_Enabled := 'X';
21380 l_last_split_workplan := 'X';
21381 FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
21382 IF g1_debug_mode = 'Y' THEN
21383 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);
21384 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);
21385 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);
21386 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);
21387 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);
21388 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);
21389 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);
21390 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);
21391 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);
21392 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);
21393 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);
21394 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);
21395 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);
21396 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);
21397 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);
21398 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);
21399 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);
21400 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);
21401 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);
21402 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);
21403 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);
21404 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);
21405 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);
21406 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);
21407 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);
21408 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);
21409 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);
21410 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);
21411 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);
21412 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);
21413 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);
21414 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);
21415 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);
21416 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);
21417 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);
21418 END IF;
21419
21420 -- Begin fix for Bug # 4524977.
21421
21422 PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
21423 (p_project_id => p_project_id_tbl(i)
21424 ,p_structure_type => p_structure_type
21425 ,x_request_id => l_request_id
21426 ,x_process_code => l_process_code
21427 ,x_structure_version_id => l_str_version_id
21428 ,x_return_status => l_return_status
21429 ,x_msg_count => l_msg_count
21430 ,x_msg_data => l_msg_data);
21431
21432
21433 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
21434
21435 x_msg_data := l_msg_data;
21436 x_return_status := 'E';
21437 x_msg_count := l_msg_count;
21438
21439 raise FND_API.G_EXC_ERROR;
21440
21441 end if;
21442
21443 open l_cur_publish(l_request_id);
21444 fetch l_cur_publish into l_rec_publish;
21445 close l_cur_publish;
21446
21447
21448 l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id_tbl(i));
21449
21450 if ((l_rec_publish.process = 'CONC_PUBLISH')
21451 and (l_process_code in ('WUP', 'WUE'))
21452 and (l_wp_ver_enabled_flag = 'Y')) then
21453
21454 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
21455 ,p_msg_name => 'PA_PS_PUBLISH_NO_PROG');
21456
21457 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
21458
21459 x_return_status := FND_API.G_RET_STS_ERROR;
21460
21461 raise FND_API.G_EXC_ERROR;
21462
21463 elsif ((l_rec_publish.process = 'CONC_UPDATE')
21464 and (l_process_code = 'WUP')
21465 and (l_wp_ver_enabled_flag = 'N')) then
21466
21467 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
21468 ,p_msg_name => 'PA_PS_UPDATE_NO_PROG');
21469
21470 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
21471
21472 x_return_status := FND_API.G_RET_STS_ERROR;
21473
21474 raise FND_API.G_EXC_ERROR;
21475
21476 elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
21477 and (l_process_code = 'WUP')
21478 and (l_wp_ver_enabled_flag = 'N')) then
21479
21480 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
21481 ,p_msg_name => 'PA_PS_APLPRG_NO_PROG');
21482
21483 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
21484
21485 x_return_status := FND_API.G_RET_STS_ERROR;
21486
21487 raise FND_API.G_EXC_ERROR;
21488
21489 end if;
21490
21491 -- End fix for Bug # 4524977.
21492
21493 -- Call repective update_task_progress, finc, assgn, dlv depdening on object_type
21494 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
21495 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
21496 ,p_msg_name => 'PA_INV_PARAM_PASSED');
21497 x_msg_data := 'PA_INV_PARAM_PASSED';
21498 x_return_status := FND_API.G_RET_STS_ERROR;
21499 RAISE FND_API.G_EXC_ERROR;
21500 END IF;
21501
21502 IF l_last_project_id <> p_project_id_tbl(i) THEN
21503 l_last_project_id := p_project_id_tbl(i);
21504 l_last_str_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(l_last_project_id);
21505 l_last_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(l_last_project_id);
21506 IF (l_last_sharing_Enabled = 'N' OR (l_last_sharing_Enabled = 'Y' AND l_last_str_sharing_code <> 'SHARE_FULL'))
21507 AND p_structure_type = 'WORKPLAN'
21508 THEN
21509 l_last_split_workplan := 'Y';
21510 ELSE
21511 l_last_split_workplan := 'N';
21512 END IF;
21513
21514 OPEN c_get_task_weight_method(l_last_project_id, p_structure_type);
21515 FETCH c_get_task_weight_method INTO l_last_rollup_method;
21516 CLOSE c_get_task_weight_method;
21517
21518 l_structure_sharing_code := l_last_str_sharing_code;
21519 l_sharing_Enabled := l_last_sharing_Enabled;
21520 l_split_workplan := l_last_split_workplan;
21521 l_rollup_method := l_last_rollup_method;
21522
21523 -- MOAC Changes Bug 4698162 Begin
21524 OPEN c_get_org_id(p_project_id_tbl(i));
21525 FETCH c_get_org_id INTO l_org_id;
21526 CLOSE c_get_org_id;
21527
21528 IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <> l_org_id THEN
21529 PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
21530 END IF;
21531 -- MOAC Changes Bug 4698162 End
21532
21533 ELSE
21534 l_structure_sharing_code := l_last_str_sharing_code;
21535 l_sharing_Enabled := l_last_sharing_Enabled;
21536 l_split_workplan := l_last_split_workplan;
21537 l_rollup_method := l_last_rollup_method;
21538 END IF;
21539
21540 IF (p_calling_module = 'AMG') THEN
21541 OPEN c_get_template_flag(p_project_id_tbl(i));
21542 FETCH c_get_template_flag INTO l_flag;
21543 CLOSE c_get_template_flag;
21544 IF (l_flag = 'Y') THEN
21545 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
21546 ,p_msg_name => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
21547 x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
21548 x_return_status := FND_API.G_RET_STS_ERROR;
21549 RAISE FND_API.G_EXC_ERROR;
21550 END IF;
21551 END IF;
21552
21553 IF p_structure_type = 'WORKPLAN' THEN
21554 UPDATE pa_proj_progress_attr
21555 SET next_progress_update_date = p_as_of_date_tbl(i)
21556 WHERE project_id = p_project_id_tbl(i)
21557 AND object_type = 'PA_STRUCTURES'
21558 AND structure_type = 'WORKPLAN';
21559 END IF;
21560
21561 IF (p_structure_type = 'FINANCIAL' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
21562 IF g1_debug_mode = 'Y' THEN
21563 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
21564 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
21565 END IF;
21566
21567
21568 PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
21569 p_api_version => l_api_version
21570 ,p_init_msg_list => p_init_msg_list
21571 ,p_commit => p_commit
21572 ,p_validate_only => p_validate_only
21573 ,p_validation_level => p_validation_level
21574 ,p_calling_module => p_calling_module
21575 ,p_action => l_action
21576 ,P_rollup_entire_wbs_flag => P_rollup_entire_wbs_flag
21577 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
21578 ,p_project_id => p_project_id_tbl(i)
21579 ,p_object_id => p_object_id_tbl(i)
21580 ,p_object_version_id => p_object_version_id_tbl(i)
21581 ,p_object_type => p_object_type_tbl(i)
21582 ,p_as_of_date => p_as_of_date_tbl(i)
21583 ,p_percent_complete => p_percent_complete_tbl(i)
21584 ,p_structure_type => p_structure_type
21585 ,p_task_id => p_task_id_tbl(i)
21586 ,p_structure_version_id => p_structure_version_id_tbl(i)
21587 ,p_record_version_number => p_record_version_number_tbl(i)
21588 ,p_progress_comment => p_progress_comment_tbl(i)
21589 ,p_brief_overview => p_brief_overview_tbl(i)
21590 ,x_return_status => l_return_status
21591 ,x_msg_count => l_msg_count
21592 ,x_msg_data => l_msg_data
21593 );
21594 IF g1_debug_mode = 'Y' THEN
21595 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);
21596 END IF;
21597 ELSIF (p_structure_type = 'WORKPLAN' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
21598 IF g1_debug_mode = 'Y' THEN
21599 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Workplan ', x_Log_Level=> 3);
21600 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
21601 END IF;
21602 PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
21603 p_api_version => l_api_version
21604 ,p_init_msg_list => p_init_msg_list
21605 ,p_commit => p_commit
21606 ,p_validate_only => p_validate_only
21607 ,p_validation_level => p_validation_level
21608 ,p_calling_module => p_calling_module
21609 ,p_calling_mode => p_calling_mode --bug 4287638
21610 ,p_debug_mode => p_debug_mode
21611 ,p_max_msg_count => p_max_msg_count
21612 ,p_action => l_action
21613 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
21614 ,p_progress_mode => p_progress_mode
21615 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
21616 ,p_project_id => p_project_id_tbl(i)
21617 ,p_object_id => p_object_id_tbl(i)
21618 ,p_object_version_id => p_object_version_id_tbl(i)
21619 ,p_object_type => p_object_type_tbl(i)
21620 ,p_as_of_date => p_as_of_date_tbl(i)
21621 ,p_percent_complete => p_percent_complete_tbl(i)
21622 ,p_progress_status_code => p_progress_status_code_tbl(i)
21623 ,p_progress_comment => p_progress_comment_tbl(i)
21624 ,p_brief_overview => p_brief_overview_tbl(i)
21625 ,p_actual_start_date => p_actual_start_date_tbl(i)
21626 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
21627 ,p_estimated_start_date => p_estimated_start_date_tbl(i)
21628 ,p_estimated_finish_date => p_estimated_finish_date_tbl(i)
21629 ,p_record_version_number => p_record_version_number_tbl(i)
21630 ,p_task_status => p_task_status_tbl(i)
21631 ,p_actual_work_quantity => p_actual_work_quantity_tbl(i)
21632 ,p_pm_product_code => p_pm_product_code
21633 ,p_structure_type => p_structure_type
21634 ,p_planned_cost => p_planned_cost_tbl(i)
21635 ,p_planned_effort => p_planned_effort_tbl(i)
21636 ,p_actual_effort => p_actual_effort_tbl(i)
21637 ,p_est_remaining_effort => p_est_remaining_effort_tbl(i)
21638 ,p_structure_version_id => p_structure_version_id_tbl(i)
21639 ,p_eff_rollup_percent_complete => p_eff_rup_percent_complete_tbl(i)
21640 ,x_resource_list_member_id => l_resource_list_member_id
21641 ,x_return_status => l_return_status
21642 ,x_msg_count => l_msg_count
21643 ,x_msg_data => l_msg_data
21644 );
21645
21646 IF g1_debug_mode = 'Y' THEN
21647 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);
21648 END IF;
21649 ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_ASSIGNMENTS' ) THEN
21650 IF g1_debug_mode = 'Y' THEN
21651 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
21652 END IF;
21653 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
21654 p_api_version => l_api_version
21655 ,p_init_msg_list => p_init_msg_list
21656 ,p_commit => p_commit
21657 ,p_validate_only => p_validate_only
21658 ,p_validation_level => p_validation_level
21659 ,p_calling_module => p_calling_module
21660 ,p_action => l_action
21661 ,p_bulk_load_flag => p_rollup_entire_wbs_flag
21662 ,p_progress_mode => p_progress_mode
21663 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
21664 ,p_project_id => p_project_id_tbl(i)
21665 ,p_object_id => p_object_id_tbl(i)
21666 ,p_object_version_id => p_object_version_id_tbl(i)
21667 ,p_task_id => p_task_id_tbl(i)
21668 ,p_as_of_date => p_as_of_date_tbl(i)
21669 ,p_progress_comment => p_progress_comment_tbl(i)
21670 ,p_brief_overview => p_brief_overview_tbl(i)
21671 ,p_actual_start_date => p_actual_start_date_tbl(i)
21672 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
21673 ,p_estimated_start_date => p_estimated_start_date_tbl(i)
21674 ,p_estimated_finish_date => p_estimated_finish_date_tbl(i)
21675 ,p_record_version_number => p_record_version_number_tbl(i)
21676 ,p_pm_product_code => p_pm_product_code
21677 ,p_structure_type => p_structure_type
21678 ,p_structure_version_id => p_structure_version_id_tbl(i)
21679 ,p_actual_cost_this_period => p_actual_cost_this_period_tbl(i)
21680 ,p_actual_effort_this_period => p_act_eff_this_period_tbl(i)
21681 ,p_rate_based_flag => p_rate_based_flag_tbl(i)
21682 ,p_resource_class_code => p_resource_class_code_tbl(i)
21683 ,p_actual_cost => p_actual_cost_tbl(i)
21684 ,p_actual_effort => p_actual_effort_tbl(i)
21685 ,p_etc_cost_this_period => p_etc_cost_tbl(i)
21686 ,p_etc_effort_this_period => p_est_remaining_effort_tbl(i)
21687 ,p_txn_currency_code => p_txn_currency_code_tbl(i)
21688 ,p_rbs_element_id => p_rbs_element_id_tbl(i)
21689 ,p_resource_assignment_id => p_resource_assignment_id_tbl(i)
21690 ,p_scheduled_start_date => p_scheduled_start_date_tbl(i)
21691 ,p_scheduled_finish_date => p_scheduled_finish_date_tbl(i)
21692 ,x_return_status => l_return_status
21693 ,x_msg_count => l_msg_count
21694 ,x_msg_data => l_msg_data
21695 );
21696 IF g1_debug_mode = 'Y' THEN
21697 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);
21698 END IF;
21699 ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_DELIVERABLES' ) THEN
21700 IF g1_debug_mode = 'Y' THEN
21701 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
21702 END IF;
21703 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
21704 p_api_version => l_api_version
21705 ,p_init_msg_list => p_init_msg_list
21706 ,p_commit => p_commit
21707 ,p_validate_only => p_validate_only
21708 ,p_validation_level => p_validation_level
21709 ,p_calling_module => p_calling_module
21710 ,p_action => l_action
21711 ,p_bulk_load_flag => P_rollup_entire_wbs_flag
21712 ,p_progress_mode => p_progress_mode
21713 ,p_percent_complete_id => p_percent_complete_id_tbl(i)
21714 ,p_project_id => p_project_id_tbl(i)
21715 ,p_object_id => p_object_id_tbl(i)
21716 ,p_object_type => p_object_type_tbl(i)
21717 ,p_object_version_id => p_object_version_id_tbl(i)
21718 ,p_del_status => p_task_status_tbl(i)
21719 ,p_task_id => p_task_id_tbl(i)
21720 ,p_as_of_date => p_as_of_date_tbl(i)
21721 ,p_percent_complete => p_percent_complete_tbl(i)
21722 ,p_progress_status_code => p_progress_status_code_tbl(i)
21723 ,p_progress_comment => p_progress_comment_tbl(i)
21724 ,p_brief_overview => p_brief_overview_tbl(i)
21725 ,p_actual_finish_date => p_actual_finish_date_tbl(i)
21726 ,p_record_version_number => p_record_version_number_tbl(i)
21727 ,p_pm_product_code => p_pm_product_code
21728 ,p_structure_type => p_structure_type
21729 ,x_return_status => l_return_status
21730 ,x_msg_count => l_msg_count
21731 ,x_msg_data => l_msg_data
21732 );
21733 IF g1_debug_mode = 'Y' THEN
21734 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);
21735 END IF;
21736 END IF;
21737
21738 IF g1_debug_mode = 'Y' THEN
21739 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);
21740 END IF;
21741
21742 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21743 x_msg_data := l_msg_data;
21744 x_return_status := 'E';
21745 x_msg_count := l_msg_count;
21746 RAISE FND_API.G_EXC_ERROR;
21747 END IF;
21748
21749 l_task_version_id_tbl.extend(1);
21750 l_object_type_tbl.extend(1);
21751 l_lowest_level_task_tbl.extend(1);
21752 l_structure_version_id_tbl.extend(1);
21753 l_task_id_tbl.extend(1);
21754 l_wp_rollup_method_tbl.extend(1);
21755 l_fin_rollup_method_tbl.extend(1);
21756 l_rollup_call_required_tbl.extend(1);
21757 l_mass_rlp_call_required_tbl.extend(1);
21758 l_budget_call_required_tbl.extend(1);
21759
21760 IF g1_debug_mode = 'Y' THEN
21761 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After building plsql tables', x_Log_Level=> 3);
21762 END IF;
21763
21764
21765 IF (p_object_type_tbl(i) = 'PA_ASSIGNMENTS' OR p_object_type_tbl(i) = 'PA_DELIVERABLES'
21766 OR (p_structure_type = 'FINANCIAL' and p_object_type_tbl(i) = 'PA_TASKS'))
21767 THEN
21768
21769 l_object_type_tbl(i) := 'PA_TASKS';
21770 l_task_version_id_tbl(i) := null;
21771 l_structure_version_id_tbl(i) := null;
21772
21773 IF p_object_type_tbl(i) = 'PA_DELIVERABLES' AND (p_task_id_tbl(i) IS NOT NULL)THEN
21774 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
21775 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
21776 OPEN c_get_latest_pub_task_ver(p_task_id_tbl(i), p_project_id_tbl(i));
21777 FETCH c_get_latest_pub_task_ver INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
21778 CLOSE c_get_latest_pub_task_ver;
21779 END IF;
21780
21781 ELSE
21782 OPEN c_get_task_version_id(p_task_id_tbl(i), p_project_id_tbl(i) ,p_structure_version_id_tbl(i));
21783 FETCH c_get_task_version_id INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
21784 CLOSE c_get_task_version_id;
21785 END IF;
21786 l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
21787 l_task_id_tbl(i) := p_task_id_tbl(i);
21788 ELSE
21789 l_object_type_tbl(i) := p_object_type_tbl(i);
21790 l_task_version_id_tbl(i) := p_object_version_id_tbl(i);
21791 l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
21792 l_structure_version_id_tbl(i) := p_structure_version_id_tbl(i);
21793 l_task_id_tbl(i) := p_object_id_tbl(i);
21794 END IF;
21795
21796 l_wp_rollup_method_tbl(i) := l_rollup_method;
21797 l_fin_rollup_method_tbl(i) := l_rollup_method;
21798 l_rollup_call_required_tbl(i) := 'Y';
21799 l_budget_call_required_tbl(i) := 'Y';
21800 l_mass_rlp_call_required_tbl(i) := 'N';
21801 END LOOP ; -- FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
21802
21803 IF g1_debug_mode = 'Y' THEN
21804 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After First loop', x_Log_Level=> 3);
21805 END IF;
21806
21807
21808 -- loop through to find out whether mass rollup should be called or individual rollup
21809 FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST-1 LOOP
21810 IF l_task_version_id_tbl(i) IS NULL THEN
21811 l_rollup_call_required_tbl(i) := 'N';
21812 l_budget_call_required_tbl(i) := 'N';
21813 ELSE
21814 IF l_rollup_call_required_tbl(i) = 'Y'
21815 THEN
21816 FOR j in i+1..p_project_id_tbl.count LOOP
21817 IF l_task_version_id_tbl(j) IS NULL THEN
21818 l_rollup_call_required_tbl(j) := 'N';
21819 l_budget_call_required_tbl(j) := 'N';
21820 ELSE
21821 IF p_project_id_tbl(i) = p_project_id_tbl(j) AND
21822 p_as_of_date_tbl(i) = p_as_of_date_tbl(j) AND
21823 l_structure_version_id_tbl(i) = l_structure_version_id_tbl(j)
21824 THEN
21825 l_budget_call_required_tbl(j) := 'N';
21826 IF l_task_version_id_tbl(i) = l_task_version_id_tbl(j)
21827 THEN
21828 l_rollup_call_required_tbl(j) := 'N';
21829 ELSE
21830 l_mass_rlp_call_required_tbl(i) := 'Y';
21831 l_rollup_call_required_tbl(i) := 'N';
21832 l_rollup_call_required_tbl(j) := 'N';
21833 END IF;
21834 END IF;
21835 END IF;
21836 END LOOP;
21837 END IF;
21838 END IF;
21839 END LOOP;
21840
21841 IF g1_debug_mode = 'Y' THEN
21842 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Second loop', x_Log_Level=> 3);
21843 END IF;
21844
21845 l_last_project_id := null; -- MOAC Changes Bug 4698162
21846
21847 FOR i in 1..l_task_version_id_tbl.count LOOP
21848
21849 -- MOAC Changes Bug 4698162 Begin
21850 IF l_last_project_id <> p_project_id_tbl(i) THEN
21851 l_last_project_id := p_project_id_tbl(i);
21852
21853 OPEN c_get_org_id(p_project_id_tbl(i));
21854 FETCH c_get_org_id INTO l_org_id;
21855 CLOSE c_get_org_id;
21856
21857 IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <> l_org_id THEN
21858 PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
21859 END IF;
21860 END IF;
21861 -- MOAC Changes Bug 4698162 End
21862
21863 IF l_action = 'SAVE' AND l_rollup_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' THEN
21864 IF g1_debug_mode = 'Y' THEN
21865 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Log_Level=> 3);
21866 END IF;
21867
21868 PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT(
21869 p_calling_module => p_calling_module,
21870 p_project_id => p_project_id_tbl(i),
21871 p_task_id => l_task_id_tbl(i),
21872 p_task_version_id => l_task_version_id_tbl(i),
21873 p_as_of_date => p_as_of_date_tbl(i),
21874 p_structure_version_id => l_structure_version_id_tbl(i),
21875 p_wp_rollup_method => l_wp_rollup_method_tbl(i),
21876 x_return_status => l_return_status,
21877 x_msg_count => l_msg_count,
21878 x_msg_data => l_msg_data);
21879
21880 IF g1_debug_mode = 'Y' THEN
21881 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);
21882 END IF;
21883
21884 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21885 x_msg_data := l_msg_data;
21886 x_return_status := 'E';
21887 x_msg_count := l_msg_count;
21888 RAISE FND_API.G_EXC_ERROR;
21889 END IF;
21890 END IF;
21891 IF l_action = 'PUBLISH' AND l_split_workplan = 'Y' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN'
21892 -- Removed for Bug 4416432 Issue 11 : AND p_object_type_tbl(i) <> 'PA_DELIVERABLES' -- Bug 4370820 : Added <> DELIVERABLES
21893 THEN
21894 IF g1_debug_mode = 'Y' THEN
21895 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);
21896 END IF;
21897 BEGIN -- 4482295
21898 -- Bug 4416432 Issue 11 Added following Check
21899 l_check := 'N';
21900 SELECT 'Y'
21901 INTO l_check
21902 FROM DUAL
21903 WHERE EXISTS
21904 (SELECT 'xyz'
21905 from PA_PROG_ACT_BY_PERIOD_TEMP
21906 where project_id = p_project_id_tbl(i)
21907 AND structure_version_id = l_structure_version_id_tbl(i));
21908 EXCEPTION -- 4482295
21909 WHEN NO_DATA_FOUND THEN
21910 l_check := 'N';
21911 IF g1_debug_mode = 'Y' THEN
21912 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);
21913 END IF;
21914 END; -- 4482295
21915
21916 IF g1_debug_mode = 'Y' THEN
21917 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_check='||l_check, x_Log_Level=> 3);
21918 END IF;
21919
21920 IF l_check = 'Y' THEN
21921 BEGIN
21922 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N';
21923 -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
21924 -- is not called. Actually it gets called but PJI code does not do anything.
21925 IF g1_debug_mode = 'Y' THEN
21926 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling MAINTAIN_ACTUAL_AMT_WRP', x_Log_Level=> 3);
21927 END IF;
21928
21929 l_project_ids.extend(1);
21930 l_project_ids(1) := p_project_id_tbl(i);
21931 l_struture_version_ids.extend(1);
21932 l_struture_version_ids(1) := l_structure_version_id_tbl(i);
21933 l_proj_thru_dates_tbl.extend(1);
21934 l_proj_thru_dates_tbl(1) := p_as_of_date_tbl(i);
21935 -- We can additionally check the existence of data before calling
21936 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
21937 (P_PROJECT_ID_TAB => l_project_ids,
21938 P_WP_STR_VERSION_ID_TAB => l_struture_version_ids,
21939 P_ACTUALS_THRU_DATE => l_proj_thru_dates_tbl,
21940 P_CALLING_CONTEXT => 'WP_PROGRESS',
21941 P_EXTRACTION_TYPE => 'INCREMENTAL',
21942 X_RETURN_STATUS => l_return_status,
21943 X_MSG_COUNT => l_msg_count,
21944 X_MSG_DATA => l_msg_data
21945 );
21946
21947 IF g1_debug_mode = 'Y' THEN
21948 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);
21949 END IF;
21950
21951
21952 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21953 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
21954 p_msg_name => l_msg_data);
21955 x_msg_data := l_msg_data;
21956 x_return_status := 'E';
21957 x_msg_count := l_msg_count;
21958 RAISE FND_API.G_EXC_ERROR;
21959 END IF;
21960 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ;
21961 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);
21962 EXCEPTION
21963 WHEN OTHERS THEN
21964 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21965 p_procedure_name => 'UPDATE_PROGRESS_BULK',
21966 p_error_text => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
21967 RAISE FND_API.G_EXC_ERROR;
21968 END;
21969 END IF; --l_check
21970 END IF;
21971 IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' THEN
21972 BEGIN
21973 -- We can additionally check the existence of data before calling
21974 IF g1_debug_mode = 'Y' THEN
21975 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling PLAN_UPDATE', x_Log_Level=> 3);
21976 END IF;
21977
21978 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
21979 p_project_id => p_project_id_tbl(i),
21980 p_plan_type_id => -1,
21981 p_proj_str_ver_id => l_structure_version_id_tbl(i)) ;
21982
21983 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE ( p_plan_version_id => l_plan_version_id, -- 4587145 : Added l_plan_version_id
21984 x_msg_code => l_msg_code,
21985 x_return_status => x_return_status);
21986 IF g1_debug_mode = 'Y' THEN
21987 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);
21988 END IF;
21989
21990 EXCEPTION
21991 WHEN OTHERS THEN
21992 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
21993 p_procedure_name => 'UPDATE_PROGRESS_BULK',
21994 p_error_text => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
21995 RAISE FND_API.G_EXC_ERROR;
21996 END;
21997
21998 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id_tbl(i));
21999
22000 IF (l_base_struct_ver_id = -1) THEN
22001 l_base_struct_ver_id := l_structure_version_id_tbl(i);
22002 END IF;
22003
22004 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
22005 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
22006 p_calling_module => p_calling_module
22007 ,p_project_id => p_project_id_tbl(i)
22008 ,p_structure_version_id => l_structure_version_id_tbl(i)
22009 ,p_baselined_str_ver_id => l_base_struct_ver_id
22010 ,p_program_rollup_flag => 'Y'
22011 ,p_calling_context => 'SUMMARIZE'
22012 ,p_as_of_date => p_as_of_date_tbl(i) -- Fix for Bug # 4251406.
22013 ,x_return_status => x_return_status
22014 ,x_msg_count => x_msg_count
22015 ,x_msg_data => x_msg_data
22016 );
22017 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22018 RAISE FND_API.G_EXC_ERROR;
22019 END IF;
22020
22021 END IF;
22022
22023 IF g1_debug_mode = 'Y' THEN
22024 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);
22025 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);
22026 END IF;
22027 IF l_action = 'PUBLISH' AND l_mass_rlp_call_required_tbl(i) = 'Y'
22028 THEN
22029 -- It means it is the case of Mass Update Progress and AMG
22030 -- Hence do mass rollup
22031 -- We can give here some other value to l_count_of_rollup_calls
22032 -- like 5-6 so that after objects got exceeded that 5 then call Mass Rollup
22033 -- otherwsie individual rollup
22034 IF g1_debug_mode = 'Y' THEN
22035 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Mass ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
22036 END IF;
22037
22038 -- Bug 4218507 Begin
22039 FOR ii in 1..p_project_id_tbl.count LOOP
22040 IF p_project_id_tbl(ii) = p_project_id_tbl(i) THEN
22041 l_unique_rec_exists := 'Y';
22042 FOR jj in 1..l_mass_rollup_task_ver_id_tbl.count LOOP
22043 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
22044 l_unique_rec_exists := 'N';
22045 exit;
22046 END IF;
22047 END LOOP;
22048 IF l_unique_rec_exists = 'Y' AND l_task_version_id_tbl(ii) IS NOT NULL THEN
22049 l_mass_rollup_task_ver_id_tbl.extend(1);
22050 l_mass_rollup_task_ver_id_tbl(l_mass_rollup_task_ver_id_tbl.count) := l_task_version_id_tbl(ii);
22051 END IF;
22052 END IF;
22053 END LOOP;
22054 -- Bug 4218507 Begin
22055
22056
22057 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
22058 p_init_msg_list => p_init_msg_list
22059 ,p_commit => p_commit
22060 ,p_validate_only => p_validate_only
22061 ,p_project_id => p_project_id_tbl(i)
22062 ,p_structure_version_id => l_structure_version_id_tbl(i)
22063 ,p_as_of_date => p_as_of_date_tbl(i)
22064 ,p_structure_type => p_structure_type
22065 ,p_rollup_entire_wbs => 'Y'
22066 ,p_task_version_id_tbl => l_mass_rollup_task_ver_id_tbl
22067 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i) -- Bug 4619000
22068 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i) -- Bug 4619000
22069 ,x_return_status => x_return_status
22070 ,x_msg_count => x_msg_count
22071 ,x_msg_data => x_msg_data);
22072 -- Mass Rollup currently has limitation that it does not do future rollup too
22073 IF g1_debug_mode = 'Y' THEN
22074 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);
22075 END IF;
22076
22077 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22078 RAISE FND_API.G_EXC_ERROR;
22079 END IF;
22080 ELSIF l_action = 'PUBLISH' AND l_rollup_call_required_tbl(i) = 'Y'
22081 THEN
22082
22083 IF g1_debug_mode = 'Y' THEN
22084 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Singular ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
22085 END IF;
22086
22087 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
22088 p_init_msg_list => 'F'
22089 ,p_commit => 'F'
22090 ,p_validate_only => 'F'
22091 ,p_calling_module => p_calling_module
22092 ,p_progress_mode => p_progress_mode
22093 ,p_project_id => p_project_id_tbl(i)
22094 ,P_OBJECT_TYPE => 'PA_TASKS'
22095 ,P_OBJECT_ID => l_task_id_tbl(i)
22096 ,p_object_version_id => l_task_version_id_tbl(i)
22097 ,p_as_of_date => p_as_of_date_tbl(i)
22098 ,p_lowest_level_task => nvl(l_lowest_level_task_tbl(i), 'N')
22099 ,p_process_whole_tree => 'Y'
22100 ,p_structure_version_id => l_structure_version_id_tbl(i)
22101 ,p_rollup_entire_wbs => 'N'
22102 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i)
22103 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i)
22104 ,p_task_version_id => l_task_version_id_tbl(i)
22105 ,p_structure_type => p_structure_type
22106 ,x_return_status => l_return_status
22107 ,x_msg_count => l_msg_count
22108 ,x_msg_data => l_msg_data);
22109
22110 IF g1_debug_mode = 'Y' THEN
22111 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);
22112 END IF;
22113
22114 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22115 x_msg_data := l_msg_data;
22116 x_return_status := 'E';
22117 x_msg_count := l_msg_count;
22118 RAISE FND_API.G_EXC_ERROR;
22119 END IF;
22120
22121
22122 IF p_progress_mode <> 'BACKDATED' THEN
22123 IF g1_debug_mode = 'Y' THEN
22124 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
22125 END IF;
22126
22127 IF p_object_type_tbl(i) IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
22128 l_calling_mode := null;
22129 ELSE
22130 l_calling_mode := 'FUTURE_ROLLUP';
22131 END IF;
22132
22133 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
22134 p_project_id => p_project_id_tbl(i)
22135 ,P_OBJECT_TYPE => l_object_type_tbl(i)
22136 ,P_OBJECT_ID => l_task_id
22137 ,p_object_version_id => l_task_version_id_tbl(i)
22138 ,p_as_of_date => p_as_of_date_tbl(i)
22139 ,p_lowest_level_task => NVL( l_lowest_level_task_tbl(i), 'N' )
22140 ,p_calling_module => p_calling_module
22141 ,p_calling_mode => l_calling_mode -- Bug 4097710
22142 ,p_structure_type => p_structure_type
22143 ,p_structure_version_id => l_structure_version_id_tbl(i)
22144 ,p_fin_rollup_method => l_fin_rollup_method_tbl(i)
22145 ,p_wp_rollup_method => l_wp_rollup_method_tbl(i)
22146 ,x_return_status => l_return_status
22147 ,x_msg_count => l_msg_count
22148 ,x_msg_data => l_msg_data
22149 );
22150
22151 IF g1_debug_mode = 'Y' THEN
22152 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);
22153 END IF;
22154
22155 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22156 x_msg_data := l_msg_data;
22157 x_return_status := 'E';
22158 x_msg_count := l_msg_count;
22159 RAISE FND_API.G_EXC_ERROR;
22160 END IF;
22161 END IF;
22162 END IF;
22163
22164 ---5466645
22165
22166 FOR i in 1..l_task_version_id_tbl.count loop
22167 IF p_progress_mode <> 'BACKDATED' AND l_object_type_tbl(i) = 'PA_TASKS'
22168 AND p_structure_type = 'WORKPLAN' --maansari fpm changes
22169 THEN
22170 IF ( NVL(l_lowest_level_task_tbl(i), 'N' ) = 'Y' ) THEN
22171 PA_TASK_PVT1.Update_Dates_To_All_Versions(
22172 p_project_id => p_project_id_tbl(i)
22173 ,p_element_version_id => l_task_version_id_tbl(i)
22174 ,x_return_status => l_return_status
22175 ,x_msg_count => l_msg_count
22176 ,x_msg_data => l_msg_data );
22177 IF l_return_status <> FND_API.G_RET_STS_SUCCESS
22178 THEN
22179 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
22180 p_msg_name => l_msg_data);
22181 x_msg_data := l_msg_data;
22182 x_return_status := 'E';
22183 RAISE FND_API.G_EXC_ERROR;
22184 END IF;
22185
22186 BEGIN
22187 Select ppev1.proj_element_id
22188 into l_structure_id
22189 from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
22190 where ppev2.element_version_id = l_task_version_id
22191 and ppev2.project_id = ppev1.project_id
22192 and ppev2.parent_structure_version_id = ppev1.element_version_id;
22193 EXCEPTION WHEN OTHERS THEN
22194 l_structure_id := -999;
22195 END;
22196
22197 IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
22198 AND
22199 (PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id_tbl(i)) = 'Y') --Bug 3784405 Satish
22200 AND
22201 (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id_tbl(i)) = 'Y'))
22202 THEN
22203 --copy to transaction dates
22204 PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
22205 p_validate_only => FND_API.G_FALSE
22206 ,p_project_id => p_project_id_tbl(i)
22207 ,x_return_status => x_return_status
22208 ,x_msg_count => x_msg_count
22209 ,x_msg_data => x_msg_data);
22210 END IF;
22211 END IF;
22212 END IF; ------ p_progress_mode <> backdated
22213 END LOOP;
22214 ---5466645
22215 -- Bug 4392189 : Uncommenting and chaning the code for program rollup
22216
22217 IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED' THEN
22218 IF g1_debug_mode = 'Y' THEN
22219 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
22220 END IF;
22221
22222 pa_progress_pvt.program_rollup_pvt(
22223 p_init_msg_list => 'F'
22224 ,p_commit => 'F'
22225 ,p_validate_only => 'F'
22226 ,p_project_id => p_project_id_tbl(i)
22227 ,p_as_of_date => p_as_of_date_tbl(i)
22228 ,p_structure_type => p_structure_type
22229 ,p_structure_ver_id => l_structure_version_id_tbl(i)
22230 ,x_return_status => l_return_status
22231 ,x_msg_count => l_msg_count
22232 ,x_msg_data => l_msg_data);
22233
22234
22235 IF g1_debug_mode = 'Y' THEN
22236 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);
22237 END IF;
22238 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22239 x_msg_data := l_msg_data;
22240 x_return_status := 'E';
22241 x_msg_count := l_msg_count;
22242 RAISE FND_API.G_EXC_ERROR;
22243 END IF;
22244
22245 END IF;
22246
22247 IF l_action = 'PUBLISH' AND p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
22248 AND p_object_type_tbl(i) = 'PA_TASKS' AND l_rollup_call_required_tbl(i) = 'Y'
22249 THEN
22250 IF g1_debug_mode = 'Y' THEN
22251 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling update_link_proj_rollup_dates', x_Log_Level=> 3);
22252 END IF;
22253
22254 pa_progress_pub.update_link_proj_rollup_dates(
22255 p_init_msg_list => 'F'
22256 ,p_commit => 'F'
22257 ,p_calling_module => p_calling_module
22258 ,p_project_id => p_project_id_tbl(i)
22259 ,p_task_id => l_task_id_tbl(i)
22260 ,p_task_version_id => l_task_version_id_tbl(i)
22261 ,p_as_of_date => p_as_of_date_tbl(i)
22262 ,p_structure_version_id => l_structure_version_id_tbl(i)
22263 ,x_return_status => l_return_status
22264 ,x_msg_count => l_msg_count
22265 ,x_msg_data => l_msg_data
22266 );
22267
22268 IF g1_debug_mode = 'Y' THEN
22269 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);
22270 END IF;
22271
22272 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22273 x_msg_data := l_msg_data;
22274 x_return_status := 'E';
22275 x_msg_count := l_msg_count;
22276 RAISE FND_API.G_EXC_ERROR;
22277 END IF;
22278 END IF;
22279 END LOOP;
22280
22281 IF (p_commit = FND_API.G_TRUE) THEN
22282 COMMIT;
22283 END IF;
22284
22285 EXCEPTION
22286 when FND_API.G_EXC_ERROR then
22287 -- if p_commit = FND_API.G_TRUE then
22288 rollback to UPDATE_PROGRESS_BULK;
22289 -- end if;
22290 x_return_status := FND_API.G_RET_STS_ERROR;
22291 x_msg_count := fnd_msg_pub.count_msg;
22292 when FND_API.G_EXC_UNEXPECTED_ERROR then
22293 -- if p_commit = FND_API.G_TRUE then
22294 rollback to UPDATE_PROGRESS_BULK;
22295 -- end if;
22296 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22297 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22298 p_procedure_name => 'UPDATE_PROGRESS_BULK',
22299 p_error_text => SUBSTRB(SQLERRM,1,120));
22300 x_msg_count := fnd_msg_pub.count_msg;
22301 when OTHERS then
22302 -- if p_commit = FND_API.G_TRUE then
22303 rollback to UPDATE_PROGRESS_BULK;
22304 -- end if;
22305 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22306 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22307 p_procedure_name => 'UPDATE_PROGRESS_BULK',
22308 p_error_text => SUBSTRB(SQLERRM,1,120));
22309 x_msg_count := fnd_msg_pub.count_msg;
22310 raise;
22311 END update_progress_bulk;
22312
22313 -- Bug 3994165 : Removing POPULATE_PRG_ACT_TEMP_TBL and POPULATE_PRG_ACT_TBL_SINGLE
22314 -- methods. They are not needed now.
22315
22316 -- Begin fix for Bug # 4262985.
22317
22318 PROCEDURE apply_lp_prog_on_cwv_wrp(
22319 p_api_version IN NUMBER :=1.0
22320 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
22321 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
22322 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
22323 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
22324 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
22325 ,p_debug_mode IN VARCHAR2 :='N'
22326 ,p_max_msg_count IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
22327 ,p_project_id IN NUMBER
22328 ,p_working_str_version_id IN NUMBER
22329 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22330 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
22331 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22332 ) IS
22333
22334 l_api_name CONSTANT VARCHAR2(30) := 'APPLY_LP_PROG_ON_CWV_WRP';
22335 l_api_version CONSTANT NUMBER := p_api_version;
22336 l_user_id NUMBER := FND_GLOBAL.USER_ID;
22337 l_login_id NUMBER := FND_GLOBAL.LOGIN_ID;
22338 l_return_status VARCHAR2(1);
22339 l_msg_count NUMBER;
22340 l_msg_data VARCHAR2(250);
22341 l_msg_code VARCHAR2(12000);
22342 BEGIN
22343
22344 IF g1_debug_mode = 'Y' THEN
22345 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
22346 END IF;
22347
22348 IF (p_debug_mode = 'Y') THEN
22349 IF g1_debug_mode = 'Y' THEN
22350 pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
22351 END IF;
22352 END IF;
22353 IF (p_commit = FND_API.G_TRUE) THEN
22354 savepoint APPLY_LP_PROG_ON_CWV_WRP;
22355 END IF;
22356
22357 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
22358 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22359 END IF;
22360
22361 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
22362 FND_MSG_PUB.initialize;
22363 END IF;
22364
22365 x_return_status := FND_API.G_RET_STS_SUCCESS;
22366
22367 g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
22368
22369 IF g1_debug_mode = 'Y' THEN
22370 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);
22371 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);
22372 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);
22373 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);
22374 END IF;
22375 -- 4392189 : Program Reporting Changes - Phase 2
22376 -- We do not have to set wbs_flag here. Bcoz depending on this flag, process_wbs_updates call wbs_maint API.
22377 /*
22378 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG
22379 (
22380 p_calling_context => p_calling_module
22381 ,p_project_id => p_project_id
22382 ,p_structure_version_id => p_working_str_version_id
22383 ,p_update_wbs_flag => 'Y'
22384 ,x_return_status => l_return_status
22385 ,x_msg_count => l_msg_count
22386 ,x_msg_data => l_msg_data);
22387 */
22388
22389 IF g1_debug_mode = 'Y' THEN
22390 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);
22391 END IF;
22392
22393
22394 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22395 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
22396 p_msg_name => l_msg_data);
22397 x_msg_data := l_msg_data;
22398 x_return_status := 'E';
22399 x_msg_count := l_msg_count;
22400 RAISE FND_API.G_EXC_ERROR;
22401 END IF;
22402
22403 IF g1_debug_mode = 'Y' THEN
22404 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);
22405 END IF;
22406 PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP(
22407 p_calling_context => 'APPLY_PROGRESS',
22408 p_project_id => p_project_id,
22409 p_structure_version_id => p_working_str_version_id,
22410 x_return_status => l_return_status,
22411 x_msg_count => l_msg_count,
22412 x_msg_data => l_msg_data
22413 );
22414
22415 IF g1_debug_mode = 'Y' THEN
22416 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);
22417 END IF;
22418
22419 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22420 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
22421 p_msg_name => l_msg_data);
22422 x_msg_data := l_msg_data;
22423 x_return_status := 'E';
22424 x_msg_count := l_msg_count;
22425 RAISE FND_API.G_EXC_ERROR;
22426 END IF;
22427
22428
22429 EXCEPTION
22430 when FND_API.G_EXC_ERROR then
22431 if p_commit = FND_API.G_TRUE then
22432 rollback to APPLY_LP_PROG_ON_CWV_WRP;
22433 end if;
22434 x_return_status := FND_API.G_RET_STS_ERROR;
22435
22436 when FND_API.G_EXC_UNEXPECTED_ERROR then
22437 if p_commit = FND_API.G_TRUE then
22438 rollback to APPLY_LP_PROG_ON_CWV_WRP;
22439 end if;
22440 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22441 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22442 p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
22443 p_error_text => SUBSTRB(SQLERRM,1,120));
22444 when OTHERS then
22445 if p_commit = FND_API.G_TRUE then
22446 rollback to APPLY_LP_PROG_ON_CWV;
22447 end if;
22448 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22449 fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PUB',
22450 p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
22451 p_error_text => SUBSTRB(SQLERRM,1,120));
22452 raise;
22453 END APPLY_LP_PROG_ON_CWV_WRP;
22454
22455 -- End fix for Bug # 4262985.
22456
22457 end PA_PROGRESS_PUB;