DBA Data[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;