DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_PROGRESS_PUB

Source


1 package body PA_PROGRESS_PUB as
2 /* $Header: PAPCPUBB.pls 120.85.12020000.14 2013/06/06 09:39:26 djambhek ship $ */
3 
4 
5 G_PKG_NAME              CONSTANT VARCHAR2(30) := 'PA_PROGRESS_PUB';
6 
7 g1_debug_mode varchar2(1) := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
8 
9 PROCEDURE UPDATE_TASK_PROGRESS(
10  p_api_version                  IN      NUMBER          :=1.0,
11  p_init_msg_list                IN      VARCHAR2        :=FND_API.G_TRUE,
12  p_commit                       IN      VARCHAR2        :=FND_API.G_FALSE,
13  p_validate_only                IN      VARCHAR2        :=FND_API.G_TRUE,
14  p_validation_level             IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL,
15  p_calling_module               IN      VARCHAR2        :='SELF_SERVICE',
16  p_calling_mode                 IN      VARCHAR2        := null,-- bug 4287638
17  p_debug_mode                   IN      VARCHAR2        :='N',
18  p_max_msg_count                IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
19  p_action                       IN      VARCHAR2        default 'SAVE',
20  p_bulk_load_flag               IN      VARCHAR2        default 'N',
21  p_progress_mode                IN      VARCHAR2        default 'FUTURE',
22  p_percent_complete_id          IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
23  p_project_id                   IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
24  p_object_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
25  p_object_version_id            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
26  p_object_type                  IN      Varchar2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
27  p_as_of_date                   IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
28  p_percent_complete             IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
29  p_progress_status_code         IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
30  p_progress_comment             IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
31  p_brief_overview               IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
32  p_actual_start_date            IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
33  p_actual_finish_date           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
34  p_estimated_start_date         IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
35  p_estimated_finish_date        IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
36  p_scheduled_start_date         IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
37  p_scheduled_finish_date        IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE,
38  p_record_version_number        IN      NUMBER,
39  p_task_status                  IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
40  p_est_remaining_effort         IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
41  p_actual_work_quantity         IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
42  p_pm_product_code              IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR,
43  p_structure_type               IN      VARCHAR2        := 'WORKPLAN',
44  p_actual_effort                IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
45  p_actual_effort_this_period    IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
46  p_prog_fom_wp_flag             IN      VARCHAR2        := 'N',
47  p_planned_cost                 IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
48  p_planned_effort               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
49  p_structure_version_id         IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM,
50  p_eff_rollup_percent_complete  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM, -- 3910193
51  x_resource_list_member_id      OUT	NOCOPY	VARCHAR2, --File.Sql.39 bug 4440895
52  x_return_status                OUT	NOCOPY	VARCHAR2, --File.Sql.39 bug 4440895
53  x_msg_count                    OUT	NOCOPY	NUMBER, --File.Sql.39 bug 4440895
54  x_msg_data                     OUT	NOCOPY	VARCHAR2 --File.Sql.39 bug 4440895
55  )
56 IS
57 
58 l_api_name			CONSTANT VARCHAR(30)	:= 'UPDATE_TASK_PROGRESS';
59 l_api_version                   CONSTANT NUMBER		:= 1.0;
60 l_return_status                 VARCHAR2(1);
61 l_msg_count                     NUMBER;
62 l_msg_data                      VARCHAR2(250);
63 l_data                          VARCHAR2(250);
64 l_msg_index_out                 NUMBER;
65 l_error_msg_code                VARCHAR2(250);
66 l_user_id                       NUMBER		:= FND_GLOBAL.USER_ID;
67 l_login_id                      NUMBER		:= FND_GLOBAL.LOGIN_ID;
68 
69 l_task_id			NUMBER;
70 l_project_id			NUMBER;
71 l_att_pc_id			NUMBER;
72 l_percent_complete_id		NUMBER;
73 l_PROGRESS_ROLLUP_ID		NUMBER;
74 l_structure_id                  NUMBER;
75 l_process                       VARCHAR2(8)	:= 'NORMAL';
76 l_last_progress_date            DATE;
77 l_progress_exists_on_aod        VARCHAR2(15);
78 l_rollup_required               VARCHAR2(1);
79 l_db_action                     VARCHAR2(10);
80 l_actual_wq_entry_code          VARCHAR2(30);
81 l_incremental_work_qty          NUMBER;
82 l_cumulative_work_qty           NUMBER;
83 l_base_percent_complete         NUMBER;
84 l_published_flag                VARCHAR2(1);
85 l_current_flag                  VARCHAR2(1);
86 l_actual_start_date             DATE;
87 l_actual_finish_date            DATE;
88 l_base_percent_comp_deriv_code  VARCHAR2(30);
89 l_base_progress_status_code     VARCHAR2(30);
90 l_proj_element_id               NUMBER;
91 l_estimated_start_date          DATE;
92 l_estimated_finish_date         DATE;
93 l_actual_work_quantity          NUMBER;
94 l_last_cumulative_wrk_qty       NUMBER;
95 l_est_remaining_effort          NUMBER;
96 l_actual_effort                 NUMBER;  --maansari: fpm changes 3420093
97 l_percent_complete              NUMBER;
98 l_wq_enabled_flag               VARCHAR2(1);
99 l_est_remaining_eff_flag        VARCHAR2(1);
100 l_percent_complete_flag         VARCHAR2(1);
101 l_error_message_code            VARCHAR2(250);
102 l_rollup_rec_ver_number         NUMBER;
103 l_published_by_party_id         NUMBER		:= PA_UTILS.get_party_id(l_user_id);
104 l_task_status                   VARCHAR2(150);
105 l_task_status2                  VARCHAR2(150);
106 l_task_status_temp              VARCHAR2(150); -- Bug#5374114
107 l_task_status2_temp             VARCHAR2(150); -- Bug#5374114
108 l_working_aod                   DATE;
109 l_aod                           DATE;
110 l_scheduled_start_date          DATE;
111 l_scheduled_finish_date         DATE;
112 l_lowest_level_task             VARCHAR2(1);
113 l_progress_entry_enable_flag    VARCHAR2(1);
114 l_msg                           VARCHAR2(30);
115 l_eff_rollup_percent_comp       NUMBER;
116 l_eff_rollup_prog_stat_code     VARCHAR2(150);
117 l_rollup_progress_status        VARCHAR2(150);
118 l_rollup_completed_percentage   NUMBER;
119 l_tp_pcc_est_disabl             VARCHAR2(1)	:= 'N'; -- Bug 2747143
120 l_allow_collab_prog_entry       VARCHAR2(1); -- FPM Development Bug 3420093
121 l_allw_phy_prcnt_cmp_overrides  VARCHAR2(1); -- FPM Development Bug 3420093
122 l_structure_version_id          NUMBER; -- FPM Development Bug 3420093
123 l_conv_etc_cost_pc              NUMBER;
124 l_conv_etc_cost_pfc             NUMBER;
125 l_conv_actual_cost_pc           NUMBER;
126 l_conv_actual_cost_pfc          NUMBER;
127 l_rollup_current_flag           VARCHAR2(1)	:= 'Y';
128 l_task_weight_basis_code        VARCHAR2(30); -- FPM Development Bug 3420093
129 l_earned_value                  NUMBER;
130 l_planned_effort                NUMBER;
131 l_planned_effort_push           NUMBER;
132 l_planned_cost                  NUMBER;
133 l_last_submitted_effort         NUMBER;
134 l_actual_effort_this_period     NUMBER;
135 l_pa_period_name                VARCHAR2(30);
136 l_gl_period_name                VARCHAR2(30);
137 l_pm_product_code               VARCHAR2(150);
138 
139 /* Begin fix for Bug # 4050324. */
140 l_base_planned_effort		NUMBER		:= null;
141 l_base_planned_cost		NUMBER		:= null;
142 /* End fix for Bug # 4050324. */
143 
144 --variables added for effort to cost conversion start
145 l_rate_based_flag_x             VARCHAR2(1);
146 l_resource_list_member_id       NUMBER;
147 l_resource_assignment_id	NUMBER;
148 l_txn_currency_code             VARCHAR2(30) ;
149 l_res_raw_rate                  NUMBER;
150 l_res_burden_rate               NUMBER;
151 l_burden_multiplier             NUMBER;
152 l_res_cur_code                  VARCHAR2(15);
153 
154 l_plan_res_cur_code		VARCHAR2(15);
155 l_plan_res_raw_rate             NUMBER;
156 l_plan_res_burden_rate		NUMBER;
157 l_plan_burden_multiplier        NUMBER;
158 
159 l_act_txn_raw_cost              NUMBER;
160 l_act_txn_bur_cost              NUMBER;
161 l_etc_txn_raw_cost              NUMBER;
162 l_etc_txn_bur_cost              NUMBER;
163 
164 l_project_curr_code             VARCHAR2(30);
165 l_project_rate_type             VARCHAR2(30);
166 l_project_rate_date             DATE;
167 l_project_exch_rate             NUMBER;
168 l_act_project_raw_cost          NUMBER;
169 l_act_project_bur_cost          NUMBER;
170 l_projfunc_curr_code            VARCHAR2(30);
171 l_projfunc_cost_rate_type       VARCHAR2(30);
172 l_projfunc_cost_rate_date       DATE;
173 l_projfunc_cost_exch_rate       NUMBER;
174 l_act_projfunc_raw_cost         NUMBER;
175 l_act_projfunc_bur_cost         NUMBER;
176 
177 l_etc_project_raw_cost          NUMBER;
178 l_etc_projfunc_raw_cost         NUMBER;
179 l_etc_project_bur_cost          NUMBER;
180 l_etc_projfunc_bur_cost         NUMBER;
181 
182 l_planned_quantity		NUMBER;
183 l_planned_bur_cost_txn_cur	NUMBER;
184 l_planned_bur_cost_projfunc	NUMBER;
185 l_planned_bur_cost_proj_cur	NUMBER;
186 l_planned_raw_cost_txn_cur	NUMBER;
187 l_planned_raw_cost_proj_cur	NUMBER;
188 l_planned_raw_cost_projfunc	NUMBER;
189 l_assignment_id                 NUMBER;
190 
191 l_act_raw_cost_to_date_tc	NUMBER;
192 l_act_raw_cost_to_date_fc	NUMBER;
193 l_act_raw_cost_to_date_pc	NUMBER;
194 l_act_bur_cost_to_date_tc	NUMBER;
195 l_act_bur_cost_to_date_fc	NUMBER;
196 l_act_bur_cost_to_date_pc	NUMBER;
197 
198 l_act_raw_cost_last_subm_tc     NUMBER;
199 l_act_raw_cost_last_subm_pc     NUMBER;
200 l_act_raw_cost_last_subm_fc     NUMBER;
201 l_act_bur_cost_last_subm_tc     NUMBER;
202 l_act_bur_cost_last_subm_pc     NUMBER;
203 l_act_bur_cost_last_subm_fc     NUMBER;
204 
205 l_etc_raw_cost_tc		NUMBER;
206 l_etc_raw_cost_fc		NUMBER;
207 l_etc_raw_cost_pc		NUMBER;
208 l_etc_bur_cost_tc		NUMBER;
209 l_etc_bur_cost_fc		NUMBER;
210 l_etc_bur_cost_pc		NUMBER;
211 
212 l_etc_txn_raw_cost_last		NUMBER;
213 l_etc_prj_raw_cost_last		NUMBER;
214 l_etc_pfc_raw_cost_last		NUMBER;
215 l_etc_txn_bur_cost_last		NUMBER;
216 l_etc_prj_bur_cost_last		NUMBER;
217 l_etc_pfc_bur_cost_last		NUMBER;
218 l_etc_effort_last		NUMBER;
219 
220 l_etc_txn_raw_cost_this_period	NUMBER;
221 l_etc_prj_raw_cost_this_period  NUMBER;
222 l_etc_pfc_raw_cost_this_period  NUMBER;
223 l_etc_txn_bur_cost_this_period  NUMBER;
224 l_etc_prj_bur_cost_this_period  NUMBER;
225 l_etc_pfc_bur_cost_this_period  NUMBER;
226 
227 l_published_structure           VARCHAR2(1);
228 
229 l_proj_res_raw_rate		NUMBER;
230 l_projfunc_res_raw_rate		NUMBER;
231 l_proj_res_burden_rate		NUMBER;
232 l_projfunc_res_burden_rate	NUMBER;
233 
234 l_rate_based_flag		VARCHAR2(1);
235 l_rbs_element_id		NUMBER;
236 l_resource_class_code		PA_TASK_ASSIGNMENTS_V.RESOURCE_CLASS_CODE%TYPE;
237 l_budget_version_id		NUMBER;
238 
239 l_progress_exists		VARCHAR2(1)	:='N';
240 
241 --This cursor returns planned values also
242 CURSOR c_get_resource_list_member_id
243 ( l_project_id NUMBER
244 , l_task_id NUMBER
245 , l_structure_version_id NUMBER
246 , l_task_version_id NUMBER
247 ) IS
248 SELECT
249  resource_assignment_id,
250  resource_list_member_id,
251  txn_currency_code,
252  planned_quantity,
253  planned_bur_cost_txn_cur,
254  planned_bur_cost_projfunc,
255  planned_bur_cost_proj_cur,
256  planned_raw_cost_txn_cur,
257  planned_raw_cost_proj_cur,
258  planned_raw_cost_projfunc,
259  rbs_element_id,
260  rate_based_flag,
261  resource_class_code,
262  budget_version_id  ---4372462
263 FROM
264  pa_task_asgmts_v
265 WHERE
266     project_id = l_project_id
267 AND task_id = l_task_id
268 AND structure_version_id = l_structure_version_id
269 AND task_version_id = l_task_version_id
270 AND ta_display_flag = 'N';
271 
272 CURSOR cur_pa_proj_sch
273 IS
274 SELECT
275   scheduled_start_date
276 , scheduled_finish_date
277 FROM pa_proj_elem_ver_schedule
278 WHERE project_id = p_project_id
279 AND element_version_id = p_object_version_id
280 AND proj_element_id = p_object_id;
281 
282 
283 -- Bug 3764224 : No need to have proj element id join in these cursors as it is used only in tasks context
284 CURSOR cur_pa_rollup1
285 IS
286 SELECT *
287 FROM pa_progress_rollup
288 WHERE project_id = p_project_id
289 AND object_id = p_object_id
290 AND structure_type = p_structure_type -- FPM Dev CR 3
291 AND structure_version_id IS NULL -- Bug 3764224
292 AND as_of_date = (	SELECT max( as_of_date )
293 			FROM pa_progress_rollup
294                         WHERE project_id = p_project_id
295 			AND object_id = p_object_id
296                         AND object_type = p_object_type
297 			AND structure_type = p_structure_type -- FPM Dev CR 3
298 			AND structure_version_id IS NULL -- Bug 3764224
299                         AND as_of_date <= p_as_of_date ); -- Fix for Bug # 3944297.
300 
301 
302 CURSOR cur_pa_rollup2
303 IS
304 SELECT *
305 FROM pa_progress_rollup
306 WHERE project_id = p_project_id
307 AND object_id = p_object_id
308 AND object_type = p_object_type
309 AND as_of_date = p_as_of_date
310 AND structure_type = p_structure_type
311 AND structure_version_id IS NULL -- Bug 3764224
312 AND (	(p_action = 'SAVE' AND current_flag = 'W')
313 	OR(p_action = 'PUBLISH' AND current_flag IN ('Y','N'))-- Bug 3879461
314 	)
315     ;
316 
317 l_rollup_rec1			cur_pa_rollup1%ROWTYPE;
318 l_rollup_rec2			cur_pa_rollup2%ROWTYPE;
319 l_element_struc_type		VARCHAR2(30);
320 
321 
322 /* Bug2756007 Begin */
323 CURSOR cur_sch_id(c_object_version_id NUMBER)
324 IS
325 SELECT
326   pev_schedule_id
327 , record_version_number
328 FROM pa_proj_elem_ver_schedule
329 WHERE project_id = p_project_id
330 AND element_version_id = c_object_version_id;
331 
332 l_pev_schedule_id		NUMBER;
333 l_sch_rec_ver_number		NUMBER;
334 /* Bug2756007 End */
335 
336 -- FPM Dev CR 3
337 l_record_version_number		NUMBER;
338 l_task_ver_ids2			SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()  ;
339 l_planned_effort2		SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type()  ;
340 l_start_dates			SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
341 l_end_dates			SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
342 
343 l_structure_sharing_code	pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
344 l_etc_effort_this_period	NUMBER;--Bug 3595585
345 l_last_submitted_etc_effort	NUMBER;--Bug 3595585
346 
347 -- Bug 3608422 : Added the cusrosr below
348 CURSOR cur_check_published_version
349 ( c_structure_version_id number
350 , c_project_id number
351 )IS
352 SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
353 FROM pa_proj_elem_ver_structure str, pa_project_statuses status
354 where str.element_version_id = c_structure_version_id
355 AND str.project_id = c_project_id
356 AND str.status_code = status.project_status_code;
357 
358 
359 l_assignment_exists		VARCHAR2(1);
360 
361 -- Bug 3796357 Begin
362 l_eqpmt_act_effort_to_date	NUMBER;
363 l_eqpmt_etc_effort		NUMBER;
364 l_oth_act_cost_to_date_tc	NUMBER;
365 l_oth_act_cost_to_date_fc	NUMBER;
366 l_oth_act_cost_to_date_pc	NUMBER;
367 l_oth_etc_cost_tc		NUMBER;
368 l_oth_etc_cost_fc		NUMBER;
369 l_oth_etc_cost_pc		NUMBER;
370 l_ppl_act_cost_to_date_tc	NUMBER;
371 l_ppl_act_cost_to_date_fc	NUMBER;
372 l_ppl_act_cost_to_date_pc	NUMBER;
373 l_ppl_etc_cost_tc		NUMBER;
374 l_ppl_etc_cost_fc		NUMBER;
375 l_ppl_etc_cost_pc		NUMBER;
376 l_eqpmt_act_cost_to_date_tc	NUMBER;
377 l_eqpmt_act_cost_to_date_fc	NUMBER;
378 l_eqpmt_act_cost_to_date_pc	NUMBER;
379 l_eqpmt_etc_cost_tc		NUMBER;
380 l_eqpmt_etc_cost_fc		NUMBER;
381 l_eqpmt_etc_cost_pc		NUMBER;
382 l_oth_quantity_to_date		NUMBER;
383 l_oth_etc_quantity		NUMBER;
384 l_oth_act_rawcost_to_date_tc	NUMBER;
385 l_oth_act_rawcost_to_date_fc	NUMBER;
386 l_oth_act_rawcost_to_date_pc	NUMBER;
387 l_oth_etc_rawcost_tc		NUMBER;
388 l_oth_etc_rawcost_fc		NUMBER;
389 l_oth_etc_rawcost_pc		NUMBER;
390 l_eqpmt_act_rawcost_to_date_tc	NUMBER;
391 l_eqpmt_act_rawcost_to_date_fc	NUMBER;
392 l_eqpmt_act_rawcost_to_date_pc	NUMBER;
393 l_eqpmt_etc_rawcost_tc		NUMBER;
394 l_eqpmt_etc_rawcost_fc		NUMBER;
395 l_eqpmt_etc_rawcost_pc		NUMBER;
396 --Rtarway, 3819619
397 l_dummy				VARCHAR2(1);
398 
399 l_task_version_id_out		NUMBER		:= null; -- Added to fix Bug # 3815741.
400 l_track_wp_cost_flag		VARCHAR2(1)	:= 'Y'; -- Bug 3801745
401 -- Bug 3796357 End
402 
403 --bug 3824042
404 l_prj_currency_code		VARCHAR2(15)	:= null;
405 l_prjfunc_currency_code		VARCHAR2(15)	:= null;
406 
407 --bug 3879461 --maansari
408 CURSOR check_prog_after_aod
409 IS
410 SELECT 'Y'
411 FROM pa_progress_rollup
412 WHERE current_flag = 'Y'
413 AND project_id = p_project_id
414 AND structure_type = p_structure_type
415 AND structure_version_id is null
416 AND object_id = p_object_id
417 AND as_of_date > p_as_of_date
418 ;
419 l_prog_exist_after_aod VARCHAR2(1) := 'N';
420 --bug 3879461 --maansari
421 --rtarway, 4085882
422 -- Following cursor is written with assumption that underlying view will return one row per assignment for as_of_date set in the
423 -- API.
424 
425 -- 4136113 : Written new cursosr instead of old bulky one
426 CURSOR c_assgn_working_prog (l_project_id NUMBER, l_task_id NUMBER, l_task_version_id NUMBER )
427 IS
428 SELECT
429 ppc.percent_complete_id,
430 asgn.resource_list_member_id,
431 ppr.actual_start_date  ,
432 ppr.actual_finish_date ,
433 ppr.estimated_start_date,
434 ppr.estimated_finish_date,
435 ppc.record_version_number ,
436 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_rawcost_to_date_tc,
437          'EQUIPMENT', ppr.eqpmt_act_rawcost_to_date_tc,ppr.oth_act_rawcost_to_date_tc)
438           - nvl(pa_progress_utils.get_act_for_prev_asofdate(ppr.as_of_date,ppr.project_id,ppr.object_id,ppr.object_version_id,ppr.proj_element_id,'C','R','T'),0)
439       actual_rawcost_this_period,
440 decode(asgn.resource_class_code, 'PEOPLE', ppr.ppl_act_effort_to_date,
441        'EQUIPMENT', ppr.eqpmt_act_effort_to_date, ppr.oth_quantity_to_date)
442        - nvl(pa_progress_utils.get_act_for_prev_asofdate(ppr.as_of_date,ppr.project_id,ppr.object_id,ppr.object_version_id,ppr.proj_element_id,'E',null,null),0)
443        actual_effort_this_period,
444 asgn.rate_based_flag,
445 asgn.resource_class_code,
446 nvl(ppr.ppl_act_rawcost_to_date_tc,0)+ nvl(ppr.eqpmt_act_rawcost_to_date_tc,0)+ nvl(ppr.oth_act_rawcost_to_date_tc,0) actual_rawcost,
447 -- In Self Service it is last submitted actual raw cost in TC. But this value is not used by the API.
448 -- Only case it is used by the API is from AMG where we need to pass the value as to_date. So we can sefly
449 -- always pass to_date value without calling the function get_act_for_prev_asofdate
450 nvl(ppr.ppl_act_effort_to_date,0)+ nvl(ppr.eqpmt_act_effort_to_date,0)+ nvl(ppr.oth_quantity_to_date,0) actual_effort,
451 -- In Self Service it is last submitted actual effort. But this value is not used by the API.
452 -- Only case it is used by the API is from AMG where we need to pass the value as to_date. So we can sefly
453 -- always pass to_date value without calling the function get_act_for_prev_asofdate
454 --bug 4303344
455 nvl(ppr.ppl_etc_rawcost_tc,0)+nvl(ppr.eqpmt_etc_rawcost_tc,0)+ nvl(ppr.oth_etc_rawcost_tc,0)
456 etc_rawcost_tc            ,
457 nvl(ppr.estimated_remaining_effort,0)+nvl(ppr.eqpmt_etc_effort,0)+ nvl(ppr.oth_etc_quantity,0)
458 etc_effort                ,
459 asgn.txn_currency_code         ,
460 asgn.rbs_element_id,
461 asgn.resource_assignment_id,
462 asgn.assignment_start_date scheduled_start_date ,
463 asgn.assignment_end_date scheduled_finish_date,
464 ppc.progress_comment,
465 ppc.description progress_overview
466 from pa_task_asgmts_v asgn
467 , pa_percent_completes ppc
468 , pa_progress_rollup ppr
469 where
470     ppc.PROJECT_ID = l_project_id
471 AND ppr.project_id = ppc.project_id
472 AND ppc.project_id = asgn.project_id
473 AND ppc.task_id = l_task_id
474 AND ppc.task_id = ppr.proj_element_id
475 AND ppc.task_id = asgn.task_id
476 AND asgn.task_version_id = l_task_version_id
477 AND ppc.object_type = 'PA_ASSIGNMENTS'
478 AND ppc.object_type = ppr.object_type
479 AND asgn.ta_display_flag = 'Y'
480 AND ppc.object_id = asgn.resource_list_member_id
481 AND ppc.object_id = ppr.object_id
482 AND ppr.current_flag='W'
483 AND ppc.published_flag = 'N'
484 AND ppc.date_computed <= p_as_of_date
485 AND ppr.as_of_date <= p_as_of_date
486 AND ppr.structure_type = 'WORKPLAN'
487 and ppc.date_computed = ppr.as_of_date
488 AND ppr.structure_version_id is null;
489 
490 
491 l_working_assgn_rec c_assgn_working_prog%ROWTYPE;
492 -- Following cursor is written with assumption that underlying view will return one row per deliverable for as_of_date set in the
493 -- API. PA_TASK_DELVRS_PROGRESS_V has joins for as_of_date, so no as_of_date join is needed here
494 
495 -- 4136113 : Written new cursosr instead of old bulky one
496 CURSOR c_dlvr_working_prog (l_project_id NUMBER,  l_task_id NUMBER , l_task_version_id NUMBER)
497 IS
498 SELECT
499 ppc.percent_complete_id,
500 ppc.object_id del_id,
501 ppc.object_version_id del_element_version_id,
502 ppr.completed_percentage,
503 ppr.progress_status_code,
504 ppc.progress_comment,
505 ppc.description progress_description,
506 ppr.actual_start_date,
507 ppr.actual_finish_date,
508 ppc.record_version_number percomp_record_version_number,
509 ppc.status_code del_status_code
510 FROM pa_percent_completes ppc
511 , pa_progress_rollup ppr
512 WHERE
513     ppc.project_id=l_project_id
514 AND ppc.project_id = ppr.project_id
515 AND ppc.object_type = 'PA_DELIVERABLES'
516 AND ppc.object_type = ppr.object_type
517 AND ppc.task_id = l_task_id
518 AND ppc.task_id = ppr.proj_element_id
519 AND ppc.object_id = ppr.object_id
520 AND ppr.current_flag='W'
521 AND ppc.published_flag = 'N'
522 AND ppc.date_computed <= p_as_of_date
523 AND ppr.as_of_date <= p_as_of_date
524 and ppc.date_computed = ppr.as_of_date
525 AND ppr.structure_type = 'WORKPLAN'
526 AND ppr.structure_version_id is null;
527 
528 
529 l_working_dlvr_rec c_dlvr_working_prog%ROWTYPE;
530 --end add by rtarway, 4085882
531 
532 -- Bug 3922325 Begin
533 CURSOR c_previous_task_status IS
534 SELECT /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N6)*/ status_code -- added hint for bug 16325523
535 FROM pa_percent_completes
536 WHERE project_id = p_project_id
537 AND object_id = p_object_id
538 AND object_type = 'PA_TASKS'
539 AND structure_type = 'WORKPLAN'
540 AND trunc(date_computed) <= trunc(p_as_of_date)
541 ORDER BY date_computed desc, published_flag asc; -- This is to make sure that top most record in this cursor is maximum as of date and working record first then published record
542 
543 l_previous_status_code  VARCHAR2(150);
544 l_prev_sys_status_code  VARCHAR2(150);
545 -- Bug 3922325 End
546 
547 -- Bug 4506461 Begin
548 -- 4651069 : Removed LF relationship here
549 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
550 SELECT 'Y'
551 FROM pa_object_relationships
552 WHERE --relationship_type in ( 'LW', 'LF' )
553 relationship_type = 'LW'
554 AND object_id_from1 IN
555     (SELECT object_id_to1
556     FROM pa_object_relationships
557     START WITH  object_id_from1 = c_task_version_id
558     AND relationship_type = 'S'
559     CONNECT BY PRIOR object_id_to1 = object_id_from1
560     AND relationship_type = 'S')
561     ;
562 l_rederive_base_pc VARCHAR2(1):='N';
563 l_temp_base_pc     NUMBER;
564 -- Bug 4506461 End
565 
566 -- 4533112 Begin
567 CURSOR c_get_dates_overrides IS
568 SELECT decode(base_progress_status_code,'Y','Y','N') date_override_flag
569 , estimated_start_date
570 , estimated_finish_date
571 , actual_start_date
572 , actual_finish_date
573 FROM pa_progress_rollup
574 WHERE project_id = p_project_id
575 AND object_id = p_object_id
576 AND object_type = 'PA_TASKS'
577 AND structure_type = 'WORKPLAN'
578 AND structure_version_id is null
579 AND trunc(as_of_date) <= trunc(p_as_of_date)
580 AND current_flag IN ('Y', 'N')
581 ORDER by as_of_date desc;
582 
583 l_date_override_flag            VARCHAR2(1):='N';
584 l_db_date_override_flag         VARCHAR2(1):='N';
585 l_db_estimated_start_date       DATE;
586 l_db_estimated_finish_date      DATE;
587 l_db_actual_start_date          DATE;
588 l_db_actual_finish_date         DATE;
589 l_clex_estimated_start_date     DATE;
590 l_clex_estimated_finish_date    DATE;
591 l_clex_actual_start_date        DATE;
592 l_clex_actual_finish_date       DATE;
593 
594 -- 4533112 End
595 
596 -- Bug 4632744
597 -- Added cursor c_get_last_ppl_effort_fr_assgn
598 CURSOR c_get_last_ppl_effort_fr_assgn(c_res_list_mem_id NUMBER)
599 IS
600 SELECT NVL( PPL_ACT_EFFORT_TO_DATE, 0 )
601 FROM pa_progress_rollup
602 WHERE project_id = p_project_id
603 AND object_id  = c_res_list_mem_id
604 AND as_of_date =
605 	(SELECT max(as_of_date)
606 	FROM pa_progress_rollup ppr2
607 	WHERE ppr2.as_of_date <= p_as_of_date
608 	AND  ppr2.project_id = p_project_id
609 	AND ppr2.object_id = c_res_list_mem_id
610 	AND ppr2.object_type = 'PA_ASSIGNMENTS'
611 	AND ppr2.structure_type = p_structure_type
612 	AND ppr2.current_flag <> 'W'
613 	AND ppr2.structure_version_id is null
614 	AND ppr2.proj_element_id = p_object_id
615       )
616 AND object_type = 'PA_ASSIGNMENTS'
617 AND structure_type = p_structure_type
618 AND current_flag <> 'W'
619 AND structure_version_id is null
620 and proj_element_id = p_object_id
621 ;
622 
623 l_calling_module    varchar2(30);
624 BEGIN
625 	g1_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
626 
627 	IF g1_debug_mode  = 'Y' THEN
628 		pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS');
629 	END IF;
630 
631         IF g1_debug_mode  = 'Y' THEN
632                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS Start : Passed Parameters :', x_Log_Level=> 3);
633                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
634                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
635                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
636                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
637                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
638                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
639                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
640                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
641                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_bulk_load_flag='||p_bulk_load_flag, x_Log_Level=> 3);
642 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
643 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete_id='||p_percent_complete_id, x_Log_Level=> 3);
644                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
645                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
646                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
647                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
648                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
649                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
650                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
651                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_status_code='||p_progress_status_code, x_Log_Level=> 3);
652                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
653                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
654                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_start_date='||p_actual_start_date, x_Log_Level=> 3);
655                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
656                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_estimated_start_date='||p_estimated_start_date, x_Log_Level=> 3);
657                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_estimated_finish_date='||p_estimated_finish_date, x_Log_Level=> 3);
658                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_scheduled_start_date='||p_scheduled_start_date, x_Log_Level=> 3);
659                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_scheduled_finish_date='||p_scheduled_finish_date, x_Log_Level=> 3);
660                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_record_version_number='||p_record_version_number, x_Log_Level=> 3);
661                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
662                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_est_remaining_effort='||p_est_remaining_effort, x_Log_Level=> 3);
663                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_work_quantity='||p_actual_work_quantity, x_Log_Level=> 3);
664                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_pm_product_code='||p_pm_product_code, x_Log_Level=> 3);
665                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
666                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
667                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_actual_effort_this_period='||p_actual_effort_this_period, x_Log_Level=> 3);
668                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
669                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_prog_fom_wp_flag='||p_prog_fom_wp_flag, x_Log_Level=> 3);
670                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
671                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
672         END IF;
673 
674 	IF (p_commit = FND_API.G_TRUE) THEN
675 		savepoint UPDATE_TASK_PROGRESS;
676 	END IF;
677 
678 	IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
679 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
680 	END IF;
681 
682 	IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
683 		FND_MSG_PUB.initialize;
684 	END IF;
685 
686 	x_return_status := FND_API.G_RET_STS_SUCCESS;
687 
688 	--BUG 4085882, added by rtarway
689 	--bug 4320365, changed to p_calling_mode from p_calling_module
690 	--the code to set prog_as_of_date is needed.
691 	IF (p_calling_mode = 'TEAM_MEM_HOME' AND p_action='PUBLISH' )
692 	THEN
693 		pa_progress_utils.set_prog_as_of_Date(
694                                               p_project_id   =>p_project_id,
695                                               p_task_id  =>p_object_id,
696                                               p_as_of_date  => p_as_of_date
697                                       );
698 		FOR l_working_assgn_rec in c_assgn_working_prog(p_project_id, p_object_id, p_object_version_id) LOOP
699 
700 		       PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
701 				     p_api_version                   => l_api_version
702 				     ,p_init_msg_list                => p_init_msg_list
703 				     ,p_commit                       => p_commit
704 				     ,p_validate_only                => p_validate_only
705 				     ,p_validation_level             => p_validation_level
706 				     ,p_calling_module               => p_calling_module
707 				     ,p_action                       => 'PUBLISH'
708 				     ,p_progress_mode                => 'FUTURE'
709 				     ,p_percent_complete_id          => l_working_assgn_rec.PERCENT_COMPLETE_ID
710 				     ,p_project_id                   => p_project_id
711 				     ,p_object_id                    => l_working_assgn_rec.RESOURCE_LIST_MEMBER_ID
712 				     ,p_object_version_id            => p_object_version_id
713 				     ,p_task_id                      => p_object_id
714 				     ,p_as_of_date                   => p_as_of_date
715 				     ,p_progress_comment             => l_working_assgn_rec.progress_comment
716 				     ,p_brief_overview               => l_working_assgn_rec.progress_overview
717 				     ,p_actual_start_date            => l_working_assgn_rec.ACTUAL_START_DATE
718 				     ,p_actual_finish_date           => l_working_assgn_rec.ACTUAL_FINISH_DATE
719 				     ,p_estimated_start_date         => l_working_assgn_rec.estimated_start_date
720 				     ,p_estimated_finish_date        => l_working_assgn_rec.estimated_finish_date
721 				     ,p_record_version_number        => l_working_assgn_rec.RECORD_VERSION_NUMBER
722 				     ,p_pm_product_code              => p_pm_product_code
723 				     ,p_structure_type               => 'WORKPLAN'
724 				     ,p_structure_version_id         => p_structure_version_id
725 				     ,p_actual_cost_this_period      => l_working_assgn_rec.actual_rawcost_this_period
726 				     ,p_actual_effort_this_period    => l_working_assgn_rec.ACTUAL_EFFORT_THIS_PERIOD
727 				     ,p_rate_based_flag              => l_working_assgn_rec.RATE_BASED_FLAG
728 				     ,p_resource_class_code          => l_working_assgn_rec.RESOURCE_CLASS_CODE
729 				     ,p_actual_cost                  => l_working_assgn_rec.actual_rawcost
730 				     ,p_actual_effort                => l_working_assgn_rec.ACTUAL_EFFORT
731 				     ,p_etc_cost_this_period         => l_working_assgn_rec.etc_rawcost_tc
732 				     ,p_etc_effort_this_period       => l_working_assgn_rec.ETC_EFFORT
733 				     ,p_txn_currency_code            => l_working_assgn_rec.TXN_CURRENCY_CODE
734 				     ,p_rbs_element_id               => l_working_assgn_rec.RBS_ELEMENT_ID
735 				     ,p_resource_assignment_id       => l_working_assgn_rec.resource_assignment_id
736 				     ,p_scheduled_start_date         => l_working_assgn_rec.scheduled_start_date
737 				     ,p_scheduled_finish_date        => l_working_assgn_rec.scheduled_finish_date
738 				     ,x_return_status                => l_return_status
739 				     ,x_msg_count                    => l_msg_count
740 				     ,x_msg_data                     => l_msg_data
741 				     );
742 			-- Bug 4632744 : Added Return Status check
743 			IF l_return_status <> 'S' THEN
744 				raise FND_API.G_EXC_ERROR;
745 			END IF;
746 		END LOOP;
747 		-- if there are working deliverable records associated with this task, we need to puyblish those deliverable progress
748 		FOR l_working_dlvr_rec in c_dlvr_working_prog (p_project_id ,   p_object_id, p_object_version_id ) LOOP
749 			PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
750 				     p_api_version                   => l_api_version
751 				     ,p_init_msg_list                => p_init_msg_list
752 				     ,p_commit                       => p_commit
753 				     ,p_validate_only                => p_validate_only
754 				     ,p_validation_level             => p_validation_level
755 				     ,p_calling_module               => p_calling_module
756 				     ,p_action                       => 'PUBLISH' -- Code to fix Bug # 3821106.
757 				     ,p_progress_mode                => 'FUTURE'
758 				     ,p_percent_complete_id          => l_working_dlvr_rec.percent_complete_id      ------percent_complete_id
759 				     ,p_project_id                   => p_project_id
760 				     ,p_object_id                    => l_working_dlvr_rec.del_id
761 				     ,p_object_type                  => 'PA_DELIVERABLES'
762 				     ,p_object_version_id            => l_working_dlvr_rec.del_element_version_id
763 				     ,p_del_status                   => l_working_dlvr_rec.del_status_code
764 				     ,p_task_id                      => p_object_id
765 				     ,p_as_of_date                   => p_as_of_date
766 				     ,p_percent_complete             => l_working_dlvr_rec.completed_percentage
767 				     ,p_progress_status_code         => l_working_dlvr_rec.progress_status_code
768 				     ,p_progress_comment             => l_working_dlvr_rec.progress_comment
769 				     ,p_brief_overview               => l_working_dlvr_rec.progress_description
770 				     ,p_actual_finish_date           => l_working_dlvr_rec.actual_finish_date
771 				     ,p_record_version_number        => l_working_dlvr_rec.percomp_record_version_number
772 				     ,p_pm_product_code              => p_pm_product_code
773 				     ,p_structure_type               => 'WORKPLAN'
774 				     ,x_return_status                => l_return_status
775 				     ,x_msg_count                    => l_msg_count
776 				     ,x_msg_data                     => l_msg_data
777 				     );
778 			-- Bug 4632744 : Added Return Status check
779 			IF l_return_status <> 'S' THEN
780 				raise FND_API.G_EXC_ERROR;
781 			END IF;
782 		END LOOP;
783 	END IF ; -- p_calling_module='TEAM_MEM_HOME'
784 	--end add by rtarway for BUG 4085882
785 
786 	l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
787 	l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,p_object_version_id,p_object_type); -- Bug 3784904
788 	l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --Bug 3801745
789 
790 	--bug 3824042
791 	SELECT project_currency_code, projfunc_currency_code
792 	INTO  l_prj_currency_code, l_prjfunc_currency_code
793 	FROM pa_projects_all WHERE project_id = p_project_id;
794 
795 	IF g1_debug_mode  = 'Y' THEN
796 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_structure_sharing_code='||l_structure_sharing_code, x_Log_Level=> 3);
797 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_assignment_exists='||l_assignment_exists, x_Log_Level=> 3);
798 	END IF;
799 
800 
801 	l_element_struc_type := p_structure_type;
802 
803 	IF p_structure_type = 'FINANCIAL'           --maansari: fpm changes
804 	THEN
805 		IF ( p_est_remaining_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
806 			and p_est_remaining_effort IS NOT NULL
807 		   ) OR
808                    ( p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM --BUG 4368945, rtarway p_actual_work_quantity should be checked
809 		     and --p_est_remaining_effort is not null ) OR
810 			p_actual_work_quantity  IS NOT NULL
811 		   ) OR
812 		   ( p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
813 		        and p_actual_effort IS NOT NULL
814   		   )
815 		THEN
816 			PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
817                                ,p_msg_name       => 'PA_TP_CANT_NTER_ACT_4FN_STR');
818 			x_msg_data := 'PA_TP_CANT_NTER_ACT_4FN_STR';
819 			x_return_status := 'E';
820 			RAISE  FND_API.G_EXC_ERROR;
821 		END IF;
822 	END IF;
823 	/* reverted 14602604
824         -- Bug14602604 Begin
825 	-- If Calling module is AMG and workplan is version disabled, then throw a error
826         -- message.
827 	IF ( PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'N'
828 	   AND p_calling_module = 'AMG'
829            AND NVL(PA_FP_CALC_PLAN_PKG.g_is_wp_quantity_changed,'N') = 'N' AND p_structure_type = 'WORKPLAN')
830 	THEN
831 		IF ( p_est_remaining_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
832 			and p_est_remaining_effort IS NOT NULL)
833 		THEN
834 			PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
835                                ,p_msg_name       => 'PA_WP_VD_CANT_UPDATE_ETC');
836 			x_msg_data := 'PA_WP_VD_CANT_UPDATE_ETC';
837 			x_return_status := 'E';
838 			RAISE  FND_API.G_EXC_ERROR;
839 		END IF;
840 	END IF;
841         -- Bug14602604 End
842     */
843 	IF p_object_type = 'PA_TASKS'
844 	THEN
845 		-- 4490532 : Changed from IS_LOWEST_TASK to is_summary_task_or_structure
846 		--l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_object_version_id );
847 		--ELSE
848 		--l_lowest_level_task := 'N';
849 		IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_object_version_id) = 'Y' THEN
850 			l_lowest_level_task := 'N';
851 		ELSE
852 			l_lowest_level_task := 'Y';
853 		END IF;
854 	END IF;
855 
856 	l_task_status2 := PA_PROGRESS_UTILS.get_system_task_status( p_task_status );
857         l_task_status2_temp := l_task_status2; -- Bug#5374114
858         l_task_status_temp := p_task_status;   -- Bug#5374114
859 
860 	---4457403, added begin/end block to handle no_data_found exception
861 	BEGIN
862 		l_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
863 		l_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
864 	EXCEPTION
865 		WHEN OTHERS THEN
866                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
867                                             p_msg_name => 'PA_FP_INVALID_DATE_RANGE');
868                  x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
869                  x_return_status := 'E';
870                  x_msg_count := fnd_msg_pub.count_msg;
871                  RAISE  FND_API.G_EXC_ERROR;
872 	END;
873 
874 	IF g1_debug_mode  = 'Y' THEN
875 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
876 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After deriving PA/GL Date l_pa_period_name='||l_pa_period_name||' l_gl_period_name='||l_gl_period_name, x_Log_Level=> 3);
877 	END IF;
878 
879 	--bug 3879461 --maansari
880 	--check and delete for any other working version record.
881 	-- Amit : This code is not required as l_db_action will switch mode to update and the existing working record will be updated
882 	IF p_action = 'SAVE' AND p_structure_type = 'WORKPLAN'
883 	THEN
884 		DELETE FROM pa_percent_completes
885 		WHERE project_id= p_project_id
886 		AND object_id = p_object_id
887 		AND published_flag = 'N'
888 		--AND date_computed <> p_as_of_date --bug 4185364, delete all the working records
889 		AND structure_type = p_structure_type
890 		;
891 
892 		DELETE FROM pa_progress_rollup
893 		WHERE project_id= p_project_id
894 		AND object_id = p_object_id
895 		AND current_flag = 'W'
896 		--AND as_of_date <> p_as_of_date    --bug 4185364, delete all the working records
897 		AND structure_type = p_structure_type
898 		AND structure_version_id is null
899 		;
900 	END IF;
901 
902 	--This code is required is PUBLISH mode  to delete working progress records on previous dates.
903 	IF  p_action = 'PUBLISH' AND p_structure_type = 'WORKPLAN'
904 	THEN
905 		DELETE /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N6)*/ FROM pa_percent_completes -- added hint for bug 16325523
906 		WHERE project_id= p_project_id
907 		AND object_id = p_object_id
908 		AND published_flag = 'N'
909 		AND date_computed <= p_as_of_date  --- 4245168
910 		AND structure_type = p_structure_type
911 		;
912 
913 		DELETE FROM pa_progress_rollup
914 		WHERE project_id= p_project_id
915 		AND object_id = p_object_id
916 		AND current_flag = 'W'
917 		AND as_of_date < p_as_of_date
918 		AND structure_type = p_structure_type
919 		AND structure_version_id is null
920 		;
921 	END IF;
922 
923 	--bug 3879461
924 
925 	IF p_object_type = 'PA_STRUCTURES' AND p_structure_type = 'FINANCIAL'
926 	--bug 3944208. l_task_id will never be equal to 0 bcoz we there is a different api for financial progress.
927 	THEN
928 		l_task_id := 0;
929 	ELSE
930 		l_task_id := p_object_id;
931 	END IF;
932 
933 	---- if status is CANCELLED
934 	IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_object_id)) = 'CANCELLED'
935 	AND p_progress_mode <> 'BACKDATED'
936 	AND l_element_struc_type = 'WORKPLAN'
937 	THEN
938 	  IF p_pm_product_code = 'MSPROJECT' OR p_calling_module <> 'AMG'	--Bug:14537482
939 	  THEN
940 	    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
941 	                         ,p_msg_name       => 'PA_TP_CANT_NTER_PRG_CANCEL_MSP'
942 	                         ,p_token1 => 'TASK_NAME'
943 	                         ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
944 	                         ,p_token2 => 'TASK_NUMBER'
945 	                         ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
946 	    x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
947 	    x_return_status := 'E';
948 	    RAISE  FND_API.G_EXC_ERROR;
949 	  ELSE
950 	    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
951 	                         ,p_msg_name       => 'PA_TP_CANT_NTER_PRG_CANCEL_AMG'
952 	                         ,p_token1 => 'TASK_ID'
953 	                         ,p_value1 => p_object_id
954 	                        );
955 	    x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
956 	    x_return_status := 'E';
957 	    RAISE  FND_API.G_EXC_ERROR;
958 	  END IF;
959 	END IF;
960 	---- if status is CANCELLED
961 
962 
963 	---- call a procedure to get all the DEFAULTS
964 	IF l_element_struc_type = 'WORKPLAN'
965 	THEN
966 		IF g1_debug_mode  = 'Y' THEN
967 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling get_progress_defaults', x_Log_Level=> 3);
968 		END IF;
969 
970 			PA_PROGRESS_UTILS.get_progress_defaults(
971 			     p_project_id                   => p_project_id
972 			    ,p_object_version_id            => p_object_version_id
973 			    ,p_object_type                  => p_object_type
974 			    ,p_object_id                    => p_object_id
975 			    ,p_as_of_date                   => p_as_of_date
976 			    ,x_wq_actual_entry_code         => l_actual_wq_entry_code
977 			    ,x_wq_enabled_flag              => l_wq_enabled_flag
978 			    ,x_effort_enabled_flag          => l_est_remaining_eff_flag
979 			    ,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
980 			    ,x_percent_comp_enabled_flag    => l_percent_complete_flag
981 			    ,x_progress_entry_enable_flag   => l_progress_entry_enable_flag
982 			    ,x_allow_collab_prog_entry      => l_allow_collab_prog_entry -- FPM Development Bug 3420093
983 			    ,x_allw_phy_prcnt_cmp_overrides => l_allw_phy_prcnt_cmp_overrides -- FPM Development Bug 3420093
984 			    ,x_task_weight_basis_code       => l_task_weight_basis_code
985 			 );
986 
987 		IF g1_debug_mode  = 'Y' THEN
988 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_actual_wq_entry_code='||l_actual_wq_entry_code, x_Log_Level=> 3);
989 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_wq_enabled_flag='||l_wq_enabled_flag, x_Log_Level=> 3);
990 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_est_remaining_eff_flag='||l_est_remaining_eff_flag, x_Log_Level=> 3);
991 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_base_percent_comp_deriv_code='||l_base_percent_comp_deriv_code, x_Log_Level=> 3);
992 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
993 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_progress_entry_enable_flag='||l_progress_entry_enable_flag, x_Log_Level=> 3);
994 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_allow_collab_prog_entry='||l_allow_collab_prog_entry, x_Log_Level=> 3);
995 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_allw_phy_prcnt_cmp_overrides='||l_allw_phy_prcnt_cmp_overrides, x_Log_Level=> 3);
996 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling l_task_weight_basis_code='||l_task_weight_basis_code, x_Log_Level=> 3);
997 		END IF;
998 
999 		----- No PRPGRESS
1000 		IF NVL( l_progress_entry_enable_flag, 'N' ) = 'N' and p_object_type = 'PA_TASKS'
1001 		THEN
1002 		  IF p_pm_product_code = 'MSPROJECT'
1003 		  THEN
1004 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1005 		                         ,p_msg_name       => 'PA_TP_CANT_ENTER_PROG_MSP'
1006 		                         ,p_token1 => 'TASK_NAME'
1007 		                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1008 		                         ,p_token2 => 'TASK_NUMBER'
1009 		                         ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1010 		                         ,p_token3 => 'PROJECT_NAME'
1011 		                         ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1012 		                         ,p_token4 => 'PROJECT_NUMBER'
1013 		                         ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id));
1014 		    x_msg_data := 'PA_TP_CANT_ENTER_PROG';
1015 		    x_return_status := 'E';
1016 		    RAISE  FND_API.G_EXC_ERROR;
1017 		  ELSE
1018 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1019 		                         ,p_msg_name       => 'PA_TP_CANT_ENTER_PROG_AMG'
1020 		                         ,p_token1 => 'TASK_ID'
1021 		                         ,p_value1 => p_object_id
1022 		                         ,p_token2 => 'PROJECT_ID'
1023 		                         ,p_value2 => p_project_id);
1024 		    x_msg_data := 'PA_TP_CANT_ENTER_PROG';
1025 		    x_return_status := 'E';
1026 		    RAISE  FND_API.G_EXC_ERROR;
1027 		  END IF;
1028 		END IF;
1029 		----- No PRPGRESS
1030 
1031 		----- Wrong MODE
1032 		IF p_progress_mode not in ( 'BACKDATED','FUTURE' )
1033 		THEN
1034 			PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1035                                ,p_msg_name       => 'PA_TP_WRONG_PRG_MODE4');
1036 			x_msg_data := 'PA_TP_WRONG_PRG_MODE4';
1037 			x_return_status := 'E';
1038 			RAISE  FND_API.G_EXC_ERROR;
1039 		END IF;
1040 		----- Wrong MODE
1041 
1042 		----- Wrong DATE
1043 		IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
1044 		THEN
1045 			PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1046 			                     ,p_msg_name       => 'PA_TP_INV_AOD'
1047 			                     ,p_token1         => 'AS_OF_DATE'
1048 			                     ,p_value1         => p_as_of_date);
1049 			x_msg_data := 'PA_TP_INV_AOD';
1050 			x_return_status := 'E';
1051 			RAISE  FND_API.G_EXC_ERROR;
1052 		END IF;
1053 		----- Wrong DATE
1054 
1055 		----- Wrong PROGRESS STATUS
1056 		IF p_progress_status_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_progress_status_code IS NULL
1057 		THEN
1058 			PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1059                              ,p_msg_name       => 'PA_TP_INV_PRG_STAT');
1060 			x_msg_data := 'PA_TP_INV_PRG_STAT';
1061 			x_return_status := 'E';
1062 			RAISE  FND_API.G_EXC_ERROR;
1063 		END IF;
1064 		----- Wrong PROGRESS STATUS
1065 		--Added by rtarway, for BUG 3819619
1066 
1067 		IF (p_calling_module = 'AMG')
1068 		THEN
1069 			BEGIN
1070 			SELECT 'x' INTO l_dummy
1071 			FROM pa_project_statuses
1072 			WHERE status_type = 'PROGRESS'
1073 			AND project_status_code = p_progress_status_code;
1074 			EXCEPTION
1075 				WHEN NO_DATA_FOUND THEN
1076 				  IF p_pm_product_code = 'MSPROJECT'
1077 				  THEN
1078 				    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1079 				                         ,p_msg_name       => 'PA_TP_INV_PRG_STAT_MSP'
1080 				                         ,p_token1 => 'PROG_STATUS'
1081 				                         ,p_value1 => p_progress_status_code
1082 				                         ,p_token2 => 'TASK_NAME'
1083 				                         ,p_value2 => PA_TASK_UTILS.get_task_name(l_task_id)
1084 				                         ,p_token3 => 'TASK_NUMBER'
1085 				                         ,p_value3 => PA_TASK_UTILS.get_task_number(l_task_id)
1086 				                         ,p_token4 => 'PROJECT_NAME'
1087 				                         ,p_value4 => PA_TASK_UTILS.get_project_name(p_project_id)
1088 				                         ,p_token5 => 'PROJECT_NUMBER'
1089 				                         ,p_value5 => PA_TASK_UTILS.get_project_number(p_project_id));
1090 				    x_msg_data := 'PA_TP_INV_PRG_STAT';
1091 				    x_return_status := 'E';
1092 				    RAISE  FND_API.G_EXC_ERROR;
1093 				  ELSE
1094 				    PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1095 				                         p_msg_name       => 'PA_TP_INV_PRG_STAT_AMG'
1096 				                         ,p_token1 => 'PROG_STATUS'
1097 				                         ,p_value1 => p_progress_status_code
1098 				                         ,p_token2 => 'TASK_ID'
1099 				                         ,p_value2 =>  l_task_id
1100 				                         ,p_token3 => 'PROJECT_ID'
1101 				                         ,p_value3 => p_project_id
1102 				                        );
1103 				    x_msg_data := 'PA_TP_INV_PRG_STAT';
1104 				    x_return_status := FND_API.G_RET_STS_ERROR;
1105 				    RAISE  FND_API.G_EXC_ERROR;
1106 				  END IF;
1107 			END;
1108 		END IF;
1109 		--End Add for BUG 3819619
1110 
1111 		----- Wrong STATUS
1112 		-- Bug 4429929 : Added OR condition below
1113 		IF ((p_task_status = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR OR p_task_status IS NULL)OR(PA_PROGRESS_UTILS.get_system_task_status(p_task_status)= 'CANCELLED'))
1114 		THEN
1115 			IF p_object_type = 'PA_TASKS'
1116 			THEN
1117 			  IF p_pm_product_code = 'MSPROJECT'
1118 			  THEN
1119 			    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1120 			                         ,p_msg_name       => 'PA_TP_INV_TSK_STAT_MSP'
1121 			                         ,p_token1 => 'TASK_NAME'
1122 			                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1123 			                         ,p_token2 => 'TASK_NUMBER'
1124 			                         ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1125 			    x_msg_data := 'PA_TP_INV_TSK_STAT';
1126 			    x_return_status := 'E';
1127 			    RAISE  FND_API.G_EXC_ERROR;
1128 			  ELSE
1129 			    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1130 			                         ,p_msg_name       => 'PA_TP_INV_TSK_STAT_AMG'
1131 			                         ,p_token1 => 'TASK_ID'
1132 			                         ,p_value1 => p_object_id
1133 			                        );
1134 			    x_msg_data := 'PA_TP_INV_TSK_STAT';
1135 			    x_return_status := 'E';
1136 			    RAISE  FND_API.G_EXC_ERROR;
1137 			  END IF;
1138 			END IF;
1139 		END IF;
1140 		----- Wrong STATUS
1141 	END IF; --<< l_element_struc_type >>
1142 
1143 
1144 	IF (p_actual_work_quantity = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1145 	--BUG 4368945, rtarway, should also be checked for null as AMG can pass it as null
1146 	OR p_actual_work_quantity is null)
1147 	THEN
1148 		l_actual_work_quantity := 0;
1149 	ELSE
1150 		--bug 4368945 , rtarway, added check for -ve WQ
1151 		IF (p_actual_work_quantity < 0) THEN
1152 		  IF p_pm_product_code = 'MSPROJECT'
1153 		  THEN
1154 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1155 		                         ,p_msg_name       => 'PA_TP_NO_NEG_WQ_MSP'
1156 		                         ,p_token1 => 'TASK_NAME'
1157 		                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1158 		                         ,p_token2 => 'TASK_NUMBER'
1159 		                         ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1160 		    x_msg_data := 'PA_TP_NO_NEG_WQ';
1161 		    x_return_status := 'E';
1162 		    RAISE  FND_API.G_EXC_ERROR;
1163 		  ELSE
1164 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1165 		                         ,p_msg_name       => 'PA_TP_NO_NEG_WQ_AMG'
1166 		                         ,p_token1 => 'TASK_ID'
1167 		                         ,p_value1 => p_object_id);
1168 		    x_msg_data := 'PA_TP_NO_NEG_WQ';
1169 		    x_return_status := 'E';
1170 		    RAISE  FND_API.G_EXC_ERROR;
1171 		  END IF;
1172 		ELSE
1173 			--bug 3824042, round wq upto 2 decimal places
1174 			--l_actual_work_quantity := nvl(p_actual_work_quantity,0);
1175 			l_actual_work_quantity := nvl(round(p_actual_work_quantity,2),0);
1176 		END IF;
1177 	END IF;
1178 
1179 	IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1180 	----- OR p_est_remaining_effort < 0 ---4378391 (5726773 allow neg ETC)
1181 	THEN
1182 		l_est_remaining_effort := 0;
1183 	ELSE
1184 		--bug 3824042
1185 		--l_est_remaining_effort := nvl(p_est_remaining_effort,0);
1186 		l_est_remaining_effort := nvl(round(p_est_remaining_effort,5),0);
1187 	END IF;
1188 
1189 	/* 5726773
1190 	--3779387
1191 	IF l_est_remaining_effort < 0
1192 	THEN
1193 		PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1194                              ,p_msg_name       => 'PA_TP_NO_NEG_ETC');
1195 		x_msg_data := 'PA_TP_NO_NEG_ETC';
1196 		x_return_status := 'E';
1197 		RAISE  FND_API.G_EXC_ERROR;
1198 	END IF;
1199 	--3779387
1200 	*/
1201 
1202 	--maansari: fpm changes 3420093
1203 	IF p_actual_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1204 	THEN
1205 		l_actual_effort := 0;
1206 	ELSE
1207 		--bug 3824042
1208 		--l_actual_effort := nvl(p_actual_effort,0);
1209 		l_actual_effort := nvl(round(p_actual_effort,5),0);
1210 	END IF;
1211 
1212 	/*3970229  --3779387   negative actuals are allowed */
1213 
1214 	--maansari4/5
1215 	IF ( p_planned_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM or
1216          p_planned_effort IS NULL or
1217          p_planned_effort = 0 )
1218 	THEN
1219 		l_planned_effort := 1;
1220 	ELSE
1221 		l_planned_effort := nvl(p_planned_effort,0);
1222 	END IF;
1223 	--maansari4/5
1224 
1225 	IF p_planned_cost = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1226 	THEN
1227 		l_planned_cost := 0;
1228 	ELSE
1229 		l_planned_cost := nvl(p_planned_cost,0);
1230 	END IF;
1231 	--End maansari:
1232 
1233 
1234 	IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1235 	OR p_percent_complete is null
1236 	THEN
1237 		l_percent_complete := 0;
1238 	ELSE
1239 		l_percent_complete := round(p_percent_complete,8); --Bug 6854114
1240 	END IF;
1241 
1242 	IF p_scheduled_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1243 	THEN
1244 		l_scheduled_start_date := null;
1245 	ELSE
1246 		l_scheduled_start_date := p_scheduled_start_date;
1247 	END IF;
1248 
1249 	IF p_scheduled_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1250 	THEN
1251 		l_scheduled_finish_date := null;
1252 	ELSE
1253 		l_scheduled_finish_date := p_scheduled_finish_date;
1254 	END IF;
1255 
1256 	IF p_actual_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1257 	THEN
1258 		l_actual_start_date := null;
1259 	ELSE
1260 		l_actual_start_date := p_actual_start_date;
1261 	END IF;
1262 
1263 	IF p_actual_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1264 	THEN
1265 		l_actual_finish_date := null;
1266 	ELSE
1267 		l_actual_finish_date := p_actual_finish_date;
1268 	END IF;
1269 
1270 	IF p_estimated_start_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1271 	THEN
1272 		l_estimated_start_date := null;
1273 	ELSE
1274 		l_estimated_start_date := p_estimated_start_date;
1275 	END IF;
1276 
1277 	IF p_estimated_finish_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
1278 	THEN
1279 		l_estimated_finish_date := null;
1280 	ELSE
1281 		l_estimated_finish_date := p_estimated_finish_date;
1282 	END IF;
1283 
1284 	IF p_task_status = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
1285 	THEN
1286 		l_task_status := null;
1287 	ELSE
1288 		l_task_status := p_task_status;
1289 	END IF;
1290 
1291 	IF (p_pm_product_code   = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ) THEN
1292 		l_pm_product_code := NULL;
1293 	ELSE
1294 		l_pm_product_code := p_pm_product_code;
1295 	END IF;
1296 
1297 	-- Bug 3608422 : Changes Begin
1298 	OPEN cur_check_published_version(p_structure_version_id, p_project_id);
1299 	FETCH cur_check_published_version INTO l_published_structure;
1300 	CLOSE cur_check_published_version;
1301 
1302 	IF l_published_structure = 'Y'
1303 	OR p_structure_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1304 	OR p_prog_fom_wp_flag = 'N'   --Not a working workplan progress.
1305 	THEN
1306 		l_structure_version_id := null;
1307 	ELSE
1308 		l_structure_version_id := p_structure_version_id;
1309 	END IF;
1310 
1311 	-- Bug 3608422 : Changes End
1312 
1313 	IF g1_debug_mode  = 'Y' THEN
1314 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1315 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
1316 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
1317 	END IF;
1318 
1319 
1320 	IF L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'N'
1321 	AND l_element_struc_type = 'WORKPLAN'
1322 	AND p_calling_module = 'AMG' -- Bug 3807745
1323 	THEN
1324 		IF l_percent_complete > 0
1325 		THEN
1326 			--You cannot override percent_complete
1327 			PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1328                                  p_msg_name       => 'PA_TP_NO_PC_OVRIDE');
1329 			x_msg_data := 'PA_TP_NO_PC_OVRIDE';
1330 			x_return_status := 'E';
1331 			-- RAISE  FND_API.G_EXC_ERROR;
1332 			l_tp_pcc_est_disabl := 'Y';
1333 		END IF;
1334 	END IF;
1335 
1336 	IF (l_percent_complete < 0 or l_percent_complete > 100) THEN
1337 	  IF p_pm_product_code = 'MSPROJECT'
1338 	  THEN
1339 	    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1340 	                         ,p_msg_name       => 'PA_PERC_COMP_INV_MSP'
1341 	                         ,p_token1 => 'TASK_NAME'
1342 	                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1343 	                         ,p_token2 => 'TASK_NUMBER'
1344 	                         ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1345 	    x_msg_data := 'PA_PERC_COMP_INV';
1346 	    x_return_status := 'E';
1347 	    RAISE  FND_API.G_EXC_ERROR;
1348 	  ELSE
1349 	    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1350 	                         ,p_msg_name       => 'PA_PERC_COMP_INV_AMG'
1351 	                         ,p_token1 => 'TASK_ID'
1352 	                         ,p_value1 => p_object_id
1353 	                        );
1354 	    x_msg_data := 'PA_PERC_COMP_INV';
1355 	    x_return_status := 'E';
1356 	    RAISE  FND_API.G_EXC_ERROR;
1357 	  END IF;
1358 	END IF;
1359 
1360 	--Get the SCHEDULE DATES for lowest level task.
1361 	IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1362 	AND l_element_struc_type = 'WORKPLAN'
1363 	THEN
1364 		OPEN cur_pa_proj_sch;
1365 		FETCH cur_pa_proj_sch INTO l_scheduled_start_date, l_scheduled_finish_date;
1366 		CLOSE cur_pa_proj_sch;
1367 	END IF;
1368 	--Get the SCHEDULE DATES for lowest level task.
1369 
1370 	IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1371 	THEN
1372 		PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1373                             ,p_msg_name       => l_error_message_code);
1374 		x_msg_data := l_error_message_code;
1375 		x_return_status := 'E';
1376 		RAISE  FND_API.G_EXC_ERROR;
1377 	END IF;
1378 
1379 	IF p_progress_mode <> 'BACKDATED'
1380 	AND l_element_struc_type = 'WORKPLAN'
1381 	THEN
1382 		---- this will do for summary tasks also ???????????
1383 		IF l_percent_complete = 100
1384 		THEN
1385 			l_est_remaining_effort := 0;
1386 		END IF;
1387 	END IF;
1388 
1389 	IF (l_percent_complete < 100 AND l_percent_complete_flag = 'Y')
1390 	THEN
1391 		l_actual_finish_date := to_date(null);
1392 	END IF;
1393 
1394 	IF g1_debug_mode  = 'Y' THEN
1395 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Going to check status and start date, finish dates combination', x_Log_Level=> 3);
1396 	END IF;
1397 
1398 
1399 	--Added by rtarway for BUG 3819619, This will be executed in case user passed invalid project_status_code as task_status
1400 	IF ( p_calling_module = 'AMG' AND (l_task_status2 IS NULL or l_task_status2 = '') )
1401 	THEN
1402 		IF p_object_type = 'PA_TASKS'
1403 		THEN
1404 		  IF p_pm_product_code = 'MSPROJECT'
1405 		  THEN
1406 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1407 		                         ,p_msg_name       => 'PA_TP_INV_TSK_STAT_MSP'
1408 		                         ,p_token1 => 'TASK_NAME'
1409 		                         ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1410 		                         ,p_token2 => 'TASK_NUMBER'
1411 		                         ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id));
1412 		    x_msg_data := 'PA_TP_INV_TSK_STAT';
1413 		    x_return_status := 'E';
1414 		    RAISE  FND_API.G_EXC_ERROR;
1415 		  ELSE
1416 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1417 		                         ,p_msg_name       => 'PA_TP_INV_TSK_STAT_AMG'
1418 		                         ,p_token1 => 'TASK_ID'
1419 		                         ,p_value1 => p_object_id
1420                                  );
1421 		    x_msg_data := 'PA_TP_INV_TSK_STAT';
1422 		    x_return_status := 'E';
1423 		    RAISE  FND_API.G_EXC_ERROR;
1424 		  END IF;
1425 		END IF;
1426 	END IF;
1427 
1428 	IF l_element_struc_type = 'WORKPLAN'
1429 	THEN
1430 		IF l_est_remaining_eff_flag = 'N'
1431 		THEN
1432 
1433 			/* Begin fix for Bug # 4068245. */
1434 			IF ((l_actual_effort > 0) and (l_structure_sharing_code in ('SPLIT_MAPPING', 'SPLIT_NO_MAPPING') or l_structure_sharing_code is null))-- Added OR condition for Bug 4767821
1435 			THEN
1436 				--You cannot enter actual effort.
1437 				IF p_pm_product_code = 'MSPROJECT'
1438 				THEN
1439 				  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1440 				                      ,p_msg_name       => 'PA_TP_ACT_EFF_DISABL_MSP'
1441 				                      ,p_token1 => 'TASK_NAME'
1442 				                      ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1443 				                      ,p_token2 => 'TASK_NUMBER'
1444 				                      ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1445 				                      ,p_token3 => 'PROJECT_NAME'
1446 				                      ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1447 				                      ,p_token4 => 'PROJECT_NUMBER'
1448 				                      ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1449 				                      );
1450 				  x_msg_data := 'PA_TP_ACT_EFF_DISABL';
1451 				  x_return_status := 'E';
1452 				  l_tp_pcc_est_disabl := 'Y';
1453 				ELSE
1454 				  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1455 				                      ,p_msg_name       => 'PA_TP_ACT_EFF_DISABL_AMG'
1456 				                      ,p_token2 => 'TASK_ID'
1457 				                      ,p_value2 => p_object_id
1458 				                      ,p_token3 => 'PROJECT_ID'
1459 				                      ,p_value4 => p_project_id);
1460 				  x_msg_data := 'PA_TP_ACT_EFF_DISABL';
1461 				  x_return_status := 'E';
1462 				  l_tp_pcc_est_disabl := 'Y';
1463 				END IF;
1464 			END IF;
1465 
1466 			/* Begin commenting out code to fix Bug # 4086574.
1467 
1468 			The following validataion has been commented out because of the following reasons:
1469 			1). This validataion is redundant as there is no way a user can enter an etc effort value
1470 			   from self service when etc effort collection is disabled, since the etc effort will be
1471 			   displayed on non-editable fields.
1472 			2). This validation throws an unnecessary error when there exists a non-zero value of etc effort
1473 			   for a task with etc effort collection disabled as a result of etc effort being defaulted as
1474 			   (planned effort - actual effort) or as a result of etc effort being rolled-up from sub-tasks
1475 			   or assignments.
1476 
1477 			IF (( l_est_remaining_effort > 0) and (l_structure_sharing_code in ('SHARE_FULL', 'SHARE_PARTIAL')))
1478 			THEN
1479 				--You cannot enter etc effort.
1480 				PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1481                                     p_msg_name       => 'PA_TP_EST_REM_EFF_DISABL');
1482 				x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1483 				x_return_status := 'E';
1484 				l_tp_pcc_est_disabl := 'Y';
1485 			END IF;
1486 
1487 			End commenting out code to fix Bug # 4086574. */
1488 
1489 			/* End fix for Bug # 4068245. */
1490 
1491 		ELSE
1492 			--perform the following only if its not called from Self Service
1493 			--IF p_calling_module <> 'SELF_SERVICE'  --maansari4/4
1494 			IF p_calling_module = 'AMG' --4085882, rtarway
1495 			THEN
1496 				IF NVL( l_lowest_level_task, 'N' ) = 'N' AND (l_structure_sharing_code = 'SHARE_FULL') AND  --Added for Bug# 6944034
1497 				( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1498 				THEN
1499 					--You cannot enter actual or ETC effort at summary level.
1500 					PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1501 						p_msg_name       => 'PA_TP_CANT_NTR_EFF_SUMMRY');
1502 					x_msg_data := 'PA_TP_CANT_NTR_EFF_SUMMRY';
1503 					x_return_status := 'E';
1504 					--RAISE  FND_API.G_EXC_ERROR;   --rasie error message.
1505 					l_tp_pcc_est_disabl := 'Y';
1506 				ELSIF ( l_assignment_exists = 'Y' ) -- Bug 3784904 : Changed from N to Y
1507 				AND ( l_actual_effort > 0 OR l_est_remaining_effort > 0 )
1508 				THEN
1509 					--You cannot effort when assignments exists for the task.
1510 					IF p_pm_product_code = 'MSPROJECT'
1511 					THEN
1512 					  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1513 					                      ,p_msg_name       => 'PA_TP_NO_EFF_WITH_ASSN_MSP'
1514 					                      ,p_token1 => 'TASK_NAME'
1515 					                      ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1516 					                      ,p_token2 => 'TASK_NUMBER'
1517 					                      ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1518 					                      );
1519 					  x_msg_data := 'PA_TP_NO_EFF_WITH_ASSN';
1520 					  x_return_status := 'E';
1521 					  --RAISE  FND_API.G_EXC_ERROR;   --rasie error message.
1522 					  l_tp_pcc_est_disabl := 'Y';
1523 					ELSE
1524 					  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1525 					                      ,p_msg_name       => 'PA_TP_NO_EFF_WITH_ASSN_AMG'
1526 					                      ,p_token1 => 'TASK_ID'
1527 					                      ,p_value1 => p_object_id);
1528 					  x_msg_data := 'PA_TP_NO_EFF_WITH_ASSN';
1529 					  x_return_status := 'E';
1530 					  --RAISE  FND_API.G_EXC_ERROR;   --rasie error message.
1531 					  l_tp_pcc_est_disabl := 'Y';
1532 					END IF;
1533 				ELSIF NVL( l_lowest_level_task, 'N' ) = 'N'
1534 				AND l_structure_sharing_code = 'SHARE_FULL' --Bug 3586648
1535 				AND ( l_actual_effort > 0 )
1536 				THEN
1537 					--You cannot enter actual effort for shared structures.
1538 					PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1539 					    p_msg_name       => 'PA_TP_NO_ACT_EFF_4SH_STR');
1540 					x_msg_data := 'PA_TP_NO_ACT_EFF_4SH_STR';
1541 					x_return_status := 'E';
1542 					--RAISE  FND_API.G_EXC_ERROR;   --rasie error message.
1543 					l_tp_pcc_est_disabl := 'Y';
1544 				END IF;
1545 			END IF;  -- IF p_calling_module <> 'SELF_SERVICE'  --maansari4/4
1546 		END IF; --l_est_remaining_eff_flag = 'N'
1547 	END IF;    --l_element_struc_type
1548 
1549 	IF x_return_status = 'E' THEN -- Bug 3784904
1550 		RAISE  FND_API.G_EXC_ERROR;
1551 	END IF;
1552 	--End maansari: fpm changes
1553 	----- End of validation
1554 
1555 	/* Bug 2747143: Display PA_TP_EST_REM_EFF_DISABL and PA_TP_PCC_DISABL together
1556        if both are disabled while uploading from MSP */
1557 	IF l_est_remaining_eff_flag = 'N'
1558 	AND l_element_struc_type = 'WORKPLAN'
1559 	AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1560 	AND p_calling_module = 'AMG' -- Bug 3807745
1561 	THEN
1562 		IF l_est_remaining_effort > 0
1563 		THEN
1564 			--You cannot enter estimated remaing effort.
1565 			IF p_pm_product_code = 'MSPROJECT'
1566 			THEN
1567 			  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1568 			                      ,p_msg_name       => 'PA_TP_EST_REM_EFF_DISABL_MSP'
1569 			                      ,p_token1 => 'TASK_NAME'
1570 			                      ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1571 			                      ,p_token2 => 'TASK_NUMBER'
1572 			                      ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1573 			                      ,p_token3 => 'PROJECT_NAME'
1574 			                      ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1575 			                      ,p_token4 => 'PROJECT_NUMBER'
1576 			                      ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1577 			                      );
1578 			  x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1579 			  x_return_status := 'E';
1580 			  --RAISE  FND_API.G_EXC_ERROR;
1581 			  l_tp_pcc_est_disabl := 'Y';
1582 			ELSE
1583 			  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1584 			                      ,p_msg_name       => 'PA_TP_EST_REM_EFF_DISABL_AMG'
1585 			                      ,p_token1 => 'TASK_ID'
1586 			                      ,p_value1 => p_object_id
1587 			                      ,p_token2 => 'PROJECT_ID'
1588 			                      ,p_value2 => p_project_id);
1589 			  x_msg_data := 'PA_TP_EST_REM_EFF_DISABL';
1590 			  x_return_status := 'E';
1591 			  --RAISE  FND_API.G_EXC_ERROR;
1592 			  l_tp_pcc_est_disabl := 'Y';
1593 			END IF;
1594 		END IF;
1595 	END IF;
1596 
1597 	IF l_percent_complete_flag = 'N'
1598 	AND l_element_struc_type = 'WORKPLAN'
1599 	AND NVL( l_lowest_level_task, 'N' ) = 'Y'
1600 	AND p_calling_module = 'AMG' -- Bug 3807745
1601 	THEN
1602 		IF l_percent_complete > 0
1603 		THEN
1604 			--You cannot enter percent_complete
1605 			IF p_pm_product_code = 'MSPROJECT'
1606 			THEN
1607 			  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1608 			                      ,p_msg_name       => 'PA_TP_PCC_DISABL_MSP'
1609 			                      ,p_token1 => 'TASK_NAME'
1610 			                      ,p_value1 => PA_TASK_UTILS.get_task_name(p_object_id)
1611 			                      ,p_token2 => 'TASK_NUMBER'
1612 			                      ,p_value2 => PA_TASK_UTILS.get_task_number(p_object_id)
1613 			                      ,p_token3 => 'PROJECT_NAME'
1614 			                      ,p_value3 => PA_TASK_UTILS.get_project_name(p_project_id)
1615 			                      ,p_token4 => 'PROJECT_NUMBER'
1616 			                      ,p_value4 => PA_TASK_UTILS.get_project_number(p_project_id)
1617 			                      );
1618 			  x_msg_data := 'PA_TP_PCC_DISABL';
1619 			  x_return_status := 'E';
1620 			  -- RAISE  FND_API.G_EXC_ERROR;
1621 			  l_tp_pcc_est_disabl := 'Y';
1622 			ELSE
1623 			  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
1624 			                      ,p_msg_name       => 'PA_TP_PCC_DISABL_AMG'
1625 			                      ,p_token1 => 'TASK_ID'
1626 			                      ,p_value1 => p_object_id
1627 			                      ,p_token2 => 'PROJECT_ID'
1628 			                      ,p_value2 => p_project_id);
1629 			  x_msg_data := 'PA_TP_PCC_DISABL';
1630 			  x_return_status := 'E';
1631 			  -- RAISE  FND_API.G_EXC_ERROR;
1632 			  l_tp_pcc_est_disabl := 'Y';
1633 			END IF;
1634 		END IF;
1635 	END IF;
1636 
1637 	-- Raise in case of any of the above two errors
1638 	IF l_tp_pcc_est_disabl = 'Y'
1639 	THEN
1640 		RAISE  FND_API.G_EXC_ERROR;
1641 	END IF;
1642 
1643 	-- Bug 3606627 : AMG Changes, Getting planned values
1644 	IF p_calling_module = 'AMG' THEN
1645 		BEGIN
1646 		--bug 3824042
1647 			SELECT
1648 			/*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
1649 			nvl(pfxat.prj_brdn_cost,0) planned_cost, nvl(pfxat.labor_hours,0)+nvl(pfxat.equipment_hours,0) planned_effort
1650 			INTO l_planned_cost, l_planned_effort
1651 			FROM  pji_fm_xbs_accum_tmp1 pfxat
1652 			WHERE pfxat.project_id = p_project_id
1653 			AND pfxat.struct_version_id = p_structure_version_id
1654 			AND pfxat.project_element_id = p_object_id
1655 			AND pfxat.calendar_type = 'A'
1656 			AND pfxat.plan_version_id > 0
1657 			AND pfxat.txn_currency_code is null;
1658 		EXCEPTION
1659 			WHEN OTHERS THEN
1660 			null;
1661 		END;
1662 	END IF;
1663 
1664 
1665 	IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1666 	AND l_element_struc_type = 'WORKPLAN'
1667 	THEN
1668 		IF l_wq_enabled_flag = 'Y'
1669 		THEN
1670 			l_last_cumulative_wrk_qty := PA_PROGRESS_UTILS.get_last_cumulative(
1671                                                  p_project_id         => p_project_id
1672                                                 ,p_object_id          => p_object_id
1673                                                 ,p_object_type        => p_object_type
1674                                                 ,p_as_of_date         => p_as_of_date  );
1675 			IF l_actual_wq_entry_code = 'INCREMENTAL'
1676 			THEN
1677 			--calculate cumulative;
1678 				l_cumulative_work_qty :=  l_actual_work_quantity + NVL( l_last_cumulative_wrk_qty, 0 );
1679 				l_incremental_work_qty := l_actual_work_quantity;
1680 
1681 				IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 3614860
1682 				THEN
1683 					l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1684 						p_task_id              => p_object_id
1685 						,p_incr_work_qty        => l_incremental_work_qty
1686 						,p_cuml_work_qty        => l_last_cumulative_wrk_qty
1687 						,p_est_remaining_effort => l_est_remaining_effort
1688 						);
1689 				END IF;
1690 			ELSIF l_actual_wq_entry_code = 'CUMULATIVE'
1691 			THEN
1692 				--calculate incremental;
1693 				l_incremental_work_qty := l_actual_work_quantity - NVL( l_last_cumulative_wrk_qty, 0 );
1694 				l_cumulative_work_qty := l_actual_work_quantity;
1695 				IF l_base_percent_comp_deriv_code= 'WQ_DERIVED' --maansari5/6 bug 3614860
1696 				THEN
1697 					l_base_percent_complete := PA_PROGRESS_UTILS.Calc_base_percent(
1698 						    p_task_id              => p_object_id
1699 						    ,p_incr_work_qty        => l_incremental_work_qty
1700 						    ,p_cuml_work_qty        => l_cumulative_work_qty
1701 						    ,p_est_remaining_effort => l_est_remaining_effort
1702 						       );
1703 				END IF;
1704 			END IF;
1705 		END IF;
1706 
1707 		IF l_est_remaining_eff_flag = 'Y'
1708 		-- Bug 4632744 : Added COST also here. We just need to derive some % complete
1709 		-- here to populate variable l_base_percent_complete.
1710 		-- So that we can do status and % complete check further
1711 		-- Actual and correct % compete  will be calculated in partial rollup and rollup API's
1712 		AND l_base_percent_comp_deriv_code in( 'EFFORT','COST') --maansari: fpm changes --bug 3784733
1713 		AND p_actual_effort <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1714 		AND p_actual_effort IS NOT NULL
1715 		THEN
1716 			--maansari7/27 bug 3784733
1717 			l_planned_effort := l_actual_effort+l_est_remaining_effort;
1718 			IF l_planned_effort = 0
1719 			THEN
1720 				l_planned_effort := 1;
1721 			END IF;
1722 			l_base_percent_complete := (l_actual_effort/l_planned_effort)*100; --bug 3781922
1723 			--maansari7/27 bug 3784733
1724 			/* 5726773
1725 			IF l_actual_effort < 0 THEN-- 4632744
1726 				l_base_percent_complete := 0;
1727 			END IF;
1728 			*/
1729  	                --5726773
1730  	                if l_base_percent_complete < 0 then
1731  	                    l_base_percent_complete := 0;
1732  	                elsif l_base_percent_complete > 100 then
1733  	                         l_base_percent_complete := 100;
1734  	                end if;
1735 		END IF;
1736 
1737 		--bug 3824042, round base percent upto 2 decimal places
1738 		l_base_percent_complete := round(l_base_percent_complete, 8); --Bug 6854114
1739 	END IF;
1740 
1741 	--maansari5/6  bug3614860
1742 
1743 	--do not copy base pc to override pc. maansari5/21
1744 	IF ( p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
1745 		p_percent_complete IS NULL)
1746 	AND l_percent_complete = 0
1747 	THEN
1748 		l_percent_complete := null;
1749 	END IF;
1750 
1751 	---------Added by rtarway--------------------------
1752 	-- Added For Bug 3630743
1753 	--It is added here so that previous checks do not get affected by the changed value of l_est_remaining_effort
1754 	IF p_est_remaining_effort = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1755         AND NVL( l_lowest_level_task, 'N' ) <> 'N'
1756         AND ( PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,p_object_version_id,p_object_type) <> 'N' ) -- Bug 3784904 Changed from object_id to object_version_id
1757         AND l_element_struc_type = 'WORKPLAN'
1758         AND l_est_remaining_eff_flag <> 'N'
1759 	THEN
1760 		----5726773   l_est_remaining_effort := l_planned_effort - l_actual_effort;
1761  	          l_est_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_planned_effort,l_actual_effort); --5726773
1762 	END IF;
1763 	----------end added by rtarway for bug 3630743-----
1764 
1765 	IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1766 	THEN
1767 		l_base_progress_status_code := p_progress_status_code;
1768 	END IF;
1769 
1770 	--bug 3851528
1771 	IF NVL( l_lowest_level_task, 'N' ) = 'Y'
1772 	AND l_element_struc_type = 'WORKPLAN'
1773 	AND l_assignment_exists = 'N'
1774 	THEN
1775 		--Update outdated flag back to 'Y'
1776 		UPDATE pa_proj_elements
1777 		SET progress_outdated_flag = 'Y'
1778 		WHERE proj_element_id = p_object_id
1779 		AND project_id = p_project_id
1780 		AND object_type = p_object_type;
1781 	END IF;
1782 	--bug 3851528
1783 
1784 	IF l_element_struc_type = 'WORKPLAN'
1785 	THEN
1786         -- Moved outside if block for bug 8277820
1787 		/*l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1788                        p_task_id      => l_task_id
1789                       ,p_project_id   => p_project_id
1790                       ,p_object_id    => p_object_id
1791                       ,p_object_type  => p_object_type
1792                       ,p_structure_type => p_structure_type); */
1793 
1794 		l_working_aod := PA_PROGRESS_UTILS.Working_version_exist(
1795 			p_object_id	=> p_object_id -- Bug 3764224
1796 			,p_task_id      => p_object_id
1797 			,p_project_id   => p_project_id
1798 			,p_object_type  => p_object_type
1799 			,p_as_of_date   => p_as_of_date);  --bug 4185364
1800 	END IF;
1801 
1802         -- Moved outside if block for bug 8277820
1803            l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
1804                           p_task_id      => l_task_id
1805                          ,p_project_id   => p_project_id
1806                          ,p_object_id    => p_object_id
1807                          ,p_object_type  => p_object_type
1808                          ,p_structure_type => p_structure_type);
1809 
1810 
1811 	l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
1812 			p_task_id          => p_object_id
1813 			,p_object_id          => p_object_id -- Bug 3764224
1814 			,p_as_of_date         => p_as_of_date
1815 			,p_project_id         => p_project_id
1816 			,p_object_version_id  => p_object_version_id
1817 			,p_object_type        => p_object_type
1818 			);
1819 
1820 	IF g1_debug_mode  = 'Y' THEN
1821 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
1822 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_last_progress_date='||l_last_progress_date, x_Log_Level=> 3);
1823 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_working_aod='||l_working_aod, x_Log_Level=> 3);
1824 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_progress_exists_on_aod='||l_progress_exists_on_aod, x_Log_Level=> 3);
1825 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
1826 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
1827 	END IF;
1828 
1829 
1830 	IF p_progress_mode = 'BACKDATED'
1831 	THEN
1832 		IF l_element_struc_type = 'WORKPLAN'
1833 		THEN
1834 			IF l_last_progress_date IS NULL
1835 			THEN
1836 				--Add message
1837 				--You cannot create a backdated progress when there does not
1838 				--exists any progress for this task.
1839 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1840 					,p_msg_name       => 'PA_TP_WRONG_PRG_MODE1');
1841 				x_msg_data := 'PA_TP_WRONG_PRG_MODE1';
1842 				x_return_status := 'E';
1843 				RAISE  FND_API.G_EXC_ERROR;
1844 			ELSIF p_as_of_date > l_last_progress_date    -- progress exists before  as of date
1845 			THEN
1846 				--You cannot create a backdated progress when there exists a progress
1847 				--before AS_OF_DATE for this task.
1848 				PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1849 					p_msg_name       => 'PA_TP_WRONG_PRG_MODE2',
1850 					p_token1         => 'AS_OF_DATE',
1851 					p_value1         => l_last_progress_date );
1852 				x_msg_data := 'PA_TP_WRONG_PRG_MODE2';
1853 				x_return_status := 'E';
1854 				RAISE  FND_API.G_EXC_ERROR;
1855 			ELSIF p_as_of_date < l_last_progress_date    -- backdated
1856 			THEN
1857 				IF l_progress_exists_on_aod = 'WORKING'
1858 				THEN
1859 					--update the existing working progress record to publish and roll up
1860 					l_db_action := 'UPDATE';
1861 				ELSIF l_progress_exists_on_aod = 'N'
1862 				THEN
1863 					--Create a new published progress record and roll up. (if l_progress_exists_on_aod = 'PUBLISHED'
1864 					--then update last progress current flag = 'N')
1865 					--1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1866 					--2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1867 					l_db_action := 'CREATE';
1868 				ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1869 					--You cannot create a backdated progress when there exists a progress
1870 					-- on AS_OF_DATE for this task. can correct but no backdate.
1871 					PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1872 							p_msg_name       => 'PA_TP_WRONG_PRG_MODE5');
1873 					x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1874 					x_return_status := 'E';
1875 					RAISE  FND_API.G_EXC_ERROR;
1876 				ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is not null THEN
1877 					l_db_action := 'CREATE';
1878 					l_process := 'CORRECT';
1879 				END IF;
1880 
1881 				--validate actuals
1882 				IF ( l_actual_start_date IS NOT NULL AND l_actual_start_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1883 				-- 4533112 : It was start date again in below condition, changed it to shd be finish date here
1884 				( l_actual_finish_date IS NOT NULL AND l_actual_finish_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) OR
1885 				( p_actual_work_quantity IS NOT NULL AND p_actual_work_quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM )
1886 				THEN
1887 					--Add message
1888 					--You cannot pass actuals for backdated progress.
1889 					PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1890 							 ,p_msg_name       => 'PA_TP_ACTUALS_NOT_ALLWD');
1891 					x_msg_data := 'PA_TP_ACTUALS_NOT_ALLWD';
1892 					x_return_status := 'E';
1893 					RAISE  FND_API.G_EXC_ERROR;
1894 				END IF;
1895 			ELSIF p_as_of_date = l_last_progress_date    -- Current
1896 			THEN
1897 				IF l_progress_exists_on_aod = 'WORKING'
1898 				THEN
1899 					--update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1900 					l_db_action := 'UPDATE';
1901 				ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1902 					--You cannot create a backdated progress when there exists a progress
1903 					-- on AS_OF_DATE for this task. can correct but no backdate.
1904 					PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1905 							p_msg_name       => 'PA_TP_WRONG_PRG_MODE5');
1906 					x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1907 					x_return_status := 'E';
1908 					RAISE  FND_API.G_EXC_ERROR;
1909 				ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1910 				THEN
1911 					--Create a new working progress record.  ( publish and roll it only when p_action = 'PUBLISH' )
1912 					--1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1913 					--2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1914 					l_db_action := 'CREATE';
1915 					l_process := 'CORRECT';
1916 				END IF;
1917 			END IF;
1918                         -- Start. Added for bug 8277820
1919           ElsIf l_element_struc_type = 'FINANCIAL'
1920           THEN
1921             IF p_as_of_date < l_last_progress_date    -- backdated
1922             THEN
1923 
1924                IF l_progress_exists_on_aod = 'WORKING'
1925                THEN
1926                   --update the existing working progress record to publish and roll up
1927                   l_db_action := 'UPDATE';
1928                ELSIF l_progress_exists_on_aod = 'N'
1929                THEN
1930                   --Create a new published progress record and roll up. (if l_progress_exists_on_aod = 'PUBLISHED'
1931                   --then update last progress current flag = 'N')
1932                   --1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1933                   --2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1934                   l_db_action := 'CREATE';
1935                ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is null THEN
1936                   --You cannot create a backdated progress when there exists a progress
1937                   -- on AS_OF_DATE for this task. can correct but no backdate.
1938                   PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1939                                     p_msg_name       => 'PA_TP_WRONG_PRG_MODE5');
1940                   x_msg_data := 'PA_TP_WRONG_PRG_MODE5';
1941                   x_return_status := 'E';
1942                   RAISE  FND_API.G_EXC_ERROR;
1943                ELSIF l_progress_exists_on_aod = 'PUBLISHED' and p_record_version_number is not null THEN
1944                   l_db_action := 'CREATE';
1945                   l_process := 'CORRECT';
1946                END IF;
1947              END IF;
1948             -- End. Added for bug 8277820
1949 
1950 		END IF;   --<< l_element_struc_type = 'WORKPLAN' >>
1951 	ELSIF p_progress_mode = 'FUTURE'
1952 	THEN
1953 
1954 		IF p_as_of_date < NVL( l_last_progress_date, p_as_of_date )  AND l_working_aod IS NULL  -- progress exists after  as of date
1955 		   AND l_element_struc_type = 'WORKPLAN'    --maansari fpm changes
1956 		THEN
1957 			--You cannot create a future progress when there exists a progress
1958 			--after AS_OF_DATE for this task.
1959 			PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
1960 					p_msg_name       => 'PA_TP_WRONG_PRG_MODE3',
1961 					p_token1         => 'AS_OF_DATE',
1962 					p_value1         => p_as_of_date );
1963 			x_msg_data := 'PA_TP_WRONG_PRG_MODE3';
1964 			x_return_status := 'E';
1965 			RAISE  FND_API.G_EXC_ERROR;
1966 		ELSE
1967 			--Validate as of date
1968 			-- Bug 3627315 : Check valid as of date should not be called from AMG or Task Progress Details page
1969 			-- Beacuse from both the places we submit progress for all objects against one cycle date
1970 			IF l_element_struc_type = 'WORKPLAN'
1971 			AND p_calling_module <> 'AMG' -- Bug 3627315
1972 			--        AND p_calling_module <> 'TASK_PROG_DET_PAGE' -- Bug 3627315  maansari this is not required here.
1973 			AND PA_PROGRESS_UTILS.CHECK_VALID_AS_OF_DATE( p_as_of_date, p_project_id, p_object_id,p_object_type,p_object_id/*Bug 3764224 */) = 'N'
1974 			AND nvl(l_last_progress_date,p_as_of_date + 1 ) <> p_as_of_date
1975 			THEN
1976 				--Add message
1977 				--Invalid as of date
1978 
1979 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
1980 				                     ,p_msg_name       => 'PA_TP_INV_AOD2'
1981 				                     ,p_token1 => 'AS_OF_DATE'
1982 				                     ,p_value1 => p_as_of_date);
1983 				x_msg_data := 'PA_TP_INV_AOD2';
1984 				x_return_status := 'E';
1985 				RAISE FND_API.G_EXC_ERROR;
1986 			END IF;
1987 
1988 			IF l_progress_exists_on_aod = 'WORKING'
1989 			THEN
1990 				--update the existing working progress record ( publish and roll it only when p_action = 'PUBLISH' )
1991 				l_db_action := 'UPDATE';
1992 			ELSIF l_progress_exists_on_aod = 'PUBLISHED' OR l_progress_exists_on_aod = 'N'
1993 			THEN
1994 				--Create a new working progress record.  ( publish and roll it only when p_action = 'PUBLISH' )
1995 				--1. if l_progress_exists_on_aod = 'N' or 'Y' then we create new record in ppc
1996 				--2. if l_progress_exists_on_aod = 'N' then new record in PR otherwise its an update to Progress Rollup
1997 				l_db_action := 'CREATE';
1998 				IF  l_working_aod IS NOT NULL  --there is only one working version allowed
1999 				--OR  p_as_of_date = l_last_progress_date--Added by rtarway for BUG4091457
2000 				OR  (p_as_of_date = l_last_progress_date AND p_action = 'PUBLISH') -- BUG 4180026, for Recalc it should create new record.
2001 				THEN
2002 					l_db_action := 'UPDATE';
2003 				END IF;
2004 			END IF;
2005 		END IF;
2006 	END IF;
2007 
2008 	IF g1_debug_mode  = 'Y' THEN
2009 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Validation is Over', x_Log_Level=> 3);
2010 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action='||l_db_action, x_Log_Level=> 3);
2011 	END IF;
2012 
2013 	IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2014 	AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
2015 	AND (l_actual_effort IS NOT NULL or l_est_remaining_effort IS NOT NULL) -- Bug 3957792
2016 	AND l_assignment_exists = 'N' -- Bug 4632744
2017 	THEN
2018 
2019 		OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
2020 		FETCH c_get_resource_list_member_id
2021 		INTO
2022 			l_resource_assignment_id,
2023 			l_resource_list_member_id,
2024 			l_txn_currency_code,
2025 			l_planned_quantity ,
2026 			l_planned_bur_cost_txn_cur,
2027 			l_planned_bur_cost_projfunc,
2028 			l_planned_bur_cost_proj_cur,
2029 			l_planned_raw_cost_txn_cur,
2030 			l_planned_raw_cost_proj_cur,
2031 			l_planned_raw_cost_projfunc,
2032 			l_rbs_element_id,
2033 			l_rate_based_flag,
2034 			l_resource_class_code,
2035 			l_budget_version_id --- 4372462
2036 				   ;
2037 		CLOSE c_get_resource_list_member_id;
2038 
2039 
2040 		IF g1_debug_mode  = 'Y' THEN
2041 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id'||l_resource_assignment_id, x_Log_Level=> 3);
2042 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id'||l_resource_list_member_id, x_Log_Level=> 3);
2043 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code'||l_txn_currency_code, x_Log_Level=> 3);
2044 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
2045 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_txn_cur'||l_planned_bur_cost_txn_cur, x_Log_Level=> 3);
2046 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_projfunc'||l_planned_bur_cost_projfunc, x_Log_Level=> 3);
2047 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_proj_cur'||l_planned_bur_cost_proj_cur, x_Log_Level=> 3);
2048 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_txn_cur'||l_planned_raw_cost_txn_cur, x_Log_Level=> 3);
2049 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_proj_cur'||l_planned_raw_cost_proj_cur, x_Log_Level=> 3);
2050 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_projfunc'||l_planned_raw_cost_projfunc, x_Log_Level=> 3);
2051 		END IF;
2052 
2053 		-- BEGIN: Adding code to fix Bug # 3815741.
2054 
2055 		--bug 4021315, call derive task assignments only if actual or etc is entered
2056 		IF l_resource_list_member_id IS NULL AND l_assignment_exists = 'N'
2057 		AND ( l_actual_effort <> 0 OR l_est_remaining_effort <> 0)
2058 		THEN
2059 			BEGIN
2060 				IF g1_debug_mode  = 'Y' THEN
2061 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'res list mem not found, calling derive_task_assignments', x_Log_Level=> 3);
2062 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
2063 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
2064 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_scheduled_start_date='||l_scheduled_start_date, x_Log_Level=> 3);
2065 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_scheduled_finish_date='||l_scheduled_finish_date, x_Log_Level=> 3);
2066 				END IF;
2067 
2068 				pa_task_assignments_pvt.derive_task_assignments
2069 				  ( p_project_id               => p_project_id
2070 				   ,p_task_version_id          => p_object_version_id
2071 				   ,p_scheduled_start          => l_scheduled_start_date
2072 				   ,p_scheduled_end            => l_scheduled_finish_date
2073 				   ,p_resource_class_code      => 'PEOPLE'
2074 				   ,p_resource_list_member_id  => null
2075 				   --,p_unplanned_flag           => 'N' --bug 3819694, rtarway
2076 				   ,p_unplanned_flag           => 'Y'
2077 				   ,x_resource_assignment_id   => l_resource_assignment_id
2078 				   ,x_task_version_id          => l_task_version_id_out
2079 				   ,x_currency_code            => l_txn_currency_code
2080 				   ,x_resource_list_member_id  => l_resource_list_member_id
2081 				   ,x_rate_based_flag          => l_rate_based_flag_x
2082 				   ,x_rbs_element_id           => l_rbs_element_id
2083 				   ,x_msg_count                => l_msg_count
2084 				   ,x_msg_data                 => l_msg_data
2085 				   ,x_return_status            => l_return_status);
2086 
2087 				IF g1_debug_mode  = 'Y' THEN
2088 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After call derive_task_assignments', x_Log_Level=> 3);
2089 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_return_status='||l_return_status, x_Log_Level=> 3);
2090 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id='||l_resource_assignment_id, x_Log_Level=> 3);
2091 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_version_id_out='||l_task_version_id_out, x_Log_Level=> 3);
2092 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code='||l_txn_currency_code, x_Log_Level=> 3);
2093 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id='||l_resource_list_member_id, x_Log_Level=> 3);
2094 				END IF;
2095 
2096 				-- Bug 3834339 : We should get the planned value after assignment is created
2097 				OPEN c_get_resource_list_member_id(p_project_id, p_object_id, p_structure_version_id, p_object_version_id);
2098 				FETCH c_get_resource_list_member_id
2099 				INTO
2100 					l_resource_assignment_id,
2101 					l_resource_list_member_id,
2102 					l_txn_currency_code,
2103 					l_planned_quantity ,
2104 					l_planned_bur_cost_txn_cur,
2105 					l_planned_bur_cost_projfunc,
2106 					l_planned_bur_cost_proj_cur,
2107 					l_planned_raw_cost_txn_cur,
2108 					l_planned_raw_cost_proj_cur,
2109 					l_planned_raw_cost_projfunc,
2110 					l_rbs_element_id,
2111 					l_rate_based_flag,
2112 					l_resource_class_code,
2113 					l_budget_version_id --- 4372462
2114 					;
2115 				CLOSE c_get_resource_list_member_id;
2116 
2117 
2118 				IF g1_debug_mode  = 'Y' THEN
2119 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_assignment_id'||l_resource_assignment_id, x_Log_Level=> 3);
2120 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_resource_list_member_id'||l_resource_list_member_id, x_Log_Level=> 3);
2121 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_txn_currency_code'||l_txn_currency_code, x_Log_Level=> 3);
2122 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_quantity'||l_planned_quantity, x_Log_Level=> 3);
2123 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_txn_cur'||l_planned_bur_cost_txn_cur, x_Log_Level=> 3);
2124 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_projfunc'||l_planned_bur_cost_projfunc, x_Log_Level=> 3);
2125 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_bur_cost_proj_cur'||l_planned_bur_cost_proj_cur, x_Log_Level=> 3);
2126 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_txn_cur'||l_planned_raw_cost_txn_cur, x_Log_Level=> 3);
2127 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_proj_cur'||l_planned_raw_cost_proj_cur, x_Log_Level=> 3);
2128 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_raw_cost_projfunc'||l_planned_raw_cost_projfunc, x_Log_Level=> 3);
2129 				END IF;
2130 
2131 			EXCEPTION
2132 				WHEN OTHERS THEN
2133 					fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
2134 						p_procedure_name => 'UPDATE_TASK_PROGRESS',
2135 						p_error_text     => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
2136 					RAISE fnd_api.g_exc_error;
2137 			END;
2138 
2139 			IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2140 				PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2141 						  p_msg_name       => l_msg_data);
2142 				x_msg_data := l_msg_data;
2143 				x_return_status := 'E';
2144 				x_msg_count := l_msg_count;
2145 				RAISE  FND_API.G_EXC_ERROR;
2146 			END IF;
2147 		END IF;
2148 	END IF;
2149 	-- END: Adding code to fix Bug # 3815741.
2150 
2151 
2152 	-- Bug 3951531 Begin
2153 
2154 	IF g1_debug_mode  = 'Y' THEN
2155 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Bug 3951531', x_Log_Level=> 3);
2156 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_lowest_level_task='||l_lowest_level_task, x_Log_Level=> 3);
2157 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
2158 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_element_struc_type='||l_element_struc_type, x_Log_Level=> 3);
2159 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_est_remaining_eff_flag='||l_est_remaining_eff_flag, x_Log_Level=> 3);
2160 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
2161 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_act_txn_bur_cost='||l_act_txn_bur_cost, x_Log_Level=> 3);
2162 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_etc_txn_bur_cost='||l_etc_txn_bur_cost, x_Log_Level=> 3);
2163 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
2164 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
2165 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2166 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2167 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2168 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2169 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2170 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2171 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2172 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2173 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
2174 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_planned_cost='||l_planned_cost, x_Log_Level=> 3);
2175 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
2176 	END IF;
2177 
2178 	-- Bug 3922325 : Moved date defaulting code below
2179 	-- BEGIN: Fix for Bug # 3957607.
2180 	IF p_eff_rollup_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2181         AND p_eff_rollup_percent_complete IS NOT NULL
2182         AND p_percent_complete <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2183         AND p_percent_complete IS NOT NULL
2184 	THEN
2185 		-- Do not consider overriden pc if its same as effective rollup percent complete.
2186 		-- This has to be done before we calculate: l_earned_value.
2187 		IF nvl(round(p_eff_rollup_percent_complete,8),0) = l_percent_complete --Bug 6854114
2188 		THEN
2189 			l_percent_complete := null;
2190 		END IF;
2191 		l_eff_rollup_percent_comp := p_eff_rollup_percent_complete; --bug 3969840
2192 	END IF;
2193 
2194 	-- END: Fix for Bug # 3957607.
2195 
2196 	-- Bug  3922325 Begin
2197 	IF g1_debug_mode  = 'Y' THEN
2198 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Task Status and Dates Defaulting and Error', x_Log_Level=> 3);
2199 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_flag='||l_percent_complete_flag, x_Log_Level=> 3);
2200 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
2201 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
2202 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete='||l_percent_complete, x_Log_Level=> 3);
2203 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_base_percent_complete='||l_base_percent_complete, x_Log_Level=> 3);
2204 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2205 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2206 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2207 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2208 	END IF;
2209 	-- Bug  3922325 End
2210 
2211 	-- Bug 3922325 Begin
2212 	IF  l_element_struc_type = 'WORKPLAN'
2213 	THEN
2214 		-- Previous System Status code is derived, if someone intentionally trying to change to
2215 		-- an invalid combination, so raise error instead of defaulting
2216 		OPEN c_previous_task_status;
2217 		FETCH c_previous_task_status INTO l_previous_status_code;
2218 		CLOSE c_previous_task_status;
2219 
2220 		l_prev_sys_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_previous_status_code );
2221 		IF g1_debug_mode  = 'Y' THEN
2222 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_previous_status_code='||l_previous_status_code, x_Log_Level=> 3);
2223 		END IF;
2224 	END IF;
2225 	-- Bug 3922325 End
2226 
2227 	IF ( l_percent_complete_flag = 'Y') THEN
2228 		-- Bug 3603636 Task Status Should be defaulted : As per Clint
2229 		--Fixed for BUG 3762650 by rtarway, please see 3668168 for defaulting rules of status.
2230 		-- 3922325 : Actual check should also be here
2231 		-- Bug 4097710 : Used nvl in use of l_prev_sys_status_code
2232 		IF ((nvl(l_percent_complete, l_base_percent_complete) > 0 AND nvl(l_percent_complete, l_base_percent_complete) < 100)
2233 		AND (l_task_status2 IS NULL OR l_task_status2 IN ('NOT_STARTED','COMPLETED'))
2234 		AND NVL(l_prev_sys_status_code, 'xyz') <> 'IN_PROGRESS')
2235 		-- Bug 3922325 : Added Completed too. This is done so by changing just ETC, it should be able to make In Progress
2236 		THEN
2237 			l_task_status2 := 'IN_PROGRESS';
2238 			l_task_status := '125';
2239 			--User can put a task in cancelled or on hold even if % complete > 0
2240 		ELSIF ( nvl(l_percent_complete, l_base_percent_complete) = 100 AND (l_task_status2 IS NULL OR l_task_status2 <> 'COMPLETED') AND NVL(l_prev_sys_status_code, 'xyz') <> 'COMPLETED' )
2241 		THEN
2242 			l_task_status2 := 'COMPLETED';
2243 			l_task_status := '127';
2244 		END IF;
2245 	END IF;
2246         /* Changes by vvjoshi for bug#5374114 - START */
2247 
2248         IF (l_task_status2 = l_task_status2_temp) THEN
2249                         l_task_status2 := l_task_status2_temp;
2250                         l_task_status  := l_task_status_temp;
2251         END IF;
2252 
2253         /* Changes by vvjoshi for bug#5374114 - END */
2254 
2255 	-- Bug  3922325 Begin
2256 	IF g1_debug_mode  = 'Y' THEN
2257 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After Default Status', x_Log_Level=> 3);
2258 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status2='||l_task_status2, x_Log_Level=> 3);
2259 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2260 	END IF;
2261 	-- Bug  3922325 End
2262 
2263 	-- Bug 3922325 : Moved date defaulting code here from above. It should be after  l_percent_complete is derived and task_status is defaulted
2264 	-- Begin
2265 	IF p_progress_mode <> 'BACKDATED' AND l_element_struc_type = 'WORKPLAN'
2266 	THEN
2267 		IF NVL( l_lowest_level_task, 'N' ) = 'Y'   --bug 2667432
2268 		THEN
2269 			-- 4533112 Begin
2270 			IF g1_debug_mode  = 'Y' THEN
2271 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Client Extension Logic Starts', x_Log_Level=> 3);
2272 			END IF;
2273 
2274 			OPEN c_get_dates_overrides;
2275 			FETCH c_get_dates_overrides INTO
2276 			l_db_date_override_flag
2277 			, l_db_estimated_start_date
2278 			, l_db_estimated_finish_date
2279 			, l_db_actual_start_date
2280 			, l_db_actual_finish_date;
2281 			CLOSE c_get_dates_overrides;
2282 
2283 			IF g1_debug_mode  = 'Y' THEN
2284 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
2285 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
2286 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
2287 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
2288 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
2289 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
2290 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
2291 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
2292 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
2293 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
2294 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
2295 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
2296 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'nvl(l_percent_complete, l_base_percent_complete)='||nvl(l_percent_complete, l_base_percent_complete), x_Log_Level=> 3);
2297 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2298 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2299 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2300 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2301 			END IF;
2302 
2303 			l_date_override_flag := 'N';
2304 
2305 			PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
2306 				p_project_id            => p_project_id,
2307 				p_structure_type        => 'WORKPLAN',
2308 				p_structure_version_id  => p_structure_version_id,
2309 				p_object_type           => p_object_type,
2310 				p_object_id             => p_object_id,
2311 				p_object_version_id     => p_object_version_id,
2312 				p_proj_element_id       => p_object_id,
2313 				p_task_status           => l_task_status,
2314 				p_percent_complete      => nvl(l_percent_complete, l_base_percent_complete),
2315 				p_estimated_start_date  => l_estimated_start_date,
2316 				p_estimated_finish_date => l_estimated_finish_date,
2317 				p_actual_start_date     => l_actual_start_date,
2318 				p_actual_finish_date    => l_actual_finish_date,
2319 				x_estimated_start_date  => l_clex_estimated_start_date,
2320 				x_estimated_finish_date => l_clex_estimated_finish_date,
2321 				x_actual_start_date     => l_clex_actual_start_date,
2322 				x_actual_finish_date    => l_clex_actual_finish_date,
2323 				x_return_status         => x_return_status,
2324 				x_msg_count             => x_msg_count,
2325 				x_msg_data              => x_msg_data
2326 				);
2327 
2328 			IF g1_debug_mode  = 'Y' THEN
2329 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
2330 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
2331 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
2332 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
2333 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
2334 			END IF;
2335 
2336 			IF x_return_status <> 'S' THEN
2337 				raise FND_API.G_EXC_ERROR;
2338 			END IF;
2339 
2340 			IF nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
2341 			OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
2342 			OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
2343 			OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
2344 			THEN
2345 				l_date_override_flag := 'Y';
2346 				l_estimated_start_date := l_clex_estimated_start_date;
2347 				l_estimated_finish_date := l_clex_estimated_finish_date;
2348 				l_actual_start_date := l_clex_actual_start_date;
2349 				l_actual_finish_date := l_clex_actual_finish_date;
2350 			END IF;
2351 
2352 			IF l_date_override_flag = 'N' AND nvl(l_db_date_override_flag, 'N') = 'Y' THEN
2353 				l_date_override_flag := 'Y';
2354 			END IF;
2355 
2356 			IF l_date_override_flag = 'N' AND
2357 			(nvl(l_estimated_start_date,FND_API.g_miss_date) <> nvl(l_db_estimated_start_date,FND_API.g_miss_date)
2358 			OR nvl(l_estimated_finish_date,FND_API.g_miss_date) <> nvl(l_db_estimated_finish_date,FND_API.g_miss_date)
2359 			OR nvl(l_actual_start_date,FND_API.g_miss_date) <> nvl(l_db_actual_start_date,FND_API.g_miss_date)
2360 			OR nvl(l_actual_finish_date,FND_API.g_miss_date) <> nvl(l_db_actual_finish_date,FND_API.g_miss_date))
2361 			THEN
2362 				l_date_override_flag := 'Y';
2363 			END IF;
2364 
2365 			IF g1_debug_mode  = 'Y' THEN
2366 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
2367 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
2368 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
2369 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
2370 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
2371 			END IF;
2372 
2373 			-- 4533112 End
2374 
2375 			IF (l_estimated_finish_date is not null and l_estimated_finish_date < nvl(l_estimated_start_date,l_estimated_finish_date)) THEN --removed +1 bug 5186825
2376 			    x_return_status := FND_API.G_RET_STS_ERROR;
2377 			    pa_utils.add_message(p_app_short_name => 'PA',
2378 						  p_msg_name => 'PA_EST_DATES_INV');
2379 			    raise fnd_api.g_exc_error;
2380 			END IF;
2381 			-- Bug 3922325 : Actual Start date and Finish date should efualt even if percent completete is not enabled
2382 			-- It should be based on Task Status rather than % Complete
2383 			--bug# 3823433 Satish
2384 			--IF l_percent_complete_flag = 'Y'
2385 			--THEN
2386 			IF g1_debug_mode  = 'Y' THEN
2387 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Deriving Dates', x_Log_Level=> 3);
2388 			END IF;
2389 			/* Date defaulting should be based on Status rather than % complete
2390 			IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0 and l_actual_start_date is null ) THEN
2391 			l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2392 			END IF;
2393 
2394 			IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2395 			l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2396 			END IF;
2397 
2398 			IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100 and l_actual_finish_date is not null ) THEN
2399 			l_actual_finish_date := to_date(null);
2400 			END IF;
2401 			*/
2402 
2403 			IF l_actual_start_date IS NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2404 				l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2405                                 if (l_estimated_start_date is null) then --5186825
2406                                     l_estimated_start_date := l_scheduled_start_date;
2407                                 end if;
2408 				l_actual_finish_date := to_date(null);
2409 			END IF;
2410 			-- Bug 4232099 : added folling IF
2411 			IF l_actual_finish_date IS NOT NULL AND l_task_status2 = 'IN_PROGRESS' THEN
2412 				l_actual_finish_date := to_date(null);
2413 			END IF;
2414 			IF l_actual_start_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2415 				l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
2416                                 if (l_estimated_start_date is null) then --5186825
2417                                     l_estimated_start_date := l_scheduled_start_date;
2418                                 end if;
2419 			END IF;
2420 			IF l_actual_finish_date IS NULL AND l_task_status2 = 'COMPLETED' THEN
2421 				l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
2422 			END IF;
2423 			--END IF;
2424 
2425 
2426 			IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL
2427 			THEN
2428 				IF l_actual_finish_date < l_actual_start_date
2429 				THEN
2430 					IF TRUNC(SYSDATE) < l_actual_start_date
2431 					THEN
2432 						l_actual_finish_date := l_actual_start_date;
2433 					ELSE
2434 						l_actual_finish_date := TRUNC(SYSDATE);
2435 					END IF;
2436 				END IF;
2437 			END IF;
2438 
2439 			-- Bug 3922325 : Actual Start date and Finish date check should be based on Status
2440 			-- Also it should happen irrespective of percent complete is enabled
2441 			/*
2442 			--bug# 3823433 Satish
2443 			IF l_percent_complete_flag = 'Y'
2444 			THEN
2445 				IF g1_debug_mode  = 'Y' THEN
2446 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Raising Errors on Conditions', x_Log_Level=> 3);
2447 			    END IF;
2448 
2449 			    IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0  and nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100
2450 				and l_actual_start_date is null ) THEN
2451 
2452 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2453 				    ,p_msg_name       => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2454 				x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2455 				x_return_status := 'E';
2456 				RAISE  FND_API.G_EXC_ERROR;
2457 			    END IF;
2458 
2459 			    IF (nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) = 100 and l_actual_finish_date is null ) THEN
2460 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2461 				    ,p_msg_name       => 'PA_TP_ACT_END_DT_NOT_NULL');
2462 				x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2463 				x_return_status := 'E';
2464 				RAISE  FND_API.G_EXC_ERROR;
2465 			    END IF;
2466 			END IF;
2467 			*/
2468 			IF ( l_task_status2 IN ('COMPLETED','IN_PROGRESS') and l_actual_start_date is null ) THEN
2469 
2470 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2471 				    ,p_msg_name       => 'PA_TP_ACT_ST_DATE_NOT_NULL');
2472 				x_msg_data := 'PA_TP_ACT_ST_DATE_NOT_NULL';
2473 				x_return_status := 'E';
2474 				RAISE  FND_API.G_EXC_ERROR;
2475 			END IF;
2476 
2477 			IF (l_task_status2 = 'COMPLETED' and l_actual_finish_date is null ) THEN
2478 				PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2479 				    ,p_msg_name       => 'PA_TP_ACT_END_DT_NOT_NULL');
2480 				x_msg_data := 'PA_TP_ACT_END_DT_NOT_NULL';
2481 				x_return_status := 'E';
2482 				RAISE  FND_API.G_EXC_ERROR;
2483 			END IF;
2484 
2485 		END IF;  -- IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2486 	END IF; -- IF p_progress_mode <> 'BACKDATED'
2487 	-- Bug 3922325 End
2488 
2489 	-- Bug 4328141 : Making l_percent_complete 100 when L_ALLW_PHY_PRCNT_CMP_OVERRIDES is N
2490 	IF l_percent_complete_flag = 'Y' AND l_allw_phy_prcnt_cmp_overrides = 'N' AND l_task_status2 = 'COMPLETED'
2491 	AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) <> 100 THEN
2492 		l_percent_complete := 100;
2493 	END IF;
2494 
2495 	IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL
2496 	AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) = 0)
2497 	OR
2498 	l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL
2499 	AND l_actual_finish_date IS NULL
2500 	AND nvl(nvl(l_percent_complete, l_base_percent_complete),0) <> 100) -- Bug 3922325 : Added so that error comes if % complete is 100. % compl 100 and In Progress is not a valid combination
2501 		/* Begin commenting out code to fix Bug # 4093350.
2502 
2503 		It has been decided that a task that 'IN_PROGRESS' only needs to have an actual start date, it
2504 		need not have any actuals or percent complete.
2505 
2506 		AND ((nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) > 0
2507 		AND nvl(l_percent_complete, l_BASE_PERCENT_COMPLETE) < 100))
2508 		OR nvl(l_actual_effort,0) > 0 OR  nvl(l_act_raw_cost_to_date_pc,0) > 0
2509 		OR nvl(l_act_bur_cost_to_date_pc,0) > 0) -- Fix for Bug # 4093350.
2510 
2511 		End commenting out code to fix Bug # 4093350. */
2512 
2513 	OR
2514 	l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL
2515 	AND l_actual_finish_date IS NOT NULL
2516 	AND nvl(l_percent_complete, l_base_percent_complete) = 100) -- Fix for Bug # 4093350.
2517 	OR
2518 	(l_task_status2 is NULL)
2519 	OR
2520 	(l_task_status2 = '')
2521 	THEN
2522 		IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2523 		AND l_element_struc_type = 'WORKPLAN'
2524 		AND p_progress_mode <> 'BACKDATED'
2525 		AND l_percent_complete_flag = 'Y'
2526 		--AND L_ALLW_PHY_PRCNT_CMP_OVERRIDES = 'Y'   --maansari: fpm changes
2527 		THEN
2528 		  IF p_pm_product_code = 'MSPROJECT'
2529 		  THEN
2530 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2531 		                         ,p_msg_name       => 'PA_TP_STAT_DTES_PC_COMB_MSP'
2532 		                         ,p_token1 => 'TASK_NAME'
2533 		                         ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
2534 		                         ,p_token2 => 'TASK_NUMBER'
2535 		                         ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
2536 		    x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2537 		    x_return_status := 'E';
2538 		    RAISE  FND_API.G_EXC_ERROR;
2539 		  ELSE
2540 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2541 		                         ,p_msg_name       => 'PA_TP_STAT_DTES_PC_COMB_AMG'
2542 		                         ,p_token1 => 'TASK_ID'
2543 		                         ,p_value1 => l_task_id
2544 		                        );
2545 		    x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2546 		    x_return_status := 'E';
2547 		    RAISE  FND_API.G_EXC_ERROR;
2548 		  END IF;
2549 		END IF;
2550 	END IF;
2551 
2552 	-- Bug 4632744
2553 	-- l_earned_value can be derived as any thing here
2554 	-- The correct value is derived in partial rollup or rollup API's
2555 	-- So code below to get baseline plan and derive earned value, can be removed
2556 
2557 
2558 	/* Begin fix for Bug # 4050324. */
2559         BEGIN
2560                 SELECT
2561 		/*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2562 		nvl(pfxat.prj_base_brdn_cost,0)
2563 		, (nvl(pfxat.base_labor_hours,0)+nvl(pfxat.base_equip_hours,0))
2564                 INTO l_base_planned_cost
2565 		, l_base_planned_effort
2566                 FROM  pji_fm_xbs_accum_tmp1 pfxat
2567                 WHERE pfxat.project_id = p_project_id
2568                 AND pfxat.struct_version_id = p_structure_version_id
2569                 AND pfxat.project_element_id = p_object_id
2570                 AND pfxat.calendar_type = 'A'
2571                 AND pfxat.plan_version_id > 0
2572                 AND pfxat.txn_currency_code is null;
2573         EXCEPTION
2574         WHEN OTHERS THEN
2575                 null;
2576         END;
2577 
2578 	/* End fix for Bug # 4050324. */
2579 
2580 	IF l_element_struc_type = 'WORKPLAN'
2581 	THEN
2582 		IF l_task_weight_basis_code = 'EFFORT'
2583 		THEN
2584 			--bug 3824042, changed trunc to round
2585 			/* Begin fix for Bug # 4050324. */
2586 			l_earned_value := round(NVL(l_percent_complete,nvl(l_base_percent_complete,l_eff_rollup_percent_comp)) * nvl(l_base_planned_effort,0)/100,8); --Bug 6854114
2587 			/* End fix for Bug # 4050324. */
2588 
2589 		ELSE
2590 			--bug 3824042, changed trunc to round
2591 			/* Begin fix for Bug # 4050324. */
2592 			l_earned_value := pa_currency.round_trans_currency_amt(NVL(l_percent_complete,nvl(l_base_percent_complete,l_eff_rollup_percent_comp)) * nvl(l_base_planned_cost,0)/100, l_prj_currency_code);
2593 			/* End fix for Bug # 4050324. */
2594 		END IF;
2595 	END IF;
2596 
2597 
2598 	IF l_task_status2 = 'NOT_STARTED' AND NOT( l_actual_start_date is NULL AND l_actual_finish_date IS NULL) OR
2599 	l_task_status2 = 'IN_PROGRESS' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NULL) OR
2600 	l_task_status2 = 'COMPLETED' AND NOT ( l_actual_start_date is NOT NULL AND l_actual_finish_date IS NOT NULL ) OR
2601 	(l_task_status2 is NULL) OR
2602 	(l_task_status2 = '')
2603 	THEN
2604 		IF NVL( l_lowest_level_task, 'N' ) = 'Y'
2605 		AND l_element_struc_type = 'WORKPLAN'
2606 		AND p_progress_mode <> 'BACKDATED'
2607 		AND l_percent_complete_flag = 'N'
2608 		THEN
2609 		  IF p_pm_product_code = 'MSPROJECT'
2610 		  THEN
2611 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2612 		                         ,p_msg_name       => 'PA_TP_STAT_DTES_PC_COMB_MSP'
2613 		                         ,p_token1 => 'TASK_NAME'
2614 		                         ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
2615 		                         ,p_token2 => 'TASK_NUMBER'
2616 		                         ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
2617 		    x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2618 		    x_return_status := 'E';
2619 		    RAISE  FND_API.G_EXC_ERROR;
2620 		  ELSE
2621 		    PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
2622 		                         ,p_msg_name       => 'PA_TP_STAT_DTES_PC_COMB_AMG'
2623 		                         ,p_token1 => 'TASK_ID'
2624 		                         ,p_value1 => l_task_id
2625 		                        );
2626 		    x_msg_data := 'PA_TP_STAT_DTES_PC_COMB';
2627 		    x_return_status := 'E';
2628 		    RAISE  FND_API.G_EXC_ERROR;
2629 		  END IF;
2630 		END IF;
2631 	END IF;
2632 
2633 	-- Bug 3951531 End
2634 
2635 
2636 	IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2637 		x_return_status := 'E';
2638 		x_msg_data      := l_msg_data;
2639 		x_msg_count     := l_msg_count;
2640 		RAISE  FND_API.G_EXC_ERROR;
2641 	END IF;
2642 
2643 	IF ( p_action = 'PUBLISH' or NVL( l_rollup_required, 'N') = 'Y' )
2644 	THEN
2645 		l_published_flag        := 'Y';
2646 		----
2647 		l_rollup_progress_status := p_progress_status_code;
2648 		l_rollup_completed_percentage := l_percent_complete;
2649 
2650 		--bug 3879461 --maansari
2651 		OPEN check_prog_after_aod;
2652 		FETCH check_prog_after_aod INTO l_prog_exist_after_aod;
2653 		IF check_prog_after_aod%NOTFOUND
2654 		THEN
2655 			l_rollup_current_flag := 'Y'; -- Bug 3879461
2656 		ELSE
2657 			l_rollup_current_flag := 'N';
2658 		END IF;
2659 		CLOSE check_prog_after_aod;
2660 		--bug 3879461 --maansari
2661 		----
2662 		IF  p_progress_mode <> 'BACKDATED' OR
2663 		( p_progress_mode = 'BACKDATED'
2664 		AND p_as_of_date = l_last_progress_date )  --bug 2646965
2665 		THEN
2666 			l_current_flag          := 'Y';
2667 			UPDATE /*+ INDEX(pa_percent_completes PA_PERCENT_COMPLETES_N3)*/ pa_percent_completes --Added hint for 15876400
2668 			SET current_flag = 'N'
2669 			WHERE project_id = p_project_id
2670 			AND object_id = p_object_id
2671 			AND current_flag = 'Y'
2672 			AND object_type = p_object_type
2673 			AND structure_type = p_structure_type; --Satish
2674 
2675 			-- Bug 3879461 Begin
2676 			IF NVL(l_prog_exist_after_aod, 'N') = 'N' THEN
2677 				UPDATE pa_progress_rollup
2678 				SET current_flag = 'N'
2679 				WHERE project_id = p_project_id
2680 				AND object_id = p_object_id
2681 				AND proj_element_id = p_object_id
2682 				AND current_flag = 'Y'
2683 				AND object_type = p_object_type
2684 				AND structure_type = p_structure_type
2685 				AND structure_version_id is null
2686 				;
2687 			ELSE
2688 				null;
2689 				--l_current_flag  := 'N'; : Commented this , PPC current_flag and PPR current_flag may not be in sync
2690 			END IF;
2691 			-- Bug 3879461 End
2692 		ELSE
2693 			l_current_flag          := 'N';
2694 			l_rollup_current_flag := 'N'; -- Bug 3879461
2695 		END IF;
2696 
2697 		-- Bug 3879461 Begin
2698 		-- Delete the published progress record on the same as of date
2699 		--bug 4247839, removed the l_db_Action check as it should get deleted for CREATE also
2700 		--IF l_db_action = 'UPDATE' AND p_progress_mode <> 'BACKDATED' THEN
2701 		IF p_progress_mode <> 'BACKDATED' THEN
2702 
2703 			Delete from pa_progress_rollup
2704 			where project_id = p_project_id
2705 			and object_id = p_object_id
2706 			and proj_element_id = p_object_id
2707 			and object_type = p_object_type
2708 			and structure_version_id is null
2709 			and structure_type = 'WORKPLAN'
2710 			and current_flag = 'W'
2711 			and trunc(as_of_date) = trunc(p_as_of_date);
2712 		END IF;
2713 		-- Bug 3879461 End
2714 	ELSE
2715 		l_rollup_progress_status := null;
2716 		l_rollup_completed_percentage := null;
2717 		l_published_flag := 'N';
2718 		l_current_flag := 'N';
2719 		l_rollup_current_flag := 'W'; -- Bug 3879461
2720 	END IF;
2721 
2722 	-- Bug 4506461 Begin
2723 	-- It is only structure level records we need to set base percent complete here
2724 	-- for tasks record, it will be taken care in Rollup and partial rollup API
2725 	-- 4651069 : It should be executed even for tasks too
2726 	--IF p_object_type = 'PA_STRUCTURES' THEN
2727 
2728 	-- Bug 4683406 : Adding condition so that if this task is deliverable or work quantity based
2729 	-- then base % complete is same as Physical % complete
2730 	IF l_base_percent_comp_deriv_code in( 'EFFORT','COST') THEN
2731 		OPEN c_get_any_childs_have_subprj(p_object_version_id);
2732 		FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
2733 		CLOSE c_get_any_childs_have_subprj;
2734 	END IF;
2735 	--END IF;
2736 	-- Bug 4506461 End
2737 
2738 	IF l_db_action = 'CREATE'
2739 	THEN
2740 		IF g1_debug_mode  = 'Y' THEN
2741 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Create', x_Log_Level=> 3);
2742 		END IF;
2743 
2744 		--bug 4185364
2745 		/*IF p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2746 		  OR (p_progress_mode = 'BACKDATED' AND l_process = 'CORRECT')
2747 		THEN
2748 		   l_percent_complete_id := null;
2749 		ELSE
2750 		   l_percent_complete_id := p_percent_complete_id;
2751 		END IF;*/
2752 
2753 		l_percent_complete_id := null;
2754 		l_att_pc_id := p_percent_complete_id;
2755 		--Create record in PPC
2756 
2757 		PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
2758 			p_task_id			=> l_task_id
2759 			,p_date_computed		=> p_as_of_date
2760 			,p_last_update_date		=> sysdate
2761 			,p_last_updated_by		=> l_user_id
2762 			,p_creation_date		=> sysdate
2763 			,p_created_by			=> l_user_id
2764 			,p_last_update_login		=> l_login_id
2765 			,p_completed_percentage		=> l_percent_complete
2766 			,p_description			=> p_brief_overview
2767 			,p_project_id			=> p_project_id
2768 			,p_pm_product_code		=> l_pm_product_code
2769 			,p_current_flag			=> l_current_flag
2770 			,p_object_type			=> p_object_type
2771 			,p_object_id			=> p_object_id
2772 			,p_object_version_id		=> p_object_version_id
2773 			,p_progress_status_code		=> p_progress_status_code
2774 			,p_actual_start_date		=> l_actual_start_date
2775 			,p_actual_finish_date		=> l_actual_finish_date
2776 			,p_estimated_start_date		=> p_estimated_start_date
2777 			,p_estimated_finish_date	=> p_estimated_finish_date
2778 			,p_published_flag		=> l_published_flag
2779 			,p_published_by_party_id	=> l_published_by_party_id
2780 			,p_progress_comment		=> p_progress_comment
2781 			,p_history_flag			=> 'N'
2782 			,p_status_code			=> l_task_status
2783 			,x_percent_complete_id		=> l_percent_complete_id
2784 			,p_attribute_category           => null
2785 			,p_attribute1                   => null
2786 			,p_attribute2                   => null
2787 			,p_attribute3                   => null
2788 			,p_attribute4                   => null
2789 			,p_attribute5                   => null
2790 			,p_attribute6                   => null
2791 			,p_attribute7                   => null
2792 			,p_attribute8                   => null
2793 			,p_attribute9                   => null
2794 			,p_attribute10                  => null
2795 			,p_attribute11                  => null
2796 			,p_attribute12                  => null
2797 			,p_attribute13                  => null
2798 			,p_attribute14                  => null
2799 			,p_attribute15                  => null
2800 			,p_structure_type               => p_structure_type
2801 			);
2802 
2803 		l_progress_rollup_id := null;
2804 		--Create record in progress rollup
2805 
2806 		--check whether there already exists progress record for this task.
2807 		l_progress_rollup_id := PA_PROGRESS_UTILS.get_prog_rollup_id(
2808 				p_project_id   => p_project_id
2809 				,p_object_id    => p_object_id
2810 				,p_object_type  => p_object_type
2811 				,p_object_version_id => p_object_version_id
2812 				,p_as_of_date   => p_as_of_date
2813 				,p_proj_element_id => p_object_id -- Bug 3764224
2814 				,p_action          => p_action -- Bug 3879461
2815 				,x_record_version_number => l_rollup_rec_ver_number
2816 				);
2817 
2818 		IF g1_debug_mode  = 'Y' THEN
2819 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Create l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
2820 		END IF;
2821 
2822 		IF l_progress_rollup_id IS NULL
2823 		THEN  ----1
2824 			OPEN cur_pa_rollup1;
2825 			FETCH cur_pa_rollup1 INTO l_rollup_rec1;
2826 			CLOSE cur_pa_rollup1;
2827 
2828 			IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
2829 			THEN
2830 				l_eff_rollup_percent_comp       := l_base_percent_complete ;
2831 			ELSE
2832 				l_eff_rollup_percent_comp       := l_rollup_rec1.eff_rollup_percent_comp;
2833 			END IF;
2834 
2835 			IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check  2
2836 			OR p_progress_mode = 'BACKDATED' -- Bug 4091457
2837 			THEN
2838 				IF g1_debug_mode  = 'Y' THEN
2839 					pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => ' LLT', x_Log_Level=> 3);
2840 				END IF;
2841 
2842 				--- l_base_percent_complete         := l_rollup_rec1.base_percent_complete;
2843 				l_eff_rollup_prog_stat_code     := l_rollup_rec1.eff_rollup_prog_stat_code;
2844 				l_base_progress_status_code     := l_rollup_rec1.base_progress_status_code;
2845 
2846 				-- Bug 3796357 Begin
2847 				l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
2848 				l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
2849 				l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
2850 				l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
2851 				l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
2852 				l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
2853 				l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
2854 				l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
2855 				l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
2856 				l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
2857 				l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
2858 				l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
2859 				l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
2860 				l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
2861 				l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
2862 				l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
2863 				l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
2864 				l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
2865 				l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
2866 				l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
2867 				l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
2868 				l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
2869 				l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
2870 				l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
2871 				l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
2872 				l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
2873 				l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
2874 				l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
2875 				l_txn_currency_code := l_rollup_rec1.txn_currency_code;
2876 				l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
2877 				l_oth_etc_quantity  := l_rollup_rec1.oth_etc_quantity;
2878 				l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
2879 				l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
2880 				l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
2881 				l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
2882 				l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
2883 				l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
2884 				l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
2885 				l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
2886 				l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
2887 				l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
2888 				l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
2889 				l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
2890 				l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
2891 				l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
2892 				l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
2893 				l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
2894 				l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
2895 				l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
2896 				-- Bug 3796357 End
2897 			ELSE
2898 				l_eff_rollup_percent_comp       := l_base_percent_complete ; -- null; As per Majid 21 May
2899 				l_eff_rollup_prog_stat_code     := null;
2900 
2901 				--maansari5/21  This is required otherwise redefault base pc api is not returning override pc if rollup.
2902 				IF l_EFF_ROLLUP_PERCENT_COMP = 0
2903 				THEN
2904 					l_EFF_ROLLUP_PERCENT_COMP := null;
2905 				END IF;
2906 
2907 			END IF;  --2
2908 
2909 			l_rollup_completed_percentage := l_percent_complete;   --maansari5/21
2910 
2911 			-- Bug 4506461 Begin
2912 			IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
2913 				l_temp_base_pc := l_rollup_rec1.base_percent_complete;
2914 			ELSE
2915 				l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
2916 			END IF;
2917 			-- Bug 4506461 End
2918 
2919 			IF g1_debug_mode  = 'Y' THEN
2920 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserting in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
2921 			END IF;
2922 
2923 
2924 			PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
2925 			x_progress_rollup_id		=> l_progress_rollup_id
2926 			,x_project_id                   => p_project_id
2927 			,x_object_id                    => p_object_id
2928 			,x_object_type                  => p_object_type
2929 			,x_as_of_date                   => p_as_of_date
2930 			,x_object_version_id            => p_object_version_id
2931 			,x_last_update_date             => sysdate
2932 			,x_last_updated_by              => l_user_id
2933 			,x_creation_date                => sysdate
2934 			,x_created_by                   => l_user_id
2935 			,x_progress_status_code         => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
2936 			,x_last_update_login            => l_login_id
2937 			,x_incremental_work_qty         => l_incremental_work_qty
2938 			,x_cumulative_work_qty          => l_cumulative_work_qty
2939 			--                      ,x_base_percent_complete           => l_base_percent_complete -- 4392189 phase 2
2940 			-- bug 4506461                      ,x_base_percent_complete           => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
2941 			,x_base_percent_complete        => l_temp_base_pc -- 4506461
2942 			,x_eff_rollup_percent_comp      => l_eff_rollup_percent_comp
2943 			,x_completed_percentage         => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
2944 			,x_estimated_start_date         => l_estimated_start_date
2945 			,x_estimated_finish_date        => l_estimated_finish_date
2946 			,x_actual_start_date            => l_actual_start_date
2947 			,x_actual_finish_date           => l_actual_finish_date
2948 			,x_est_remaining_effort         => l_est_remaining_effort
2949 			,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
2950 			,x_base_progress_status_code    => l_date_override_flag -- 4533112 l_base_progress_status_code
2951 			,x_eff_rollup_prog_stat_code    => l_eff_rollup_prog_stat_code
2952 			,x_percent_complete_id          => l_percent_complete_id
2953 			,x_structure_type               => p_structure_type
2954 			,x_proj_element_id              => l_task_id
2955 			,x_structure_version_id         => l_structure_version_id -- null fpm dev cr 3
2956 			,x_ppl_act_effort_to_date	=> l_actual_effort
2957 			,x_eqpmt_act_effort_to_date	=> l_eqpmt_act_effort_to_date -- bug 3796357 null   --since this is a task progress, there wont be eqpmt effort.
2958 			,x_eqpmt_etc_effort             => l_eqpmt_etc_effort -- bug 3796357 null
2959 			,x_oth_act_cost_to_date_tc      => l_oth_act_cost_to_date_tc-- bug 3796357  null   --no transaction is avialbale at task.
2960 			,x_oth_act_cost_to_date_fc      => l_oth_act_cost_to_date_fc-- bug 3796357
2961 			,x_oth_act_cost_to_date_pc      => l_oth_act_cost_to_date_pc-- bug 3796357
2962 			,x_oth_etc_cost_tc              => l_oth_etc_cost_tc -- bug 3796357  --no txn currency at task level.
2963 			,x_oth_etc_cost_fc              => l_oth_etc_cost_fc -- bug 3796357
2964 			,x_oth_etc_cost_pc              => l_oth_etc_cost_pc -- bug 3796357
2965 			,x_ppl_act_cost_to_date_tc	=> l_act_bur_cost_to_date_tc
2966 			,x_ppl_act_cost_to_date_fc	=> l_act_bur_cost_to_date_fc   --3627315 issue 4
2967 			,x_ppl_act_cost_to_date_pc	=> l_act_bur_cost_to_date_pc   --3627315 issue 4
2968 			,x_ppl_etc_cost_tc              => l_etc_bur_cost_tc   --3627315 issue 4
2969 			,x_ppl_etc_cost_fc              => l_etc_bur_cost_fc   --3627315 issue 4
2970 			,x_ppl_etc_cost_pc              => l_etc_bur_cost_pc   --3627315 issue 4
2971 			,x_eqpmt_act_cost_to_date_tc    => l_eqpmt_act_cost_to_date_tc -- bug 3796357   null
2972 			,x_eqpmt_act_cost_to_date_fc    => l_eqpmt_act_cost_to_date_fc -- bug 3796357    null
2973 			,x_eqpmt_act_cost_to_date_pc    => l_eqpmt_act_cost_to_date_pc -- bug 3796357    null
2974 			,x_eqpmt_etc_cost_tc            => l_eqpmt_etc_cost_tc  -- bug 3796357    null
2975 			,x_eqpmt_etc_cost_fc            => l_eqpmt_etc_cost_fc  -- bug 3796357    null
2976 			,x_eqpmt_etc_cost_pc            => l_eqpmt_etc_cost_pc  -- bug 3796357    null
2977 			,x_earned_value                 => l_earned_value
2978 			,x_task_wt_basis_code           => l_task_weight_basis_code
2979 			,x_subprj_ppl_act_effort        => null
2980 			,x_subprj_eqpmt_act_effort      => null
2981 			,x_subprj_ppl_etc_effort        => null
2982 			,x_subprj_eqpmt_etc_effort      => null
2983 			,x_sbpj_oth_act_cost_to_date_tc => null
2984 			,x_sbpj_oth_act_cost_to_date_fc => null
2985 			,x_sbpj_oth_act_cost_to_date_pc => null
2986 			,x_subprj_ppl_act_cost_tc       => null
2987 			,x_subprj_ppl_act_cost_fc       => null
2988 			,x_subprj_ppl_act_cost_pc       => null
2989 			,x_subprj_eqpmt_act_cost_tc     => null
2990 			,x_subprj_eqpmt_act_cost_fc     => null
2991 			,x_subprj_eqpmt_act_cost_pc     => null
2992 			,x_subprj_oth_etc_cost_tc       => null
2993 			,x_subprj_oth_etc_cost_fc       => null
2994 			,x_subprj_oth_etc_cost_pc       => null
2995 			,x_subprj_ppl_etc_cost_tc       => null
2996 			,x_subprj_ppl_etc_cost_fc       => null
2997 			,x_subprj_ppl_etc_cost_pc       => null
2998 			,x_subprj_eqpmt_etc_cost_tc     => null
2999 			,x_subprj_eqpmt_etc_cost_fc     => null
3000 			,x_subprj_eqpmt_etc_cost_pc     => null
3001 			,x_subprj_earned_value          => null
3002 			,x_current_flag                 => l_rollup_current_flag
3003 			,x_projfunc_cost_rate_type      => l_projfunc_cost_rate_type    --3627315 issue 4
3004 			,x_projfunc_cost_exchange_rate  => l_projfunc_cost_exch_rate    --3627315 issue 4
3005 			,x_projfunc_cost_rate_date      => l_projfunc_cost_rate_date    --3627315 issue 4
3006 			,x_proj_cost_rate_type          => l_project_rate_type      --3627315 issue 4
3007 			,x_proj_cost_exchange_rate      => l_project_exch_rate      --3627315 issue 4
3008 			,x_proj_cost_rate_date          => l_project_rate_date      --3627315 issue 4
3009 			,x_txn_currency_code            => l_txn_currency_code      --3627315 issue 4
3010 			,x_prog_pa_period_name          => l_pa_period_name
3011 			,x_prog_gl_period_name          => l_gl_period_name
3012 			,x_oth_quantity_to_date         => l_oth_quantity_to_date -- bug 3796357 null
3013 			,x_oth_etc_quantity             => l_oth_etc_quantity -- bug 3796357null
3014 			,x_oth_act_rawcost_to_date_tc   => l_oth_act_rawcost_to_date_tc-- bug 3796357null
3015 			,x_oth_act_rawcost_to_date_fc   => l_oth_act_rawcost_to_date_fc -- bug 3796357null
3016 			,x_oth_act_rawcost_to_date_pc   => l_oth_act_rawcost_to_date_pc -- bug 3796357null
3017 			,x_oth_etc_rawcost_tc		=> l_oth_etc_rawcost_tc -- bug 3796357 null
3018 			,x_oth_etc_rawcost_fc		=> l_oth_etc_rawcost_fc -- bug 3796357null
3019 			,x_oth_etc_rawcost_pc		=> l_oth_etc_rawcost_pc -- bug 3796357null
3020 			,x_ppl_act_rawcost_to_date_tc   => l_act_raw_cost_to_date_tc --3627315 issue 4
3021 			,x_ppl_act_rawcost_to_date_fc   => l_act_raw_cost_to_date_fc --3627315 issue 4
3022 			,x_ppl_act_rawcost_to_date_pc   => l_act_raw_cost_to_date_pc --3627315 issue 4
3023 			,x_ppl_etc_rawcost_tc		=> l_etc_raw_cost_tc  --3627315 issue 4
3024 			,x_ppl_etc_rawcost_fc		=> l_etc_raw_cost_fc  --3627315 issue 4
3025 			,x_ppl_etc_rawcost_pc		=> l_etc_raw_cost_pc  --3627315 issue 4
3026 			,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
3027 			,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
3028 			,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
3029 			,x_eqpmt_etc_rawcost_tc		=> l_eqpmt_etc_rawcost_tc -- bug 3796357 null
3030 			,x_eqpmt_etc_rawcost_fc		=> l_eqpmt_etc_rawcost_fc -- bug 3796357 null
3031 			,x_eqpmt_etc_rawcost_pc		=> l_eqpmt_etc_rawcost_pc -- bug 3796357 null
3032 			,x_sp_oth_act_rawcost_todate_tc => null
3033 			,x_sp_oth_act_rawcost_todate_fc => null
3034 			,x_sp_oth_act_rawcost_todate_pc => null
3035 			,x_subprj_ppl_act_rawcost_tc    => null
3036 			,x_subprj_ppl_act_rawcost_fc    => null
3037 			,x_subprj_ppl_act_rawcost_pc    => null
3038 			,x_subprj_eqpmt_act_rawcost_tc  => null
3039 			,x_subprj_eqpmt_act_rawcost_fc  => null
3040 			,x_subprj_eqpmt_act_rawcost_pc  => null
3041 			,x_subprj_oth_etc_rawcost_tc    => null
3042 			,x_subprj_oth_etc_rawcost_fc    => null
3043 			,x_subprj_oth_etc_rawcost_pc    => null
3044 			,x_subprj_ppl_etc_rawcost_tc    => null
3045 			,x_subprj_ppl_etc_rawcost_fc    => null
3046 			,x_subprj_ppl_etc_rawcost_pc    => null
3047 			,x_subprj_eqpmt_etc_rawcost_tc  => null
3048 			,x_subprj_eqpmt_etc_rawcost_fc  => null
3049 			,x_subprj_eqpmt_etc_rawcost_pc  => null
3050 			);
3051 
3052 			-- Progress Management Changes. FP-M Bug # 3420093. Begin:Set CURRENT_FLAG of previous rollup records to 'N'.
3053 
3054 			IF g1_debug_mode  = 'Y' THEN
3055 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3056 			END IF;
3057 
3058 		ELSE   --1
3059 			--update progress rollup
3060 
3061 			OPEN cur_pa_rollup2;
3062 			FETCH cur_pa_rollup2 INTO l_rollup_rec2;
3063 			CLOSE cur_pa_rollup2;
3064 
3065 			-- BEGIN: Fix for Bug # 3926827.
3066 			If (NVL( l_lowest_level_task, 'N' ) = 'Y' AND (l_base_percent_comp_deriv_code = 'WQ_DERIVED'))
3067 			THEN
3068 				l_eff_rollup_percent_comp       := l_base_percent_complete ;
3069 			ELSE
3070 				l_eff_rollup_percent_comp := l_rollup_rec2.eff_rollup_percent_comp;
3071 			END IF;
3072 			-- END: Fix for Bug # 3926827.
3073 
3074 			IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3075 			OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3076 			THEN
3077 				---      l_BASE_PERCENT_COMPLETE         := l_rollup_rec2.BASE_PERCENT_COMPLETE;
3078 				l_BASE_PROGRESS_STATUS_CODE     := l_rollup_rec2.BASE_PROGRESS_STATUS_CODE;
3079 				-- Bug 3796357 Begin
3080 				l_actual_effort := l_rollup_rec2.PPL_ACT_EFFORT_TO_DATE;
3081 				l_est_remaining_effort := l_rollup_rec2.ESTIMATED_REMAINING_EFFORT;
3082 				l_act_bur_cost_to_date_tc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_TC;
3083 				l_act_bur_cost_to_date_fc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_FC;
3084 				l_act_bur_cost_to_date_pc := l_rollup_rec2.PPL_ACT_COST_TO_DATE_PC;
3085 				l_etc_bur_cost_tc := l_rollup_rec2.PPL_ETC_COST_TC;
3086 				l_etc_bur_cost_fc := l_rollup_rec2.PPL_ETC_COST_FC;
3087 				l_etc_bur_cost_pc := l_rollup_rec2.PPL_ETC_COST_PC;
3088 				l_projfunc_cost_rate_type := l_rollup_rec2.PROJFUNC_COST_RATE_TYPE;
3089 				l_projfunc_cost_exch_rate := l_rollup_rec2.PROJFUNC_COST_EXCHANGE_RATE;
3090 				l_projfunc_cost_rate_date := l_rollup_rec2.PROJFUNC_COST_RATE_DATE;
3091 				l_project_rate_type := l_rollup_rec2.PROJ_COST_RATE_TYPE;
3092 				l_project_exch_rate := l_rollup_rec2.PROJ_COST_EXCHANGE_RATE;
3093 				l_project_rate_date := l_rollup_rec2.PROJ_COST_RATE_DATE;
3094 				l_txn_currency_code := l_rollup_rec2.TXN_CURRENCY_CODE;
3095 				l_act_raw_cost_to_date_tc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_TC;
3096 				l_act_raw_cost_to_date_fc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_FC;
3097 				l_act_raw_cost_to_date_pc := l_rollup_rec2.PPL_ACT_RAWCOST_TO_DATE_PC;
3098 				l_etc_raw_cost_tc := l_rollup_rec2.PPL_ETC_RAWCOST_TC;
3099 				l_etc_raw_cost_fc := l_rollup_rec2.PPL_ETC_RAWCOST_FC;
3100 				l_etc_raw_cost_pc := l_rollup_rec2.PPL_ETC_RAWCOST_PC;
3101 				-- Bug 3796357 End
3102 			END IF;
3103 
3104 			IF (l_process = 'CORRECT')
3105 			THEN
3106 				l_INCREMENTAL_WORK_QTY          := l_rollup_rec2.INCREMENTAL_WORK_QUANTITY;
3107 				l_CUMULATIVE_WORK_QTY           := l_rollup_rec2.CUMULATIVE_WORK_QUANTITY;
3108 				l_BASE_PERCENT_COMPLETE         := l_rollup_rec2.BASE_PERCENT_COMPLETE;
3109 			END IF;
3110 
3111 			-- BEGIN: Fix for Bug # 3926827.
3112 			-- Bug 4506461 Begin
3113 			IF nvl(l_rederive_base_pc,'N') = 'Y'
3114 			THEN
3115 				l_temp_base_pc := l_rollup_rec2.base_percent_complete;
3116 			ELSE
3117 				l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3118 			END IF;
3119 			-- Bug 4506461 End
3120 
3121 
3122 			PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
3123 			x_progress_rollup_id		=> l_progress_rollup_id
3124 			,x_project_id                   => p_project_id
3125 			,x_object_id                    => p_object_id
3126 			,x_object_type                  => p_object_type
3127 			,x_as_of_date                   => p_as_of_date
3128 			,x_object_version_id            => p_object_version_id
3129 			,x_last_update_date             => sysdate
3130 			,x_last_updated_by              => l_user_id
3131 			,x_progress_status_code         => l_rollup_progress_status
3132 			,x_last_update_login            => l_login_id
3133 			,x_incremental_work_qty         => l_incremental_work_qty
3134 			,x_cumulative_work_qty          => l_cumulative_work_qty
3135 			--                      ,x_base_percent_complete           => l_base_percent_complete -- 4392189 phase 2
3136 			-- bug 4506461                     ,x_base_percent_complete           => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
3137 			,x_base_percent_complete        => l_temp_base_pc -- 4506461
3138 			,x_eff_rollup_percent_comp      => l_eff_rollup_percent_comp
3139 			,x_completed_percentage         => nvl( l_rollup_completed_percentage, l_percent_complete )  --maansari5/21
3140 			,x_estimated_start_date         => l_estimated_start_date
3141 			,x_estimated_finish_date        => l_estimated_finish_date
3142 			,x_actual_start_date            => l_actual_start_date
3143 			,x_actual_finish_date           => l_actual_finish_date
3144 			,x_est_remaining_effort         => l_est_remaining_effort
3145 			,x_record_version_number        => l_rollup_rec_ver_number
3146 			,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3147 			,x_base_progress_status_code    => l_date_override_flag -- 4533112 l_base_progress_status_code
3148 			,x_eff_rollup_prog_stat_code    => l_rollup_rec2.eff_rollup_prog_stat_code
3149 			,x_percent_complete_id          => l_percent_complete_id
3150 			,x_structure_type               => p_structure_type -- l_rollup_rec2.structure_type fpm dev cr 3
3151 			,x_proj_element_id              => p_object_id--l_rollup_rec2.proj_element_id fpm dev cr 3
3152 			,x_structure_version_id         => l_structure_version_id--l_rollup_rec2.structure_version_id fpm dev cr 3
3153 			,x_ppl_act_effort_to_date	=> l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
3154 			,x_eqpmt_act_effort_to_date	=> l_rollup_rec2.eqpmt_act_effort_to_date
3155 			,x_eqpmt_etc_effort             => l_rollup_rec2.eqpmt_etc_effort
3156 			,x_oth_act_cost_to_date_tc      => l_rollup_rec2.oth_act_cost_to_date_tc
3157 			,x_oth_act_cost_to_date_fc      => l_rollup_rec2.oth_act_cost_to_date_fc
3158 			,x_oth_act_cost_to_date_pc      => l_rollup_rec2.oth_act_cost_to_date_pc
3159 			,x_oth_etc_cost_tc              => l_rollup_rec2.oth_etc_cost_tc
3160 			,x_oth_etc_cost_fc              => l_rollup_rec2.oth_etc_cost_fc
3161 			,x_oth_etc_cost_pc              => l_rollup_rec2.oth_etc_cost_pc
3162 			,x_ppl_act_cost_to_date_tc      => l_act_bur_cost_to_date_tc   --3627315 issue 4
3163 			,x_ppl_act_cost_to_date_fc      => l_act_bur_cost_to_date_fc   --3627315 issue 4
3164 			,x_ppl_act_cost_to_date_pc      => l_act_bur_cost_to_date_pc   --3627315 issue 4
3165 			,x_ppl_etc_cost_tc              => l_etc_bur_cost_tc   --3627315 issue 4
3166 			,x_ppl_etc_cost_fc              => l_etc_bur_cost_fc   --3627315 issue 4
3167 			,x_ppl_etc_cost_pc              => l_etc_bur_cost_pc   --3627315 issue 4
3168 			,x_eqpmt_act_cost_to_date_tc    => l_rollup_rec2.eqpmt_act_cost_to_date_tc
3169 			,x_eqpmt_act_cost_to_date_fc    => l_rollup_rec2.eqpmt_act_cost_to_date_fc
3170 			,x_eqpmt_act_cost_to_date_pc    => l_rollup_rec2.eqpmt_act_cost_to_date_pc
3171 			,x_eqpmt_etc_cost_tc            => l_rollup_rec2.eqpmt_etc_cost_tc
3172 			,x_eqpmt_etc_cost_fc            => l_rollup_rec2.eqpmt_etc_cost_fc
3173 			,x_eqpmt_etc_cost_pc            => l_rollup_rec2.eqpmt_etc_cost_pc
3174 			,x_earned_value                 => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
3175 			,x_task_wt_basis_code           => l_rollup_rec2.task_wt_basis_code
3176 			,x_subprj_ppl_act_effort        => l_rollup_rec2.subprj_ppl_act_effort
3177 			,x_subprj_eqpmt_act_effort      => l_rollup_rec2.subprj_eqpmt_act_effort
3178 			,x_subprj_ppl_etc_effort        => l_rollup_rec2.subprj_ppl_etc_effort
3179 			,x_subprj_eqpmt_etc_effort      => l_rollup_rec2.subprj_eqpmt_etc_effort
3180 			,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_TC
3181 			,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_FC
3182 			,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_PC
3183 			,x_subprj_ppl_act_cost_tc       => l_rollup_rec2.subprj_ppl_act_cost_tc
3184 			,x_subprj_ppl_act_cost_fc       => l_rollup_rec2.subprj_ppl_act_cost_fc
3185 			,x_subprj_ppl_act_cost_pc       => l_rollup_rec2.subprj_ppl_act_cost_pc
3186 			,x_subprj_eqpmt_act_cost_tc     => l_rollup_rec2.subprj_eqpmt_act_cost_tc
3187 			,x_subprj_eqpmt_act_cost_fc     => l_rollup_rec2.subprj_eqpmt_act_cost_fc
3188 			,x_subprj_eqpmt_act_cost_pc     => l_rollup_rec2.subprj_eqpmt_act_cost_pc
3189 			,x_subprj_oth_etc_cost_tc       => l_rollup_rec2.subprj_oth_etc_cost_tc
3190 			,x_subprj_oth_etc_cost_fc       => l_rollup_rec2.subprj_oth_etc_cost_fc
3191 			,x_subprj_oth_etc_cost_pc       => l_rollup_rec2.subprj_oth_etc_cost_pc
3192 			,x_subprj_ppl_etc_cost_tc       => l_rollup_rec2.subprj_ppl_etc_cost_tc
3193 			,x_subprj_ppl_etc_cost_fc       => l_rollup_rec2.subprj_ppl_etc_cost_fc
3194 			,x_subprj_ppl_etc_cost_pc       => l_rollup_rec2.subprj_ppl_etc_cost_pc
3195 			,x_subprj_eqpmt_etc_cost_tc     => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
3196 			,x_subprj_eqpmt_etc_cost_fc     => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
3197 			,x_subprj_eqpmt_etc_cost_pc     => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
3198 			,x_subprj_earned_value          => l_rollup_rec2.subprj_earned_value
3199 			,x_current_flag                 => l_rollup_current_flag  --maansari7/21 --bug 3879461 --maansari
3200 			,x_projfunc_cost_rate_type      => l_projfunc_cost_rate_type    --3627315 issue 4
3201 			,x_projfunc_cost_exchange_rate  => l_projfunc_cost_exch_rate    --3627315 issue 4
3202 			,x_projfunc_cost_rate_date      => l_projfunc_cost_rate_date    --3627315 issue 4
3203 			,x_proj_cost_rate_type          => l_project_rate_type      --3627315 issue 4
3204 			,x_proj_cost_exchange_rate      => l_project_exch_rate      --3627315 issue 4
3205 			,x_proj_cost_rate_date          => l_project_rate_date      --3627315 issue 4
3206 			,x_txn_currency_code            => l_txn_currency_code      --3627315 issue 4
3207 			,x_prog_pa_period_name          => l_rollup_rec2.prog_pa_period_name
3208 			,x_prog_gl_period_name          => l_rollup_rec2.prog_gl_period_name
3209 			,x_oth_quantity_to_date         => l_rollup_rec2.oth_quantity_to_date
3210 			,x_oth_etc_quantity             => l_rollup_rec2.oth_etc_quantity
3211 			,x_oth_act_rawcost_to_date_tc   => l_rollup_rec2.oth_act_rawcost_to_date_tc
3212 			,x_oth_act_rawcost_to_date_fc   => l_rollup_rec2.oth_act_rawcost_to_date_fc
3213 			,x_oth_act_rawcost_to_date_pc   => l_rollup_rec2.oth_act_rawcost_to_date_pc
3214 			,x_oth_etc_rawcost_tc		=> l_rollup_rec2.oth_etc_rawcost_tc
3215 			,x_oth_etc_rawcost_fc		=> l_rollup_rec2.oth_etc_rawcost_fc
3216 			,x_oth_etc_rawcost_pc		=> l_rollup_rec2.oth_etc_rawcost_pc
3217 			,x_ppl_act_rawcost_to_date_tc   => l_act_raw_cost_to_date_tc
3218 			,x_ppl_act_rawcost_to_date_fc   => l_act_raw_cost_to_date_fc
3219 			,x_ppl_act_rawcost_to_date_pc   => l_act_raw_cost_to_date_pc
3220 			,x_ppl_etc_rawcost_tc		=> l_etc_raw_cost_tc
3221 			,x_ppl_etc_rawcost_fc		=> l_etc_raw_cost_tc
3222 			,x_ppl_etc_rawcost_pc		=> l_etc_raw_cost_tc
3223 			,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
3224 			,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
3225 			,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
3226 			,x_eqpmt_etc_rawcost_tc		=> l_rollup_rec2.eqpmt_etc_rawcost_tc
3227 			,x_eqpmt_etc_rawcost_fc		=> l_rollup_rec2.eqpmt_etc_rawcost_fc
3228 			,x_eqpmt_etc_rawcost_pc		=> l_rollup_rec2.eqpmt_etc_rawcost_pc
3229 			,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
3230 			,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
3231 			,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
3232 			,x_subprj_ppl_act_rawcost_tc    => l_rollup_rec2.subprj_ppl_act_rawcost_tc
3233 			,x_subprj_ppl_act_rawcost_fc    => l_rollup_rec2.subprj_ppl_act_rawcost_fc
3234 			,x_subprj_ppl_act_rawcost_pc    => l_rollup_rec2.subprj_ppl_act_rawcost_pc
3235 			,x_subprj_eqpmt_act_rawcost_tc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
3236 			,x_subprj_eqpmt_act_rawcost_fc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
3237 			,x_subprj_eqpmt_act_rawcost_pc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
3238 			,x_subprj_oth_etc_rawcost_tc    => l_rollup_rec2.subprj_oth_etc_rawcost_tc
3239 			,x_subprj_oth_etc_rawcost_fc    => l_rollup_rec2.subprj_oth_etc_rawcost_fc
3240 			,x_subprj_oth_etc_rawcost_pc    => l_rollup_rec2.subprj_oth_etc_rawcost_pc
3241 			,x_subprj_ppl_etc_rawcost_tc    => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
3242 			,x_subprj_ppl_etc_rawcost_fc    => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
3243 			,x_subprj_ppl_etc_rawcost_pc    => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
3244 			,x_subprj_eqpmt_etc_rawcost_tc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
3245 			,x_subprj_eqpmt_etc_rawcost_fc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
3246 			,x_subprj_eqpmt_etc_rawcost_pc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
3247 			);
3248 			-- FPM Dev CR 6
3249 			IF Fnd_Msg_Pub.count_msg > 0 THEN
3250 				RAISE  FND_API.G_EXC_ERROR;
3251 			END IF;
3252 
3253 			-----update percent_complete_id in pa_progress_rollup
3254 			UPDATE pa_progress_rollup
3255 			SET percent_complete_id = l_percent_complete_id
3256 			WHERE object_id = p_object_id
3257 			AND project_id = p_project_id
3258 			AND as_of_date > p_as_of_date
3259 			AND percent_complete_id is null
3260 			AND structure_type = p_structure_type -- FPM Dev CR 3
3261 			AND structure_version_id is null -- Bug 3879461
3262 			AND current_flag <> 'W' -- Bug 3879461
3263 			;
3264 
3265 			---- call api to copy attachments if any
3266 			IF (l_process = 'CORRECT' and p_progress_mode = 'BACKDATED')
3267 			THEN
3268 				pa_progress_utils.copy_attachments (
3269 				      p_project_id     => p_project_id,
3270 				      p_object_id      => p_object_id,
3271 				      p_object_type    => p_object_type,
3272 				      p_from_pc_id     => l_att_pc_id,
3273 				      p_to_pc_id       => l_percent_complete_id,
3274 				      x_return_status  => x_return_status,
3275 				      x_msg_count      => x_msg_count,
3276 				      x_msg_data       => x_msg_data);
3277 			END IF;
3278 		END IF;
3279 	ELSIF l_db_action = 'UPDATE'
3280 	THEN
3281 		IF g1_debug_mode  = 'Y' THEN
3282 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_db_action Update'||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
3283 		END IF;
3284 
3285 		IF  l_working_aod IS NOT NULL
3286 		THEN
3287 		    l_aod := l_working_aod;
3288 		ELSE
3289 		    l_aod := p_as_of_date;
3290 		END IF;
3291 
3292 		IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR l_working_aod IS NULL  --- 4245168
3293 		THEN
3294 			l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
3295 				p_project_id   => p_project_id
3296 				,p_object_id    => p_object_id
3297 				,p_object_type  => p_object_type
3298 				,p_object_version_id => p_object_version_id
3299 				,p_as_of_date   => l_aod
3300 				,p_task_id => p_object_id -- Bug 3764224
3301 				);
3302 			-- FPM Dev CR 3 Getting Record Version Number too
3303 			BEGIN
3304 				SELECT record_version_number into l_record_version_number
3305 				FROM pa_percent_completes
3306 				where percent_complete_id = l_percent_complete_id;
3307 			END;
3308 
3309 			IF g1_debug_mode  = 'Y' THEN
3310 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Percent_complete id is not passed', x_Log_Level=> 3);
3311 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_percent_complete_id='||l_percent_complete_id, x_Log_Level=> 3);
3312 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_record_version_number'||l_record_version_number, x_Log_Level=> 3);
3313 			END IF;
3314 		ELSE
3315 			l_percent_complete_id := p_percent_complete_id;
3316 			l_record_version_number := p_record_version_number;
3317 		END IF;
3318 
3319 		PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
3320 		p_task_id			=> l_task_id
3321 		,p_date_computed		=> p_as_of_date
3322 		,p_last_update_date		=> sysdate
3323 		,p_last_updated_by		=> l_user_id
3324 		,p_last_update_login		=> l_login_id
3325 		,p_completed_percentage		=> l_percent_complete
3326 		,p_description			=> p_brief_overview
3327 		,p_project_id			=> p_project_id
3328 		,p_pm_product_code		=> l_pm_product_code
3329 		,p_current_flag			=> l_current_flag
3330 		,p_object_type			=> p_object_type
3331 		,p_object_id			=> p_object_id
3332 		,p_object_version_id		=> p_object_version_id
3333 		,p_progress_status_code		=> p_progress_status_code
3334 		,p_actual_start_date		=> l_actual_start_date
3335 		,p_actual_finish_date		=> l_actual_finish_date
3336 		,p_estimated_start_date		=> l_estimated_start_date
3337 		,p_estimated_finish_date	=> l_estimated_finish_date
3338 		,p_published_flag		=> l_published_flag
3339 		,p_published_by_party_id	=> l_published_by_party_id
3340 		,p_progress_comment		=> p_progress_comment
3341 		,p_history_flag			=> 'n'
3342 		,p_status_code			=> l_task_status
3343 		,p_record_version_number	=> l_record_version_number
3344 		,p_percent_complete_id		=> l_percent_complete_id
3345 		,p_attribute_category           => null
3346 		,p_attribute1                   => null
3347 		,p_attribute2                   => null
3348 		,p_attribute3                   => null
3349 		,p_attribute4                   => null
3350 		,p_attribute5                   => null
3351 		,p_attribute6                   => null
3352 		,p_attribute7                   => null
3353 		,p_attribute8                   => null
3354 		,p_attribute9                   => null
3355 		,p_attribute10                  => null
3356 		,p_attribute11                  => null
3357 		,p_attribute12                  => null
3358 		,p_attribute13                  => null
3359 		,p_attribute14                  => null
3360 		,p_attribute15                  => null
3361 		,p_structure_type               => p_structure_type
3362 		);
3363                 -- FPM Dev CR 6
3364                 IF Fnd_Msg_Pub.count_msg > 0 THEN
3365                         RAISE  FND_API.G_EXC_ERROR;
3366                 END IF;
3367 
3368 
3369 		--update progress rollup
3370 		l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
3371 			p_project_id   => p_project_id
3372 			,p_object_id    => p_object_id
3373 			,p_object_type  => p_object_type
3374 			,p_object_version_id => p_object_version_id
3375 			,p_as_of_date   => l_aod--p_as_of_date FPM Dev CR 3
3376 			,p_proj_element_id => p_object_id -- Bug 3764224
3377 			,p_action          => p_action -- Bug 3879461
3378 			,x_record_version_number => l_rollup_rec_ver_number
3379 			);
3380 
3381 
3382 		IF g1_debug_mode  = 'Y' THEN
3383 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
3384 		END IF;
3385 
3386 		--maansari5/21
3387 		OPEN cur_pa_rollup2;
3388 		FETCH cur_pa_rollup2 INTO l_rollup_rec2;
3389 		CLOSE cur_pa_rollup2;
3390 
3391 		-- BEGIN: Fix for Bug # 3926827.
3392 
3393 		IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3394 		THEN
3395 			l_eff_rollup_percent_comp       := l_base_percent_complete ;
3396 		ELSE
3397 			l_eff_rollup_percent_comp       := l_rollup_rec2.eff_rollup_percent_comp;
3398 		END IF;
3399 
3400 		-- END: Fix for Bug # 3926827.
3401 
3402 		IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3403 		OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3404 		THEN
3405 			---    l_base_percent_complete         := l_rollup_rec2.base_percent_complete;
3406 			-- bug 3796357 begin
3407 			l_actual_effort := l_rollup_rec2.ppl_act_effort_to_date;
3408 			l_est_remaining_effort := l_rollup_rec2.estimated_remaining_effort;
3409 			l_act_bur_cost_to_date_tc := l_rollup_rec2.ppl_act_cost_to_date_tc;
3410 			l_act_bur_cost_to_date_fc := l_rollup_rec2.ppl_act_cost_to_date_fc;
3411 			l_act_bur_cost_to_date_pc := l_rollup_rec2.ppl_act_cost_to_date_pc;
3412 			l_etc_bur_cost_tc := l_rollup_rec2.ppl_etc_cost_tc;
3413 			l_etc_bur_cost_fc := l_rollup_rec2.ppl_etc_cost_fc;
3414 			l_etc_bur_cost_pc := l_rollup_rec2.ppl_etc_cost_pc;
3415 			l_projfunc_cost_rate_type := l_rollup_rec2.projfunc_cost_rate_type;
3416 			l_projfunc_cost_exch_rate := l_rollup_rec2.projfunc_cost_exchange_rate;
3417 			l_projfunc_cost_rate_date := l_rollup_rec2.projfunc_cost_rate_date;
3418 			l_project_rate_type := l_rollup_rec2.proj_cost_rate_type;
3419 			l_project_exch_rate := l_rollup_rec2.proj_cost_exchange_rate;
3420 			l_project_rate_date := l_rollup_rec2.proj_cost_rate_date;
3421 			l_txn_currency_code := l_rollup_rec2.txn_currency_code;
3422 			l_act_raw_cost_to_date_tc := l_rollup_rec2.ppl_act_rawcost_to_date_tc;
3423 			l_act_raw_cost_to_date_fc := l_rollup_rec2.ppl_act_rawcost_to_date_fc;
3424 			l_act_raw_cost_to_date_pc := l_rollup_rec2.ppl_act_rawcost_to_date_pc;
3425 			l_etc_raw_cost_tc := l_rollup_rec2.ppl_etc_rawcost_tc;
3426 			l_etc_raw_cost_fc := l_rollup_rec2.ppl_etc_rawcost_fc;
3427 			l_etc_raw_cost_pc := l_rollup_rec2.ppl_etc_rawcost_pc;
3428 			-- Bug 3796357 End
3429 
3430 		ELSE
3431 			l_EFF_ROLLUP_PERCENT_COMP       := l_BASE_PERCENT_COMPLETE;
3432 		END IF;
3433 
3434 		IF l_PROGRESS_ROLLUP_ID IS NOT NULL
3435 		THEN  ---2
3436 			--maansari5/21
3437 			-- Bug 4506461 Begin
3438 			IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3439 				l_temp_base_pc := l_rollup_rec2.base_percent_complete;
3440 			ELSE
3441 				l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3442 			END IF;
3443 			-- Bug 4506461 End
3444 
3445 			IF g1_debug_mode  = 'Y' THEN
3446 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updating PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3447 			END IF;
3448 
3449 			pa_progress_rollup_pkg.update_row(
3450 			x_progress_rollup_id		=> l_progress_rollup_id
3451 			,x_project_id                   => p_project_id
3452 			,x_object_id                    => p_object_id
3453 			,x_object_type                  => p_object_type
3454 			,x_as_of_date                   => p_as_of_date
3455 			,x_object_version_id            => p_object_version_id
3456 			,x_last_update_date             => sysdate
3457 			,x_last_updated_by              => l_user_id
3458 			,x_progress_status_code         => l_rollup_progress_status
3459 			,x_last_update_login            => l_login_id
3460 			,x_incremental_work_qty         => l_incremental_work_qty
3461 			,x_cumulative_work_qty          => l_cumulative_work_qty
3462 			--                      ,x_base_percent_complete           => l_base_percent_complete -- 4392189 phase 2
3463 			--bug 4506461                      ,x_base_percent_complete           => nvl(l_rollup_rec2.base_percent_complete, l_eff_rollup_percent_comp)
3464 			,x_base_percent_complete        => l_temp_base_pc -- 4506461
3465 			,x_eff_rollup_percent_comp      => l_eff_rollup_percent_comp  --maansari5/21
3466 			,x_completed_percentage         =>  nvl( l_rollup_completed_percentage, l_percent_complete ) --maansari5/21
3467 			,x_estimated_start_date         => l_estimated_start_date
3468 			,x_estimated_finish_date        => l_estimated_finish_date
3469 			,x_actual_start_date            => l_actual_start_date
3470 			,x_actual_finish_date           => l_actual_finish_date
3471 			,x_est_remaining_effort         => l_est_remaining_effort
3472 			,x_record_version_number        => l_rollup_rec_ver_number
3473 			,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3474 			,x_base_progress_status_code    => l_date_override_flag -- 4533112 l_base_progress_status_code
3475 			,x_eff_rollup_prog_stat_code    => l_rollup_rec2.eff_rollup_prog_stat_code
3476 			,x_percent_complete_id          => l_percent_complete_id
3477 			,x_structure_type               => p_structure_type -- l_rollup_rec2.structure_type  fpm dev cr 3
3478 			,x_proj_element_id              => l_rollup_rec2.proj_element_id
3479 			,x_structure_version_id         => l_structure_version_id -- l_rollup_rec2.structure_version_id  fpm dev cr 3
3480 			,x_ppl_act_effort_to_date	=> l_actual_effort -- bug 3796357 l_rollup_rec2.ppl_act_effort_to_date
3481 			,x_eqpmt_act_effort_to_date	=> l_rollup_rec2.eqpmt_act_effort_to_date
3482 			,x_eqpmt_etc_effort             => l_rollup_rec2.eqpmt_etc_effort
3483 			,x_oth_act_cost_to_date_tc      => l_rollup_rec2.oth_act_cost_to_date_tc
3484 			,x_oth_act_cost_to_date_fc      => l_rollup_rec2.oth_act_cost_to_date_fc
3485 			,x_oth_act_cost_to_date_pc      => l_rollup_rec2.oth_act_cost_to_date_pc
3486 			,x_oth_etc_cost_tc              => l_rollup_rec2.oth_etc_cost_tc
3487 			,x_oth_etc_cost_fc              => l_rollup_rec2.oth_etc_cost_fc
3488 			,x_oth_etc_cost_pc              => l_rollup_rec2.oth_etc_cost_pc
3489 			,x_ppl_act_cost_to_date_tc      => l_act_bur_cost_to_date_tc
3490 			,x_ppl_act_cost_to_date_fc      => l_act_bur_cost_to_date_fc
3491 			,x_ppl_act_cost_to_date_pc      => l_act_bur_cost_to_date_pc
3492 			,x_ppl_etc_cost_tc              => l_etc_bur_cost_tc
3493 			,x_ppl_etc_cost_fc              => l_etc_bur_cost_fc
3494 			,x_ppl_etc_cost_pc              => l_etc_bur_cost_pc
3495 			,x_eqpmt_act_cost_to_date_tc    => l_rollup_rec2.eqpmt_act_cost_to_date_tc
3496 			,x_eqpmt_act_cost_to_date_fc    => l_rollup_rec2.eqpmt_act_cost_to_date_fc
3497 			,x_eqpmt_act_cost_to_date_pc    => l_rollup_rec2.eqpmt_act_cost_to_date_pc
3498 			,x_eqpmt_etc_cost_tc            => l_rollup_rec2.eqpmt_etc_cost_tc
3499 			,x_eqpmt_etc_cost_fc            => l_rollup_rec2.eqpmt_etc_cost_fc
3500 			,x_eqpmt_etc_cost_pc            => l_rollup_rec2.eqpmt_etc_cost_pc
3501 			,x_earned_value                 => l_earned_value -- l_rollup_rec2.earned_value -- fix for bug # 3957607.
3502 			,x_task_wt_basis_code           => l_rollup_rec2.task_wt_basis_code
3503 			,x_subprj_ppl_act_effort        => l_rollup_rec2.subprj_ppl_act_effort
3504 			,x_subprj_eqpmt_act_effort      => l_rollup_rec2.subprj_eqpmt_act_effort
3505 			,x_subprj_ppl_etc_effort        => l_rollup_rec2.subprj_ppl_etc_effort
3506 			,x_subprj_eqpmt_etc_effort      => l_rollup_rec2.subprj_eqpmt_etc_effort
3507 			,x_sbpj_oth_act_cost_to_date_tc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_TC
3508 			,x_sbpj_oth_act_cost_to_date_fc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_FC
3509 			,x_sbpj_oth_act_cost_to_date_pc => l_rollup_rec2.SUBPRJ_OTH_ACT_COST_TO_DT_PC
3510 			,x_subprj_ppl_act_cost_tc       => l_rollup_rec2.subprj_ppl_act_cost_tc
3511 			,x_subprj_ppl_act_cost_fc       => l_rollup_rec2.subprj_ppl_act_cost_fc
3512 			,x_subprj_ppl_act_cost_pc       => l_rollup_rec2.subprj_ppl_act_cost_pc
3513 			,x_subprj_eqpmt_act_cost_tc     => l_rollup_rec2.subprj_eqpmt_act_cost_tc
3514 			,x_subprj_eqpmt_act_cost_fc     => l_rollup_rec2.subprj_eqpmt_act_cost_fc
3515 			,x_subprj_eqpmt_act_cost_pc     => l_rollup_rec2.subprj_eqpmt_act_cost_pc
3516 			,x_subprj_oth_etc_cost_tc       => l_rollup_rec2.subprj_oth_etc_cost_tc
3517 			,x_subprj_oth_etc_cost_fc       => l_rollup_rec2.subprj_oth_etc_cost_fc
3518 			,x_subprj_oth_etc_cost_pc       => l_rollup_rec2.subprj_oth_etc_cost_pc
3519 			,x_subprj_ppl_etc_cost_tc       => l_rollup_rec2.subprj_ppl_etc_cost_tc
3520 			,x_subprj_ppl_etc_cost_fc       => l_rollup_rec2.subprj_ppl_etc_cost_fc
3521 			,x_subprj_ppl_etc_cost_pc       => l_rollup_rec2.subprj_ppl_etc_cost_pc
3522 			,x_subprj_eqpmt_etc_cost_tc     => l_rollup_rec2.subprj_eqpmt_etc_cost_tc
3523 			,x_subprj_eqpmt_etc_cost_fc     => l_rollup_rec2.subprj_eqpmt_etc_cost_fc
3524 			,x_subprj_eqpmt_etc_cost_pc     => l_rollup_rec2.subprj_eqpmt_etc_cost_pc
3525 			,x_subprj_earned_value          => l_rollup_rec2.subprj_earned_value
3526 			,x_current_flag                 => l_rollup_current_flag -- bug 3879461 l_current_flag   --maansari7/21
3527 			,x_projfunc_cost_rate_type      => l_projfunc_cost_rate_type  --3627315 issue 4
3528 			,x_projfunc_cost_exchange_rate  => l_projfunc_cost_exch_rate    --3627315 issue 4
3529 			,x_projfunc_cost_rate_date      => l_projfunc_cost_rate_date    --3627315 issue 4
3530 			,x_proj_cost_rate_type          => l_project_rate_type      --3627315 issue 4
3531 			,x_proj_cost_exchange_rate      => l_project_exch_rate      --3627315 issue 4
3532 			,x_proj_cost_rate_date          => l_project_rate_date      --3627315 issue 4
3533 			,x_txn_currency_code            => l_txn_currency_code      --3627315 issue 4
3534 			,x_prog_pa_period_name          => l_pa_period_name
3535 			,x_prog_gl_period_name          => l_gl_period_name
3536 			,x_oth_quantity_to_date         => l_rollup_rec2.oth_quantity_to_date
3537 			,x_oth_etc_quantity             => l_rollup_rec2.oth_etc_quantity
3538 			,x_oth_act_rawcost_to_date_tc   => l_rollup_rec2.oth_act_rawcost_to_date_tc
3539 			,x_oth_act_rawcost_to_date_fc   => l_rollup_rec2.oth_act_rawcost_to_date_fc
3540 			,x_oth_act_rawcost_to_date_pc   => l_rollup_rec2.oth_act_rawcost_to_date_pc
3541 			,x_oth_etc_rawcost_tc		=> l_rollup_rec2.oth_etc_rawcost_tc
3542 			,x_oth_etc_rawcost_fc		=> l_rollup_rec2.oth_etc_rawcost_fc
3543 			,x_oth_etc_rawcost_pc		=> l_rollup_rec2.oth_etc_rawcost_pc
3544 			,x_ppl_act_rawcost_to_date_tc   => l_act_raw_cost_to_date_tc --3627315 issue 4
3545 			,x_ppl_act_rawcost_to_date_fc   => l_act_raw_cost_to_date_fc --3627315 issue 4
3546 			,x_ppl_act_rawcost_to_date_pc   => l_act_raw_cost_to_date_pc --3627315 issue 4
3547 			,x_ppl_etc_rawcost_tc		=> l_etc_raw_cost_tc  --3627315 issue 4
3548 			,x_ppl_etc_rawcost_fc		=> l_etc_raw_cost_fc  --3627315 issue 4
3549 			,x_ppl_etc_rawcost_pc		=> l_etc_raw_cost_pc  --3627315 issue 4
3550 			,x_eqpmt_act_rawcost_to_date_tc => l_rollup_rec2.eqpmt_act_rawcost_to_date_tc
3551 			,x_eqpmt_act_rawcost_to_date_fc => l_rollup_rec2.eqpmt_act_rawcost_to_date_fc
3552 			,x_eqpmt_act_rawcost_to_date_pc => l_rollup_rec2.eqpmt_act_rawcost_to_date_pc
3553 			,x_eqpmt_etc_rawcost_tc		=> l_rollup_rec2.eqpmt_etc_rawcost_tc
3554 			,x_eqpmt_etc_rawcost_fc		=> l_rollup_rec2.eqpmt_etc_rawcost_fc
3555 			,x_eqpmt_etc_rawcost_pc		=> l_rollup_rec2.eqpmt_etc_rawcost_pc
3556 			,x_sp_oth_act_rawcost_todate_tc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
3557 			,x_sp_oth_act_rawcost_todate_fc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
3558 			,x_sp_oth_act_rawcost_todate_pc => l_rollup_rec2.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
3559 			,x_subprj_ppl_act_rawcost_tc    => l_rollup_rec2.subprj_ppl_act_rawcost_tc
3560 			,x_subprj_ppl_act_rawcost_fc    => l_rollup_rec2.subprj_ppl_act_rawcost_fc
3561 			,x_subprj_ppl_act_rawcost_pc    => l_rollup_rec2.subprj_ppl_act_rawcost_pc
3562 			,x_subprj_eqpmt_act_rawcost_tc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_tc
3563 			,x_subprj_eqpmt_act_rawcost_fc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_fc
3564 			,x_subprj_eqpmt_act_rawcost_pc  => l_rollup_rec2.subprj_eqpmt_act_rawcost_pc
3565 			,x_subprj_oth_etc_rawcost_tc    => l_rollup_rec2.subprj_oth_etc_rawcost_tc
3566 			,x_subprj_oth_etc_rawcost_fc    => l_rollup_rec2.subprj_oth_etc_rawcost_fc
3567 			,x_subprj_oth_etc_rawcost_pc    => l_rollup_rec2.subprj_oth_etc_rawcost_pc
3568 			,x_subprj_ppl_etc_rawcost_tc    => l_rollup_rec2.subprj_ppl_etc_rawcost_tc
3569 			,x_subprj_ppl_etc_rawcost_fc    => l_rollup_rec2.subprj_ppl_etc_rawcost_fc
3570 			,x_subprj_ppl_etc_rawcost_pc    => l_rollup_rec2.subprj_ppl_etc_rawcost_pc
3571 			,x_subprj_eqpmt_etc_rawcost_tc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_tc
3572 			,x_subprj_eqpmt_etc_rawcost_fc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_fc
3573 			,x_subprj_eqpmt_etc_rawcost_pc  => l_rollup_rec2.subprj_eqpmt_etc_rawcost_pc
3574 			);
3575 
3576 			IF g1_debug_mode  = 'Y' THEN
3577 				pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Action: Updated PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
3578 			END IF;
3579 
3580 			-- FPM Dev CR 6
3581 			IF Fnd_Msg_Pub.count_msg > 0 THEN
3582 				RAISE  FND_API.G_EXC_ERROR;
3583 			END IF;
3584 		ELSE  ---2
3585 
3586 			-- BEGIN: Fix for Bug # 3926827.
3587 
3588 			OPEN cur_pa_rollup1;
3589 			FETCH cur_pa_rollup1 INTO l_rollup_rec1;
3590 			CLOSE cur_pa_rollup1;
3591 
3592 			IF (NVL( l_lowest_level_task, 'N' ) = 'Y' and (l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'))
3593 			THEN
3594 				l_EFF_ROLLUP_PERCENT_COMP       := l_BASE_PERCENT_COMPLETE ;
3595 			ELSE
3596 				l_EFF_ROLLUP_PERCENT_COMP       := l_rollup_rec1.EFF_ROLLUP_PERCENT_COMP;
3597 			END IF;
3598 
3599 			-- END: Fix for Bug # 3926827.
3600 
3601 			IF NVL( l_lowest_level_task, 'N' ) = 'N' OR NVL(l_assignment_exists, 'N') = 'Y' -- Bug 3796357 : Added l_assignment_exists check
3602 			OR p_progress_mode = 'BACKDATED' -- Bug 4091457
3603 			THEN
3604 
3605 				---    l_base_percent_complete         := l_rollup_rec1.base_percent_complete;
3606 				l_eff_rollup_prog_stat_code     := l_rollup_rec1.eff_rollup_prog_stat_code;
3607 				l_base_progress_status_code     := l_rollup_rec1.base_progress_status_code;
3608 
3609 				-- bug 3796357 begin
3610 				l_actual_effort := l_rollup_rec1.ppl_act_effort_to_date;
3611 				l_est_remaining_effort := l_rollup_rec1.estimated_remaining_effort;
3612 				l_eqpmt_act_effort_to_date := l_rollup_rec1.eqpmt_act_effort_to_date;
3613 				l_eqpmt_etc_effort := l_rollup_rec1.eqpmt_etc_effort;
3614 				l_oth_act_cost_to_date_tc := l_rollup_rec1.oth_act_cost_to_date_tc;
3615 				l_oth_act_cost_to_date_fc := l_rollup_rec1.oth_act_cost_to_date_fc;
3616 				l_oth_act_cost_to_date_pc := l_rollup_rec1.oth_act_cost_to_date_pc;
3617 				l_oth_etc_cost_tc := l_rollup_rec1.oth_etc_cost_tc;
3618 				l_oth_etc_cost_fc := l_rollup_rec1.oth_etc_cost_fc;
3619 				l_oth_etc_cost_pc := l_rollup_rec1.oth_etc_cost_pc;
3620 				l_act_bur_cost_to_date_tc := l_rollup_rec1.ppl_act_cost_to_date_tc;
3621 				l_act_bur_cost_to_date_fc := l_rollup_rec1.ppl_act_cost_to_date_fc;
3622 				l_act_bur_cost_to_date_pc := l_rollup_rec1.ppl_act_cost_to_date_pc;
3623 				l_etc_bur_cost_tc := l_rollup_rec1.ppl_etc_cost_tc;
3624 				l_etc_bur_cost_fc := l_rollup_rec1.ppl_etc_cost_fc;
3625 				l_etc_bur_cost_pc := l_rollup_rec1.ppl_etc_cost_pc;
3626 				l_eqpmt_act_cost_to_date_tc := l_rollup_rec1.eqpmt_act_cost_to_date_tc;
3627 				l_eqpmt_act_cost_to_date_fc := l_rollup_rec1.eqpmt_act_cost_to_date_fc;
3628 				l_eqpmt_act_cost_to_date_pc := l_rollup_rec1.eqpmt_act_cost_to_date_pc;
3629 				l_eqpmt_etc_cost_tc := l_rollup_rec1.eqpmt_etc_cost_tc;
3630 				l_eqpmt_etc_cost_fc := l_rollup_rec1.eqpmt_etc_cost_fc;
3631 				l_eqpmt_etc_cost_pc := l_rollup_rec1.eqpmt_etc_cost_pc;
3632 				l_projfunc_cost_rate_type := l_rollup_rec1.projfunc_cost_rate_type;
3633 				l_projfunc_cost_exch_rate := l_rollup_rec1.projfunc_cost_exchange_rate;
3634 				l_projfunc_cost_rate_date := l_rollup_rec1.projfunc_cost_rate_date;
3635 				l_project_rate_type := l_rollup_rec1.proj_cost_rate_type;
3636 				l_project_exch_rate := l_rollup_rec1.proj_cost_exchange_rate;
3637 				l_project_rate_date := l_rollup_rec1.proj_cost_rate_date;
3638 				l_txn_currency_code := l_rollup_rec1.txn_currency_code;
3639 				l_oth_quantity_to_date := l_rollup_rec1.oth_quantity_to_date;
3640 				l_oth_etc_quantity  := l_rollup_rec1.oth_etc_quantity;
3641 				l_oth_act_rawcost_to_date_tc := l_rollup_rec1.oth_act_rawcost_to_date_tc;
3642 				l_oth_act_rawcost_to_date_fc := l_rollup_rec1.oth_act_rawcost_to_date_fc;
3643 				l_oth_act_rawcost_to_date_pc := l_rollup_rec1.oth_act_rawcost_to_date_pc;
3644 				l_oth_etc_rawcost_tc := l_rollup_rec1.oth_etc_rawcost_tc;
3645 				l_oth_etc_rawcost_fc := l_rollup_rec1.oth_etc_rawcost_fc;
3646 				l_oth_etc_rawcost_pc := l_rollup_rec1.oth_etc_rawcost_pc;
3647 				l_act_raw_cost_to_date_tc := l_rollup_rec1.ppl_act_rawcost_to_date_tc;
3648 				l_act_raw_cost_to_date_fc := l_rollup_rec1.ppl_act_rawcost_to_date_fc;
3649 				l_act_raw_cost_to_date_pc := l_rollup_rec1.ppl_act_rawcost_to_date_pc;
3650 				l_etc_raw_cost_tc := l_rollup_rec1.ppl_etc_rawcost_tc;
3651 				l_etc_raw_cost_fc := l_rollup_rec1.ppl_etc_rawcost_fc;
3652 				l_etc_raw_cost_pc := l_rollup_rec1.ppl_etc_rawcost_pc;
3653 				l_eqpmt_act_rawcost_to_date_tc := l_rollup_rec1.eqpmt_act_rawcost_to_date_tc;
3654 				l_eqpmt_act_rawcost_to_date_fc := l_rollup_rec1.eqpmt_act_rawcost_to_date_fc;
3655 				l_eqpmt_act_rawcost_to_date_pc := l_rollup_rec1.eqpmt_act_rawcost_to_date_pc;
3656 				l_eqpmt_etc_rawcost_tc := l_rollup_rec1.eqpmt_etc_rawcost_tc;
3657 				l_eqpmt_etc_rawcost_fc := l_rollup_rec1.eqpmt_etc_rawcost_fc;
3658 				l_eqpmt_etc_rawcost_pc := l_rollup_rec1.eqpmt_etc_rawcost_pc;
3659 				-- bug 3796357 end
3660 			ELSE
3661 				l_eff_rollup_percent_comp       := l_base_percent_complete ; -- null; as per majid 21 may
3662 				l_eff_rollup_prog_stat_code     := null;
3663 			END IF;
3664 
3665 			-- Bug 4506461 Begin
3666 			IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3667 				l_temp_base_pc := l_rollup_rec1.base_percent_complete;
3668 			ELSE
3669 				l_temp_base_pc := nvl(l_rollup_completed_percentage,l_eff_rollup_percent_comp);
3670 			END IF;
3671 			-- Bug 4506461 End
3672 
3673 
3674 			-- changed this for effort to cost conversion
3675 			PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
3676 			x_progress_rollup_id		=> l_progress_rollup_id
3677 			,x_project_id                   => p_project_id
3678 			,x_object_id                    => p_object_id
3679 			,x_object_type                  => p_object_type
3680 			,x_as_of_date                   => p_as_of_date
3681 			,x_object_version_id            => p_object_version_id
3682 			,x_last_update_date             => sysdate
3683 			,x_last_updated_by              => l_user_id
3684 			,x_creation_date                => sysdate
3685 			,x_created_by                   => l_user_id
3686 			,x_progress_status_code         => nvl( l_rollup_progress_status, p_progress_status_code ) --copy to rollup table. maansari: fpm changes 3420093
3687 			,x_last_update_login            => l_login_id
3688 			,x_incremental_work_qty         => l_incremental_work_qty
3689 			,x_cumulative_work_qty          => l_cumulative_work_qty
3690 			--                      ,x_base_percent_complete           => l_base_percent_complete -- 4392189 phase 2
3691 			-- bug 4506461          ,x_base_percent_complete           => nvl(l_rollup_rec1.base_percent_complete, l_eff_rollup_percent_comp)
3692 			,x_base_percent_complete        => l_temp_base_pc -- 4506461
3693 			,x_eff_rollup_percent_comp      => l_eff_rollup_percent_comp
3694 			,x_completed_percentage         => nvl( l_rollup_completed_percentage, l_percent_complete ) --copy to rollup table. maansari: fpm changes 3420093
3695 			,x_estimated_start_date         => l_estimated_start_date
3696 			,x_estimated_finish_date        => l_estimated_finish_date
3697 			,x_actual_start_date            => l_actual_start_date
3698 			,x_actual_finish_date           => l_actual_finish_date
3699 			,x_est_remaining_effort         => l_est_remaining_effort
3700 			,x_base_percent_comp_deriv_code => l_base_percent_comp_deriv_code
3701 			,x_base_progress_status_code    => l_date_override_flag -- 4533112 l_base_progress_status_code
3702 			,x_eff_rollup_prog_stat_code    => l_eff_rollup_prog_stat_code
3703 			,x_percent_complete_id          => l_percent_complete_id
3704 			,x_structure_type               => p_structure_type
3705 			,x_proj_element_id              => l_task_id
3706 			,x_structure_version_id         => l_structure_version_id -- null fpm dev cr 3
3707 			,x_ppl_act_effort_to_date	=> l_actual_effort
3708 			,x_eqpmt_act_effort_to_date	=> l_eqpmt_act_effort_to_date -- bug 3796357 null   --since this is a task progress, there wont be eqpmt effort.
3709 			,x_eqpmt_etc_effort             => l_eqpmt_etc_effort  -- bug 3796357 null
3710 			,x_oth_act_cost_to_date_tc      => l_oth_act_cost_to_date_tc -- bug 3796357    null   --no transaction is avialbale at task.
3711 			,x_oth_act_cost_to_date_fc      => l_oth_act_cost_to_date_fc -- bug 3796357    null
3712 			,x_oth_act_cost_to_date_pc      => l_oth_act_cost_to_date_pc -- bug 3796357    null
3713 			,x_oth_etc_cost_tc              => l_oth_etc_cost_tc -- bug 3796357   null   --no txn currency at task level.
3714 			,x_oth_etc_cost_fc              => l_oth_etc_cost_fc -- bug 3796357    null
3715 			,x_oth_etc_cost_pc              => l_oth_etc_cost_pc -- bug 3796357    null
3716 			,x_ppl_act_cost_to_date_tc	=> l_act_bur_cost_to_date_tc   --3627315 issue 4
3717 			,x_ppl_act_cost_to_date_fc	=> l_act_bur_cost_to_date_fc   --3627315 issue 4
3718 			,x_ppl_act_cost_to_date_pc	=> l_act_bur_cost_to_date_pc   --3627315 issue 4
3719 			,x_ppl_etc_cost_tc              => l_etc_bur_cost_tc   --3627315 issue 4
3720 			,x_ppl_etc_cost_fc              => l_etc_bur_cost_fc   --3627315 issue 4
3721 			,x_ppl_etc_cost_pc              => l_etc_bur_cost_pc   --3627315 issue 4
3722 			,x_eqpmt_act_cost_to_date_tc    => l_eqpmt_act_cost_to_date_tc-- bug 3796357    null
3723 			,x_eqpmt_act_cost_to_date_fc    => l_eqpmt_act_cost_to_date_fc-- bug 3796357        null
3724 			,x_eqpmt_act_cost_to_date_pc    => l_eqpmt_act_cost_to_date_pc-- bug 3796357        null
3725 			,x_eqpmt_etc_cost_tc            => l_eqpmt_etc_cost_tc -- bug 3796357    null
3726 			,x_eqpmt_etc_cost_fc            => l_eqpmt_etc_cost_fc -- bug 3796357   null
3727 			,x_eqpmt_etc_cost_pc            => l_eqpmt_etc_cost_pc -- bug 3796357   null
3728 			,x_earned_value                 => l_earned_value
3729 			,x_task_wt_basis_code           => l_task_weight_basis_code
3730 			,x_subprj_ppl_act_effort        => null
3731 			,x_subprj_eqpmt_act_effort      => null
3732 			,x_subprj_ppl_etc_effort        => null
3733 			,x_subprj_eqpmt_etc_effort      => null
3734 			,x_sbpj_oth_act_cost_to_date_tc => null
3735 			,x_sbpj_oth_act_cost_to_date_fc => null
3736 			,x_sbpj_oth_act_cost_to_date_pc => null
3737 			,x_subprj_ppl_act_cost_tc       => null
3738 			,x_subprj_ppl_act_cost_fc       => null
3739 			,x_subprj_ppl_act_cost_pc       => null
3740 			,x_subprj_eqpmt_act_cost_tc     => null
3741 			,x_subprj_eqpmt_act_cost_fc     => null
3742 			,x_subprj_eqpmt_act_cost_pc     => null
3743 			,x_subprj_oth_etc_cost_tc       => null
3744 			,x_subprj_oth_etc_cost_fc       => null
3745 			,x_subprj_oth_etc_cost_pc       => null
3746 			,x_subprj_ppl_etc_cost_tc       => null
3747 			,x_subprj_ppl_etc_cost_fc       => null
3748 			,x_subprj_ppl_etc_cost_pc       => null
3749 			,x_subprj_eqpmt_etc_cost_tc     => null
3750 			,x_subprj_eqpmt_etc_cost_fc     => null
3751 			,x_subprj_eqpmt_etc_cost_pc     => null
3752 			,x_subprj_earned_value          => null
3753 			,x_current_flag                 => l_rollup_current_flag
3754 			,x_projfunc_cost_rate_type      => l_projfunc_cost_rate_type    --3627315 issue 4
3755 			,x_projfunc_cost_exchange_rate  => l_projfunc_cost_exch_rate    --3627315 issue 4
3756 			,x_projfunc_cost_rate_date      => l_projfunc_cost_rate_date    --3627315 issue 4
3757 			,x_proj_cost_rate_type          => l_project_rate_type      --3627315 issue 4
3758 			,x_proj_cost_exchange_rate      => l_project_exch_rate      --3627315 issue 4
3759 			,x_proj_cost_rate_date          => l_project_rate_date      --3627315 issue 4
3760 			,x_txn_currency_code            => l_txn_currency_code      --3627315 issue 4
3761 			,x_prog_pa_period_name          => l_pa_period_name
3762 			,x_prog_gl_period_name          => l_gl_period_name
3763 			,x_oth_quantity_to_date         => l_oth_quantity_to_date -- bug 3796357 null
3764 			,x_oth_etc_quantity             => l_oth_etc_quantity -- bug 3796357 null
3765 			,x_oth_act_rawcost_to_date_tc   => l_oth_act_rawcost_to_date_tc-- bug 3796357  null
3766 			,x_oth_act_rawcost_to_date_fc   => l_oth_act_rawcost_to_date_fc-- bug 3796357  null
3767 			,x_oth_act_rawcost_to_date_pc   => l_oth_act_rawcost_to_date_pc-- bug 3796357  null
3768 			,x_oth_etc_rawcost_tc		=> l_oth_etc_rawcost_tc-- bug 3796357  null
3769 			,x_oth_etc_rawcost_fc		=> l_oth_etc_rawcost_fc-- bug 3796357  null
3770 			,x_oth_etc_rawcost_pc		=> l_oth_etc_rawcost_pc-- bug 3796357  null
3771 			,x_ppl_act_rawcost_to_date_tc   => l_act_raw_cost_to_date_tc --3627315 issue 4
3772 			,x_ppl_act_rawcost_to_date_fc   => l_act_raw_cost_to_date_fc --3627315 issue 4
3773 			,x_ppl_act_rawcost_to_date_pc   => l_act_raw_cost_to_date_pc --3627315 issue 4
3774 			,x_ppl_etc_rawcost_tc		=> l_etc_raw_cost_tc  --3627315 issue 4
3775 			,x_ppl_etc_rawcost_fc		=> l_etc_raw_cost_fc  --3627315 issue 4
3776 			,x_ppl_etc_rawcost_pc		=> l_etc_raw_cost_pc  --3627315 issue 4
3777 			,x_eqpmt_act_rawcost_to_date_tc => l_eqpmt_act_rawcost_to_date_tc -- bug 3796357 null
3778 			,x_eqpmt_act_rawcost_to_date_fc => l_eqpmt_act_rawcost_to_date_fc -- bug 3796357 null
3779 			,x_eqpmt_act_rawcost_to_date_pc => l_eqpmt_act_rawcost_to_date_pc -- bug 3796357 null
3780 			,x_eqpmt_etc_rawcost_tc		=> l_eqpmt_etc_rawcost_tc-- bug 3796357 null
3781 			,x_eqpmt_etc_rawcost_fc		=> l_eqpmt_etc_rawcost_fc-- bug 3796357 null
3782 			,x_eqpmt_etc_rawcost_pc		=> l_eqpmt_etc_rawcost_pc-- bug 3796357  null
3783 			,x_sp_oth_act_rawcost_todate_tc => null
3784 			,x_sp_oth_act_rawcost_todate_fc => null
3785 			,x_sp_oth_act_rawcost_todate_pc => null
3786 			,x_subprj_ppl_act_rawcost_tc    => null
3787 			,x_subprj_ppl_act_rawcost_fc    => null
3788 			,x_subprj_ppl_act_rawcost_pc    => null
3789 			,x_subprj_eqpmt_act_rawcost_tc  => null
3790 			,x_subprj_eqpmt_act_rawcost_fc  => null
3791 			,x_subprj_eqpmt_act_rawcost_pc  => null
3792 			,x_subprj_oth_etc_rawcost_tc    => null
3793 			,x_subprj_oth_etc_rawcost_fc    => null
3794 			,x_subprj_oth_etc_rawcost_pc    => null
3795 			,x_subprj_ppl_etc_rawcost_tc    => null
3796 			,x_subprj_ppl_etc_rawcost_fc    => null
3797 			,x_subprj_ppl_etc_rawcost_pc    => null
3798 			,x_subprj_eqpmt_etc_rawcost_tc  => null
3799 			,x_subprj_eqpmt_etc_rawcost_fc  => null
3800 			,x_subprj_eqpmt_etc_rawcost_pc  => null
3801 			);
3802 		END IF; --2
3803 	END IF;  --<l_db_action>
3804 
3805 
3806 	--bug 3958686, insert assignment level records, start
3807 	IF NVL( l_lowest_level_task, 'N')='Y' AND NVL(l_assignment_exists, 'N') = 'N'
3808 	AND l_element_struc_type = 'WORKPLAN'
3809 	AND (nvl(l_actual_effort,0) <> 0 OR nvl(l_est_remaining_effort,0) <> 0) -- Bug 4632744
3810 	THEN
3811 		IF l_resource_list_member_id is not null
3812 		THEN
3813 			-- Bug 4632744
3814 			-- Commented below call
3815 			-- Added new
3816 			/*
3817 
3818 			PA_PROGRESS_PVT.convert_task_prog_to_assgn
3819 			   (   p_resource_list_mem_id  => l_resource_list_member_id
3820 			  ,p_project_id            => p_project_id
3821 			  ,p_task_id               => p_object_id
3822 			  ,p_structure_version_id  => l_structure_version_id
3823 			  ,p_as_of_date            => trunc(p_as_of_date)
3824 			  ,p_action                => p_action
3825 			  ,p_subprj_actual_exists  => l_subproject_act_found -- 4490532
3826 			  ,p_object_version_id     => p_object_version_id -- 4490532
3827 			  ,x_return_status         => l_return_status
3828 			  ,x_msg_count             => l_msg_count
3829 			  ,x_msg_data              => l_msg_data
3830 			   );
3831 			   */
3832 
3833 			-- Bug 4632744
3834 			-- Added code below to call assignment progress API
3835 			-- with incremnetal actual
3836 
3837 
3838 			OPEN c_get_last_ppl_effort_fr_assgn(l_resource_list_member_id);
3839 			FETCH c_get_last_ppl_effort_fr_assgn INTO l_last_submitted_effort;
3840 			CLOSE c_get_last_ppl_effort_fr_assgn;
3841 
3842 			l_actual_effort_this_period := NVL(l_actual_effort,0) - nvl(l_last_submitted_effort,0);
3843                         ---5441402  introduced calling module as HIDDEN_ASGMT
3844                         if (p_calling_module <> 'AMG') then
3845                             l_calling_module := 'HIDDEN_ASGMT';
3846                         else
3847                             l_calling_module := p_calling_module;
3848                         end if;
3849 			PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
3850 				     p_api_version                   => l_api_version
3851 				     ,p_init_msg_list                => p_init_msg_list
3852 				     ,p_commit                       => p_commit
3853 				     ,p_validate_only                => p_validate_only
3854 				     ,p_validation_level             => p_validation_level
3855 				     ,p_calling_module               => l_calling_module
3856 				     ,p_action                       => p_action
3857 				     ,p_progress_mode                => p_progress_mode
3858 				     ,p_percent_complete_id          => null
3859 				     ,p_project_id                   => p_project_id
3860 				     ,p_object_id                    => l_resource_list_member_id
3861 				     ,p_object_version_id            => p_object_version_id
3862 				     ,p_task_id                      => p_object_id
3863 				     ,p_as_of_date                   => p_as_of_date
3864 				     ,p_progress_comment             => p_progress_comment
3865 				     ,p_brief_overview               => p_brief_overview
3866 				     ,p_actual_start_date            => l_actual_start_date
3867 				     ,p_actual_finish_date           => l_actual_finish_date
3868 				     ,p_estimated_start_date         => l_estimated_start_date
3869 				     ,p_estimated_finish_date        => l_estimated_finish_date
3870 				     ,p_record_version_number        => null
3871 				     ,p_pm_product_code              => p_pm_product_code
3872 				     ,p_structure_type               => p_structure_type
3873 				     ,p_structure_version_id         => p_structure_version_id
3874 				     ,p_actual_cost_this_period      => null
3875 				     ,p_actual_effort_this_period    => l_actual_effort_this_period
3876 				     ,p_rate_based_flag              => l_rate_based_flag
3877 				     ,p_resource_class_code          => l_resource_class_code
3878 				     ,p_actual_cost                  => null
3879 				     ,p_actual_effort                => l_last_submitted_effort
3880 				     ,p_etc_cost_this_period         => null
3881 				     ,p_etc_effort_this_period       => l_est_remaining_effort
3882 				     ,p_txn_currency_code            => l_txn_currency_code
3883 				     ,p_rbs_element_id               => l_rbs_element_id
3884 				     ,p_resource_assignment_id       => l_resource_assignment_id
3885 				     ,p_scheduled_start_date         => l_scheduled_start_date
3886 				     ,p_scheduled_finish_date        => l_scheduled_finish_date
3887 				     ,x_return_status                => l_return_status
3888 				     ,x_msg_count                    => l_msg_count
3889 				     ,x_msg_data                     => l_msg_data
3890 				     );
3891 
3892                         -- Bug 8294708
3893                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3894                             x_msg_data := l_msg_data;
3895                             x_return_status := 'E';
3896                             RAISE FND_API.G_EXC_ERROR;
3897                         END IF;
3898 
3899 		END IF;
3900 	END IF;
3901 	--bug 3958686, insert assignment level records, end
3902 
3903 
3904 	IF p_action = 'PUBLISH'
3905 	THEN
3906 		-- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
3907 		/*
3908 		--- call apis if the status is 'CANCELLED'
3909 		IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
3910 		AND l_element_struc_type = 'WORKPLAN' --maansari: fpm changes
3911 		THEN
3912 		PA_PROJ_ELEMENTS_UTILS.Check_chg_stat_cancel_ok (
3913 		   p_task_id             => p_object_id
3914 		  ,p_task_version_id     => p_object_version_id
3915 		  ,p_new_task_status     => l_task_status
3916 		  ,x_return_status       => l_return_status
3917 		  ,x_error_message_code  => l_error_message_code
3918 		);
3919 
3920 		IF (l_return_status <> 'S') THEN
3921 		PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3922 				p_msg_name => l_error_message_code);
3923 		raise FND_API.G_EXC_ERROR;
3924 		END IF;
3925 		END IF;
3926 		*/
3927 
3928 		-- Bug 3878024 : new Check is added below
3929 		-- IF NVL( l_lowest_level_task, 'N' ) = 'N' AND p_object_type = 'PA_TASKS'
3930 		--    AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3931 		IF p_object_type = 'PA_TASKS'
3932 		AND l_element_struc_type = 'WORKPLAN' AND p_progress_mode <> 'BACKDATED'
3933 		THEN
3934 			--- update % complete and prog stat for future rollup recs
3935 			update pa_progress_rollup
3936 			set completed_percentage = l_percent_complete,
3937 			progress_status_code = p_progress_status_code
3938 			where project_id = p_project_id
3939 			and object_id = p_object_id
3940 			and object_type = p_object_type
3941 			and structure_type = p_structure_type
3942 			and as_of_date > p_as_of_date
3943 			and current_flag <> 'W' -- Bug 3879461
3944 			and structure_version_id is null -- Bug 3879461
3945 			;
3946 
3947 			PA_PROGRESS_PUB.push_down_task_status(
3948 			p_api_version               => p_api_version
3949 			,p_init_msg_list             => p_init_msg_list
3950 			,p_commit                    => p_commit
3951 			,p_validate_only             => p_validate_only
3952 			,p_validation_level          => p_validation_level
3953 			,p_calling_module            => p_calling_module
3954 			,p_debug_mode                => p_debug_mode
3955 			,p_max_msg_count             => p_max_msg_count
3956 			,p_project_id                => p_project_id
3957 			,P_OBJECT_TYPE               => P_OBJECT_TYPE
3958 			,P_OBJECT_ID                 => P_OBJECT_ID
3959 			,p_as_of_date                => p_as_of_date
3960 			,p_object_version_id         => p_object_version_id
3961 			,p_actual_finish_date        => nvl(l_actual_finish_date, trunc(sysdate)) -- Bug 3922325 : Added sysdate
3962 			,x_return_status             => l_return_status
3963 			,x_msg_count                 => l_msg_count
3964 			,x_msg_data                  => l_msg_data
3965 			,p_task_status               => l_task_status
3966 			);
3967 		END IF;
3968 
3969 		IF l_return_status <> FND_API.G_RET_STS_SUCCESS
3970 		THEN
3971 			PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
3972 			     p_msg_name       => l_msg_data
3973 			);
3974 			x_msg_data := l_msg_data;
3975 			x_return_status := 'E';
3976 			RAISE  FND_API.G_EXC_ERROR;
3977 		END IF;
3978 
3979 		/* Bug 2751159 Moved the update task_status code out of IF condition for workplan
3980 		It means updation of task status shd happen for financial also */
3981 
3982 		IF (p_progress_mode <> 'BACKDATED')
3983 		THEN
3984                         /* -- Bug#8213897  >> Starts -- */
3985 
3986                            declare
3987 
3988                                    task_status1 number;
3989 
3990                                    cursor cur_Task_Type is
3991                                    select type_id
3992                                    from   pa_proj_elements
3993                                    where  proj_element_id = p_object_id;
3994 
3995                                    cursor chk_task_type_ppc_enabled (p_task_type_id  number)is
3996                                    select percent_comp_enable_flag
3997                                    from pa_task_types
3998                                    where task_type_id = p_task_type_id ;
3999 
4000                                    cursor chk_structure_ppc_enabled is
4001                                    select percent_comp_enable_flag
4002                                    from pa_proj_progress_attr
4003                                    where project_id = p_project_id
4004                                    and structure_type = p_structure_type;
4005 
4006                                    l_task_type_id number;
4007 
4008                                    l_task_perc_comp_enable_flag varchar2(1);
4009                                    l_struc_perc_comp_enable_flag varchar2(1);
4010 
4011                             begin
4012 
4013                                    open  cur_Task_Type;
4014                                    fetch cur_Task_Type into l_task_type_id;
4015                                    close cur_Task_Type;
4016 
4017                                    open  chk_task_type_ppc_enabled(l_task_type_id);
4018                                    fetch chk_task_type_ppc_enabled into l_task_perc_comp_enable_flag;
4019                                    close chk_task_type_ppc_enabled;
4020 
4021                                    open  chk_structure_ppc_enabled;
4022                                    fetch chk_structure_ppc_enabled into l_struc_perc_comp_enable_flag;
4023                                    close chk_structure_ppc_enabled;
4024 
4025                                      select status_code
4026                                      into task_status1
4027                                      from pa_proj_elements
4028                                      WHERE proj_element_id = p_object_id
4029                                      AND project_id = p_project_id
4030                                      AND object_type = p_object_type;
4031 
4032                              If (nvl(l_struc_perc_comp_enable_flag, 'N') = 'N'  or
4033                                          nvl(l_task_perc_comp_enable_flag, 'N') = 'N' )
4034                                     and task_status1 = '127' then
4035 
4036                                       If l_task_status = 124 then
4037 
4038                                                 UPDATE pa_progress_rollup
4039                                                SET actual_finish_date  = '',
4040                                                          actual_start_date    = '',
4041                                                          completed_percentage = ''
4042                                                      WHERE object_id = p_object_id
4043                                                      AND current_flag IN ('Y')
4044                                                      AND object_type = 'PA_TASKS'
4045                                                      AND proj_element_id = p_object_id
4046                                                      AND structure_version_id IS NULL
4047                                                      AND project_id = p_project_id
4048                                            AND structure_type = p_structure_type;
4049 
4050                                            Elsif l_task_status = 125 then
4051 
4052                                                 UPDATE pa_progress_rollup
4053                                          SET actual_finish_date   = '',
4054                                              completed_percentage = ''
4055                                                      WHERE object_id = p_object_id
4056                                                      AND current_flag IN ('Y')
4057                                                      AND object_type = 'PA_TASKS'
4058                                                      AND proj_element_id = p_object_id
4059                                                      AND structure_version_id IS NULL
4060                                                      AND project_id = p_project_id
4061                                            AND structure_type = p_structure_type;
4062 
4063                                            End If;
4064 
4065                                     End If;
4066 
4067                            End;
4068 
4069                            /* -- Bug#8213897  >> Ends -- */
4070 
4071 
4072 
4073 			--Update pa_proj_elements with the status
4074 			UPDATE pa_proj_elements
4075 			SET status_code = l_task_status
4076 			,last_update_date = decode(status_code,l_task_status,last_update_date,sysdate) --Bug 5978904
4077  	                ,last_update_login = decode(status_code,l_task_status,last_update_login,l_login_id) --Bug 5978904
4078  	                ,last_updated_by = decode(status_code,l_task_status,last_updated_by,l_user_id)  --Bug 5978904
4079 			WHERE proj_element_id = p_object_id
4080 			AND project_id = p_project_id
4081 			AND object_type = p_object_type;
4082 		END IF;
4083 
4084 
4085 		-- Bug 4429929 : Now Cancel Status can only be changed thru Update Task
4086 		/*
4087 		IF PA_PROGRESS_UTILS.get_system_task_status( l_TASK_STATUS ) = 'CANCELLED'
4088 		THEN
4089 			PA_TASK_PVT1.set_new_tasks_to_TBD(
4090 			p_project_id               => p_project_id
4091 			,p_task_id                  => p_object_id
4092 			,p_task_status              => l_task_status
4093 			,x_return_status            => l_return_status
4094 			,x_msg_count                => l_msg_count
4095 			,x_msg_data                 => l_msg_data);
4096 
4097 			IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4098 				raise FND_API.G_EXC_ERROR;
4099 			END IF;
4100 		END IF;
4101 		*/
4102 
4103 		IF l_element_struc_type = 'WORKPLAN'
4104 		THEN
4105 			IF p_progress_mode <> 'BACKDATED' then
4106 				/* Bug2756007 Begin */
4107 				OPEN cur_sch_id( p_object_version_id ) ;
4108 				FETCH cur_sch_id INTO l_pev_schedule_id, l_sch_rec_ver_number;
4109 				CLOSE cur_sch_id;
4110 
4111 				PA_TASK_PUB1.Update_Schedule_Version(
4112 					  p_pev_schedule_id             => l_pev_schedule_id
4113 					 ,p_calling_module              => p_calling_module
4114 					 ,p_actual_start_date           => l_actual_start_date
4115 					 ,p_actual_finish_date          => l_actual_finish_date
4116 					 ,p_estimate_start_date         => l_estimated_start_date
4117 					 ,p_estimate_finish_date        => l_estimated_finish_date
4118 					 ,p_record_version_number       => l_sch_rec_ver_number
4119 					 ,x_return_status               => l_return_status
4120 					 ,x_msg_count                   => l_msg_count
4121 					 ,x_msg_data                    => l_msg_data );
4122 
4123 				IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4124 				THEN
4125 					-- Bug 3248988 : Update_schedule_version adds the message, here message shd not be added
4126 					--         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4127 					--                             p_msg_name       => l_msg_data
4128 					--                  );
4129 					--           x_msg_data := l_msg_data;
4130 					x_return_status := 'E';
4131 					RAISE  FND_API.G_EXC_ERROR;
4132 				END IF;
4133 				/* Bug2756007 End */
4134 			END IF;
4135 
4136                    /*****5466645
4137 			IF(p_bulk_load_flag = 'N') Then
4138 
4139 				IF p_progress_mode <> 'BACKDATED'
4140 				AND l_element_struc_type = 'WORKPLAN'   --maansari fpm changes
4141 				THEN
4142 
4143 					--- bug 2756033
4144 					-- Bug 2812855 : Added following procedure call to populate actual and estimated dates to all the task versions
4145 					IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' )
4146 					THEN
4147 						PA_TASK_PVT1.Update_Dates_To_All_Versions(
4148 							 p_project_id           => p_project_id
4149 							,p_element_version_id       => p_object_version_id
4150 							,x_return_status               => l_return_status
4151 							,x_msg_count                   => l_msg_count
4152 							,x_msg_data                    => l_msg_data );
4153 						IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4154 						THEN
4155 							PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4156 							     p_msg_name       => l_msg_data
4157 							);
4158 							x_msg_data := l_msg_data;
4159 							x_return_status := 'E';
4160 							RAISE  FND_API.G_EXC_ERROR;
4161 						END IF;
4162 
4163 						BEGIN
4164 							Select ppev1.proj_element_id
4165 							into l_structure_id
4166 							from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
4167 							where ppev2.element_version_id = p_object_version_id
4168 							and ppev2.project_id = ppev1.project_id
4169 							and ppev2.parent_structure_version_id = ppev1.element_version_id;
4170 						EXCEPTION WHEN OTHERS THEN
4171 							l_structure_id := -999;
4172 						END;
4173 
4174 						IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
4175 						AND
4176 						(PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_object_id) = 'Y')    --Bug 3784405  Satish
4177 						AND
4178 						(PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
4179 						THEN
4180 							--copy to transaction dates
4181 							PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
4182 							p_validate_only => FND_API.G_FALSE
4183 							,p_project_id => p_project_id
4184 							,x_return_status => x_return_status
4185 							,x_msg_count => x_msg_count
4186 							,x_msg_data => x_msg_data);
4187 						END IF;
4188 					END IF;
4189 				END IF; ------ p_progress_mode <> backdated
4190 			END IF;  -------------- end p_bulk_load_flag = 'N'
4191                   5466645************/
4192 		END IF;
4193 	END IF;
4194 
4195 	IF g1_debug_mode  = 'Y' THEN
4196 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Update Task Progress Complete ', x_Log_Level=> 3);
4197 	END IF;
4198 
4199 	IF l_return_status <> FND_API.G_RET_STS_SUCCESS
4200 	THEN
4201 		PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4202 			     p_msg_name       => l_msg_data
4203 		  );
4204 
4205 		x_msg_data := l_msg_data;
4206 		x_return_status := 'E';
4207 		RAISE  FND_API.G_EXC_ERROR;
4208 	END IF;
4209 
4210 	x_resource_list_member_id := l_resource_list_member_id;
4211 
4212 EXCEPTION
4213 	WHEN FND_API.G_EXC_ERROR THEN
4214 		IF p_commit = FND_API.G_TRUE
4215 		THEN
4216 			rollback to UPDATE_TASK_PROGRESS;
4217 		END IF;
4218 		x_return_status := FND_API.G_RET_STS_ERROR;
4219 		x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4220 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4221 		IF p_commit = FND_API.G_TRUE
4222 		THEN
4223 			rollback to UPDATE_TASK_PROGRESS;
4224 		END IF;
4225 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4226 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4227                               p_procedure_name => 'UPDATE_TASK_PROGRESS',
4228                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4229 		x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4230 	WHEN OTHERS THEN
4231 		IF p_commit = FND_API.G_TRUE THEN
4232 			rollback to UPDATE_TASK_PROGRESS;
4233 		END IF;
4234 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4235 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4236 				      p_procedure_name => 'UPDATE_TASK_PROGRESS',
4237 				      p_error_text     => SUBSTRB(SQLERRM,1,120));
4238 		x_msg_count := fnd_msg_pub.count_msg; -- FPM Dev CR 3
4239 		raise;
4240 END UPDATE_TASK_PROGRESS;
4241 
4242 
4243 -- Start of comments
4244 --      API name        : ROLLUP_PROGRESS_PVT
4245 --      Type            : Public
4246 --      Pre-reqs        : For Program Rollup, the sub project buckets should be populated.
4247 --      Purpose         : Rolls up the structure
4248 --      Parameters Desc :
4249 --              P_OBJECT_TYPE                   Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4250 --              P_OBJECT_ID                     For assignments, pass resource_assignment_id, otherwise
4251 --                                              proj_element_id of the deliverable and task
4252 --              p_object_version_id             For Assignments, pass task_version_id, otherwise
4253 --                                              element_version_id of the deliverable and task
4254 --              p_task_version_id               For tasks, assignments, deliverables pass the task version id
4255 --                                              , for struture pass null
4256 --              p_lowest_level_task             Does not seem to be required
4257 --              p_process_whole_tree            To indicate if whole tree rollup is not required. It will
4258 --                                              do just 2 level rollup if N
4259 --              p_structure_version_id          Structure version id of the publsihed or working structure version
4260 --              p_structure_type                Possible values WORKPLAN, FINANCIAL
4261 --              p_fin_rollup_method             Possible values are COST, EFFORT
4262 --              p_wp_rollup_method              Possible values are COST, EFFORT, MANUAL, DURATION
4263 --              p_rollup_entire_wbs             To indicate if it requires the whole structure rollup, in this
4264 --                                              case it will ignore the passed object and starts with the lowest
4265 --                                              task
4266 --      History         : 17-MAR-04  amksingh   Rewritten For FPM Development Tracking Bug 3420093
4267 --            08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
4268 --                            PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT().
4269 -- End of comments
4270 
4271 PROCEDURE ROLLUP_PROGRESS_PVT(
4272  p_api_version                          IN      NUMBER          :=1.0
4273 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_TRUE
4274 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
4275 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
4276 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
4277 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
4278 ,p_debug_mode                           IN      VARCHAR2        :='N'
4279 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4280 ,p_progress_mode                        IN      VARCHAR2        := 'FUTURE'
4281 ,p_project_id                           IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4282 ,p_object_type                          IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4283 ,p_object_id                            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4284 ,p_object_version_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4285 ,p_task_version_id                      IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4286 ,p_as_of_date                           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4287 ,p_lowest_level_task                    IN      VARCHAR2        := 'N'
4288 ,p_process_whole_tree                   IN      VARCHAR2        := 'Y'
4289 ,p_structure_version_id                 IN      NUMBER
4290 ,p_structure_type                       IN      VARCHAR2        := 'WORKPLAN'
4291 ,p_fin_rollup_method                    IN      VARCHAR2        := 'COST'
4292 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
4293 ,p_rollup_entire_wbs                    IN      VARCHAR2        := 'N'
4294 ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --maansari7/18  to be passed form apply lp progress to select regular planned amounts to send to schduling api for percent comnplete and earned value calculations.
4295 ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, for BUG 3951024
4296 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4297 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4298 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4299 )
4300  IS
4301 
4302    l_api_name                      CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
4303    l_api_version                   CONSTANT NUMBER      := 1.0                  ;
4304    l_return_status                 VARCHAR2(1)                                  ;
4305    l_msg_count                     NUMBER                                       ;
4306    l_msg_data                      VARCHAR2(250)                                ;
4307    l_data                          VARCHAR2(250)                                ;
4308    l_msg_index_out                 NUMBER                                       ;
4309    l_error_msg_code                VARCHAR2(250)                                ;
4310    l_user_id                       NUMBER := FND_GLOBAL.USER_ID                 ;
4311    l_login_id                      NUMBER := FND_GLOBAL.LOGIN_ID                ;
4312    g1_debug_mode                    VARCHAR2(1);
4313 
4314    -- Rollup Cases
4315    -- 1. Workplan Publsihed Version Rollup.
4316    -- 2. Workplan Working Version Rollup.
4317    -- 3. Financial Structure Rollup.
4318    -- 4. Entire WBS using structure version id.
4319    -- 5. Program Rollup
4320 
4321 BEGIN
4322 
4323         -- Rollup Cases
4324         -- 1. Workplan Publsihed Version Rollup.
4325         -- 2. Workplan Working Version Rollup.
4326         -- 3. Financial Structure Rollup.
4327         -- 4. Entire WBS using structure version id.
4328         -- 5. Program Rollup
4329 
4330 
4331         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4332 
4333         IF g1_debug_mode  = 'Y' THEN
4334                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT');
4335         END IF;
4336 
4337         IF g1_debug_mode  = 'Y' THEN
4338                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4339                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
4340                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
4341                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
4342                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
4343                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
4344                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
4345                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
4346                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4347                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
4348                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
4349                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4350                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
4351                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4352                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4353                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
4354                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4355                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4356                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4357                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4358                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
4359         END IF;
4360 
4361         -- 20 May : Amit : If Structure_version_id is null, then no processing shd be done
4362     -- Bug 3856161 : Added p_as_of_date check also
4363         IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
4364                 return;
4365         END IF;
4366 
4367         IF (p_commit = FND_API.G_TRUE) THEN
4368                 savepoint ROLLUP_PROGRESS_PVT;
4369         END IF;
4370 
4371         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4372                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4373         END IF;
4374 
4375         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4376                 FND_MSG_PUB.initialize;
4377         END IF;
4378 
4379     -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
4380 
4381     PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
4382     p_api_version        => p_api_version
4383     ,p_init_msg_list     => p_init_msg_list
4384     ,p_commit        => p_commit
4385     ,p_validate_only     => p_validate_only
4386     ,p_validation_level  => p_validation_level
4387     ,p_calling_module    => p_calling_module
4388     ,p_debug_mode        => p_debug_mode
4389     ,p_max_msg_count     => p_max_msg_count
4390     ,p_progress_mode     => p_progress_mode
4391     ,p_project_id        => p_project_id
4392     ,p_object_type       => p_object_type
4393     ,p_object_id         => p_object_id
4394     ,p_object_version_id     => p_object_version_id
4395     ,p_task_version_id   => p_task_version_id
4396     ,p_as_of_date        => p_as_of_date
4397     ,p_lowest_level_task     => p_lowest_level_task
4398     ,p_process_whole_tree    => p_process_whole_tree
4399     ,p_structure_version_id  => p_structure_version_id
4400     ,p_structure_type    => p_structure_type
4401     ,p_fin_rollup_method     => p_fin_rollup_method
4402     ,p_wp_rollup_method  => p_wp_rollup_method
4403     ,p_rollup_entire_wbs     => p_rollup_entire_wbs
4404     ,p_working_wp_prog_flag  => p_working_wp_prog_flag
4405      ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag -- added by rtarway for 3951024
4406     ,x_return_status     => l_return_status
4407     ,x_msg_count         => l_msg_count
4408     ,x_msg_data      => l_msg_data);
4409 
4410         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4411         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4412                              p_msg_name       => l_msg_data
4413                   );
4414            x_msg_data := l_msg_data;
4415            x_return_status := 'E';
4416            RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
4417         END IF;
4418 
4419         x_return_status := FND_API.G_RET_STS_SUCCESS;
4420 
4421         IF (p_commit = FND_API.G_TRUE) THEN
4422                 COMMIT;
4423         END IF;
4424 
4425 
4426         IF g1_debug_mode  = 'Y' THEN
4427                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
4428         END IF;
4429 
4430 EXCEPTION
4431         WHEN FND_API.G_EXC_ERROR THEN
4432                 IF p_commit = FND_API.G_TRUE THEN
4433                         rollback to ROLLUP_PROGRESS_PVT;
4434                 END IF;
4435                 x_return_status := FND_API.G_RET_STS_ERROR;
4436         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4437                 IF p_commit = FND_API.G_TRUE THEN
4438                         rollback to ROLLUP_PROGRESS_PVT;
4439                 END IF;
4440                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4441                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4442                               p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4443                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4444         WHEN OTHERS THEN
4445                 IF p_commit = FND_API.G_TRUE THEN
4446                         rollback to ROLLUP_PROGRESS_PVT;
4447                 END IF;
4448                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4449                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4450                               p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4451                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4452                 raise;
4453 END ROLLUP_PROGRESS_PVT;
4454 
4455 -- Start of comments
4456 --      API name        : UPDATE_ROLLUP_PROGRESS_PVT
4457 --      Type            : Private
4458 --      Pre-reqs        : ROLLUP_PROGRESS_PVT shd have been called.
4459 --      Purpose         : Updates the Rolled up data
4460 --      Parameters Desc :
4461 --              P_OBJECT_TYPE                   Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4462 --              P_OBJECT_ID                     For assignments, pass resource_assignment_id, otherwise
4463 --                                              proj_element_id of the deliverable and task
4464 --              p_object_version_id             For Assignments, pass task_version_id, otherwise
4465 --                                              element_version_id of the deliverable and task
4466 --              p_task_version_id               For tasks, assignments, deliverables pass the task version id
4467 --                                              , for struture pass null
4468 --              p_lowest_level_task             Does not seem to be required
4469 --              p_structure_version_id          Structure version id of the publsihed or working structure version
4470 --              p_structure_type                Possible values WORKPLAN, FINANCIAL
4471 --              p_fin_rollup_method             Possible values are COST, EFFORT
4472 --              p_wp_rollup_method              Possible values are COST, EFFORT, MANUAL, DURATION
4473 --              p_published_structure           To indicate if the passed structure version is published
4474 --      History         : 17-MAR-04  amksingh   Rewritten For FPM Development Tracking Bug 3420093
4475 --                        08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
4476 --                                                    PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT().
4477 -- End of comments
4478 
4479 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4480   p_api_version                         IN      NUMBER                  :=1.0
4481  ,p_init_msg_list                       IN      VARCHAR2                :=FND_API.G_TRUE
4482  ,p_commit                              IN      VARCHAR2                :=FND_API.G_FALSE
4483  ,p_validate_only                       IN      VARCHAR2                :=FND_API.G_TRUE
4484  ,p_validation_level                    IN      NUMBER                  :=FND_API.G_VALID_LEVEL_FULL
4485  ,p_calling_module                      IN      VARCHAR2                :='SELF_SERVICE'
4486  ,p_debug_mode                          IN      VARCHAR2                :='N'
4487  ,p_max_msg_count                       IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4488  ,p_project_id                          IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4489  ,p_object_version_id                   IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4490  ,p_as_of_date                          IN      DATE                    := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4491  ,p_rollup_table                        IN      PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4492  ,p_lowest_level_task                   IN      VARCHAR2                := 'N'
4493  ,p_task_version_id                     IN      NUMBER
4494  ,p_structure_version_id                IN      NUMBER
4495  ,p_structure_type                      IN      VARCHAR2                := 'WORKPLAN'
4496  ,p_fin_rollup_method                   IN      VARCHAR2                := 'COST'
4497  ,p_wp_rollup_method                    IN      VARCHAR2                := 'COST'
4498  ,p_published_structure                 IN      VARCHAR2
4499  ,p_rollup_entire_wbs                   IN      VARCHAR2                := 'N' -- FPM Dev CR 7
4500  ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --bug 3829341
4501  ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, for BUG 3951024
4502  ,p_progress_mode           IN  VARCHAR2        := 'FUTURE'  -- 4091457
4503  ,x_return_status                       OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4504  ,x_msg_count                           OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4505  ,x_msg_data                            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4506 ) IS
4507    l_api_name                      CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4508    l_api_version                   CONSTANT NUMBER      := 1.0                          ;
4509 
4510    l_return_status                 VARCHAR2(1)                                          ;
4511    l_msg_count                     NUMBER                                               ;
4512    l_msg_data                      VARCHAR2(250)                                        ;
4513    l_data                          VARCHAR2(250)                                        ;
4514    l_msg_index_out                 NUMBER                                               ;
4515    l_error_msg_code                VARCHAR2(250)                                        ;
4516    l_user_id                       NUMBER                       := FND_GLOBAL.USER_ID   ;
4517    l_login_id                      NUMBER                       := FND_GLOBAL.LOGIN_ID  ;
4518    g1_debug_mode                    VARCHAR2(1);
4519 
4520 BEGIN
4521 
4522         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4523 
4524         IF g1_debug_mode  = 'Y' THEN
4525                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT');
4526         END IF;
4527 
4528         IF g1_debug_mode  = 'Y' THEN
4529                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4530                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
4531                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
4532                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
4533                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
4534                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
4535                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
4536                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
4537                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4538                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4539                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
4540                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4541                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4542                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4543                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4544                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4545                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4546                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'p_published_structure='||p_published_structure, x_Log_Level=> 3);
4547         END IF;
4548 
4549 
4550         IF (p_commit = FND_API.G_TRUE) THEN
4551                 savepoint UPDATE_ROLLUP_PROGRESS_PVT;
4552         END IF;
4553 
4554         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4555                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4556         END IF;
4557 
4558         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4559                 FND_MSG_PUB.initialize;
4560         END IF;
4561 
4562         -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
4563 
4564     PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT(
4565     p_api_version        => p_api_version
4566     ,p_init_msg_list     => p_init_msg_list
4567     ,p_commit        => p_commit
4568     ,p_validate_only     => p_validate_only
4569     ,p_validation_level  => p_validation_level
4570     ,p_calling_module    => p_calling_module
4571     ,p_debug_mode        => p_debug_mode
4572     ,p_max_msg_count     => p_max_msg_count
4573     ,p_project_id        => p_project_id
4574     ,p_object_version_id     => p_object_version_id
4575     ,p_as_of_date        => p_as_of_date
4576     ,p_rollup_table      => p_rollup_table
4577     ,p_lowest_level_task     => p_lowest_level_task
4578     ,p_task_version_id   => p_task_version_id
4579     ,p_structure_version_id  => p_structure_version_id
4580     ,p_structure_type    => p_structure_type
4581     ,p_fin_rollup_method     => p_fin_rollup_method
4582     ,p_wp_rollup_method  => p_wp_rollup_method
4583     ,p_published_structure   => p_published_structure
4584     ,p_rollup_entire_wbs     => p_rollup_entire_wbs
4585     ,p_working_wp_prog_flag  => p_working_wp_prog_flag
4586      ,p_upd_new_elem_ver_id_flag => p_upd_new_elem_ver_id_flag --BUG 3951024
4587         ,p_progress_mode     =>     p_progress_mode -- 4091457
4588     ,x_return_status     => l_return_status
4589     ,x_msg_count         => l_msg_count
4590     ,x_msg_data      => l_msg_data);
4591 
4592             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4593                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
4594                                     p_msg_name       => l_msg_data);
4595                x_msg_data := l_msg_data;
4596                x_return_status := 'E';
4597                x_msg_count := l_msg_count;
4598                RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
4599             END IF;
4600 
4601 
4602         x_return_status := FND_API.G_RET_STS_SUCCESS;
4603 
4604         IF (p_commit = FND_API.G_TRUE) THEN
4605                 COMMIT;
4606         END IF;
4607 
4608         IF g1_debug_mode  = 'Y' THEN
4609                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT End', x_Log_Level=> 3);
4610         END IF;
4611 
4612 EXCEPTION
4613     WHEN FND_API.G_EXC_ERROR THEN
4614                 IF g1_debug_mode  = 'Y' THEN
4615                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4616                 END IF;
4617 
4618                 IF p_commit = FND_API.G_TRUE THEN
4619                 rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4620                 END IF;
4621              x_return_status := FND_API.G_RET_STS_ERROR;
4622     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4623 
4624                 IF g1_debug_mode  = 'Y' THEN
4625                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4626                 END IF;
4627 
4628                 IF p_commit = FND_API.G_TRUE THEN
4629                         rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4630                 END IF;
4631                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4632                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4633                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4634                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4635     WHEN OTHERS THEN
4636                 IF g1_debug_mode  = 'Y' THEN
4637                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4638                 END IF;
4639 
4640                 IF p_commit = FND_API.G_TRUE THEN
4641                         rollback to UPDATE_ROLLUP_PROGRESS_PVT;
4642                 END IF;
4643                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4644                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4645                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4646                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4647                 raise;
4648 END UPDATE_ROLLUP_PROGRESS_PVT;
4649 
4650 
4651 PROCEDURE CREATE_PROJ_PROG_ATTR(
4652   p_api_version       IN        NUMBER  :=1.0
4653  ,p_init_msg_list             IN        VARCHAR2        :=FND_API.G_TRUE
4654  ,p_commit                  IN  VARCHAR2        :=FND_API.G_FALSE
4655  ,p_validate_only             IN        VARCHAR2        :=FND_API.G_TRUE
4656  ,p_validation_level    IN      NUMBER  :=FND_API.G_VALID_LEVEL_FULL
4657  ,p_calling_module            IN        VARCHAR2        :='SELF_SERVICE'
4658  ,p_debug_mode        IN        VARCHAR2        :='N'
4659  ,p_max_msg_count             IN        NUMBER  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4660  ,p_project_id                      IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4661  ,P_OBJECT_TYPE                     IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4662  ,P_OBJECT_ID                       IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4663  ,P_PROGRESS_CYCLE_ID               IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4664  ,P_WQ_ENABLE_FLAG                  IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4665  ,P_REMAIN_EFFORT_ENABLE_FLAG       IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4666  ,P_PERCENT_COMP_ENABLE_FLAG        IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4667  ,P_NEXT_PROGRESS_UPDATE_DATE       IN DATE     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4668  ,p_action_set_id                   IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4669  ,p_TASK_WEIGHT_BASIS_CODE          IN VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4670  ,X_PROJ_PROGRESS_ATTR_ID           IN OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4671  ,P_ALLOW_COLLAB_PROG_ENTRY         IN VARCHAR2 := 'N'
4672  ,P_ALLW_PHY_PRCNT_CMP_OVERRIDES    IN VARCHAR2 := 'N'
4673  ,P_STRUCTURE_TYPE                  IN VARCHAR2 := 'WORKPLAN'
4674  ,x_return_status             OUT       NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4675  ,x_msg_count         OUT       NOCOPY NUMBER --File.Sql.39 bug 4440895
4676  ,x_msg_data                OUT         NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4677 ) IS
4678 
4679    l_api_name                      CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4680    l_api_version                   CONSTANT NUMBER      := 1.0;
4681 
4682    l_return_status                 VARCHAR2(1);
4683    l_msg_count                     NUMBER;
4684    l_msg_data                      VARCHAR2(250);
4685    l_data                          VARCHAR2(250);
4686    l_msg_index_out                 NUMBER;
4687    l_error_msg_code                VARCHAR2(250);
4688 
4689        l_PROGRESS_CYCLE_ID         NUMBER := null;
4690        l_WQ_ENABLE_FLAG            VARCHAR2(1) := null;
4691        l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4692        l_PERCENT_COMP_ENABLE_FLAG  VARCHAR2(1) := null;
4693        l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4694 
4695    --bug 3010538
4696    l_TASK_WEIGHT_BASIS_CODE         VARCHAR2(30);
4697    --end bug 3010538
4698 
4699 BEGIN
4700 
4701     IF g1_debug_mode  = 'Y' THEN
4702        pa_debug.init_err_stack ('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4703     END IF;
4704 
4705     IF (p_debug_mode = 'Y') THEN
4706       IF g1_debug_mode  = 'Y' THEN
4707          pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR');
4708       END IF;
4709     END IF;
4710 
4711     IF (p_commit = FND_API.G_TRUE) THEN
4712       savepoint CREATE_PROJ_PROG_ATTR;
4713     END IF;
4714 
4715     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4716       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4717     END IF;
4718 
4719     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4720       FND_MSG_PUB.initialize;
4721     END IF;
4722 
4723     IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4724     THEN
4725        l_PROGRESS_CYCLE_ID := null;
4726     ELSE
4727        l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4728     END IF;
4729 
4730     IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4731     THEN
4732        l_WQ_ENABLE_FLAG := 'N';
4733     ELSE
4734        l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4735     END IF;
4736 
4737     IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4738     THEN
4739        l_REMAIN_EFFORT_ENABLE_FLAG := 'N';
4740     ELSE
4741        l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4742     END IF;
4743 
4744     IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4745     THEN
4746        l_PERCENT_COMP_ENABLE_FLAG := 'N';
4747     ELSE
4748        l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4749     END IF;
4750 
4751     IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4752     THEN
4753        l_NEXT_PROGRESS_UPDATE_DATE := null;
4754     ELSE
4755        l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4756     END IF;
4757 
4758     --bug 3010538
4759     IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4760     THEN
4761        l_task_weight_basis_code := 'DURATION';
4762     ELSE
4763        l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
4764     END IF;
4765     --end bug 3010538
4766 
4767     PA_PROJ_PROGRESS_ATTR_PKG.INSERT_ROW(
4768            X_PROJ_PROGRESS_ATTR_ID           => X_PROJ_PROGRESS_ATTR_ID
4769           ,x_project_id                      => p_project_id
4770           ,X_OBJECT_TYPE                     => P_OBJECT_TYPE
4771           ,X_OBJECT_ID                       => P_OBJECT_ID
4772           ,X_LAST_UPDATE_DATE                => SYSDATE
4773           ,X_LAST_UPDATED_BY                 => FND_GLOBAL.user_id
4774           ,X_CREATION_DATE                   => SYSDATE
4775           ,X_CREATED_BY                      => FND_GLOBAL.user_id
4776           ,X_LAST_UPDATE_LOGIN               => FND_GLOBAL.login_id
4777           ,X_PROGRESS_CYCLE_ID               => l_PROGRESS_CYCLE_ID
4778           ,X_WQ_ENABLE_FLAG                  => l_WQ_ENABLE_FLAG
4779           ,X_REMAIN_EFFORT_ENABLE_FLAG       => l_REMAIN_EFFORT_ENABLE_FLAG
4780           ,X_PERCENT_COMP_ENABLE_FLAG        => l_PERCENT_COMP_ENABLE_FLAG
4781           ,X_NEXT_PROGRESS_UPDATE_DATE       => l_NEXT_PROGRESS_UPDATE_DATE
4782           ,X_TASK_WEIGHT_BASIS_CODE          => l_TASK_WEIGHT_BASIS_CODE
4783           ,X_ALLOW_COLLAB_PROG_ENTRY         => P_ALLOW_COLLAB_PROG_ENTRY
4784           ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES    => P_ALLW_PHY_PRCNT_CMP_OVERRIDES
4785           ,X_STRUCTURE_TYPE                  => P_STRUCTURE_TYPE
4786         );
4787 
4788     x_return_status := FND_API.G_RET_STS_SUCCESS;
4789 
4790     IF (p_commit = FND_API.G_TRUE) THEN
4791       COMMIT;
4792     END IF;
4793 
4794     IF (p_debug_mode = 'Y') THEN
4795       IF g1_debug_mode  = 'Y' THEN
4796          pa_debug.debug('PA_PROGRESS_PUB.CREATE_PROJ_PROG_ATTR END');
4797       END IF;
4798     END IF;
4799 
4800 EXCEPTION
4801     when FND_API.G_EXC_ERROR then
4802       if p_commit = FND_API.G_TRUE then
4803          rollback to CREATE_PROJ_PROG_ATTR;
4804       end if;
4805       x_return_status := FND_API.G_RET_STS_ERROR;
4806     when FND_API.G_EXC_UNEXPECTED_ERROR then
4807       if p_commit = FND_API.G_TRUE then
4808          rollback to CREATE_PROJ_PROG_ATTR;
4809       end if;
4810       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4811       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4812                               p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4813                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4814     when OTHERS then
4815       if p_commit = FND_API.G_TRUE then
4816          rollback to CREATE_PROJ_PROG_ATTR;
4817       end if;
4818       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4819       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
4820                               p_procedure_name => 'CREATE_PROJ_PROG_ATTR',
4821                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4822       raise;
4823 END CREATE_PROJ_PROG_ATTR;
4824 
4825 
4826 PROCEDURE UPDATE_PROJ_PROG_ATTR(
4827   p_api_version       IN        NUMBER  :=1.0
4828  ,p_init_msg_list             IN        VARCHAR2        :=FND_API.G_TRUE
4829  ,p_commit                  IN  VARCHAR2        :=FND_API.G_FALSE
4830  ,p_validate_only             IN        VARCHAR2        :=FND_API.G_TRUE
4831  ,p_validation_level    IN      NUMBER  :=FND_API.G_VALID_LEVEL_FULL
4832  ,p_calling_module            IN        VARCHAR2        :='SELF_SERVICE'
4833  ,p_debug_mode        IN        VARCHAR2        :='N'
4834  ,p_max_msg_count             IN        NUMBER  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4835  ,p_project_id                      IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4836  ,P_OBJECT_TYPE                     IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4837  ,P_OBJECT_ID                       IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4838  ,P_PROGRESS_CYCLE_ID               IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4839  ,P_WQ_ENABLE_FLAG                  IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4840  ,P_REMAIN_EFFORT_ENABLE_FLAG       IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4841  ,P_PERCENT_COMP_ENABLE_FLAG        IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4842  ,P_NEXT_PROGRESS_UPDATE_DATE       IN DATE     := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4843  ,p_action_set_id                   IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4844  ,p_TASK_WEIGHT_BASIS_CODE          IN VARCHAR2  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4845  ,P_PROJ_PROGRESS_ATTR_ID           IN NUMBER
4846  ,p_record_version_number           IN NUMBER
4847  ,p_allow_collab_prog_entry      IN     VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4848  ,p_allw_phy_prcnt_cmp_overrides IN     VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4849  ,p_structure_type               IN     VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4850  ,x_return_status             OUT       NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4851  ,x_msg_count         OUT       NOCOPY NUMBER --File.Sql.39 bug 4440895
4852  ,x_msg_data                OUT         NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4853 ) IS
4854 
4855    l_api_name                      CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
4856    l_api_version                   CONSTANT NUMBER      := 1.0;
4857 
4858    l_return_status                 VARCHAR2(1);
4859    l_msg_count                     NUMBER;
4860    l_msg_data                      VARCHAR2(250);
4861    l_data                          VARCHAR2(250);
4862    l_msg_index_out                 NUMBER;
4863    l_error_msg_code                VARCHAR2(250);
4864 
4865        l_PROGRESS_CYCLE_ID         NUMBER := null;
4866        l_WQ_ENABLE_FLAG            VARCHAR2(1) := null;
4867        l_REMAIN_EFFORT_ENABLE_FLAG VARCHAR2(1) := null;
4868        l_PERCENT_COMP_ENABLE_FLAG  VARCHAR2(1) := null;
4869        l_NEXT_PROGRESS_UPDATE_DATE DATE := null;
4870 
4871        l_old_enable_wq_flag            VARCHAR2(1) := null;
4872        l_old_REMAIN_EFF_ENABLE_FLAG VARCHAR2(1) := null;
4873        l_old_PERCENT_COMP_ENABLE_FLAG  VARCHAR2(1) := null;
4874 
4875    --bug 3010538
4876    l_TASK_WEIGHT_BASIS_CODE         VARCHAR2(30);
4877 
4878    CURSOR cur_task_weight_bas_code IS
4879      select task_weight_basis_code
4880        from pa_proj_progress_attr
4881       where proj_progress_attr_id = p_proj_progress_attr_id;
4882    l_old_tk_wght_basis_code         VARCHAR2(30);
4883    l_updt_struc_ver_id              NUMBER;
4884 
4885    --cursor to get structure version id of all non-published version
4886    CURSOR cur_get_wk_ver_struct_id IS
4887      select str.element_version_id
4888        from pa_proj_elem_ver_structure str,
4889             pa_proj_elements pe,
4890             pa_proj_structure_types pst
4891       where pe.project_id = p_project_id
4892         and pe.project_id = str.project_id
4893         and pe.proj_element_id = str.proj_element_id
4894         and str.status_code <> 'STRUCTURE_PUBLISHED'
4895         and pe.proj_element_id = pst.proj_element_id
4896         and pst.structure_type_id = 1;
4897 
4898    CURSOR cur_get_proj_temp_flag IS
4899      select template_flag from pa_projects_all where project_id = p_project_id;
4900    l_template_flag VARCHAR2(1);
4901 
4902    --cursor to get only structure version id (when version disabled)
4903    CURSOR cur_get_only_ver_struct_id IS
4904      select str.element_version_id
4905        from pa_proj_elem_ver_structure str,
4906             pa_proj_elements pe,
4907             pa_proj_structure_types pst
4908       where pe.project_id = p_project_id
4909         and pe.project_id = str.project_id
4910         and pe.proj_element_id = str.proj_element_id
4911         and pe.proj_element_id = pst.proj_element_id
4912         and pst.structure_type_id = 1;
4913    --end bug 3010538
4914 
4915   CURSOR cur_prg_attr
4916   IS
4917     SELECT WQ_ENABLE_FLAG, REMAIN_EFFORT_ENABLE_FLAG,
4918            PERCENT_COMP_ENABLE_FLAG
4919       FROM PA_PROJ_PROGRESS_ATTR
4920       WHERE PROJ_PROGRESS_ATTR_ID = p_PROJ_PROGRESS_ATTR_ID;
4921 
4922 -- Bug # 4576303.
4923 cursor cur_tasks_exist (c_str_ver_id NUMBER) is
4924 select 'Y'
4925 from pa_proj_element_versions ppev
4926 where ppev.parent_structure_version_id = c_str_ver_id
4927 and ppev.object_type = 'PA_TASKS';
4928 
4929 l_tasks_exist VARCHAR2(1) := null;
4930 -- Bug # 4576303.
4931 BEGIN
4932 
4933     IF g1_debug_mode  = 'Y' THEN
4934        pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4935     END IF;
4936 
4937     IF (p_debug_mode = 'Y') THEN
4938       IF g1_debug_mode  = 'Y' THEN
4939          pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR');
4940       END IF;
4941     END IF;
4942 
4943     IF (p_commit = FND_API.G_TRUE) THEN
4944       savepoint UPDATE_PROJ_PROG_ATTR;
4945     END IF;
4946 
4947     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4948       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4949     END IF;
4950 
4951     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4952       FND_MSG_PUB.initialize;
4953     END IF;
4954 
4955 /*    IF P_PROGRESS_CYCLE_ID = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4956     THEN
4957        l_PROGRESS_CYCLE_ID := null;
4958     ELSE
4959        l_PROGRESS_CYCLE_ID := P_PROGRESS_CYCLE_ID;
4960     END IF;
4961 
4962     IF p_WQ_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4963     THEN
4964        l_WQ_ENABLE_FLAG := null;
4965     ELSE
4966        l_WQ_ENABLE_FLAG := p_WQ_ENABLE_FLAG;
4967     END IF;
4968 
4969     IF p_REMAIN_EFFORT_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4970     THEN
4971        l_REMAIN_EFFORT_ENABLE_FLAG := null;
4972     ELSE
4973        l_REMAIN_EFFORT_ENABLE_FLAG := p_REMAIN_EFFORT_ENABLE_FLAG;
4974     END IF;
4975 
4976     IF p_PERCENT_COMP_ENABLE_FLAG = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4977     THEN
4978        l_PERCENT_COMP_ENABLE_FLAG := null;
4979     ELSE
4980        l_PERCENT_COMP_ENABLE_FLAG := p_PERCENT_COMP_ENABLE_FLAG;
4981     END IF;
4982 
4983     IF p_NEXT_PROGRESS_UPDATE_DATE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4984     THEN
4985        l_NEXT_PROGRESS_UPDATE_DATE := null;
4986     ELSE
4987        l_NEXT_PROGRESS_UPDATE_DATE := p_NEXT_PROGRESS_UPDATE_DATE;
4988     END IF;
4989 */
4990 
4991 /* Start commenting out as per Majid's email : 07-APR-2004.
4992 
4993     IF PA_PROGRESS_UTILS.PROJ_TASK_PROG_EXISTS( p_project_id, 0 ) = 'Y'
4994     THEN
4995         OPEN cur_prg_attr;
4996         FETCH cur_prg_attr INTO l_old_enable_wq_flag,
4997                                 l_old_REMAIN_EFF_ENABLE_FLAG ,
4998                                 l_old_PERCENT_COMP_ENABLE_FLAG;
4999         CLOSE cur_prg_attr;
5000 
5001         IF p_PERCENT_COMP_ENABLE_FLAG = 'N' AND
5002            l_old_PERCENT_COMP_ENABLE_FLAG = 'Y'
5003         THEN
5004             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5005                                  p_msg_name       => 'PA_TP_CANT_DIS_PC');
5006             x_msg_data := 'PA_TP_CANT_DIS_PC';
5007             x_return_status := 'E';
5008             RAISE  FND_API.G_EXC_ERROR;
5009         END IF;
5010 
5011        IF p_WQ_ENABLE_FLAG = 'N' AND
5012            l_old_enable_wq_flag = 'Y'
5013         THEN
5014             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5015                                  p_msg_name       => 'PA_TP_CANT_DIS_WQ');
5016             x_msg_data := 'PA_TP_CANT_DIS_WQ';
5017             x_return_status := 'E';
5018             RAISE  FND_API.G_EXC_ERROR;
5019         END IF;
5020 
5021        IF p_REMAIN_EFFORT_ENABLE_FLAG = 'N' AND
5022            l_old_REMAIN_EFF_ENABLE_FLAG = 'Y'
5023         THEN
5024             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5025                                  p_msg_name       => 'PA_TP_CANT_DIS_REM_EFF');
5026             x_msg_data := 'PA_TP_CANT_DIS_REM_EFF';
5027             x_return_status := 'E';
5028             RAISE  FND_API.G_EXC_ERROR;
5029         END IF;
5030 
5031     END IF;
5032 
5033    End commentng out as per Majid's email : 07-APR-2004. */
5034 
5035     --bug 3010538
5036     OPEN cur_task_weight_bas_code;
5037     FETCH cur_task_weight_bas_code into l_old_tk_wght_basis_code;
5038     CLOSE cur_task_weight_bas_code;
5039     IF p_TASK_WEIGHT_BASIS_CODE = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5040     THEN
5041        --no value passed; same as old value
5042        l_task_weight_basis_code := l_old_tk_wght_basis_code;
5043     ELSE
5044 --------------dbms_output.put_line('value passed '||p_task_weight_basis_code||','||l_old_tk_wght_basis_code);
5045        --value passed; check if different
5046        IF (p_task_weight_basis_code <> l_old_tk_wght_basis_code)
5047           AND p_structure_type = 'WORKPLAN'
5048        THEN
5049 --------------dbms_output.put_line('old <> new');
5050          --different; check if changing to DURATION or EFFORT
5051          IF (p_task_weight_basis_code = 'DURATION')
5052 	    -- OR  -- Bug # 4576303.
5053             -- (p_task_weight_basis_code = 'EFFORT')  -- Bug # 4576303.
5054 	 THEN
5055            --basis change; set update flag to Y
5056 --------------dbms_output.put_line('basis is duration or effort');
5057            OPEN cur_get_proj_temp_flag;
5058            FETCH cur_get_proj_temp_flag into l_template_flag;
5059            CLOSE cur_get_proj_temp_flag;
5060            IF ('Y'=PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) AND (l_template_flag = 'N')) THEN
5061 --------------dbms_output.put_line('versioning enabled');
5062              --get all working version for project
5063              OPEN cur_get_wk_ver_struct_id;
5064              LOOP
5065 --------------dbms_output.put_line('in loop '||p_project_id);
5066                FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
5067                EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
5068                --call API to update flag
5069                -- Bug # 4576303.
5070                open cur_tasks_exist (l_updt_struc_ver_id);
5071                fetch cur_tasks_exist into l_tasks_exist;
5072                close cur_tasks_exist;
5073                if (nvl(l_tasks_exist, 'N') = 'Y') then
5074 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5075               		 PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5076                                p_project_id => p_project_id,
5077                                p_structure_version_id => l_updt_struc_ver_id,
5078                                p_update_wbs_flag => 'Y',
5079                                x_return_status => l_return_status,
5080                                x_msg_count => l_msg_count,
5081                                x_msg_data => l_msg_data
5082                                );
5083               end if;
5084               -- Bug # 4576303.
5085 --------------dbms_output.put_line('ret stat = '||l_return_status);
5086                IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5087                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5088                                       p_msg_name       => l_msg_data
5089                                      );
5090                  x_msg_data := l_msg_data;
5091                  x_return_status := 'E';
5092                  CLOSE cur_get_wk_ver_struct_id;
5093                  RAISE  FND_API.G_EXC_ERROR;
5094                END IF;
5095              END LOOP;
5096              CLOSE cur_get_wk_ver_struct_id;
5097            ELSE
5098 --------------dbms_output.put_line('versioning disabled');
5099              --get only version, project or template
5100              OPEN cur_get_only_ver_struct_id;
5101              FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
5102 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5103              CLOSE cur_get_only_ver_struct_id;
5104              -- Bug # 4576303.
5105              open cur_tasks_exist (l_updt_struc_ver_id);
5106              fetch cur_tasks_exist into l_tasks_exist;
5107              close cur_tasks_exist;
5108              if (nvl(l_tasks_exist, 'N') = 'Y') then
5109              --call API to update flag
5110              		PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5111                                p_project_id => p_project_id,
5112                                p_structure_version_id => l_updt_struc_ver_id,
5113                                p_update_wbs_flag => 'Y',
5114                                x_return_status => l_return_status,
5115                                x_msg_count => l_msg_count,
5116                                x_msg_data => l_msg_data
5117                                );
5118               end if;
5119               -- Bug # 4576303.
5120 --------------dbms_output.put_line('ret stat = '||l_return_status);
5121              IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5122                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5123                                     p_msg_name       => l_msg_data
5124                                    );
5125                x_msg_data := l_msg_data;
5126                x_return_status := 'E';
5127                RAISE  FND_API.G_EXC_ERROR;
5128              END IF;
5129            END IF;
5130          ELSE
5131            --3035902: process update flag changes; added check for
5132            --sharing disabled
5133            --set update flag to N when changing to MANUAL and
5134            --if this is split structure; otherwise no change
5135            IF ('Y'=PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) AND (l_template_flag = 'N') AND (PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'N')) THEN
5136              --versioning enabled
5137              OPEN cur_get_wk_ver_struct_id;
5138              LOOP
5139 --------------dbms_output.put_line('in loop '||p_project_id);
5140                FETCH cur_get_wk_ver_struct_id Into l_updt_struc_ver_id;
5141                EXIT when cur_get_wk_ver_struct_id%NOTFOUND;
5142                --call API to update flag
5143 --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5144                PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5145                                p_project_id => p_project_id,
5146                                p_structure_version_id => l_updt_struc_ver_id,
5147                                p_update_wbs_flag => 'N',
5148                                x_return_status => l_return_status,
5149                                x_msg_count => l_msg_count,
5150                                x_msg_data => l_msg_data
5151                                );
5152 --------------dbms_output.put_line('ret stat = '||l_return_status);
5153                IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5154                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5155                                       p_msg_name       => l_msg_data
5156                                      );
5157                  x_msg_data := l_msg_data;
5158                  x_return_status := 'E';
5159                  CLOSE cur_get_wk_ver_struct_id;
5160                  RAISE  FND_API.G_EXC_ERROR;
5161                END IF;
5162              END LOOP;
5163              CLOSE cur_get_wk_ver_struct_id;
5164            ELSE
5165              -- Added if clause for bug#3066833
5166              IF PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'N' THEN
5167                      --get only version, project or template
5168                      OPEN cur_get_only_ver_struct_id;
5169                      FETCH cur_get_only_ver_struct_id Into l_updt_struc_ver_id;
5170         --------------dbms_output.put_line('update '||l_updt_struc_ver_id);
5171                      CLOSE cur_get_only_ver_struct_id;
5172                      --call API to update flag
5173                      PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG(
5174                                        p_project_id => p_project_id,
5175                                        p_structure_version_id => l_updt_struc_ver_id,
5176                                        p_update_wbs_flag => 'N',
5177                                        x_return_status => l_return_status,
5178                                        x_msg_count => l_msg_count,
5179                                        x_msg_data => l_msg_data
5180                                        );
5181         --------------dbms_output.put_line('ret stat = '||l_return_status);
5182                      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5183                        PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
5184                                             p_msg_name       => l_msg_data
5185                                            );
5186                        x_msg_data := l_msg_data;
5187                        x_return_status := 'E';
5188                        RAISE  FND_API.G_EXC_ERROR;
5189                      END IF;
5190             END IF ;
5191            END IF;
5192          END IF;
5193        END IF;
5194        l_task_weight_basis_code := p_TASK_WEIGHT_BASIS_CODE;
5195     END IF;
5196     --end bug 3010538
5197 
5198     PA_PROJ_PROGRESS_ATTR_PKG.UPDATE_ROW(
5199            X_PROJ_PROGRESS_ATTR_ID           => P_PROJ_PROGRESS_ATTR_ID
5200           ,X_project_id                      => p_project_id
5201           ,X_OBJECT_TYPE                     => p_OBJECT_TYPE
5202           ,X_OBJECT_ID                       => p_OBJECT_ID
5203           ,X_LAST_UPDATE_DATE                => SYSDATE
5204           ,X_LAST_UPDATED_BY                 => FND_GLOBAL.user_id
5205           ,X_LAST_UPDATE_LOGIN               => FND_GLOBAL.login_id
5206           ,X_PROGRESS_CYCLE_ID               => p_PROGRESS_CYCLE_ID
5207           ,X_WQ_ENABLE_FLAG                  => p_WQ_ENABLE_FLAG
5208           ,X_REMAIN_EFFORT_ENABLE_FLAG       => p_REMAIN_EFFORT_ENABLE_FLAG
5209           ,X_PERCENT_COMP_ENABLE_FLAG        => p_PERCENT_COMP_ENABLE_FLAG
5210           ,X_NEXT_PROGRESS_UPDATE_DATE       => p_NEXT_PROGRESS_UPDATE_DATE
5211           ,X_record_version_number           => p_record_version_number
5212           ,X_TASK_WEIGHT_BASIS_CODE          => l_task_weight_basis_code
5213           ,X_ALLOW_COLLAB_PROG_ENTRY         => p_allow_collab_prog_entry
5214           ,X_ALLW_PHY_PRCNT_CMP_OVERRIDES    => p_allw_phy_prcnt_cmp_overrides
5215           ,X_STRUCTURE_TYPE                  => p_structure_type
5216         );
5217 
5218     x_return_status := FND_API.G_RET_STS_SUCCESS;
5219 
5220     IF (p_commit = FND_API.G_TRUE) THEN
5221       COMMIT;
5222     END IF;
5223 
5224     IF (p_debug_mode = 'Y') THEN
5225       IF g1_debug_mode  = 'Y' THEN
5226          pa_debug.debug('PA_PROGRESS_PUB.UPDATE_PROJ_PROG_ATTR END');
5227       END IF;
5228     END IF;
5229 
5230 EXCEPTION
5231     when FND_API.G_EXC_ERROR then
5232       if p_commit = FND_API.G_TRUE then
5233          rollback to UPDATE_PROJ_PROG_ATTR;
5234       end if;
5235       x_return_status := FND_API.G_RET_STS_ERROR;
5236     when FND_API.G_EXC_UNEXPECTED_ERROR then
5237       if p_commit = FND_API.G_TRUE then
5238          rollback to UPDATE_PROJ_PROG_ATTR;
5239       end if;
5240       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5241       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5242                               p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
5243                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5244     when OTHERS then
5245       if p_commit = FND_API.G_TRUE then
5246          rollback to UPDATE_PROJ_PROG_ATTR;
5247       end if;
5248       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5249       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5250                               p_procedure_name => 'UPDATE_PROJ_PROG_ATTR',
5251                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5252       raise;
5253 END UPDATE_PROJ_PROG_ATTR;
5254 
5255 PROCEDURE DELETE_PROJ_PROG_ATTR(
5256   p_api_version       IN        NUMBER  :=1.0
5257  ,p_init_msg_list             IN        VARCHAR2        :=FND_API.G_TRUE
5258  ,p_commit                  IN  VARCHAR2        :=FND_API.G_FALSE
5259  ,p_validate_only             IN        VARCHAR2        :=FND_API.G_TRUE
5260  ,p_validation_level    IN      NUMBER  :=FND_API.G_VALID_LEVEL_FULL
5261  ,p_calling_module            IN        VARCHAR2        :='SELF_SERVICE'
5262  ,p_debug_mode        IN        VARCHAR2        :='N'
5263  ,p_max_msg_count             IN        NUMBER  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5264  ,p_project_id                      IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5265  ,P_OBJECT_TYPE                     IN VARCHAR2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5266  ,P_OBJECT_ID                       IN NUMBER   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5267  ,p_structure_type                  IN VARCHAR2 := 'WORKPLAN' -- Amit
5268  ,x_return_status             OUT       NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5269  ,x_msg_count         OUT       NOCOPY NUMBER --File.Sql.39 bug 4440895
5270  ,x_msg_data                OUT         NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5271 ) IS
5272 
5273    l_api_name                      CONSTANT VARCHAR(30) := 'DELETE_PROJ_PROG_ATTR';
5274    l_api_version                   CONSTANT NUMBER      := 1.0;
5275 
5276    l_return_status                 VARCHAR2(1);
5277    l_msg_count                     NUMBER;
5278    l_msg_data                      VARCHAR2(250);
5279    l_data                          VARCHAR2(250);
5280    l_msg_index_out                 NUMBER;
5281    l_error_msg_code                VARCHAR2(250);
5282 
5283    CURSOR cur_ppp
5284    IS
5285      SELECT rowid
5286        FROM pa_proj_progress_attr
5287       WHERE project_id = p_project_id
5288         AND object_type = p_object_type
5289         AND object_id = p_object_id
5290         AND structure_type = p_structure_type; -- Amit
5291 
5292    l_ppp_row_id     VARCHAR2(18);
5293 
5294 BEGIN
5295 
5296     IF g1_debug_mode  = 'Y' THEN
5297        pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
5298     END IF;
5299 
5300     IF (p_debug_mode = 'Y') THEN
5301       IF g1_debug_mode  = 'Y' THEN
5302          pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR');
5303       END IF;
5304     END IF;
5305 
5306     IF (p_commit = FND_API.G_TRUE) THEN
5307       savepoint DELETE_PROJ_PROG_ATTR; --Amit
5308     END IF;
5309 
5310     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5311       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5312     END IF;
5313 
5314     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5315       FND_MSG_PUB.initialize;
5316     END IF;
5317 
5318     OPEN cur_ppp;
5319     FETCH cur_ppp INTO l_ppp_row_id;
5320     CLOSE cur_ppp;
5321 
5322     PA_PROJ_PROGRESS_ATTR_PKG.DELETE_ROW( l_ppp_row_id
5323         );
5324 
5325     x_return_status := FND_API.G_RET_STS_SUCCESS;
5326 
5327     IF (p_commit = FND_API.G_TRUE) THEN
5328       COMMIT;
5329     END IF;
5330 
5331     IF (p_debug_mode = 'Y') THEN
5332       IF g1_debug_mode  = 'Y' THEN
5333          pa_debug.debug('PA_PROGRESS_PUB.DELETE_PROJ_PROG_ATTR END');
5334       END IF;
5335     END IF;
5336 
5337 EXCEPTION
5338     when FND_API.G_EXC_ERROR then
5339       if p_commit = FND_API.G_TRUE then
5340          rollback to DELETE_PROJ_PROG_ATTR;
5341       end if;
5342       x_return_status := FND_API.G_RET_STS_ERROR;
5343     when FND_API.G_EXC_UNEXPECTED_ERROR then
5344       if p_commit = FND_API.G_TRUE then
5345          rollback to DELETE_PROJ_PROG_ATTR;
5346       end if;
5347       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5348       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5349                               p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
5350                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5351     when OTHERS then
5352       if p_commit = FND_API.G_TRUE then
5353          rollback to DELETE_PROJ_PROG_ATTR;
5354       end if;
5355       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5356       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5357                               p_procedure_name => 'DELETE_PROJ_PROG_ATTR',
5358                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5359       raise;
5360 END DELETE_PROJ_PROG_ATTR;
5361 
5362 PROCEDURE delete_progress_record(
5363   p_api_version       IN        NUMBER  :=1.0
5364  ,p_init_msg_list             IN        VARCHAR2        :=FND_API.G_TRUE
5365  ,p_commit                  IN  VARCHAR2        :=FND_API.G_FALSE
5366  ,p_validate_only             IN        VARCHAR2        :=FND_API.G_TRUE
5367  ,p_validation_level    IN      NUMBER  :=FND_API.G_VALID_LEVEL_FULL
5368  ,p_calling_module            IN        VARCHAR2        :='SELF_SERVICE'
5369  ,p_debug_mode        IN        VARCHAR2        :='N'
5370  ,p_max_msg_count             IN        NUMBER  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5371  ,p_structure_version_id         IN    NUMBER      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5372  ,p_task_version_id              IN    NUMBER      := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5373  ,x_return_status             OUT       NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5374  ,x_msg_count         OUT       NOCOPY NUMBER --File.Sql.39 bug 4440895
5375  ,x_msg_data                OUT         NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5376 ) IS
5377 
5378    l_api_name                      CONSTANT VARCHAR(30) := 'CREATE_PROJ_PROG_ATTR';
5379    l_api_version                   CONSTANT NUMBER      := 1.0;
5380 
5381    l_return_status                 VARCHAR2(1);
5382    l_msg_count                     NUMBER;
5383    l_msg_data                      VARCHAR2(250);
5384    l_data                          VARCHAR2(250);
5385    l_msg_index_out                 NUMBER;
5386    l_error_msg_code                VARCHAR2(250);
5387 
5388    CURSOR cur_pa_ppc_str( c_project_id NUMBER, c_proj_element_id NUMBER )
5389    IS
5390      SELECT rowid
5391        FROM pa_percent_completes
5392       WHERE object_version_id = p_structure_version_id
5393         AND object_id = c_proj_element_id
5394         AND project_id = c_project_id
5395         AND object_type = 'PA_STRUCTURES';
5396 
5397    CURSOR cur_pa_ppr_str( c_project_id NUMBER, c_proj_element_id NUMBER )
5398    IS
5399      SELECT rowid
5400        FROM pa_progress_rollup
5401       WHERE object_version_id = p_structure_version_id
5402         AND object_id = c_proj_element_id
5403         AND project_id = c_project_id
5404         AND object_type = 'PA_STRUCTURES';
5405 
5406    CURSOR cur_pa_ppc_tsk( c_project_id NUMBER, c_proj_element_id NUMBER )
5407    IS
5408      SELECT rowid
5409        FROM pa_percent_completes
5410       WHERE object_version_id = p_task_version_id
5411         AND object_id = c_proj_element_id
5412         AND project_id = c_project_id
5413         AND object_type = 'PA_TASKS';
5414 
5415    CURSOR cur_pa_ppr_tsk ( c_project_id NUMBER, c_proj_element_id NUMBER )
5416    IS
5417      SELECT rowid
5418        FROM pa_progress_rollup
5419       WHERE object_version_id = p_task_version_id
5420         AND object_id = c_proj_element_id
5421         AND project_id = c_project_id
5422         AND object_type = 'PA_TASKS';
5423 
5424    CURSOR cur_ppevs( c_element_version_id NUMBER )
5425    IS
5426      SELECT project_id, proj_element_id
5427        FROM pa_proj_element_versions
5428       WHERE element_version_id = c_element_version_id
5429      ;
5430 
5431   l_rollup_row_id  VARCHAR2(18);
5432   l_ppc_row_id     VARCHAR2(18);
5433   l_proj_element_id  NUMBER;
5434   l_project_id  NUMBER;
5435 BEGIN
5436 
5437     IF g1_debug_mode  = 'Y' THEN
5438        pa_debug.init_err_stack ('PA_PROGRESS_PUB.delete_progress_record');
5439     END IF;
5440 
5441     IF (p_debug_mode = 'Y') THEN
5442       IF g1_debug_mode  = 'Y' THEN
5443          pa_debug.debug('PA_PROGRESS_PUB.delete_progress_record');
5444       END IF;
5445     END IF;
5446 
5447     IF (p_commit = FND_API.G_TRUE) THEN
5448       savepoint delete_progress_record;
5449     END IF;
5450 
5451     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5452       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5453     END IF;
5454 
5455     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5456       FND_MSG_PUB.initialize;
5457     END IF;
5458 
5459     IF p_task_version_id is NULL OR p_task_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5460     THEN
5461         OPEN cur_ppevs( p_structure_version_id );
5462         FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5463         CLOSE cur_ppevs;
5464 
5465         OPEN cur_pa_ppc_str( l_project_id, l_proj_element_id );
5466         FETCH cur_pa_ppc_str INTO l_ppc_row_id;
5467         CLOSE cur_pa_ppc_str;
5468 
5469         OPEN cur_pa_ppr_str( l_project_id, l_proj_element_id );
5470         FETCH cur_pa_ppr_str INTO l_rollup_row_id;
5471         CLOSE cur_pa_ppr_str;
5472     ELSIF p_structure_version_id IS NOT NULL AND p_structure_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM AND
5473           p_task_version_id IS NOT NULL AND p_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5474     THEN
5475 
5476         OPEN cur_ppevs( p_task_version_id );
5477         FETCH cur_ppevs INTO l_project_id, l_proj_element_id;
5478         CLOSE cur_ppevs;
5479 
5480         OPEN cur_pa_ppc_tsk( l_project_id, l_proj_element_id );
5481         FETCH cur_pa_ppc_tsk INTO l_ppc_row_id;
5482         CLOSE cur_pa_ppc_tsk;
5483 
5484         OPEN cur_pa_ppr_tsk( l_project_id, l_proj_element_id );
5485         FETCH cur_pa_ppr_tsk INTO l_rollup_row_id;
5486         CLOSE cur_pa_ppr_tsk;
5487     END IF;
5488 
5489     PA_PERCENT_COMPLETES_PKG.DELETE_ROW( l_ppc_row_id );
5490     PA_PROGRESS_ROLLUP_PKG.DELETE_ROW( l_rollup_row_id );
5491 
5492 EXCEPTION
5493     when FND_API.G_EXC_ERROR then
5494       if p_commit = FND_API.G_TRUE then
5495          rollback to delete_progress_record;
5496       end if;
5497       x_return_status := FND_API.G_RET_STS_ERROR;
5498     when FND_API.G_EXC_UNEXPECTED_ERROR then
5499       if p_commit = FND_API.G_TRUE then
5500          rollback to delete_progress_record;
5501       end if;
5502       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5503       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5504                               p_procedure_name => 'delete_progress_record',
5505                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5506     when OTHERS then
5507       if p_commit = FND_API.G_TRUE then
5508          rollback to delete_progress_record;
5509       end if;
5510       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5511       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5512                               p_procedure_name => 'delete_progress_record',
5513                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5514       raise;
5515 END delete_progress_record;
5516 
5517 
5518 PROCEDURE push_down_task_status(
5519   p_api_version       IN        NUMBER  :=1.0
5520  ,p_init_msg_list             IN        VARCHAR2        :=FND_API.G_TRUE
5521  ,p_commit                  IN  VARCHAR2        :=FND_API.G_FALSE
5522  ,p_validate_only             IN        VARCHAR2        :=FND_API.G_TRUE
5523  ,p_validation_level    IN      NUMBER  :=FND_API.G_VALID_LEVEL_FULL
5524  ,p_calling_module            IN        VARCHAR2        :='SELF_SERVICE'
5525  ,p_debug_mode        IN        VARCHAR2        :='N'
5526  ,p_max_msg_count             IN        NUMBER  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5527  ,p_task_status         IN    VARCHAR2
5528  ,p_project_id                IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5529  ,p_object_id         IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5530  ,p_object_version_id    IN NUMBER := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5531  ,p_object_type       IN Varchar2 := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
5532  ,p_as_of_date          IN DATE   := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5533  ,p_actual_finish_date  IN DATE := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
5534  ,p_structure_type      IN VARCHAR2 := 'WORKPLAN'
5535  ,x_return_status             OUT       NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5536  ,x_msg_count         OUT       NOCOPY NUMBER --File.Sql.39 bug 4440895
5537  ,x_msg_data                OUT         NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5538 ) IS
5539 
5540    l_api_name                      CONSTANT VARCHAR(30) := 'push_down_task_status';
5541    l_api_version                   CONSTANT NUMBER      := 1.0;
5542 
5543    l_return_status                 VARCHAR2(1);
5544    l_msg_count                     NUMBER;
5545    l_msg_data                      VARCHAR2(250);
5546    l_data                          VARCHAR2(250);
5547    l_msg_index_out                 NUMBER;
5548    l_error_msg_code                VARCHAR2(250);
5549    l_structure_version_id      NUMBER;
5550 
5551 -- 3922325 : Added pa_proj_elem_ver_schedule join to get scheduled_start_date
5552 -- 4743866, modified the cursor below as join with ppc is not required in most of the cases
5553    CURSOR cur_tasks
5554    IS
5555      SELECT pobj.object_id_to1, ppev1.proj_element_id,
5556             sch.scheduled_start_date
5557        FROM
5558      ( SELECT object_id_from1, object_id_to1
5559        FROM pa_object_relationships
5560        START WITH object_id_from1 = p_object_version_id
5561        and relationship_type = 'S'
5562        CONNECT BY object_id_from1 = PRIOR  object_id_to1
5563        and relationship_type = 'S'
5564        UNION -- Bug 3878024 : Added Union
5565        SELECT to_number(null) object_id_from1, p_object_version_id object_id_to1
5566        FROM DUAL
5567        ) pobj,
5568                                  pa_proj_element_versions ppev1,
5569                                  pa_proj_elem_ver_schedule sch
5570      WHERE pobj.object_id_to1 = ppev1.element_version_id
5571        AND ppev1.element_version_id = sch.element_version_id;
5572 
5573   ---4743866, added following cursor on ppc to get required info
5574     cursor get_task_pc_info(l_obj_id  number) is
5575      select completed_percentage, published_flag, current_flag,
5576             actual_start_date, actual_finish_date
5577       from
5578             pa_percent_completes ppc
5579      WHERE ppc.object_id = l_obj_id
5580        AND ppc.object_type = 'PA_TASKS'
5581        AND ppc.structure_type = 'WORKPLAN' -- FPM Dev CR 3
5582        AND ppc.project_id = p_project_id
5583        AND ((ppc.current_flag = 'N' AND ppc.published_flag = 'N') OR
5584            (ppc.current_flag = 'Y' AND ppc.published_flag = 'Y'))
5585        ;
5586      get_task_pc_info_rec   get_task_pc_info%rowtype;  ---4743866
5587 
5588    -- 3922325 : Added assignment_start_date
5589    -- Bug 3878024 Begin
5590    -- 4871809 removed union and added outer join to ppr
5591    CURSOR cur_task_assignments(c_task_version_id NUMBER, c_task_id NUMBER)
5592    IS
5593        SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5594        , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5595        , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5596        , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5597        , nvl(ppr.current_flag,'X') current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5598        , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5599        , ppr.PPL_ACT_EFFORT_TO_DATE, ppr.PPL_ACT_COST_TO_DATE_TC, ppr.PPL_ACT_COST_TO_DATE_PC, ppr.PPL_ACT_COST_TO_DATE_FC
5600        , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5601        , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5602        , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5603        , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5604        , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5605        , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, ppr.OTH_ETC_QUANTITY, ppr.OTH_ETC_COST_TC, ppr.OTH_ETC_COST_PC, ppr.OTH_ETC_COST_FC
5606        , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5607        , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5608        , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5609        , ppr.as_of_date
5610        , ptav.assignment_start_date
5611        FROM pa_task_asgmts_V ptav
5612           , pa_progress_rollup ppr
5613        WHERE ptav.task_version_id = c_task_version_id
5614 --     AND ptav.structure_version_id = l_structure_version_id
5615        AND ptav.task_id = c_task_id
5616        AND ptav.project_id = p_project_id
5617        AND ptav.ta_display_flag = 'Y'
5618        AND ppr.object_id(+) = ptav.resource_list_member_id
5619        AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
5620        AND ppr.proj_element_id(+) =  c_task_id
5621        AND ppr.current_flag(+) <> 'N' ---IN  ('Y', 'W')
5622        AND ppr.project_id(+) = p_project_id
5623        AND ppr.structure_type(+) = 'WORKPLAN'
5624        AND ppr.structure_version_id(+) is null
5625        ;
5626 
5627    l_old_status_code    VARCHAR2(150);
5628    l_status_code        VARCHAR2(150);
5629    g1_debug_mode        VARCHAR2(1);
5630    L_PUSH_AS_OF_DATE    Date;
5631    l_etc_txn_raw_cost_this_period      NUMBER                                        ;
5632    l_etc_prj_raw_cost_this_period      NUMBER                                        ;
5633    l_etc_pfc_raw_cost_this_period      NUMBER                                        ;
5634    l_etc_txn_bur_cost_this_period      NUMBER                                        ;
5635    l_etc_prj_bur_cost_this_period      NUMBER                                        ;
5636    l_etc_pfc_bur_cost_this_period      NUMBER                                        ;
5637    l_etc_effort_incr               NUMBER                                       ;
5638     l_etc_txn_raw_cost_last        NUMBER;
5639     l_etc_prj_raw_cost_last        NUMBER;
5640     l_etc_pfc_raw_cost_last        NUMBER;
5641     l_etc_txn_bur_cost_last        NUMBER;
5642     l_etc_prj_bur_cost_last        NUMBER;
5643     l_etc_pfc_bur_cost_last        NUMBER;
5644     L_ETC_EFFORT_LAST          NUMBER;
5645     l_msg_code             VARCHAR2(30);
5646     L_BASE_STRUCT_VER_ID       NUMBER;
5647     l_cur_task_old_status_code     VARCHAR2(150);
5648     L_LOWEST_LEVEL_TASK        VARCHAR2(1);
5649     L_ASSIGNMENT_EXISTS        VARCHAR2(1);
5650 
5651     l_percent_complete      NUMBER;
5652     l_percent_complete_id   NUMBER;
5653 
5654    -- 4490532 For Hidden assignment Progress record, now we should not be reading the
5655    -- Tasks progress record, instead ot shd be Assignments
5656    -- Because tasks Progress record store Cumulative amounts from subproject too
5657    -- 4871809 removed union and added outer join to ppr
5658    CURSOR cur_system_assignment(c_task_version_id NUMBER, c_task_id NUMBER)
5659    IS
5660        SELECT ptav.resource_class_code, ptav.RESOURCE_ALIAS, ptav.resource_list_member_id, ptav.rate_based_flag, ptav.rbs_element_id
5661        , ptav.task_id proj_element_id, ptav.task_version_id, ptav.planned_quantity, ptav.planned_bur_cost_txn_cur
5662        , ptav.planned_bur_cost_projfunc, ptav.planned_bur_cost_proj_cur, ptav.planned_raw_cost_txn_cur
5663        , ptav.planned_raw_cost_proj_cur , ptav.planned_raw_cost_projfunc, ptav.txn_currency_code
5664        , ppr.current_flag, ppr.estimated_remaining_effort, ppr.PPL_ETC_COST_TC, ppr.PPL_ETC_COST_PC
5665        , ppr.PPL_ETC_COST_FC, ppr.PPL_ETC_RAWCOST_TC, ppr.PPL_ETC_RAWCOST_PC, ppr.PPL_ETC_RAWCOST_FC
5666        , ppr.PPL_ACT_EFFORT_TO_DATE, ppr.PPL_ACT_COST_TO_DATE_TC, ppr.PPL_ACT_COST_TO_DATE_PC, ppr.PPL_ACT_COST_TO_DATE_FC
5667        , ppr.PPL_ACT_RAWCOST_TO_DATE_TC, ppr.PPL_ACT_RAWCOST_TO_DATE_PC, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5668        , ppr.EQPMT_ETC_EFFORT, ppr.EQPMT_ETC_COST_TC, ppr.EQPMT_ETC_COST_PC, ppr.EQPMT_ETC_COST_FC
5669        , ppr.EQPMT_ETC_RAWCOST_TC, ppr.EQPMT_ETC_RAWCOST_PC, ppr.EQPMT_ETC_RAWCOST_FC
5670        , ppr.EQPMT_ACT_EFFORT_TO_DATE, ppr.EQPMT_ACT_COST_TO_DATE_TC, ppr.EQPMT_ACT_COST_TO_DATE_PC
5671        , ppr.EQPMT_ACT_COST_TO_DATE_FC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5672        , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, ppr.OTH_ETC_QUANTITY, ppr.OTH_ETC_COST_TC, ppr.OTH_ETC_COST_PC, ppr.OTH_ETC_COST_FC
5673        , ppr.OTH_ETC_RAWCOST_TC, ppr.OTH_ETC_RAWCOST_PC, ppr.OTH_ETC_RAWCOST_FC, ppr.OTH_QUANTITY_TO_DATE
5674        , ppr.OTH_ACT_COST_TO_DATE_TC, ppr.OTH_ACT_COST_TO_DATE_PC, ppr.OTH_ACT_COST_TO_DATE_FC
5675        , ppr.OTH_ACT_RAWCOST_TO_DATE_TC, ppr.OTH_ACT_RAWCOST_TO_DATE_PC, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5676        , ppr.as_of_date
5677        , ptav.assignment_start_date
5678        FROM pa_task_asgmts_V ptav
5679           , pa_progress_rollup ppr
5680        WHERE ptav.task_version_id = c_task_version_id
5681 --       AND ptav.structure_version_id = l_structure_version_id
5682        AND ptav.task_id = c_task_id
5683        AND ptav.project_id = p_project_id
5684        AND ptav.ta_display_flag = 'N'
5685        -- 4490532AND ppr.object_id = c_task_id
5686        -- 4490532AND ppr.object_type = 'PA_TASKS'
5687        AND ppr.object_id(+) = ptav.resource_list_member_id -- 4490532
5688        AND ppr.object_type(+) = 'PA_ASSIGNMENTS' -- 4490532
5689        AND ppr.proj_element_id(+) =  c_task_id
5690        AND ppr.current_flag(+) <> 'N'  ----IN  ('Y', 'W')
5691        AND ppr.project_id(+) = p_project_id
5692        AND ppr.structure_type(+) = 'WORKPLAN'
5693        AND ppr.structure_version_id(+) is null
5694        ;
5695 
5696        L_PROGRESS_ROLLUP_ID NUMBER;
5697        L_PROG_PA_PERIOD_NAME    pa_progress_rollup.prog_pa_period_name%TYPE;
5698        L_PROG_GL_PERIOD_NAME    pa_progress_rollup.prog_gl_period_name%TYPE;
5699        l_user_id        NUMBER:= fnd_global.user_id;
5700        l_login_id       NUMBER:= fnd_global.login_id;
5701    -- Bug 3878024 End
5702 
5703 -- Bug 4282618 Begin
5704 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
5705 IS
5706    SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
5707      from pa_task_types ttype
5708      , pa_proj_elements elem
5709     where elem.project_id = p_project_id
5710      and elem.proj_element_id = c_proj_element_id
5711      and elem.object_type = 'PA_TASKS'
5712      and elem.type_id = ttype.task_type_id;
5713 
5714 l_prog_enabled                  VARCHAR2(1);
5715 l_prog_stats_code               VARCHAR2(150);
5716 -- Bug 4282618 End
5717 
5718 
5719 BEGIN
5720 
5721     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
5722 
5723     IF g1_debug_mode  = 'Y' THEN
5724        pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_down_task_status');
5725     END IF;
5726 
5727    IF g1_debug_mode  = 'Y' THEN
5728     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Log_Level=> 3);
5729     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
5730     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_system_task_status='||PA_PROGRESS_UTILS.get_system_task_status( p_task_status ), x_Log_Level=> 3);
5731     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
5732     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
5733     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
5734     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
5735     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
5736     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
5737     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
5738     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
5739    END IF;
5740 
5741     -- Initialize OUT params : 5209741
5742     x_return_status := FND_API.G_RET_STS_SUCCESS;
5743     x_msg_data := NULL ;
5744     x_msg_count := 0 ;
5745     -- End : 5209741
5746 
5747     IF (p_commit = FND_API.G_TRUE) THEN
5748       savepoint push_down_task_status;
5749     END IF;
5750 
5751     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
5752       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5753     END IF;
5754 
5755     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
5756       FND_MSG_PUB.initialize;
5757     END IF;
5758 
5759     -- Bug 3878024 : Begin
5760     BEGIN
5761     SELECT parent_structure_version_id INTO l_structure_version_id
5762     FROM pa_proj_element_versions
5763     WHERE element_version_id = p_object_version_id;
5764     EXCEPTION
5765     WHEN OTHERS THEN
5766            fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
5767                             p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
5768                             p_error_text     => 'Unexpected Error : Structure Version Id can not be found. Please contact System Administrator.');
5769 
5770             RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
5771     END;
5772     -- Bug 3878024 : End;
5773     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
5774 
5775     l_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,p_object_id);
5776 
5777 ------------------  Added for FP_M changes : BEGIN
5778 
5779     IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'COMPLETED' )
5780     THEN
5781 
5782 
5783     -- Bug 3878024 : The following code is not needed. Now the passed task is taken in the cursosr itself.
5784         /*
5785         --Update pa_proj_elements
5786         UPDATE pa_proj_elements
5787            SET status_code = p_task_status
5788           WHERE proj_element_id = p_object_id
5789             AND project_id = p_project_id;
5790 
5791           -- Update Percent complete --
5792         UPDATE pa_percent_completes
5793         SET status_code = p_task_status,
5794             completed_percentage = 100,
5795             Actual_Finish_date   = p_actual_finish_date
5796         WHERE object_id = P_Object_ID
5797         AND project_id = p_project_id
5798         AND date_computed = p_as_of_date
5799         AND structure_type = p_structure_type
5800         ;
5801 
5802         --Update pa_progress_rollup
5803         UPDATE pa_progress_rollup
5804            SET completed_percentage = 100,
5805                    Actual_Finish_date  = p_actual_finish_date,
5806                    EQPMT_ETC_EFFORT = 0,
5807                    OTH_ETC_COST_TC = 0,
5808                    OTH_ETC_COST_FC = 0,
5809                    OTH_ETC_COST_PC = 0,
5810                    PPL_ETC_COST_TC= 0,
5811                    PPL_ETC_COST_FC= 0,
5812                    PPL_ETC_COST_PC = 0,
5813                    EQPMT_ETC_COST_TC = 0,
5814                    EQPMT_ETC_COST_FC = 0,
5815                    EQPMT_ETC_COST_PC = 0
5816           WHERE object_id = p_object_id
5817           and current_flag = 'Y'
5818           AND as_of_date = p_as_of_date
5819           AND structure_type = p_structure_type
5820       AND structure_version_id IS NULL -- Bug 3764224
5821           and current_flag <> 'W' -- Bug 3879461
5822           AND project_id = p_project_id;
5823       */
5824 
5825         FOR cur_tasks_rec in cur_tasks LOOP
5826         -- Bug 4282618 Begin
5827         l_prog_enabled := 'Y';
5828         OPEN cur_prog_enabled(cur_tasks_rec.proj_element_id);
5829         FETCH cur_prog_enabled INTO l_prog_enabled;
5830         CLOSE cur_prog_enabled;
5831 
5832         IF l_prog_enabled = 'N' THEN
5833             l_prog_stats_code := null;
5834         ELSE
5835             l_prog_stats_code := 'PROGRESS_STAT_ON_TRACK';
5836         END IF;
5837         -- Bug 4282618 End
5838 
5839         l_cur_task_old_status_code := PA_PROGRESS_UTILS.get_task_status(p_project_id,cur_tasks_rec.proj_element_id);
5840         -- Bug 3878024 : Begin
5841         FOR cur_task_assignments_rec in cur_task_assignments(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
5842             IF g1_debug_mode  = 'Y' THEN
5843                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_task_assignments', x_Log_Level=> 3);
5844                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_list_member_id='||cur_task_assignments_rec.resource_list_member_id, x_Log_Level=> 3);
5845                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.current_flag='||cur_task_assignments_rec.current_flag, x_Log_Level=> 3);
5846                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.proj_element_id='||cur_task_assignments_rec.proj_element_id, x_Log_Level=> 3);
5847                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rbs_element_id='||cur_task_assignments_rec.rbs_element_id, x_Log_Level=> 3);
5848                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
5849                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
5850                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rate_based_flag='||cur_task_assignments_rec.rate_based_flag, x_Log_Level=> 3);
5851                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.txn_currency_code='||cur_task_assignments_rec.txn_currency_code, x_Log_Level=> 3);
5852                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_alias='||cur_task_assignments_rec.resource_alias, x_Log_Level=> 3);
5853             END IF;
5854 
5855             IF cur_task_assignments_rec.current_flag = 'Y' THEN
5856                 l_push_as_of_date := cur_task_assignments_rec.as_of_date;
5857                 IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5858                     IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5859                         l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
5860                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
5861                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
5862                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
5863                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
5864                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
5865                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
5866                     ELSE
5867                         l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
5868                         IF l_etc_effort_incr < 0 THEN
5869                             l_etc_effort_incr := 0;
5870                         END IF;
5871                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_TC,0);
5872                         IF l_etc_txn_bur_cost_this_period < 0 THEN
5873                             l_etc_txn_bur_cost_this_period := 0;
5874                         END IF;
5875                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_PC,0);
5876                         IF l_etc_prj_bur_cost_this_period < 0 THEN
5877                             l_etc_prj_bur_cost_this_period := 0;
5878                         END IF;
5879                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_FC,0);
5880                         IF l_etc_pfc_bur_cost_this_period < 0 THEN
5881                             l_etc_pfc_bur_cost_this_period := 0;
5882                         END IF;
5883                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_TC,0);
5884                         IF l_etc_txn_raw_cost_this_period < 0 THEN
5885                             l_etc_txn_raw_cost_this_period := 0;
5886                         END IF;
5887                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
5888                         IF l_etc_prj_raw_cost_this_period < 0 THEN
5889                             l_etc_prj_raw_cost_this_period := 0;
5890                         END IF;
5891                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
5892                         IF l_etc_pfc_raw_cost_this_period < 0 THEN
5893                             l_etc_pfc_raw_cost_this_period := 0;
5894                         END IF;
5895                     END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
5896                 ELSIF cur_task_assignments_rec.resource_class_code = 'EQUIPMENT' THEN
5897                     IF cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5898                         l_etc_effort_incr := NVL(cur_task_assignments_rec.EQPMT_ETC_EFFORT ,0);
5899                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_TC,0);
5900                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_PC,0);
5901                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_COST_FC,0);
5902                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_TC,0);
5903                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_PC,0);
5904                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.EQPMT_ETC_RAWCOST_FC,0);
5905                     ELSE
5906                         l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
5907                         IF l_etc_effort_incr < 0 THEN
5908                             l_etc_effort_incr := 0;
5909                         END IF;
5910                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_TC,0);
5911                         IF l_etc_txn_bur_cost_this_period < 0 THEN
5912                             l_etc_txn_bur_cost_this_period := 0;
5913                         END IF;
5914                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
5915                         IF l_etc_prj_bur_cost_this_period < 0 THEN
5916                             l_etc_prj_bur_cost_this_period := 0;
5917                         END IF;
5918                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_COST_TO_DATE_FC,0);
5919                         IF l_etc_pfc_bur_cost_this_period < 0 THEN
5920                             l_etc_pfc_bur_cost_this_period := 0;
5921                         END IF;
5922                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC,0);
5923                         IF l_etc_txn_raw_cost_this_period < 0 THEN
5924                             l_etc_txn_raw_cost_this_period := 0;
5925                         END IF;
5926                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC,0);
5927                         IF l_etc_prj_raw_cost_this_period < 0 THEN
5928                             l_etc_prj_raw_cost_this_period := 0;
5929                         END IF;
5930                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC,0);
5931                         IF l_etc_pfc_raw_cost_this_period < 0 THEN
5932                             l_etc_pfc_raw_cost_this_period := 0;
5933                         END IF;
5934                     END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5935                 ELSIF cur_task_assignments_rec.resource_class_code = 'FINANCIAL_ELEMENTS' OR cur_task_assignments_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
5936                     IF cur_task_assignments_rec.OTH_ETC_QUANTITY IS NOT NULL THEN
5937                         l_etc_effort_incr := NVL(cur_task_assignments_rec.OTH_ETC_QUANTITY ,0);
5938                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_TC,0);
5939                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_PC,0);
5940                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_COST_FC,0);
5941                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_TC,0);
5942                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_PC,0);
5943                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.OTH_ETC_RAWCOST_FC,0);
5944                     ELSE
5945                         l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.OTH_QUANTITY_TO_DATE,0);
5946                         IF l_etc_effort_incr < 0 THEN
5947                             l_etc_effort_incr := 0;
5948                         END IF;
5949                         l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_TC,0);
5950                         IF l_etc_txn_bur_cost_this_period < 0 THEN
5951                             l_etc_txn_bur_cost_this_period := 0;
5952                         END IF;
5953                         l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_PC,0);
5954                         IF l_etc_prj_bur_cost_this_period < 0 THEN
5955                             l_etc_prj_bur_cost_this_period := 0;
5956                         END IF;
5957                         l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.OTH_ACT_COST_TO_DATE_FC,0);
5958                         IF l_etc_pfc_bur_cost_this_period < 0 THEN
5959                             l_etc_pfc_bur_cost_this_period := 0;
5960                         END IF;
5961                         l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_TC,0);
5962                         IF l_etc_txn_raw_cost_this_period < 0 THEN
5963                             l_etc_txn_raw_cost_this_period := 0;
5964                         END IF;
5965                         l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_PC,0);
5966                         IF l_etc_prj_raw_cost_this_period < 0 THEN
5967                             l_etc_prj_raw_cost_this_period := 0;
5968                         END IF;
5969                         l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.OTH_ACT_RAWCOST_TO_DATE_FC,0);
5970                         IF l_etc_pfc_raw_cost_this_period < 0 THEN
5971                             l_etc_pfc_raw_cost_this_period := 0;
5972                         END IF;
5973                     END IF; -- cur_task_assignments_rec.EQPMT_ETC_EFFORT IS NOT NULL THEN
5974                 END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
5975             ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
5976                 -- Record does not exist in rollup table. Push negative planned amount
5977                  l_push_as_of_date := p_as_of_date;
5978                  l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
5979                  l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
5980                  l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
5981                  l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
5982                  l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
5983                  l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
5984                  l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
5985 
5986                  -- This below code is under discussion with PM's.
5987                  l_PROGRESS_ROLLUP_ID := null;
5988                  l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
5989                  l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
5990 
5991                  PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5992                      X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
5993                     ,X_PROJECT_ID                      => p_project_id
5994                     ,X_OBJECT_ID                       => cur_task_assignments_rec.resource_list_member_id
5995                     ,X_OBJECT_TYPE                     => 'PA_ASSIGNMENTS'
5996                     ,X_AS_OF_DATE                      => l_push_as_of_date
5997                     ,X_OBJECT_VERSION_ID             => cur_tasks_rec.object_id_to1
5998                     ,X_LAST_UPDATE_DATE                => SYSDATE
5999                     ,X_LAST_UPDATED_BY                 => l_user_id
6000                     ,X_CREATION_DATE                   => SYSDATE
6001                     ,X_CREATED_BY                      => l_user_id
6002                     ,X_PROGRESS_STATUS_CODE            => l_prog_stats_code-- 'PROGRESS_STAT_ON_TRACK'
6003                     ,X_LAST_UPDATE_LOGIN               => l_login_id
6004                     ,X_INCREMENTAL_WORK_QTY            => null
6005                     ,X_CUMULATIVE_WORK_QTY             => null
6006                     ,X_BASE_PERCENT_COMPLETE           => null
6007                     ,X_EFF_ROLLUP_PERCENT_COMP         => null
6008                     ,X_COMPLETED_PERCENTAGE            => null
6009                     ,X_ESTIMATED_START_DATE            => null
6010                     ,X_ESTIMATED_FINISH_DATE           => null
6011                     ,X_ACTUAL_START_DATE               => null
6012                     ,X_ACTUAL_FINISH_DATE              => null
6013                     ,X_EST_REMAINING_EFFORT            => null
6014                     ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
6015                     ,X_BASE_PROGRESS_STATUS_CODE       => null
6016                     ,X_EFF_ROLLUP_PROG_STAT_CODE       => null
6017                     ,x_percent_complete_id             => null
6018                     ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
6019                     ,X_PROJ_ELEMENT_ID                 => cur_task_assignments_rec.proj_element_id
6020                     ,X_STRUCTURE_VERSION_ID            => null
6021                     ,X_PPL_ACT_EFFORT_TO_DATE          => null
6022                     ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
6023                     ,X_EQPMT_ETC_EFFORT                => null
6024                     ,X_OTH_ACT_COST_TO_DATE_TC     => null
6025                     ,X_OTH_ACT_COST_TO_DATE_FC     => null
6026                     ,X_OTH_ACT_COST_TO_DATE_PC     => null
6027                     ,X_OTH_ETC_COST_TC                 => null
6028                     ,X_OTH_ETC_COST_FC                 => null
6029                     ,X_OTH_ETC_COST_PC                 => null
6030                     ,X_PPL_ACT_COST_TO_DATE_TC     => null
6031                     ,X_PPL_ACT_COST_TO_DATE_FC         => null
6032                     ,X_PPL_ACT_COST_TO_DATE_PC         => null
6033                     ,X_PPL_ETC_COST_TC                 => null
6034                     ,X_PPL_ETC_COST_FC                 => null
6035                     ,X_PPL_ETC_COST_PC                 => null
6036                     ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
6037                     ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
6038                     ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
6039                     ,X_EQPMT_ETC_COST_TC               => null
6040                     ,X_EQPMT_ETC_COST_FC               => null
6041                     ,X_EQPMT_ETC_COST_PC               => null
6042                     ,X_EARNED_VALUE                    => null
6043                     ,X_TASK_WT_BASIS_CODE              => null
6044                     ,X_SUBPRJ_PPL_ACT_EFFORT           => null
6045                     ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
6046                     ,X_SUBPRJ_PPL_ETC_EFFORT           => null
6047                     ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
6048                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
6049                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
6050                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
6051                     ,X_SUBPRJ_PPL_ACT_COST_TC          => null
6052                     ,X_SUBPRJ_PPL_ACT_COST_FC          => null
6053                     ,X_SUBPRJ_PPL_ACT_COST_PC          => null
6054                     ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
6055                     ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
6056                     ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
6057                     ,X_SUBPRJ_OTH_ETC_COST_TC          => null
6058                     ,X_SUBPRJ_OTH_ETC_COST_FC          => null
6059                     ,X_SUBPRJ_OTH_ETC_COST_PC          => null
6060                     ,X_SUBPRJ_PPL_ETC_COST_TC          => null
6061                     ,X_SUBPRJ_PPL_ETC_COST_FC          => null
6062                     ,X_SUBPRJ_PPL_ETC_COST_PC          => null
6063                     ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
6064                     ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
6065                     ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
6066                     ,X_SUBPRJ_EARNED_VALUE             => null
6067                     ,X_CURRENT_FLAG                    => 'Y'
6068                     ,X_PROJFUNC_COST_RATE_TYPE         => null
6069                     ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
6070                     ,X_PROJFUNC_COST_RATE_DATE         => null
6071                     ,X_PROJ_COST_RATE_TYPE             => null
6072                     ,X_PROJ_COST_EXCHANGE_RATE         => null
6073                     ,X_PROJ_COST_RATE_DATE             => null
6074                     ,X_TXN_CURRENCY_CODE           => cur_task_assignments_rec.txn_currency_code
6075                     ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
6076                     ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
6077                     ,X_OTH_QUANTITY_TO_DATE            => null
6078                     ,X_OTH_ETC_QUANTITY                => null
6079                     ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
6080                     ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
6081                     ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
6082                     ,X_OTH_ETC_RAWCOST_TC              => null
6083                     ,X_OTH_ETC_RAWCOST_FC              => null
6084                     ,X_OTH_ETC_RAWCOST_PC              => null
6085                     ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
6086                     ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
6087                     ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
6088                     ,X_PPL_ETC_RAWCOST_TC              => null
6089                     ,X_PPL_ETC_RAWCOST_FC              => null
6090                     ,X_PPL_ETC_RAWCOST_PC          => null
6091                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
6092                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
6093                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
6094                     ,X_EQPMT_ETC_RAWCOST_TC            => null
6095                     ,X_EQPMT_ETC_RAWCOST_FC            => null
6096                     ,X_EQPMT_ETC_RAWCOST_PC            => null
6097                     ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
6098                     ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
6099                     ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
6100                     ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
6101                     ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
6102                     ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
6103                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
6104                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
6105                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
6106                     ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
6107                     ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
6108                     ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
6109                     ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
6110                     ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
6111                     ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
6112                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
6113                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
6114                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
6115                     );
6116 
6117                     IF Fnd_Msg_Pub.count_msg > 0 THEN
6118                         RAISE  FND_API.G_EXC_ERROR;
6119                     END IF;
6120             END IF; --  cur_task_assignments_rec.current_flag = 'Y' THEN
6121 
6122             IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6123                 l_etc_effort_incr := l_etc_effort_incr * (-1);
6124                 l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
6125                 l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
6126                 l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
6127                 l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
6128                 l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
6129                 l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
6130 
6131                 -- Bug 4144845 : Removed Completed check from push workplan actuals.
6132                 --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <>  'COMPLETED' THEN
6133                 IF g1_debug_mode  = 'Y' THEN
6134                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Pushing Negative Amounts To PJI', x_Log_Level=> 3);
6135                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_bur_cost_this_period='||l_etc_txn_bur_cost_this_period, x_Log_Level=> 3);
6136                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_bur_cost_this_period='||l_etc_prj_bur_cost_this_period, x_Log_Level=> 3);
6137                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_bur_cost_this_period='||l_etc_pfc_bur_cost_this_period, x_Log_Level=> 3);
6138                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_effort_incr='||l_etc_effort_incr, x_Log_Level=> 3);
6139                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_raw_cost_this_period='||l_etc_txn_raw_cost_this_period, x_Log_Level=> 3);
6140                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_raw_cost_this_period='||l_etc_prj_raw_cost_this_period, x_Log_Level=> 3);
6141                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_raw_cost_this_period='||l_etc_pfc_raw_cost_this_period, x_Log_Level=> 3);
6142                 END IF;
6143 
6144                 PA_PROGRESS_PUB.push_workplan_actuals(
6145                       p_project_Id              => p_project_id,
6146                       p_structure_version_id        => l_structure_version_id,
6147                       p_proj_element_id         => cur_task_assignments_rec.proj_element_id,
6148                       p_object_id               => cur_task_assignments_rec.resource_list_member_id,
6149                       p_object_type             => 'PA_ASSIGNMENTS',
6150                       p_as_of_date              => l_push_as_of_date,
6151                       p_rbs_element_id          => cur_task_assignments_rec.rbs_element_id,
6152                       p_rate_based_flag         => cur_task_assignments_rec.rate_based_flag,
6153                       p_resource_class_code         => cur_task_assignments_rec.resource_class_code,
6154                       p_act_TXN_COST_this_period        => null,
6155                       p_act_PRJ_COST_this_period        => null,
6156                       p_act_POU_COST_this_period        => null,
6157                       p_act_effort_this_period      => null,
6158                       p_etc_TXN_COST_this_period        => l_etc_txn_bur_cost_this_period,
6159                       p_etc_PRJ_COST_this_period        => l_etc_prj_bur_cost_this_period,
6160                       p_etc_POU_COST_this_period        => l_etc_pfc_bur_cost_this_period,
6161                       p_etc_effort_this_period      => l_etc_effort_incr,
6162                       p_act_TXN_raw_COST_this_period    => null,
6163                       p_act_PRJ_raw_COST_this_period    => null,
6164                       p_act_POU_raw_COST_this_period    => null,
6165                       p_etc_TXN_raw_COST_this_period    => l_etc_txn_raw_cost_this_period,
6166                       p_etc_PRJ_raw_COST_this_period    => l_etc_prj_raw_cost_this_period,
6167                       p_etc_POU_raw_COST_this_period    => l_etc_pfc_raw_cost_this_period,
6168                       p_txn_currency_code           => cur_task_assignments_rec.txn_currency_code,
6169                       p_prj_currency_code           => null,
6170                       p_pfn_currency_code           => null,
6171                       p_pa_period_name          => null,
6172                       p_gl_period_name          => null,
6173                       p_call_pji_apis_flag          => 'N',
6174                       x_return_status           => x_return_status,
6175                       x_msg_count               => x_msg_count,
6176                       x_msg_data                => x_msg_data
6177                      );
6178                 --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <>  'COMPLETED' THEN
6179             END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6180 
6181             -- Update Percent complete --
6182             UPDATE pa_percent_completes
6183             SET Actual_Finish_date   = p_actual_finish_date
6184             WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6185             AND project_id = p_project_id
6186             AND task_id = cur_task_assignments_rec.proj_element_id
6187             AND object_type = 'PA_ASSIGNMENTS'
6188             AND structure_type = p_structure_type
6189             AND ((current_flag = 'Y' and published_flag = 'Y') or
6190                 (current_flag = 'N' and published_flag = 'N'))
6191             ;
6192 
6193             --Update pa_progress_rollup
6194             UPDATE pa_progress_rollup
6195             SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
6196                Actual_Finish_date  = p_actual_finish_date,
6197                estimated_remaining_effort = 0,
6198                EQPMT_ETC_EFFORT = 0,
6199                oth_etc_quantity = 0,
6200                OTH_ETC_COST_TC = 0,
6201                OTH_ETC_COST_FC = 0,
6202                OTH_ETC_COST_PC = 0,
6203                OTH_ETC_RAWCOST_TC = 0,
6204                OTH_ETC_RAWCOST_FC = 0,
6205                OTH_ETC_RAWCOST_PC = 0,
6206                PPL_ETC_COST_TC= 0,
6207                PPL_ETC_COST_FC= 0,
6208                PPL_ETC_COST_PC = 0,
6209                PPL_ETC_RAWCOST_TC= 0,
6210                PPL_ETC_RAWCOST_FC= 0,
6211                PPL_ETC_RAWCOST_PC = 0,
6212                EQPMT_ETC_COST_TC = 0,
6213                EQPMT_ETC_COST_FC = 0,
6214                EQPMT_ETC_COST_PC = 0,
6215                EQPMT_ETC_RAWCOST_TC = 0,
6216                EQPMT_ETC_RAWCOST_FC = 0,
6217                EQPMT_ETC_RAWCOST_PC = 0
6218             WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6219             and current_flag IN ('Y', 'W')
6220             AND object_type = 'PA_ASSIGNMENTS'
6221             AND structure_type = p_structure_type
6222             AND proj_element_id = cur_task_assignments_rec.proj_element_id
6223             AND structure_version_id IS NULL
6224             AND project_id = p_project_id;
6225 
6226         END LOOP; -- cur_task_assignments_rec in cur_task_assignments(p_object_version_id, p_object_id) LOOP
6227 
6228         -- Now tasks processing starts
6229         -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
6230                 --l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => cur_tasks_rec.object_id_to1 );
6231         IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure( cur_tasks_rec.object_id_to1) = 'Y' THEN
6232             l_lowest_level_task := 'N';
6233         ELSE
6234             l_lowest_level_task := 'Y';
6235         END IF;
6236         l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,cur_tasks_rec.object_id_to1,'PA_TASKS');
6237         IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
6238             -- Find the hidden assignment and push the task progress value against it
6239             FOR cur_task_assignments_rec in cur_system_assignment(cur_tasks_rec.object_id_to1, cur_tasks_rec.proj_element_id) LOOP
6240                 IF g1_debug_mode  = 'Y' THEN
6241                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Looping cur_system_assignment', x_Log_Level=> 3);
6242                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_list_member_id='||cur_task_assignments_rec.resource_list_member_id, x_Log_Level=> 3);
6243                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.current_flag='||cur_task_assignments_rec.current_flag, x_Log_Level=> 3);
6244                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.proj_element_id='||cur_task_assignments_rec.proj_element_id, x_Log_Level=> 3);
6245                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rbs_element_id='||cur_task_assignments_rec.rbs_element_id, x_Log_Level=> 3);
6246                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
6247                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_class_code='||cur_task_assignments_rec.resource_class_code, x_Log_Level=> 3);
6248                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.rate_based_flag='||cur_task_assignments_rec.rate_based_flag, x_Log_Level=> 3);
6249                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.txn_currency_code='||cur_task_assignments_rec.txn_currency_code, x_Log_Level=> 3);
6250                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'cur_task_assignments_rec.resource_alias='||cur_task_assignments_rec.resource_alias, x_Log_Level=> 3);
6251                 END IF;
6252 
6253                 IF cur_task_assignments_rec.current_flag = 'Y' THEN
6254                     l_push_as_of_date := cur_task_assignments_rec.as_of_date;
6255                     -- Hidden assignment is people only
6256                     IF cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
6257                         IF cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
6258                             l_etc_effort_incr := NVL(cur_task_assignments_rec.estimated_remaining_effort,0);
6259                             l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_TC,0);
6260                             l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_PC,0);
6261                             l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_COST_FC,0);
6262                             l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_TC,0);
6263                             l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_PC,0);
6264                             l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.PPL_ETC_RAWCOST_FC,0);
6265                         ELSE
6266                             l_etc_effort_incr := nvl(cur_task_assignments_rec.planned_quantity,0)-nvl(cur_task_assignments_rec.PPL_ACT_EFFORT_TO_DATE,0);
6267                             IF l_etc_effort_incr < 0 THEN
6268                                 l_etc_effort_incr := 0;
6269                             END IF;
6270                             l_etc_txn_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_TC,0);
6271                             IF l_etc_txn_bur_cost_this_period < 0 THEN
6272                                 l_etc_txn_bur_cost_this_period := 0;
6273                             END IF;
6274                             l_etc_prj_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_PC,0);
6275                             IF l_etc_prj_bur_cost_this_period < 0 THEN
6276                                 l_etc_prj_bur_cost_this_period := 0;
6277                             END IF;
6278                             l_etc_pfc_bur_cost_this_period := NVL(cur_task_assignments_rec.planned_bur_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_COST_TO_DATE_FC,0);
6279                             IF l_etc_pfc_bur_cost_this_period < 0 THEN
6280                                 l_etc_pfc_bur_cost_this_period := 0;
6281                             END IF;
6282                             l_etc_txn_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_txn_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_TC,0);
6283                             IF l_etc_txn_raw_cost_this_period < 0 THEN
6284                                 l_etc_txn_raw_cost_this_period := 0;
6285                             END IF;
6286                             l_etc_prj_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_proj_cur,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
6287                             IF l_etc_prj_raw_cost_this_period < 0 THEN
6288                                 l_etc_prj_raw_cost_this_period := 0;
6289                             END IF;
6290                             l_etc_pfc_raw_cost_this_period := NVL(cur_task_assignments_rec.planned_raw_cost_projfunc,0) - NVL(cur_task_assignments_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
6291                             IF l_etc_pfc_raw_cost_this_period < 0 THEN
6292                                 l_etc_pfc_raw_cost_this_period := 0;
6293                             END IF;
6294                         END IF; -- cur_task_assignments_rec.estimated_remaining_effort IS NOT NULL THEN
6295                     END IF; -- cur_task_assignments_rec.resource_class_code = 'PEOPLE' THEN
6296                 ELSIF cur_task_assignments_rec.current_flag = 'X' THEN
6297                     -- Record does not exist in rollup table. Push negative planned amount
6298                      l_push_as_of_date := p_as_of_date;
6299                      l_etc_effort_incr := cur_task_assignments_rec.planned_quantity;
6300                      l_etc_txn_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_txn_cur;
6301                      l_etc_prj_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_proj_cur;
6302                      l_etc_pfc_bur_cost_this_period := cur_task_assignments_rec.planned_bur_cost_projfunc;
6303                      l_etc_txn_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_txn_cur;
6304                      l_etc_prj_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_proj_cur;
6305                      l_etc_pfc_raw_cost_this_period := cur_task_assignments_rec.planned_raw_cost_projfunc;
6306 
6307                      -- This below code is under discussion with PM's.
6308                      l_PROGRESS_ROLLUP_ID := null;
6309                      l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
6310                      l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
6311 
6312                      PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6313                          X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
6314                         ,X_PROJECT_ID                      => p_project_id
6315                         ,X_OBJECT_ID                       => cur_task_assignments_rec.proj_element_id
6316                         ,X_OBJECT_TYPE                     => 'PA_TASKS'
6317                         ,X_AS_OF_DATE                      => l_push_as_of_date
6318                         ,X_OBJECT_VERSION_ID           => cur_tasks_rec.object_id_to1
6319                         ,X_LAST_UPDATE_DATE                => SYSDATE
6320                         ,X_LAST_UPDATED_BY                 => l_user_id
6321                         ,X_CREATION_DATE                   => SYSDATE
6322                         ,X_CREATED_BY                      => l_user_id
6323                         ,X_PROGRESS_STATUS_CODE            => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6324                         ,X_LAST_UPDATE_LOGIN               => l_login_id
6325                         ,X_INCREMENTAL_WORK_QTY            => null
6326                         ,X_CUMULATIVE_WORK_QTY             => null
6327                         ,X_BASE_PERCENT_COMPLETE           => null
6328                         ,X_EFF_ROLLUP_PERCENT_COMP         => null
6329                         ,X_COMPLETED_PERCENTAGE            => 100
6330                         ,X_ESTIMATED_START_DATE            => null
6331                         ,X_ESTIMATED_FINISH_DATE           => null
6332                         ,X_ACTUAL_START_DATE               => null
6333                         ,X_ACTUAL_FINISH_DATE              => null
6334                         ,X_EST_REMAINING_EFFORT            => null
6335                         ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
6336                         ,X_BASE_PROGRESS_STATUS_CODE       => null
6337                         ,X_EFF_ROLLUP_PROG_STAT_CODE       => null
6338                         ,x_percent_complete_id             => null
6339                         ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
6340                         ,X_PROJ_ELEMENT_ID                 => cur_task_assignments_rec.proj_element_id
6341                         ,X_STRUCTURE_VERSION_ID            => null
6342                         ,X_PPL_ACT_EFFORT_TO_DATE          => null
6343                         ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
6344                         ,X_EQPMT_ETC_EFFORT                => null
6345                         ,X_OTH_ACT_COST_TO_DATE_TC     => null
6346                         ,X_OTH_ACT_COST_TO_DATE_FC     => null
6347                         ,X_OTH_ACT_COST_TO_DATE_PC     => null
6348                         ,X_OTH_ETC_COST_TC                 => null
6349                         ,X_OTH_ETC_COST_FC                 => null
6350                         ,X_OTH_ETC_COST_PC                 => null
6351                         ,X_PPL_ACT_COST_TO_DATE_TC     => null
6352                         ,X_PPL_ACT_COST_TO_DATE_FC         => null
6353                         ,X_PPL_ACT_COST_TO_DATE_PC         => null
6354                         ,X_PPL_ETC_COST_TC                 => null
6355                         ,X_PPL_ETC_COST_FC                 => null
6356                         ,X_PPL_ETC_COST_PC                 => null
6357                         ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
6358                         ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
6359                         ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
6360                         ,X_EQPMT_ETC_COST_TC               => null
6361                         ,X_EQPMT_ETC_COST_FC               => null
6362                         ,X_EQPMT_ETC_COST_PC               => null
6363                         ,X_EARNED_VALUE                    => null
6364                         ,X_TASK_WT_BASIS_CODE              => null
6365                         ,X_SUBPRJ_PPL_ACT_EFFORT           => null
6366                         ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
6367                         ,X_SUBPRJ_PPL_ETC_EFFORT           => null
6368                         ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
6369                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
6370                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
6371                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
6372                         ,X_SUBPRJ_PPL_ACT_COST_TC          => null
6373                         ,X_SUBPRJ_PPL_ACT_COST_FC          => null
6374                         ,X_SUBPRJ_PPL_ACT_COST_PC          => null
6375                         ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
6376                         ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
6377                         ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
6378                         ,X_SUBPRJ_OTH_ETC_COST_TC          => null
6379                         ,X_SUBPRJ_OTH_ETC_COST_FC          => null
6380                         ,X_SUBPRJ_OTH_ETC_COST_PC          => null
6381                         ,X_SUBPRJ_PPL_ETC_COST_TC          => null
6382                         ,X_SUBPRJ_PPL_ETC_COST_FC          => null
6383                         ,X_SUBPRJ_PPL_ETC_COST_PC          => null
6384                         ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
6385                         ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
6386                         ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
6387                         ,X_SUBPRJ_EARNED_VALUE             => null
6388                         ,X_CURRENT_FLAG                    => 'Y'
6389                         ,X_PROJFUNC_COST_RATE_TYPE         => null
6390                         ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
6391                         ,X_PROJFUNC_COST_RATE_DATE         => null
6392                         ,X_PROJ_COST_RATE_TYPE             => null
6393                         ,X_PROJ_COST_EXCHANGE_RATE         => null
6394                         ,X_PROJ_COST_RATE_DATE             => null
6395                         ,X_TXN_CURRENCY_CODE           => cur_task_assignments_rec.txn_currency_code
6396                         ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
6397                         ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
6398                         ,X_OTH_QUANTITY_TO_DATE            => null
6399                         ,X_OTH_ETC_QUANTITY                => null
6400                         ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
6401                         ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
6402                         ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
6403                         ,X_OTH_ETC_RAWCOST_TC              => null
6404                         ,X_OTH_ETC_RAWCOST_FC              => null
6405                         ,X_OTH_ETC_RAWCOST_PC              => null
6406                         ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
6407                         ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
6408                         ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
6409                         ,X_PPL_ETC_RAWCOST_TC              => null
6410                         ,X_PPL_ETC_RAWCOST_FC              => null
6411                         ,X_PPL_ETC_RAWCOST_PC          => null
6412                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
6413                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
6414                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
6415                         ,X_EQPMT_ETC_RAWCOST_TC            => null
6416                         ,X_EQPMT_ETC_RAWCOST_FC            => null
6417                         ,X_EQPMT_ETC_RAWCOST_PC            => null
6418                         ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
6419                         ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
6420                         ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
6421                         ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
6422                         ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
6423                         ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
6424                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
6425                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
6426                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
6427                         ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
6428                         ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
6429                         ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
6430                         ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
6431                         ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
6432                         ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
6433                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
6434                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
6435                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
6436                         );
6437 
6438                         IF Fnd_Msg_Pub.count_msg > 0 THEN
6439                             RAISE  FND_API.G_EXC_ERROR;
6440                         END IF;
6441 
6442                         -- Bug 3922325 : Hidden Assignment record also shd get created
6443 
6444                         l_PROGRESS_ROLLUP_ID := null;
6445 
6446                      PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6447                          X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
6448                         ,X_PROJECT_ID                      => p_project_id
6449                         ,X_OBJECT_ID                       => cur_task_assignments_rec.resource_list_member_id
6450                         ,X_OBJECT_TYPE                     => 'PA_ASSIGNMENTS'
6451                         ,X_AS_OF_DATE                      => l_push_as_of_date
6452                         ,X_OBJECT_VERSION_ID           => cur_tasks_rec.object_id_to1
6453                         ,X_LAST_UPDATE_DATE                => SYSDATE
6454                         ,X_LAST_UPDATED_BY                 => l_user_id
6455                         ,X_CREATION_DATE                   => SYSDATE
6456                         ,X_CREATED_BY                      => l_user_id
6457                         ,X_PROGRESS_STATUS_CODE            => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6458                         ,X_LAST_UPDATE_LOGIN               => l_login_id
6459                         ,X_INCREMENTAL_WORK_QTY            => null
6460                         ,X_CUMULATIVE_WORK_QTY             => null
6461                         ,X_BASE_PERCENT_COMPLETE           => null
6462                         ,X_EFF_ROLLUP_PERCENT_COMP         => null
6463                         ,X_COMPLETED_PERCENTAGE            => null
6464                         ,X_ESTIMATED_START_DATE            => null
6465                         ,X_ESTIMATED_FINISH_DATE           => null
6466                         ,X_ACTUAL_START_DATE               => null
6467                         ,X_ACTUAL_FINISH_DATE              => null
6468                         ,X_EST_REMAINING_EFFORT            => null
6469                         ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
6470                         ,X_BASE_PROGRESS_STATUS_CODE       => null
6471                         ,X_EFF_ROLLUP_PROG_STAT_CODE       => null
6472                         ,x_percent_complete_id             => null
6473                         ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
6474                         ,X_PROJ_ELEMENT_ID                 => cur_task_assignments_rec.proj_element_id
6475                         ,X_STRUCTURE_VERSION_ID            => null
6476                         ,X_PPL_ACT_EFFORT_TO_DATE          => null
6477                         ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
6478                         ,X_EQPMT_ETC_EFFORT                => null
6479                         ,X_OTH_ACT_COST_TO_DATE_TC     => null
6480                         ,X_OTH_ACT_COST_TO_DATE_FC     => null
6481                         ,X_OTH_ACT_COST_TO_DATE_PC     => null
6482                         ,X_OTH_ETC_COST_TC                 => null
6483                         ,X_OTH_ETC_COST_FC                 => null
6484                         ,X_OTH_ETC_COST_PC                 => null
6485                         ,X_PPL_ACT_COST_TO_DATE_TC     => null
6486                         ,X_PPL_ACT_COST_TO_DATE_FC         => null
6487                         ,X_PPL_ACT_COST_TO_DATE_PC         => null
6488                         ,X_PPL_ETC_COST_TC                 => null
6489                         ,X_PPL_ETC_COST_FC                 => null
6490                         ,X_PPL_ETC_COST_PC                 => null
6491                         ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
6492                         ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
6493                         ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
6494                         ,X_EQPMT_ETC_COST_TC               => null
6495                         ,X_EQPMT_ETC_COST_FC               => null
6496                         ,X_EQPMT_ETC_COST_PC               => null
6497                         ,X_EARNED_VALUE                    => null
6498                         ,X_TASK_WT_BASIS_CODE              => null
6499                         ,X_SUBPRJ_PPL_ACT_EFFORT           => null
6500                         ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
6501                         ,X_SUBPRJ_PPL_ETC_EFFORT           => null
6502                         ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
6503                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
6504                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
6505                         ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
6506                         ,X_SUBPRJ_PPL_ACT_COST_TC          => null
6507                         ,X_SUBPRJ_PPL_ACT_COST_FC          => null
6508                         ,X_SUBPRJ_PPL_ACT_COST_PC          => null
6509                         ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
6510                         ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
6511                         ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
6512                         ,X_SUBPRJ_OTH_ETC_COST_TC          => null
6513                         ,X_SUBPRJ_OTH_ETC_COST_FC          => null
6514                         ,X_SUBPRJ_OTH_ETC_COST_PC          => null
6515                         ,X_SUBPRJ_PPL_ETC_COST_TC          => null
6516                         ,X_SUBPRJ_PPL_ETC_COST_FC          => null
6517                         ,X_SUBPRJ_PPL_ETC_COST_PC          => null
6518                         ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
6519                         ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
6520                         ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
6521                         ,X_SUBPRJ_EARNED_VALUE             => null
6522                         ,X_CURRENT_FLAG                    => 'Y'
6523                         ,X_PROJFUNC_COST_RATE_TYPE         => null
6524                         ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
6525                         ,X_PROJFUNC_COST_RATE_DATE         => null
6526                         ,X_PROJ_COST_RATE_TYPE             => null
6527                         ,X_PROJ_COST_EXCHANGE_RATE         => null
6528                         ,X_PROJ_COST_RATE_DATE             => null
6529                         ,X_TXN_CURRENCY_CODE           => cur_task_assignments_rec.txn_currency_code
6530                         ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
6531                         ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
6532                         ,X_OTH_QUANTITY_TO_DATE            => null
6533                         ,X_OTH_ETC_QUANTITY                => null
6534                         ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
6535                         ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
6536                         ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
6537                         ,X_OTH_ETC_RAWCOST_TC              => null
6538                         ,X_OTH_ETC_RAWCOST_FC              => null
6539                         ,X_OTH_ETC_RAWCOST_PC              => null
6540                         ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
6541                         ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
6542                         ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
6543                         ,X_PPL_ETC_RAWCOST_TC              => null
6544                         ,X_PPL_ETC_RAWCOST_FC              => null
6545                         ,X_PPL_ETC_RAWCOST_PC          => null
6546                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
6547                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
6548                         ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
6549                         ,X_EQPMT_ETC_RAWCOST_TC            => null
6550                         ,X_EQPMT_ETC_RAWCOST_FC            => null
6551                         ,X_EQPMT_ETC_RAWCOST_PC            => null
6552                         ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
6553                         ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
6554                         ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
6555                         ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
6556                         ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
6557                         ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
6558                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
6559                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
6560                         ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
6561                         ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
6562                         ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
6563                         ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
6564                         ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
6565                         ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
6566                         ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
6567                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
6568                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
6569                         ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
6570                         );
6571 
6572                         IF Fnd_Msg_Pub.count_msg > 0 THEN
6573                             RAISE  FND_API.G_EXC_ERROR;
6574                         END IF;
6575 
6576                 END IF; --  cur_task_assignments_rec.current_flag = 'Y' THEN
6577 
6578                 IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6579                     l_etc_effort_incr := l_etc_effort_incr * (-1);
6580                     l_etc_txn_bur_cost_this_period := l_etc_txn_bur_cost_this_period * (-1);
6581                     l_etc_prj_bur_cost_this_period := l_etc_prj_bur_cost_this_period * (-1);
6582                     l_etc_pfc_bur_cost_this_period := l_etc_pfc_bur_cost_this_period * (-1);
6583                     l_etc_txn_raw_cost_this_period := l_etc_txn_raw_cost_this_period * (-1);
6584                     l_etc_prj_raw_cost_this_period := l_etc_prj_raw_cost_this_period * (-1);
6585                     l_etc_pfc_raw_cost_this_period := l_etc_pfc_raw_cost_this_period * (-1);
6586 
6587                         -- Bug 4144845 : Removed Completed check from push workplan actuals.
6588                     --IF PA_PROGRESS_UTILS.get_system_task_status(l_cur_task_old_status_code) <>  'COMPLETED' THEN
6589                     IF g1_debug_mode  = 'Y' THEN
6590                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Pushing Negative Amounts To PJI for Task', x_Log_Level=> 3);
6591                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_bur_cost_this_period='||l_etc_txn_bur_cost_this_period, x_Log_Level=> 3);
6592                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_bur_cost_this_period='||l_etc_prj_bur_cost_this_period, x_Log_Level=> 3);
6593                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_bur_cost_this_period='||l_etc_pfc_bur_cost_this_period, x_Log_Level=> 3);
6594                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_effort_incr='||l_etc_effort_incr, x_Log_Level=> 3);
6595                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_txn_raw_cost_this_period='||l_etc_txn_raw_cost_this_period, x_Log_Level=> 3);
6596                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_prj_raw_cost_this_period='||l_etc_prj_raw_cost_this_period, x_Log_Level=> 3);
6597                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'l_etc_pfc_raw_cost_this_period='||l_etc_pfc_raw_cost_this_period, x_Log_Level=> 3);
6598                     END IF;
6599 
6600                     PA_PROGRESS_PUB.push_workplan_actuals(
6601                           p_project_Id              => p_project_id,
6602                           p_structure_version_id        => l_structure_version_id,
6603                           p_proj_element_id         => cur_task_assignments_rec.proj_element_id,
6604                           p_object_id               => cur_task_assignments_rec.proj_element_id,
6605                           p_object_type             => 'PA_TASKS',
6606                           p_as_of_date              => l_push_as_of_date,
6607                           p_rbs_element_id          => cur_task_assignments_rec.rbs_element_id,
6608                           p_rate_based_flag         => cur_task_assignments_rec.rate_based_flag,
6609                           p_resource_class_code         => cur_task_assignments_rec.resource_class_code,
6610                           p_act_TXN_COST_this_period        => null,
6611                           p_act_PRJ_COST_this_period        => null,
6612                           p_act_POU_COST_this_period        => null,
6613                           p_act_effort_this_period      => null,
6614                           p_etc_TXN_COST_this_period        => l_etc_txn_bur_cost_this_period,
6615                           p_etc_PRJ_COST_this_period        => l_etc_prj_bur_cost_this_period,
6616                           p_etc_POU_COST_this_period        => l_etc_pfc_bur_cost_this_period,
6617                           p_etc_effort_this_period      => l_etc_effort_incr,
6618                           p_act_TXN_raw_COST_this_period    => null,
6619                           p_act_PRJ_raw_COST_this_period    => null,
6620                           p_act_POU_raw_COST_this_period    => null,
6621                           p_etc_TXN_raw_COST_this_period    => l_etc_txn_raw_cost_this_period,
6622                           p_etc_PRJ_raw_COST_this_period    => l_etc_prj_raw_cost_this_period,
6623                           p_etc_POU_raw_COST_this_period    => l_etc_pfc_raw_cost_this_period,
6624                           p_txn_currency_code           => cur_task_assignments_rec.txn_currency_code,
6625                           p_prj_currency_code           => null,
6626                           p_pfn_currency_code           => null,
6627                           p_pa_period_name          => null,
6628                           p_gl_period_name          => null,
6629                           p_call_pji_apis_flag          => 'N',
6630                           x_return_status           => x_return_status,
6631                           x_msg_count               => x_msg_count,
6632                           x_msg_data                => x_msg_data
6633                          );
6634                     --END IF;-- PA_PROGRESS_UTILS.get_system_task_status(l_old_status_code) <>  'COMPLETED' THEN
6635                 END IF; -- IF cur_task_assignments_rec.current_flag = 'Y' OR cur_task_assignments_rec.current_flag = 'X' THEN
6636                 -- Bug 3922325 : Hidden Assignment records also shd be updated
6637                 UPDATE pa_progress_rollup
6638                 SET actual_start_date = decode(actual_start_date, null, cur_task_assignments_rec.assignment_start_date, actual_start_date),
6639                    Actual_Finish_date  = p_actual_finish_date,
6640                    estimated_remaining_effort = 0,
6641                    EQPMT_ETC_EFFORT = 0,
6642                    oth_etc_quantity = 0,
6643                    OTH_ETC_COST_TC = 0,
6644                    OTH_ETC_COST_FC = 0,
6645                    OTH_ETC_COST_PC = 0,
6646                    OTH_ETC_RAWCOST_TC = 0,
6647                    OTH_ETC_RAWCOST_FC = 0,
6648                    OTH_ETC_RAWCOST_PC = 0,
6649                    PPL_ETC_COST_TC= 0,
6650                    PPL_ETC_COST_FC= 0,
6651                    PPL_ETC_COST_PC = 0,
6652                    PPL_ETC_RAWCOST_TC= 0,
6653                    PPL_ETC_RAWCOST_FC= 0,
6654                    PPL_ETC_RAWCOST_PC = 0,
6655                    EQPMT_ETC_COST_TC = 0,
6656                    EQPMT_ETC_COST_FC = 0,
6657                    EQPMT_ETC_COST_PC = 0,
6658                    EQPMT_ETC_RAWCOST_TC = 0,
6659                    EQPMT_ETC_RAWCOST_FC = 0,
6660                    EQPMT_ETC_RAWCOST_PC = 0
6661                 WHERE object_id = cur_task_assignments_rec.resource_list_member_id
6662                 and current_flag IN ('Y', 'W')
6663                 AND object_type = 'PA_ASSIGNMENTS'
6664                 AND structure_type = p_structure_type
6665                 AND proj_element_id = cur_task_assignments_rec.proj_element_id
6666                 AND structure_version_id IS NULL
6667                 AND project_id = p_project_id;
6668             END LOOP; -- cur_task_assignments_rec in cur_system_assignment(p_object_version_id, p_object_id) LOOP
6669         END IF; -- IF NVL(l_lowest_level_task, 'N') = 'Y' AND NVL(l_assignment_exists,'Y') = 'N' THEN
6670 
6671         --Update pa_proj_elements
6672         UPDATE pa_proj_elements
6673         SET status_code = p_task_status
6674 	,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6675         ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6676         ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id)  --Bug 5978904
6677         WHERE proj_element_id = cur_tasks_rec.proj_element_id
6678         AND project_id = p_project_id
6679         AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6680         NOT IN ( 'CANCELLED', 'COMPLETED' );
6681 
6682 
6683         -- Update Percent complete --
6684             UPDATE pa_percent_completes
6685                 SET status_code = p_task_status,
6686                    completed_percentage = 100,
6687                    Actual_Finish_date   = p_actual_finish_date,
6688            actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date)
6689         WHERE object_id = cur_tasks_rec.proj_element_id
6690         AND project_id = p_project_id
6691         AND task_id = cur_tasks_rec.proj_element_id
6692         AND object_type = 'PA_TASKS'
6693         AND structure_type = p_structure_type
6694         AND ((current_flag = 'Y' and published_flag = 'Y') or
6695             (current_flag = 'N' and published_flag = 'N'))
6696                 AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6697                         NOT IN ( 'CANCELLED', 'COMPLETED' )
6698         ;
6699 
6700         --Update pa_progress_rollup
6701         UPDATE pa_progress_rollup
6702         SET Actual_Finish_date  = p_actual_finish_date,
6703            actual_start_date = decode(actual_start_date, null, cur_tasks_rec.scheduled_start_date, actual_start_date),
6704            completed_percentage = 100,
6705            estimated_remaining_effort = 0,
6706            EQPMT_ETC_EFFORT = 0,
6707            oth_etc_quantity = 0,
6708            OTH_ETC_COST_TC = 0,
6709            OTH_ETC_COST_FC = 0,
6710            OTH_ETC_COST_PC = 0,
6711            OTH_ETC_RAWCOST_TC = 0,
6712            OTH_ETC_RAWCOST_FC = 0,
6713            OTH_ETC_RAWCOST_PC = 0,
6714            PPL_ETC_COST_TC= 0,
6715            PPL_ETC_COST_FC= 0,
6716            PPL_ETC_COST_PC = 0,
6717            PPL_ETC_RAWCOST_TC= 0,
6718            PPL_ETC_RAWCOST_FC= 0,
6719            PPL_ETC_RAWCOST_PC = 0,
6720            EQPMT_ETC_COST_TC = 0,
6721            EQPMT_ETC_COST_FC = 0,
6722            EQPMT_ETC_COST_PC = 0,
6723            EQPMT_ETC_RAWCOST_TC = 0,
6724            EQPMT_ETC_RAWCOST_FC = 0,
6725            EQPMT_ETC_RAWCOST_PC = 0
6726         WHERE object_id = cur_tasks_rec.proj_element_id
6727         and current_flag IN ('Y', 'W')
6728         AND object_type = 'PA_TASKS'
6729         AND structure_type = p_structure_type
6730         AND proj_element_id = cur_tasks_rec.proj_element_id
6731         AND structure_version_id IS NULL
6732         AND project_id = p_project_id;
6733 
6734         -- 3922325 : Added code to create task record if they do not exists
6735         IF sql%notfound THEN
6736             IF g1_debug_mode  = 'Y' THEN
6737                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_DOWN_TASK_STATUS', x_Msg => 'Inserting Tasks Record in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
6738             END IF;
6739 
6740             l_percent_complete := 100;
6741             l_PROGRESS_ROLLUP_ID := null;
6742             l_push_as_of_date    := p_as_of_date;
6743             l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_push_as_of_date);
6744             l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_push_as_of_date);
6745 
6746                           PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
6747                    X_PROGRESS_ROLLUP_ID  =>  l_PROGRESS_ROLLUP_ID
6748                   ,X_PROJECT_ID          =>p_project_id
6749                   ,X_OBJECT_ID           => cur_tasks_rec.proj_element_id
6750                   ,X_OBJECT_TYPE         => 'PA_TASKS'
6751                   ,X_AS_OF_DATE                      => l_push_as_of_date
6752                   ,X_OBJECT_VERSION_ID               => cur_tasks_rec.object_id_to1
6753                   ,X_LAST_UPDATE_DATE                => SYSDATE
6754                   ,X_LAST_UPDATED_BY                 => l_user_id
6755                   ,X_CREATION_DATE                   => SYSDATE
6756                   ,X_CREATED_BY                      => l_user_id
6757                   ,X_PROGRESS_STATUS_CODE            => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6758                   ,X_LAST_UPDATE_LOGIN               => l_login_id
6759                   ,X_INCREMENTAL_WORK_QTY            => null
6760                   ,X_CUMULATIVE_WORK_QTY             => null
6761                   ,X_BASE_PERCENT_COMPLETE           => null
6762                   ,X_EFF_ROLLUP_PERCENT_COMP         => null
6763                   ,X_COMPLETED_PERCENTAGE            => l_percent_complete
6764                   ,X_ESTIMATED_START_DATE            => null
6765                   ,X_ESTIMATED_FINISH_DATE           => null
6766                   ,X_ACTUAL_START_DATE               => cur_tasks_rec.scheduled_start_date
6767                   ,X_ACTUAL_FINISH_DATE              => p_actual_finish_date
6768                   ,X_EST_REMAINING_EFFORT            => null
6769                   ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
6770                   ,X_BASE_PROGRESS_STATUS_CODE       => l_prog_stats_code--'PROGRESS_STAT_ON_TRACK'
6771                   ,X_EFF_ROLLUP_PROG_STAT_CODE       => null
6772                   ,x_percent_complete_id             => null
6773                 ,X_STRUCTURE_TYPE                   =>  'WORKPLAN'
6774                 ,X_PROJ_ELEMENT_ID                  =>  cur_tasks_rec.proj_element_id
6775                 ,X_STRUCTURE_VERSION_ID             =>  null
6776                 ,X_PPL_ACT_EFFORT_TO_DATE           =>  null
6777                 ,X_EQPMT_ACT_EFFORT_TO_DATE         =>  null
6778                 ,X_EQPMT_ETC_EFFORT                 =>  null
6779                 ,X_OTH_ACT_COST_TO_DATE_TC          =>  null
6780                 ,X_OTH_ACT_COST_TO_DATE_FC          =>  null
6781                 ,X_OTH_ACT_COST_TO_DATE_PC          =>  null
6782                 ,X_OTH_ETC_COST_TC                  =>  null
6783                 ,X_OTH_ETC_COST_FC                  =>  null
6784                 ,X_OTH_ETC_COST_PC                  =>  null
6785                 ,X_PPL_ACT_COST_TO_DATE_TC          =>  null
6786                 ,X_PPL_ACT_COST_TO_DATE_FC          =>  null
6787                 ,X_PPL_ACT_COST_TO_DATE_PC          =>  null
6788                 ,X_PPL_ETC_COST_TC                  =>  null
6789                 ,X_PPL_ETC_COST_FC                  =>  null
6790                 ,X_PPL_ETC_COST_PC                  =>  null
6791                 ,X_EQPMT_ACT_COST_TO_DATE_TC        =>  null
6792                 ,X_EQPMT_ACT_COST_TO_DATE_FC        =>  null
6793                 ,X_EQPMT_ACT_COST_TO_DATE_PC        =>  null
6794                 ,X_EQPMT_ETC_COST_TC                =>  null
6795                 ,X_EQPMT_ETC_COST_FC                =>  null
6796                 ,X_EQPMT_ETC_COST_PC                =>  null
6797                 ,X_EARNED_VALUE                     =>  null
6798                 ,X_TASK_WT_BASIS_CODE               =>  null
6799                 ,X_SUBPRJ_PPL_ACT_EFFORT            =>  null
6800                 ,X_SUBPRJ_EQPMT_ACT_EFFORT          =>  null
6801                 ,X_SUBPRJ_PPL_ETC_EFFORT            =>  null
6802                 ,X_SUBPRJ_EQPMT_ETC_EFFORT          =>  null
6803                 ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC     =>  null
6804                 ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC     =>  null
6805                 ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC     =>  null
6806                 ,X_SUBPRJ_PPL_ACT_COST_TC           =>  null
6807                 ,X_SUBPRJ_PPL_ACT_COST_FC           =>  null
6808                 ,X_SUBPRJ_PPL_ACT_COST_PC           =>  null
6809                 ,X_SUBPRJ_EQPMT_ACT_COST_TC         =>  null
6810                 ,X_SUBPRJ_EQPMT_ACT_COST_FC         =>  null
6811                 ,X_SUBPRJ_EQPMT_ACT_COST_PC         =>  null
6812                 ,X_SUBPRJ_OTH_ETC_COST_TC           =>  null
6813                 ,X_SUBPRJ_OTH_ETC_COST_FC           =>  null
6814                 ,X_SUBPRJ_OTH_ETC_COST_PC           =>  null
6815                 ,X_SUBPRJ_PPL_ETC_COST_TC           =>  null
6816                 ,X_SUBPRJ_PPL_ETC_COST_FC           =>  null
6817                 ,X_SUBPRJ_PPL_ETC_COST_PC           =>  null
6818                 ,X_SUBPRJ_EQPMT_ETC_COST_TC         =>  null
6819                 ,X_SUBPRJ_EQPMT_ETC_COST_FC         =>  null
6820                 ,X_SUBPRJ_EQPMT_ETC_COST_PC         =>  null
6821                 ,X_SUBPRJ_EARNED_VALUE              =>  null
6822                 ,X_CURRENT_FLAG                     =>  'Y'
6823                 ,X_PROJFUNC_COST_RATE_TYPE       => null
6824                 ,X_PROJFUNC_COST_EXCHANGE_RATE      => null
6825                 ,X_PROJFUNC_COST_RATE_DATE       => null
6826                 ,X_PROJ_COST_RATE_TYPE              => null
6827                 ,X_PROJ_COST_EXCHANGE_RATE       => null
6828                 ,X_PROJ_COST_RATE_DATE              => null
6829                 ,X_TXN_CURRENCY_CODE                => null
6830                 ,X_PROG_PA_PERIOD_NAME              => l_prog_pa_period_name
6831                 ,X_PROG_GL_PERIOD_NAME              => l_prog_gl_period_name
6832                 ,X_OTH_QUANTITY_TO_DATE             => null
6833                 ,X_OTH_ETC_QUANTITY                 => null
6834                 ,X_OTH_ACT_RAWCOST_TO_DATE_TC         => null
6835                 ,X_OTH_ACT_RAWCOST_TO_DATE_FC         => null
6836                 ,X_OTH_ACT_RAWCOST_TO_DATE_PC         => null
6837                 ,X_OTH_ETC_RAWCOST_TC               => null
6838                 ,X_OTH_ETC_RAWCOST_FC               => null
6839                 ,X_OTH_ETC_RAWCOST_PC               => null
6840                 ,X_PPL_ACT_RAWCOST_TO_DATE_TC         => null
6841                 ,X_PPL_ACT_RAWCOST_TO_DATE_FC         => null
6842                 ,X_PPL_ACT_RAWCOST_TO_DATE_PC         => null
6843                 ,X_PPL_ETC_RAWCOST_TC             => null
6844                 ,X_PPL_ETC_RAWCOST_FC             => null
6845                 ,X_PPL_ETC_RAWCOST_PC             => null
6846                 ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC  => null
6847                 ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC  => null
6848                 ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC  => null
6849                 ,X_EQPMT_ETC_RAWCOST_TC            => null
6850                 ,X_EQPMT_ETC_RAWCOST_FC            => null
6851                 ,X_EQPMT_ETC_RAWCOST_PC            => null
6852                 ,X_SP_OTH_ACT_RAWCOST_TODATE_TC  => null
6853                 ,X_SP_OTH_ACT_RAWCOST_TODATE_FC  => null
6854                 ,X_SP_OTH_ACT_RAWCOST_TODATE_PC  => null
6855                 ,X_SUBPRJ_PPL_ACT_RAWCOST_TC          => null
6856                 ,X_SUBPRJ_PPL_ACT_RAWCOST_FC          => null
6857                 ,X_SUBPRJ_PPL_ACT_RAWCOST_PC          => null
6858                 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC   => null
6859                 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC   => null
6860                 ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC   => null
6861                 ,X_SUBPRJ_OTH_ETC_RAWCOST_TC          => null
6862                 ,X_SUBPRJ_OTH_ETC_RAWCOST_FC          => null
6863                 ,X_SUBPRJ_OTH_ETC_RAWCOST_PC          => null
6864                 ,X_SUBPRJ_PPL_ETC_RAWCOST_TC          => null
6865                 ,X_SUBPRJ_PPL_ETC_RAWCOST_FC          => null
6866                 ,X_SUBPRJ_PPL_ETC_RAWCOST_PC          => null
6867                 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC   => null
6868                 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC   => null
6869                 ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC   => null
6870               );
6871 
6872                 IF Fnd_Msg_Pub.count_msg > 0 THEN
6873                     RAISE  FND_API.G_EXC_ERROR;
6874                 END IF;
6875 
6876             IF g1_debug_mode  = 'Y' THEN
6877                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS', x_Msg => 'Inserted Tasks Record in PA_PROGRESS_ROLLUP ', x_Log_Level=> 3);
6878             END IF;
6879         END IF;
6880 
6881         END LOOP;
6882     -- Bug 3922325 : No Need to call plan_update here. It will be taken care in update_progress code
6883     /*
6884         BEGIN
6885             PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE (x_msg_code => l_msg_code,
6886                                x_return_status => x_return_status);
6887         EXCEPTION
6888            WHEN OTHERS THEN
6889             fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
6890                     p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6891                     p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
6892             RAISE FND_API.G_EXC_ERROR;
6893         END;
6894 
6895         IF x_return_status <> 'S' THEN
6896             RAISE FND_API.G_EXC_ERROR;
6897         END IF;
6898 
6899         l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
6900 
6901         IF (l_base_struct_ver_id = -1) THEN
6902             l_base_struct_ver_id := l_structure_version_id;
6903         END IF;
6904 
6905         BEGIN
6906             PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
6907                     p_project_id        => p_project_id,
6908                     p_struct_ver_id      => l_structure_version_id,
6909                     p_base_struct_ver_id => l_base_struct_ver_id,
6910                     x_return_status     => x_return_status,
6911                     x_msg_code          => l_msg_code
6912                     );
6913         EXCEPTION
6914            WHEN OTHERS THEN
6915             fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
6916                     p_procedure_name => 'PUSH_DOWN_TASK_STATUS',
6917                     p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
6918             RAISE FND_API.G_EXC_ERROR;
6919         END;
6920 
6921         IF x_return_status <> 'S' THEN
6922             RAISE FND_API.G_EXC_ERROR;
6923         END IF;
6924     -- Bug 3878024 : End
6925     */
6926     END IF;
6927 ------------------  Added for FP_M changes : END
6928 
6929     IF PA_PROGRESS_UTILS.get_system_task_status( p_task_status ) in ( 'CANCELLED', 'ON_HOLD' )
6930     THEN
6931     -- Bug 3878024 : Commented the below code. Now cursor cur_tasks_rec will select the passed task too
6932     /*
6933         --Update pa_proj_elementso
6934         UPDATE pa_proj_elements
6935            SET status_code = p_task_status
6936           WHERE proj_element_id = p_object_id
6937             AND project_id = p_project_id;
6938 
6939         -- FP M : 3491609 : Project Execution Workflow
6940 
6941            -- Cancel the WF if its running.
6942            If p_task_status = 'CANCELLED' then
6943                PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF
6944                  (  p_task_id      => p_object_id
6945                   ,x_msg_count     => x_msg_count
6946                   ,x_msg_data      => x_msg_data
6947                   ,x_return_status => x_return_status
6948                  ) ;
6949 
6950                 if x_return_status <> FND_API.g_ret_sts_success then
6951                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6952                 end if ;
6953            end if ;
6954 
6955         -- FP M : 3491609 : Project Execution Workflow
6956     */
6957 
6958 
6959         FOR cur_tasks_rec in cur_tasks LOOP
6960             --Update pa_proj_elementso
6961             UPDATE  pa_proj_elements
6962                SET status_code = p_task_status
6963 	       ,last_update_date = decode(status_code,p_task_status,last_update_date,sysdate) --Bug 5978904
6964                ,last_update_login = decode(status_code,p_task_status,last_update_login,l_login_id) --Bug 5978904
6965                ,last_updated_by = decode(status_code,p_task_status,last_updated_by,l_user_id)  --Bug 5978904
6966              WHERE proj_element_id = cur_tasks_rec.proj_element_id
6967                AND project_id = p_project_id
6968                and object_type = 'PA_TASKS'
6969                 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6970                AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6971                         NOT IN ( 'CANCELLED', 'COMPLETED' );
6972 
6973             UPDATE pa_percent_completes
6974                SET status_code = p_task_status
6975              WHERE object_id = cur_tasks_rec.proj_element_id
6976                AND project_id = p_project_id
6977                and object_type = 'PA_TASKS'
6978                and structure_type = p_structure_type -- FPM Dev CR 3
6979                 -- Taks Status does not drill down to Delievrables IN ('PA_TASKS', 'PA_DELIVERABLES')
6980                AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
6981                         NOT IN ( 'CANCELLED', 'COMPLETED' )
6982                AND ((current_flag = 'Y' and published_flag = 'Y') or
6983                     (current_flag = 'N' and published_flag = 'N'));
6984 
6985              -- FP M : 3491609 : Project Execution Workflow
6986 
6987                 -- Cancel the WF if its running.
6988                 If p_task_status = 'CANCELLED' then
6989                         PA_WORKPLAN_WORKFLOW.CANCEL_TASK_EXECUTION_WF (
6990                             p_task_id      => cur_tasks_rec.proj_element_id
6991                            ,x_msg_count     => x_msg_count
6992                            ,x_msg_data      => x_msg_data
6993                            ,x_return_status => x_return_status
6994                         ) ;
6995 
6996                         if x_return_status <> FND_API.g_ret_sts_success then
6997                                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
6998                         end if ;
6999 
7000                 end if ;
7001              -- FP M : 3491609 : Project Execution Workflow
7002         END LOOP;
7003     ELSE
7004 
7005          IF PA_PROGRESS_UTILS.get_system_task_status ( l_old_status_code ) = 'ON_HOLD'
7006          THEN
7007            FOR cur_tasks_rec in cur_tasks LOOP
7008            IF p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
7009 
7010            --- 4743866
7011                open get_task_pc_info(cur_tasks_rec.proj_element_id);
7012                fetch get_task_pc_info into get_task_pc_info_rec;
7013                close get_task_pc_info;
7014            --- 4743866 changed cur_tasks_rec to get_task_pc_info_rec in code below
7015 
7016                  IF get_task_pc_info_rec.completed_percentage = 0 AND
7017                     get_task_pc_info_rec.actual_start_date IS NULL
7018                  THEN
7019                      l_status_code := '124';
7020                  ELSIF get_task_pc_info_rec.completed_percentage > 0 AND
7021                        get_task_pc_info_rec.completed_percentage < 100 AND
7022                        get_task_pc_info_rec.actual_start_date IS NOT NULL AND
7023                        get_task_pc_info_rec.actual_finish_date IS NULL
7024                  THEN
7025                      l_status_code := '125';
7026                  ELSIF get_task_pc_info_rec.completed_percentage = 100 AND
7027                        get_task_pc_info_rec.actual_start_date IS NOT NULL AND
7028                        get_task_pc_info_rec.actual_finish_date IS NOT NULL
7029                  THEN
7030                      l_status_code := '127';
7031                  ELSE
7032                      l_status_code := '124';  --if p_as_of_date is g_miss_date
7033                  END IF;
7034                   --Update pa_proj_elementso
7035           if (nvl(get_task_pc_info_rec.published_flag,'X') <> 'N' and
7036               nvl(get_task_pc_info_rec.current_flag,'X') <> 'N') then
7037                  UPDATE pa_proj_elements
7038                     SET status_code = l_status_code
7039 		    ,last_update_date = decode(status_code,l_status_code,last_update_date,sysdate) --Bug 5978904
7040                     ,last_update_login = decode(status_code,l_status_code,last_update_login,l_login_id) --Bug 5978904
7041                     ,last_updated_by = decode(status_code,l_status_code,last_updated_by,l_user_id)  --Bug 5978904
7042                   WHERE proj_element_id = cur_tasks_rec.proj_element_id
7043                     AND project_id = p_project_id
7044                     and Object_Type = 'PA_TASKS'  -- Bhumesh
7045                     AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7046                                 NOT IN ( 'CANCELLED', 'COMPLETED' );
7047 
7048           end if;
7049 
7050           if (get_task_pc_info_rec.published_flag = 'Y' and get_task_pc_info_rec.current_flag = 'Y') then
7051                  UPDATE pa_percent_completes
7052                     SET status_code = l_status_code
7053                   WHERE object_id = cur_tasks_rec.proj_element_id
7054                     AND project_id = p_project_id
7055                     and Object_Type = 'PA_TASKS'  -- Bhumesh
7056                     and structure_type = p_structure_type -- FPM Dev CR 3
7057                     AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7058                         NOT IN ( 'CANCELLED', 'COMPLETED' )
7059                     AND current_flag = 'Y' and published_flag = 'Y';
7060           elsif (get_task_pc_info_rec.published_flag = 'N' and get_task_pc_info_rec.current_flag = 'N') then
7061                  UPDATE pa_percent_completes
7062                     SET status_code = l_status_code
7063                   WHERE object_id = cur_tasks_rec.proj_element_id
7064                     AND project_id = p_project_id
7065                     and Object_Type = 'PA_TASKS'  -- Bhumesh
7066                     and structure_type = p_structure_type -- FPM Dev CR 3
7067                     AND PA_PROGRESS_UTILS.get_system_task_status( status_code )
7068                         NOT IN ( 'CANCELLED', 'COMPLETED' )
7069                     AND current_flag = 'N' and published_flag = 'N';
7070           end if;
7071            END IF;-- p_object_id <> cur_tasks_rec.proj_element_id THEN -- Bug 3878024
7072              END LOOP;
7073          END IF;
7074     END IF;
7075 
7076 EXCEPTION
7077     when FND_API.G_EXC_ERROR then
7078       if p_commit = FND_API.G_TRUE then
7079          rollback to push_down_task_status;
7080       end if;
7081       x_return_status := FND_API.G_RET_STS_ERROR;
7082     when FND_API.G_EXC_UNEXPECTED_ERROR then
7083       if p_commit = FND_API.G_TRUE then
7084          rollback to push_down_task_status;
7085       end if;
7086       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7087       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
7088                               p_procedure_name => 'push_down_task_status',
7089                               p_error_text     => SUBSTRB(SQLERRM,1,120));
7090     when OTHERS then
7091       if p_commit = FND_API.G_TRUE then
7092          rollback to push_down_task_status;
7093       end if;
7094       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7095       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
7096                               p_procedure_name => 'push_down_task_status',
7097                               p_error_text     => SUBSTRB(SQLERRM,1,120));
7098       raise;
7099 END push_down_task_status;
7100 
7101 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
7102  p_project_id              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7103  ,P_OBJECT_TYPE            IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7104  ,P_OBJECT_ID              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7105  ,p_object_version_id      IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7106  ,p_as_of_date             IN   DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
7107  ,p_lowest_level_task      IN   VARCHAR2        := 'N'
7108  ,p_calling_module         IN   VARCHAR2        := 'SELF_SERVICE'
7109  ,p_structure_type         IN   VARCHAR2        := 'WORKPLAN'
7110  ,p_structure_version_id   IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7111  ,p_fin_rollup_method      IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7112  ,p_wp_rollup_method       IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
7113  ,p_rollup_entire_wbs      IN   VARCHAR2        := 'N' -- Bug 3606627
7114  ,x_return_status          OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7115  ,x_msg_count              OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
7116  ,x_msg_data               OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7117 )
7118  IS
7119 
7120    l_return_status                 VARCHAR2(1)                                          ;
7121    l_msg_count                     NUMBER                                               ;
7122    l_msg_data                      VARCHAR2(250)                                        ;
7123    l_data                          VARCHAR2(250)                                        ;
7124    g1_debug_mode                    VARCHAR2(1);
7125 
7126 BEGIN
7127 
7128         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7129 
7130         IF g1_debug_mode  = 'Y' THEN
7131                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT');
7132         END IF;
7133 
7134         IF g1_debug_mode  = 'Y' THEN
7135                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
7136                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
7137                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
7138                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
7139                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
7140                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
7141                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
7142                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
7143                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
7144                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
7145                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
7146         END IF;
7147 
7148         -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
7149 
7150     PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
7151     p_project_id         => p_project_id
7152     ,P_OBJECT_TYPE       => P_OBJECT_TYPE
7153     ,P_OBJECT_ID         => P_OBJECT_ID
7154     ,p_object_version_id     => p_object_version_id
7155     ,p_as_of_date        => p_as_of_date
7156     ,p_lowest_level_task     => p_lowest_level_task
7157     ,p_calling_module    => p_calling_module
7158     ,p_structure_type    => p_structure_type
7159     ,p_structure_version_id  => p_structure_version_id
7160     ,p_fin_rollup_method     => p_fin_rollup_method
7161     ,p_wp_rollup_method  => p_wp_rollup_method
7162     ,p_rollup_entire_wbs     => p_rollup_entire_wbs
7163     ,x_return_status     => l_return_status
7164     ,x_msg_count         => l_msg_count
7165     ,x_msg_data      => l_msg_data);
7166 
7167         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7168                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7169                                     p_msg_name       => l_msg_data);
7170                x_msg_data := l_msg_data;
7171                x_return_status := 'E';
7172                x_msg_count := l_msg_count;
7173                RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
7174         END IF;
7175 
7176 
7177         x_return_status := FND_API.G_RET_STS_SUCCESS;
7178 
7179     IF g1_debug_mode  = 'Y' THEN
7180          pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
7181     END IF;
7182 EXCEPTION
7183         WHEN OTHERS THEN
7184                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7185                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
7186                               p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
7187                               p_error_text     => SUBSTRB(SQLERRM,1,120));
7188                 raise;
7189 END ROLLUP_FUTURE_PROGRESS_PVT;
7190 
7191 -- Update_PC_PARTY_MAERGE (PUBLIC)
7192 --   This is the procedure being called during the Party Merge.
7193 --   The input/output arguments format matches the document PartyMergeDD.doc.
7194 --   The goal is to fix the PUBLISHED_BY_PARTY_ID in pa_percent_completes table to point to the
7195 --   same party when two similar parties are begin merged.
7196 --
7197 -- Usage example in pl/sql
7198 --   This procedure should only be called from the PartyMerge utility.
7199 --
7200 procedure Update_PC_PARTY_MERGE(p_entity_name in varchar2,
7201                                 p_from_id in number,
7202                         p_to_id in out nocopy number,
7203                         p_from_fk_id in number,
7204                         p_to_fk_id in number,
7205                         p_parent_entity_name in varchar2,
7206                         p_batch_id in number,
7207                         p_batch_party_id in number,
7208                         p_return_status in out nocopy varchar2) is
7209 begin
7210   p_return_status := FND_API.G_RET_STS_SUCCESS;
7211 
7212   if (p_from_fk_id <> p_to_fk_id) then
7213 
7214     update pa_percent_completes
7215     set PUBLISHED_BY_PARTY_ID = p_to_fk_id,
7216                last_update_date = hz_utility_pub.last_update_date,
7217                last_updated_by  = hz_utility_pub.user_id,
7218                last_update_login = hz_utility_pub.last_update_login
7219     where PUBLISHED_BY_PARTY_ID = p_from_fk_id
7220    ;
7221     p_to_id := p_from_id;
7222 
7223   end if;
7224 
7225 end Update_PC_PARTY_MERGE;
7226 
7227 -- Progress Management Changes. Bug # 3420093.
7228 
7229 PROCEDURE APPLY_LP_PROG_ON_CWV(
7230   p_api_version                 IN      NUMBER          :=1.0
7231  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
7232  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
7233  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
7234  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
7235  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
7236  ,p_debug_mode                  IN      VARCHAR2        :='N'
7237  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
7238  ,p_project_id                  IN      NUMBER
7239  ,p_working_str_version_id      IN      NUMBER
7240  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7241  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
7242  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
7243 )
7244 IS
7245    l_api_name           CONSTANT   VARCHAR2(30)    := 'APPLY_LP_PROG_ON_CWV';
7246    l_api_version        CONSTANT   NUMBER          := p_api_version;
7247    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
7248    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
7249    l_return_status                 VARCHAR2(1);
7250    l_msg_count                     NUMBER;
7251    l_msg_data                      VARCHAR2(250);
7252    l_msg_code                      VARCHAR2(12000);
7253    l_etc_start_date                DATE;
7254 
7255 
7256 CURSOR C1(p_project_id NUMBER, p_working_str_version_id NUMBER) is
7257 --  Bug # 4581937.
7258         select ppr.*
7259         from pa_progress_rollup ppr, pa_proj_element_versions ppev --4871809
7260         where ppr.project_id = p_project_id
7261         and ppr.structure_version_id is null
7262         and ppr.object_type in ('PA_STRUCTURES','PA_ASSIGNMENTS','PA_TASKS')
7263         --and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y'  --bug 4050532
7264         and structure_type = 'WORKPLAN' -- FPM Dev CR 3
7265         and current_flag = 'Y'
7266         and ppr.proj_element_id = ppev.proj_element_id
7267         and ppev.parent_structure_version_id = p_working_str_version_id
7268         and nvl(ppev.task_unpub_ver_status_code,'X') <>'TO_BE_DELETED' ;
7269 
7270 
7271 CURSOR C2(p_project_id NUMBER) is
7272                 select max(as_of_date)
7273                 from pa_progress_rollup ppr
7274                 where ppr.project_id = p_project_id
7275                 and ppr.structure_version_id is null
7276                 and ppr.structure_type = 'WORKPLAN'
7277             and ppr.current_flag <> 'W'   -- Bug 3879461
7278         ;
7279 
7280 -- FPM Dev CR 4 : Added the cusrosr c_get_work_obj_ver_id
7281 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER) IS
7282                 select element_version_id
7283                 from pa_proj_element_versions
7284                 where project_id = p_project_id
7285                 and proj_element_id = c_proj_element_id
7286                 and parent_structure_version_id = c_structure_version_id;
7287 
7288 -- Bug 3764224 : Changed the cusrosr c4 def'n
7289 cursor c4 (p_project_id NUMBER, p_object_id NUMBER, p_working_str_version_id NUMBER, p_task_id NUMBER,  c_cbs_element_id NUMBER) is
7290     select ptav1.resource_assignment_id, ptav1.resource_list_member_id, ptav1.txn_currency_code
7291            ,ptav1.resource_class_code, ptav1.rate_based_flag, ptav1.rbs_element_id
7292     from pa_task_asgmts_v ptav1
7293     where ptav1.resource_list_member_id = p_object_id
7294 	AND NVL(ptav1.cbs_element_id,-1)=NVL(c_cbs_element_id,-1)-- NEED TO ADD :::DJ
7295     and ptav1.structure_version_id = p_working_str_version_id
7296     and ptav1.task_id = p_task_id
7297      ;
7298 
7299 cursor c5 (p_project_id NUMBER, p_res_list_member_id NUMBER, p_task_id NUMBER,
7300            p_task_version_id NUMBER, p_structure_version_id NUMBER,c_cbs_element_id NUMBER) is
7301     select rbs_element_id, rate_based_flag, resource_class_code, txn_currency_code
7302            ,resource_list_member_id ,resource_assignment_id--bug 3935699
7303     from pa_task_asgmts_v
7304     where project_id  = p_project_id
7305     and resource_list_member_id = p_res_list_member_id -- Commented out to fix Bug # 3815741.
7306                 --uncommented the resource_list_member_id for bug 3839699
7307     AND NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1)-- for cbs
7308 	and task_id = p_task_id
7309     and task_version_id = p_task_version_id
7310     and structure_version_id = p_structure_version_id;
7311 
7312     CURSOR cur_proj_elements(c_proj_element_id NUMBER)
7313 IS
7314 
7315      SELECT decode( ppe.base_percent_comp_deriv_code, null, ptt.base_percent_comp_deriv_code, '^', ptt.base_percent_comp_deriv_code, ppe.base_percent_comp_deriv_code )
7316      from pa_proj_elements ppe
7317          ,pa_task_types ptt   --added during the bugfix 3962823.
7318     where ppe.project_id = p_project_id
7319      and ppe.proj_element_id = c_proj_element_id
7320      and ppe.type_id = ptt.task_type_id
7321      ;
7322 
7323 --bug 3846474
7324 cursor all_lowest_task
7325 is
7326   select task_version_id, 'PA_ASSIGNMENTS' object_type,
7327          resource_assignment_id, TXN_CURRENCY_CODE
7328     from pa_task_asgmts_v ptav
7329    where ptav.project_id= p_project_id
7330      and ptav.structure_version_id = p_working_str_version_id
7331      and ptav.planning_start_date <= l_etc_start_date
7332 -- Bug 3958686 : Commenting the ta_display_flag portion
7333      and NOT EXISTS ( select 'x' from pa_progress_rollup
7334                        where project_id=p_project_id
7335                        and object_id = ptav.resource_list_member_id
7336 					   and NVL(cbs_element_id,-1) = NVL(ptav.cbs_element_id,-1)-- added for 16895485
7337                        and proj_element_id = ptav.task_id
7338                        and object_type = 'PA_ASSIGNMENTS'
7339                and structure_type = 'WORKPLAN' -- Bug 3879461
7340                        and structure_version_id is null
7341                        and current_flag = 'Y'
7342                        );
7343 cursor l_scheduled_dates_cur(p_project_id NUMBER, p_object_id NUMBER, p_object_version_id NUMBER) is
7344 select scheduled_start_date
7345        ,scheduled_finish_date
7346 from pa_proj_elem_ver_schedule
7347 where project_id = p_project_id
7348       and proj_element_id = p_object_id
7349       and element_version_id = p_object_version_id;
7350 
7351 cursor l_ptav_cur(p_project_id NUMBER, p_object_id NUMBER, p_task_id NUMBER, p_task_version_id NUMBER , c_cbs_element_id NUMBER) is
7352 select resource_class_code
7353        ,resource_list_member_id
7354        ,assignment_start_date
7355        ,assignment_end_date
7356        ,txn_currency_code
7357        ,resource_assignment_id
7358        -- Bug 3818439 : Added planned amount here
7359        ,planned_quantity
7360        ,planned_bur_cost_txn_cur
7361        ,planned_bur_cost_projfunc
7362        ,planned_bur_cost_proj_cur
7363        ,planned_raw_cost_txn_cur
7364        ,planned_raw_cost_proj_cur
7365        ,planned_raw_cost_projfunc
7366        ,rate_based_flag               --bug 3841547
7367        ,ta_display_flag               --bug 4021315
7368 	   ,CBS_ELEMENT_ID
7369 from pa_task_asgmts_v
7370 where project_id = p_project_id
7371 --      and resource_assignment_id = p_object_id Bug 3764224
7372       and resource_list_member_id = p_object_id -- Bug 3764224 ---:::DJ
7373       and task_id = p_task_id
7374       --and task_version_id = p_task_version_id    --bug 3911600
7375       and structure_version_id = pa_proj_elements_utils.latest_published_ver_id(p_project_id,'WORKPLAN')
7376 	  and NVL(cbs_element_id,-1) = NVL(c_cbs_element_id,-1);--added for cbs 16895485
7377 
7378 cursor cur_proj_prog_attr
7379 is
7380 select pppa.task_weight_basis_code
7381 from pa_proj_progress_attr pppa
7382 where project_id=p_project_id
7383 and structure_type ='WORKPLAN'
7384 ;
7385 
7386 l_work_obj_ver_id    NUMBER; -- FPM Dev CR 4
7387 
7388 l_c1rec c1%rowtype;
7389 l_c4rec c4%rowtype;
7390 l_c5rec c5%rowtype;
7391 
7392 l_progress_rollup_id NUMBER := null;
7393 l_max_as_of_date date;
7394 l_as_of_date    date;
7395 
7396 l_task_ver_id_tbl_task              SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7397 l_planned_effort_tbl_task           SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7398 l_start_date_tbl_task               SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7399 l_end_date_tbl_task                 SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7400 
7401 l_raw_cost_tbl_task                 SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7402 l_burdened_cost_tbl_task            SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7403 
7404 l_task_ver_id_tbl_assgn              SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7405 l_planned_ppl_effort_tbl_assgn       SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7406 l_planned_eqp_effort_tbl_assgn       SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7407 l_planned_qty_tbl_assgn              SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7408 l_start_date_tbl_assgn               SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7409 l_end_date_tbl_assgn                 SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7410 l_res_list_mem_tbl_assgn             SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7411 l_cbs_element_id_tbl_assgn             SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7412 l_res_assgn_id_tbl_assgn             SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7413 l_currency_code_tbl_assgn            SYSTEM.pa_varchar2_15_tbl_type := SYSTEM.pa_varchar2_15_tbl_type();
7414 
7415 l_raw_cost_tbl_assgn            SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7416 l_burdened_cost_tbl_assgn       SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7417 
7418 
7419 l_act_TXN_COST_this_period      NUMBER := 0;
7420 l_act_PRJ_COST_this_period      NUMBER := 0;
7421 l_act_POU_COST_this_period      NUMBER := 0;
7422 l_act_effort_this_period        NUMBER := 0;
7423 -- Bug 3621404 : Raw Cost Changes Begin
7424 l_act_TXN_RAWCOST_this_period   NUMBER := 0;
7425 l_act_PRJ_RAWCOST_this_period   NUMBER := 0;
7426 l_act_POU_RAWCOST_this_period   NUMBER := 0;
7427 l_etc_TXN_COST_this_period      NUMBER := 0;
7428 l_etc_PRJ_COST_this_period      NUMBER := 0;
7429 l_etc_POU_COST_this_period      NUMBER := 0;
7430 l_etc_TXN_RAWCOST_this_period   NUMBER := 0;
7431 l_etc_PRJ_RAWCOST_this_period   NUMBER := 0;
7432 l_etc_POU_RAWCOST_this_period   NUMBER := 0;
7433 l_etc_effort_this_period        NUMBER := 0;
7434 -- Bug 3621404 : Raw Cost Changes End
7435 
7436 l_version_enabled_flag VARCHAR2(1) := null;
7437 
7438 l_project_ids                   SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7439 l_struture_version_ids          SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type();
7440 l_proj_thru_dates_tbl           SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
7441 
7442 l_res_assign_id_out             NUMBER := null;
7443 l_task_version_id_out           NUMBER := null;
7444 l_txn_curr_code_out             VARCHAR2(15) := null;
7445 L_NEW_RESOURCE_LIST_MEM_ID  NUMBER; -- Bug 3764224
7446 l_rate_based_flag_x             VARCHAR2(1);
7447 l_rbs_element_id                NUMBER;
7448 
7449 l_etc    NUMBER := 0;       --bug 3826599
7450 l_assignment_exists   VARCHAR2(1); -- Bug 3834339
7451 l_scheduled_dates_rec l_scheduled_dates_cur%rowtype;
7452 l_ptav_rec l_ptav_cur%rowtype;
7453 l_res_assgmt_id NUMBER; --bug 4021315
7454 l_prev_act_effort NUMBER := null;
7455 l_prev_etc_effort NUMBER := null;
7456 
7457 l_task_weight_basis_code VARCHAR2(30);
7458 l_baselined_str_ver_id   NUMBER;
7459 
7460 --added for percent complete recalculation at the lowest level task as per the new planned effort.
7461 l_EFF_ROLLUP_PERCENT_COMP  NUMBER;
7462 l_planned_effort           NUMBER;
7463 l_planned_cost             NUMBER;
7464 l_BASE_PERCENT_COMP_DERIV_CODE   VARCHAR2(30);
7465 l_earned_value            NUMBER;
7466 g1_debug_mode             VARCHAR2(1);
7467 l_track_wp_cost_flag  VARCHAR2(1) := 'Y'; -- Bug 3801745
7468 l_task_assgn NUMBER := null;
7469 l_new_resource_assignment_id  NUMBER;
7470 l_new_object_id               NUMBER;
7471 l_resource_class_code         NUMBER;
7472 l_rate_based_flag             NUMBER;
7473 
7474 --bug 4050532
7475 
7476  PROGRESS_ROLLUP_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
7477  PERCENT_COMPLETE_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
7478  PROJECT_ID                               PA_PLSQL_DATATYPES.Num15TabTyp;
7479  OBJECT_ID                                PA_PLSQL_DATATYPES.Num15TabTyp;
7480  L_CBS_ELEMENT_ID                         PA_PLSQL_DATATYPES.Num15TabTyp;
7481  OBJECT_TYPE                              PA_PLSQL_DATATYPES.Char30TabTyp;
7482  AS_OF_DATE                               PA_PLSQL_DATATYPES.DateTabTyp;
7483  OBJECT_VERSION_ID                        PA_PLSQL_DATATYPES.Num15TabTyp;
7484  LAST_UPDATE_DATE                         PA_PLSQL_DATATYPES.DateTabTyp;
7485  LAST_UPDATED_BY                          PA_PLSQL_DATATYPES.Num15TabTyp;
7486  CREATION_DATE                            PA_PLSQL_DATATYPES.DateTabTyp;
7487  CREATED_BY                               PA_PLSQL_DATATYPES.Num15TabTyp;
7488  PROGRESS_STATUS_CODE                     PA_PLSQL_DATATYPES.Char150TabTyp;
7489  LAST_UPDATE_LOGIN                        PA_PLSQL_DATATYPES.Num15TabTyp;
7490  INCREMENTAL_WORK_QUANTITY                PA_PLSQL_DATATYPES.QtyTabtyp;
7491  CUMULATIVE_WORK_QUANTITY                 PA_PLSQL_DATATYPES.QtyTabtyp;
7492  BASE_PERCENT_COMPLETE                    PA_PLSQL_DATATYPES.QtyTabtyp;
7493  EFF_ROLLUP_PERCENT_COMP                  PA_PLSQL_DATATYPES.QtyTabtyp;
7494  COMPLETED_PERCENTAGE                     PA_PLSQL_DATATYPES.QtyTabtyp;
7495  ESTIMATED_START_DATE                     PA_PLSQL_DATATYPES.DateTabTyp;
7496  ESTIMATED_FINISH_DATE                    PA_PLSQL_DATATYPES.DateTabTyp;
7497  ACTUAL_START_DATE                        PA_PLSQL_DATATYPES.DateTabTyp;
7498  ACTUAL_FINISH_DATE                       PA_PLSQL_DATATYPES.DateTabTyp;
7499  RECORD_VERSION_NUMBER                    PA_PLSQL_DATATYPES.Num15TabTyp;
7500  BASE_PERCENT_COMP_DERIV_CODE             PA_PLSQL_DATATYPES.Char30TabTyp;
7501  BASE_PROGRESS_STATUS_CODE                PA_PLSQL_DATATYPES.Char150TabTyp;
7502  EFF_ROLLUP_PROG_STAT_CODE                PA_PLSQL_DATATYPES.Char150TabTyp;
7503  STRUCTURE_TYPE                           PA_PLSQL_DATATYPES.Char30TabTyp;
7504  PROJ_ELEMENT_ID                          PA_PLSQL_DATATYPES.Num15TabTyp;
7505  STRUCTURE_VERSION_ID                     PA_PLSQL_DATATYPES.Num15TabTyp;
7506  PPL_ACT_EFFORT_TO_DATE                   PA_PLSQL_DATATYPES.QtyTabtyp;
7507  EQPMT_ACT_EFFORT_TO_DATE                 PA_PLSQL_DATATYPES.QtyTabtyp;
7508  OTH_QUANTITY_TO_DATE                     PA_PLSQL_DATATYPES.AmtTabTyp;
7509 
7510  OTH_ACT_COST_TO_DATE_TC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7511  OTH_ACT_RAWCOST_TO_DATE_TC               PA_PLSQL_DATATYPES.AmtTabTyp;
7512  OTH_ACT_COST_TO_DATE_FC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7513  OTH_ACT_RAWCOST_TO_DATE_FC               PA_PLSQL_DATATYPES.AmtTabTyp;
7514  OTH_ACT_COST_TO_DATE_PC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7515  OTH_ACT_RAWCOST_TO_DATE_PC               PA_PLSQL_DATATYPES.AmtTabTyp;
7516 
7517  PPL_ACT_COST_TO_DATE_TC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7518  PPL_ACT_RAWCOST_TO_DATE_TC               PA_PLSQL_DATATYPES.AmtTabTyp;
7519  PPL_ACT_COST_TO_DATE_FC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7520  PPL_ACT_RAWCOST_TO_DATE_FC               PA_PLSQL_DATATYPES.AmtTabTyp;
7521  PPL_ACT_COST_TO_DATE_PC                  PA_PLSQL_DATATYPES.AmtTabTyp;
7522  PPL_ACT_RAWCOST_TO_DATE_PC               PA_PLSQL_DATATYPES.AmtTabTyp;
7523 
7524  EQPMT_ACT_COST_TO_DATE_TC                PA_PLSQL_DATATYPES.AmtTabTyp;
7525  EQPMT_ACT_RAWCOST_TO_DATE_TC             PA_PLSQL_DATATYPES.AmtTabTyp;
7526  EQPMT_ACT_COST_TO_DATE_FC                PA_PLSQL_DATATYPES.AmtTabTyp;
7527  EQPMT_ACT_RAWCOST_TO_DATE_FC             PA_PLSQL_DATATYPES.AmtTabTyp;
7528  EQPMT_ACT_COST_TO_DATE_PC                PA_PLSQL_DATATYPES.AmtTabTyp;
7529  EQPMT_ACT_RAWCOST_TO_DATE_PC             PA_PLSQL_DATATYPES.AmtTabTyp;
7530 
7531  EARNED_VALUE                             PA_PLSQL_DATATYPES.QtyTabtyp;
7532  TASK_WT_BASIS_CODE                       PA_PLSQL_DATATYPES.Char30TabTyp;
7533  CURRENT_FLAG                             PA_PLSQL_DATATYPES.Char1TabTyp;
7534  PROJFUNC_COST_RATE_TYPE                  PA_PLSQL_DATATYPES.Char30TabTyp;
7535  PROJFUNC_COST_EXCHANGE_RATE              PA_PLSQL_DATATYPES.AmtTabTyp;
7536  PROJFUNC_COST_RATE_DATE                  PA_PLSQL_DATATYPES.DateTabTyp;
7537  PROJ_COST_RATE_TYPE                      PA_PLSQL_DATATYPES.Char30TabTyp;
7538  PROJ_COST_EXCHANGE_RATE                  PA_PLSQL_DATATYPES.AmtTabTyp;
7539  PROJ_COST_RATE_DATE                      PA_PLSQL_DATATYPES.DateTabTyp;
7540  TXN_CURRENCY_CODE                        PA_PLSQL_DATATYPES.Char15TabTyp;
7541  PROG_PA_PERIOD_NAME                      PA_PLSQL_DATATYPES.Char30TabTyp;
7542  PROG_GL_PERIOD_NAME                      PA_PLSQL_DATATYPES.Char30TabTyp;
7543 
7544  l_index1  NUMBER := 0;
7545  l_index2  NUMBER := 0;
7546 l_lowest_level_task      VARCHAR2(1);
7547   --bug 4050532
7548 
7549 BEGIN
7550 
7551         IF g1_debug_mode  = 'Y' THEN
7552                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7553         END IF;
7554 
7555         IF (p_debug_mode = 'Y') THEN
7556                 IF g1_debug_mode  = 'Y' THEN
7557                         pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV');
7558                 END IF;
7559         END IF;
7560 
7561 
7562         IF (p_commit = FND_API.G_TRUE) THEN
7563                 savepoint APPLY_LP_PROG_ON_CWV;
7564         END IF;
7565 
7566         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
7567                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7568         END IF;
7569 
7570         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
7571                 FND_MSG_PUB.initialize;
7572         END IF;
7573 
7574         x_return_status := FND_API.G_RET_STS_SUCCESS;
7575 
7576         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7577 
7578         IF g1_debug_mode  = 'Y' THEN
7579                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV Start : Passed Parameters :', x_Log_Level=> 3);
7580                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
7581                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'p_working_str_version_id='||p_working_str_version_id, x_Log_Level=> 3);
7582         END IF;
7583 
7584     -- Bug 3786612 : Added  check_txn_currency_diff call
7585     PA_PROGRESS_UTILS.check_txn_currency_diff
7586         (
7587             p_structure_version_id => p_working_str_version_id,
7588             p_context => 'APPLY_PROGRESS',
7589             x_return_status => x_return_status
7590         );
7591 
7592     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7593         RAISE  FND_API.G_EXC_ERROR;
7594     END IF;
7595 
7596         l_version_enabled_flag := PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id);
7597         --- setting this global var for PJI. In case of VD struct they won't touch ETC
7598         if (l_version_enabled_flag <> 'Y') then  --- APP
7599             pa_progress_pub.g_wbs_apply_prog := p_working_str_version_id;
7600         end if;
7601 
7602     IF g1_debug_mode  = 'Y' THEN
7603                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_version_enabled_flag='||l_version_enabled_flag, x_Log_Level=> 3);
7604         END IF;
7605 
7606         -- Get max(as_of_date) for all progress records for the project.
7607         OPEN c2(p_project_id);
7608         FETCH c2 INTO l_max_as_of_date;
7609         IF l_max_as_of_date IS NULL
7610         THEN
7611                 CLOSE c2;
7612                 return;
7613         END IF;
7614         CLOSE c2;
7615 
7616         l_as_of_date := l_max_as_of_date;
7617         l_etc_start_date := l_max_as_of_date + 1;
7618 
7619     IF g1_debug_mode  = 'Y' THEN
7620                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
7621         END IF;
7622 
7623         -- Set B and F package variable.
7624         PA_FP_CALC_PLAN_PKG.G_SPREAD_FROM_DATE := l_max_as_of_date;
7625         l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --Bug 3801745
7626 
7627         --moved from below to use it in % complete recalculation.
7628         OPEN cur_proj_prog_attr;
7629         FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
7630         CLOSE cur_proj_prog_attr;
7631 
7632         -- Loop through the cursor for each of the lowest tasks.
7633         OPEN c1(p_project_id,p_working_str_version_id);
7634           LOOP
7635               FETCH c1 INTO l_c1rec;
7636                 EXIT WHEN c1%NOTFOUND;
7637 
7638         IF g1_debug_mode  = 'Y' THEN
7639             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_version_id='||l_c1rec.object_version_id, x_Log_Level=> 3);
7640             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_id='||l_c1rec.object_id, x_Log_Level=> 3);
7641             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.object_type='||l_c1rec.object_type, x_Log_Level=> 3);
7642         END IF;
7643                   -- Populate PL/SQL tables that will be used by the FP API:
7644                   -- pa_fp_planning_transaction_pub.update_planning_transactions.
7645                   -- This is done in both cases - if workplan versioning is enabled
7646                   -- or disabled.
7647 
7648                   -- Cursor cur_task_assgn is used to check if the lowest task has any
7649                   -- assignments or not.
7650           -- Bug 3834339 : Using function to decide whether assignment exists on task or not
7651           l_assignment_exists := 'N';
7652           IF l_c1rec.object_type = 'PA_TASKS' THEN
7653             l_assignment_exists := NVL(PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_c1rec.object_version_id,l_c1rec.object_type),'N');
7654             l_lowest_level_task := NVL(pa_proj_elements_utils.is_lowest_task(l_c1rec.object_version_id),'N');   --bug 4050532
7655           END IF;
7656 
7657 
7658           IF g1_debug_mode  = 'Y' THEN
7659             --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_task_assgn='||l_task_assgn, x_Log_Level=> 3);
7660             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_assignment_exists='||l_assignment_exists, x_Log_Level=> 3);
7661           END IF;
7662 
7663         /* Begin commenting out this code to fix bug # 4074299.
7664 
7665                   -- If the lowest task does not have assignments then populate the task data in the
7666                   -- "%_tbl_task" pl_sql tables.
7667 
7668           IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N') AND
7669                nvl(l_lowest_level_task,'N')='Y')  --bug 4050532
7670                   THEN
7671               l_task_ver_id_tbl_task.extend;
7672               l_planned_effort_tbl_task.extend;
7673               l_start_date_tbl_task.extend;
7674               l_end_date_tbl_task.extend;
7675 
7676               l_raw_cost_tbl_task.extend;
7677               l_burdened_cost_tbl_task.extend;
7678 
7679               l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_c1rec.object_version_id;
7680                   l_planned_effort_tbl_task(l_planned_effort_tbl_task.count) := nvl(l_c1rec.ppl_act_effort_to_date,0)
7681                                                                   + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7682                                                                   + nvl(l_c1rec.subprj_ppl_act_effort,0)
7683                                                                   + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7684                                                                   + nvl(l_c1rec.estimated_remaining_effort,0)
7685                                                                   + nvl(l_c1rec.eqpmt_etc_effort,0)
7686                                                                   + nvl(l_c1rec.subprj_ppl_etc_effort,0)
7687                                                                   + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7688 
7689              OPEN l_scheduled_dates_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.object_version_id);
7690              FETCH l_scheduled_dates_cur INTO l_scheduled_dates_rec;
7691              CLOSE l_scheduled_dates_cur;
7692 
7693              l_start_date_tbl_task(l_start_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_start_date;
7694              l_end_date_tbl_task(l_end_date_tbl_task.count) := l_scheduled_dates_rec.scheduled_finish_date;
7695 
7696              l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
7697                                                                +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
7698                                                                +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
7699                                                                +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
7700                                                                +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
7701                                                                +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
7702                                                                +nvl(l_c1rec.ppl_etc_cost_pc,0)
7703                                                                +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
7704                                                                +nvl(l_c1rec.oth_etc_cost_pc,0)
7705                                                                +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
7706                                                                +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
7707                                                                +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
7708 
7709              l_raw_cost_tbl_task(l_raw_cost_tbl_task.count) := nvl(l_c1rec.oth_act_rawcost_to_date_pc,0)
7710                                                               +nvl(l_c1rec.ppl_act_rawcost_to_date_pc,0)
7711                                                               +nvl(l_c1rec.eqpmt_act_rawcost_to_date_pc,0)
7712                                                               +nvl(l_c1rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)
7713                                                               +nvl(l_c1rec.subprj_ppl_act_rawcost_pc,0)
7714                                                               +nvl(l_c1rec.subprj_eqpmt_act_rawcost_pc,0)
7715                                                               +nvl(l_c1rec.ppl_etc_rawcost_pc,0)
7716                                                               +nvl(l_c1rec.eqpmt_etc_rawcost_pc,0)
7717                                                               +nvl(l_c1rec.oth_etc_rawcost_pc,0)
7718                                                               +nvl(l_c1rec.subprj_ppl_etc_rawcost_pc,0)
7719                                                               +nvl(l_c1rec.subprj_eqpmt_etc_rawcost_pc,0)
7720                                                               +nvl(l_c1rec.subprj_oth_etc_rawcost_pc,0);
7721             IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7722                 l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count) := null;
7723                 l_raw_cost_tbl_task(l_raw_cost_tbl_task.count):= null;
7724             END IF;
7725 
7726             IF g1_debug_mode  = 'Y' THEN
7727                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort_tbl_task(l_planned_effort_tbl_task.count)='||l_planned_effort_tbl_task(l_planned_effort_tbl_task.count), x_Log_Level=> 3);
7728                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count)='||l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count), x_Log_Level=> 3);
7729                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_task(l_raw_cost_tbl_task.count)='||l_raw_cost_tbl_task(l_raw_cost_tbl_task.count), x_Log_Level=> 3);
7730             END IF;
7731           END IF; -- ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7732 
7733                 End commenting out this code to fix bug # 4074299. */
7734 
7735                   -- For all assignments populate the assignment data in the "%tbl_assgn" pl_sql tables.
7736 
7737           IF (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7738             l_task_ver_id_tbl_assgn.extend;
7739             l_planned_ppl_effort_tbl_assgn.extend;
7740             l_planned_eqp_effort_tbl_assgn.extend;
7741             l_planned_qty_tbl_assgn.extend;
7742             l_start_date_tbl_assgn.extend;
7743             l_end_date_tbl_assgn.extend;
7744             l_res_list_mem_tbl_assgn.extend;
7745 			l_cbs_element_id_tbl_assgn.extend;
7746             l_currency_code_tbl_assgn.extend;
7747             l_res_assgn_id_tbl_assgn.extend;
7748             l_raw_cost_tbl_assgn.extend;
7749             l_burdened_cost_tbl_assgn.extend;
7750             OPEN l_ptav_cur(l_c1rec.project_id, l_c1rec.object_id, l_c1rec.proj_element_id,l_c1rec.object_version_id,l_c1rec.cbs_element_id);
7751             FETCH l_ptav_cur INTO l_ptav_rec;
7752             CLOSE l_ptav_cur;
7753 
7754             l_task_ver_id_tbl_assgn(l_task_ver_id_tbl_assgn.count) := l_c1rec.object_version_id;
7755             -- Bug 3818439 : Defaylting ETC to planned-Actual if ETC is null
7756             -- l_planned_ppl_effort_tbl_assgn and l_planned_eqp_effort_tbl_assgn is not used
7757             -- so no need to change it.
7758             -- Depending on resource_class_code, it should default ETC to planned-actual
7759 
7760             l_planned_ppl_effort_tbl_assgn(l_planned_ppl_effort_tbl_assgn.count):= nvl(l_c1rec.ppl_act_effort_to_date,0)
7761                                                                   + nvl(l_c1rec.subprj_ppl_act_effort,0)
7762                                                                   + nvl(l_c1rec.estimated_remaining_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.ppl_act_effort_to_date,0))
7763                                                                   + nvl(l_c1rec.subprj_ppl_etc_effort,0);
7764 
7765             l_planned_eqp_effort_tbl_assgn(l_planned_eqp_effort_tbl_assgn.count):=nvl(l_c1rec.eqpmt_act_effort_to_date,0)
7766                                                                   + nvl(l_c1rec.eqpmt_etc_effort,nvl(l_ptav_rec.planned_quantity,0)-nvl(l_c1rec.eqpmt_act_effort_to_date,0))
7767                                                                   + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
7768                                                                   + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
7769 
7770 
7771             ------5726773 removed all old code regarding l_etc (bug 4378391) and calling a function to calculate proper ETC if it is null
7772 	    IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
7773                 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7774                     l_etc := l_c1rec.oth_etc_quantity;
7775                 ELSE
7776                    ---5726773
7777 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.oth_quantity_to_date,0));
7778                                 END IF;
7779                                 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7780 
7781                 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7782                     l_etc := l_c1rec.oth_etc_cost_tc;
7783                 ELSE
7784                     ---5726773
7785 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.oth_act_cost_to_date_tc,0));
7786                                 END IF;
7787                                 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7788 
7789                 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7790                     l_etc := l_c1rec.oth_etc_rawcost_tc;
7791                 ELSE
7792                     ---5726773
7793 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.oth_act_rawcost_to_date_tc,0));
7794                                 END IF;
7795                                 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7796 
7797             ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
7798                 IF l_c1rec.oth_etc_quantity IS NOT NULL THEN
7799                         l_etc := l_c1rec.oth_etc_quantity;
7800                 ELSE
7801                    ---5726773
7802 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.oth_quantity_to_date,0));
7803                                 END IF;
7804                                 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.oth_quantity_to_date,0) + l_etc;
7805 
7806                 IF l_c1rec.oth_etc_cost_tc IS NOT NULL THEN
7807                     l_etc := l_c1rec.oth_etc_cost_tc;
7808                 ELSE
7809                    ---5726773
7810 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.oth_act_cost_to_date_tc,0));
7811                                 END IF;
7812                                 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_cost_to_date_tc,0) + l_etc;
7813 
7814                 IF l_c1rec.oth_etc_rawcost_tc IS NOT NULL THEN
7815                     l_etc := l_c1rec.oth_etc_rawcost_tc;
7816                 ELSE
7817                     ---5726773
7818 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.oth_act_rawcost_to_date_tc,0));
7819                                 END IF;
7820                                 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.oth_act_rawcost_to_date_tc,0) + l_etc;
7821 
7822             ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
7823                 IF l_c1rec.estimated_remaining_effort IS NOT NULL THEN
7824                     l_etc := l_c1rec.estimated_remaining_effort;
7825                 ELSE
7826                     ---5726773
7827 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.ppl_act_effort_to_date,0));
7828                                 END IF;
7829                                 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.ppl_act_effort_to_date,0) + l_etc;
7830 
7831                 IF l_c1rec.ppl_etc_cost_tc IS NOT NULL THEN
7832                     l_etc := l_c1rec.ppl_etc_cost_tc;
7833                 ELSE
7834                    ---5726773
7835 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.ppl_act_cost_to_date_tc,0));
7836                                 END IF;
7837                                 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_cost_to_date_tc,0) + l_etc;
7838 
7839                 IF l_c1rec.ppl_etc_rawcost_tc IS NOT NULL THEN
7840                     l_etc := l_c1rec.ppl_etc_rawcost_tc;
7841                 ELSE
7842                     ---5726773
7843 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.ppl_act_rawcost_to_date_tc,0));
7844                                 END IF;
7845                                 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.ppl_act_rawcost_to_date_tc,0) + l_etc;
7846 
7847             ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
7848                 IF l_c1rec.eqpmt_etc_effort IS NOT NULL THEN
7849                     l_etc := l_c1rec.eqpmt_etc_effort;
7850                 ELSE
7851                    ---5726773
7852 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_quantity,0),nvl(l_c1rec.eqpmt_act_effort_to_date,0));
7853                                 END IF;
7854                                 l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_effort_to_date,0) + l_etc;
7855 
7856                 IF l_c1rec.eqpmt_etc_cost_tc IS NOT NULL THEN
7857                     l_etc := l_c1rec.eqpmt_etc_cost_tc;
7858                 ELSE
7859                    ---5726773
7860 		   l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_bur_cost_txn_cur,0),nvl(l_c1rec.eqpmt_act_cost_to_date_tc,0));
7861                                 END IF;
7862 				l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_cost_to_date_tc,0) + l_etc;
7863 
7864                 IF l_c1rec.eqpmt_etc_rawcost_tc IS NOT NULL THEN
7865                     l_etc := l_c1rec.eqpmt_etc_rawcost_tc;
7866                 ELSE
7867                     ---5726773
7868 		    l_etc := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(nvl(l_ptav_rec.planned_raw_cost_txn_cur,0),nvl(l_c1rec.eqpmt_act_rawcost_to_date_tc,0));
7869                                 END IF;
7870                                 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := nvl(l_c1rec.eqpmt_act_rawcost_to_date_tc,0) + l_etc;
7871 
7872             END IF; -- l_ptav_rec.resource_class_code
7873 
7874             IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
7875                 l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
7876                 l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count):= null;
7877             END IF;
7878 
7879 
7880             l_start_date_tbl_assgn(l_start_date_tbl_assgn.count) := l_ptav_rec.assignment_start_date;
7881             l_end_date_tbl_assgn(l_end_date_tbl_assgn.count) := l_ptav_rec.assignment_end_date;
7882             l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count) := l_ptav_rec.resource_list_member_id;
7883 			l_cbs_element_id_tbl_assgn(l_cbs_element_id_tbl_assgn.count) := l_ptav_rec.CBS_ELEMENT_ID;-- added for 16895485
7884             l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_ptav_rec.txn_currency_code;
7885             l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_ptav_rec.resource_assignment_id;
7886 
7887             IF g1_debug_mode  = 'Y' THEN
7888                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_start_date_tbl_assgn(l_start_date_tbl_assgn.count)='||l_start_date_tbl_assgn(l_start_date_tbl_assgn.count), x_Log_Level=> 3);
7889                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_end_date_tbl_assgn(l_end_date_tbl_assgn.count)='||l_end_date_tbl_assgn(l_end_date_tbl_assgn.count), x_Log_Level=> 3);
7890                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count)='||l_res_list_mem_tbl_assgn(l_res_list_mem_tbl_assgn.count), x_Log_Level=> 3);
7891                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count)='||l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count), x_Log_Level=> 3);
7892                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count)='||l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count), x_Log_Level=> 3);
7893                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count)='||l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count), x_Log_Level=> 3);
7894                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count)='||l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count), x_Log_Level=> 3);
7895                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count)='||l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count), x_Log_Level=> 3);
7896             END IF;
7897           END IF; -- (l_c1rec.object_type = 'PA_ASSIGNMENTS') THEN
7898 
7899           -- The following actions are only performed if workplan versioning is enabled: 1
7900           IF (l_version_enabled_flag = 'Y') THEN
7901 
7902             -- 1.1). Make sure that all assignments in published version are also in the current_working version.
7903             -- maansari6/26
7904             IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7905                 OPEN c_get_work_obj_ver_id(l_c1rec.proj_element_id, p_working_str_version_id);
7906                 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7907                 CLOSE c_get_work_obj_ver_id;
7908                     ELSE
7909                 OPEN c_get_work_obj_ver_id(l_c1rec.object_id, p_working_str_version_id);
7910                 FETCH c_get_work_obj_ver_id INTO l_work_obj_ver_id;
7911                 CLOSE c_get_work_obj_ver_id;
7912             END IF;
7913             IF g1_debug_mode  = 'Y' THEN
7914                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Version Enabled l_work_obj_ver_id='||l_work_obj_ver_id, x_Log_Level=> 3);
7915             END IF;
7916 
7917                 /* Begin commenting out this code to fix bug # 4074299.
7918 
7919             IF ((l_c1rec.object_type = 'PA_TASKS') AND (nvl(l_assignment_exists,'N') = 'N')) THEN
7920                 l_task_ver_id_tbl_task(l_task_ver_id_tbl_task.count) := l_work_obj_ver_id;
7921             END IF;
7922 
7923                 End commenting out this code to fix bug # 4074299. */
7924 
7925             -- maansari6/26
7926 
7927            IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
7928                             OPEN c4 (p_project_id, l_c1rec.object_id, p_working_str_version_id,l_c1rec.proj_element_id,l_c1rec.cbs_element_id );
7929                             FETCH c4 INTO l_c4rec;
7930                             IF c4%notfound THEN
7931                      IF g1_debug_mode  = 'Y' THEN
7932                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Calling DERIVE TASK ASSINGMENT for assignments:rlmid='||l_ptav_rec.resource_list_member_id , x_Log_Level=> 3);
7933                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Task id='||l_c1rec.proj_element_id , x_Log_Level=> 3);
7934                   END IF;
7935                   --bug 4021315, start
7936                                   IF l_ptav_rec.ta_display_flag = 'Y'
7937                   THEN
7938                     l_res_assgmt_id := l_ptav_rec.resource_list_member_id;
7939                   ELSE
7940                     l_res_assgmt_id := null;
7941                   END IF;
7942                                   --bug 4021315, end
7943                     BEGIN
7944 
7945                     pa_task_assignments_pvt.derive_task_assignments
7946                     ( p_project_id             => l_c1rec.project_id
7947                     ,p_task_version_id         => l_work_obj_ver_id           --new task version id maansari6/26
7948                     ,p_scheduled_start         => l_ptav_rec.assignment_start_date
7949                     ,p_scheduled_end           => l_ptav_rec.assignment_end_date
7950                     ,p_resource_class_code     => l_ptav_rec.resource_class_code
7951                     ,p_resource_list_member_id => l_res_assgmt_id
7952                     ,p_unplanned_flag          => 'N'
7953                     ,x_resource_assignment_id  => l_res_assign_id_out
7954                                         ,x_rate_based_flag         => l_rate_based_flag_x
7955                     ,x_task_version_id         => l_task_version_id_out
7956                     ,x_currency_code           => l_txn_curr_code_out
7957                     ,x_resource_list_member_id => l_new_resource_list_mem_id -- Bug 3764224
7958                                         ,x_rbs_element_id          => l_rbs_element_id
7959                     ,x_msg_count               => l_msg_count
7960                     ,x_msg_data                => l_msg_data
7961                     ,x_return_status           => l_return_status,
7962 					p_cbs_element_id => l_ptav_rec.cbs_element_id);-- added for 16895485
7963 
7964                     l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_txn_curr_code_out;
7965                     l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_res_assign_id_out;
7966 
7967                      IF g1_debug_mode  = 'Y' THEN
7968                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done wiht DERIVE TASK ASSINGMENT for assignments:l_res_assign_id_out='||l_res_assign_id_out , x_Log_Level=> 3);
7969                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done wiht DERIVE TASK ASSINGMENT for assignments:l_new_resource_list_mem_id='||l_new_resource_list_mem_id , x_Log_Level=> 3);
7970                  END IF;
7971 
7972                 --maansari6/26
7973                    EXCEPTION
7974                     WHEN OTHERS THEN
7975                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
7976                                     p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
7977                                     p_error_text     => SUBSTRB('PA_TASK_ASSIGNMENTS_PUB.DERIVE_TASK_ASSIGNMENTS:'||SQLERRM,1,120));
7978                         raise fnd_api.g_exc_error;
7979                    END;
7980 
7981                 -- BEGIN: Adding code to fix Bug # 3815741.
7982 
7983                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7984                             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7985                     p_msg_name       => l_msg_data);
7986                             x_msg_data := l_msg_data;
7987                             x_return_status := 'E';
7988                             x_msg_count := l_msg_count;
7989                             RAISE  FND_API.G_EXC_ERROR;
7990                         END IF;
7991 
7992                 -- END: Adding code to fix Bug # 3815741.
7993                 --maansari6/26
7994                 ELSE
7995                 --Get the resource assignment id and currency code from the new structure version.
7996                 l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := l_c4rec.txn_currency_code;
7997                 l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count) := l_c4rec.resource_assignment_id;
7998                 l_new_resource_list_mem_id := l_c4rec.resource_list_member_id; --Bug 3764224
7999                 END IF; -- c4%notfound
8000                 CLOSE c4;
8001             END IF; -- l_c1rec.object_type = 'PA_ASSIGNMENTS'
8002 
8003 
8004             -- 1.2). Check if working progress record exists for the current working version.
8005 
8006                         -- Bug 3621404 : Raw Cost Changes Begin
8007             IF l_c1rec.object_type = 'PA_ASSIGNMENTS' THEN
8008                 --l_new_object_id := l_new_resource_assignment_id; Bug 3764224
8009                 l_new_object_id := l_new_resource_list_mem_id; -- Bug 3764224 Basically this will be same as l_c1rec.object_id always
8010             ELSE
8011                         l_new_object_id := l_c1rec.object_id;
8012                 END IF;
8013 
8014                         l_act_TXN_COST_this_period := null;
8015                         l_act_PRJ_COST_this_period := null;
8016                         l_act_POU_COST_this_period := null;
8017                         l_act_TXN_RAWCOST_this_period := null;
8018                         l_act_PRJ_RAWCOST_this_period := null;
8019                         l_act_POU_RAWCOST_this_period := null;
8020                         l_etc_TXN_COST_this_period := null;
8021                         l_etc_PRJ_COST_this_period := null;
8022                         l_etc_POU_COST_this_period := null;
8023                         l_etc_TXN_RAWCOST_this_period := null;
8024                         l_etc_PRJ_RAWCOST_this_period := null;
8025                         l_etc_POU_RAWCOST_this_period := null;
8026                         l_act_effort_this_period := null;
8027                         l_etc_effort_this_period := null;
8028 
8029                         --added to calculate effective rollup percent complete at the lowest level task as per the new
8030                         --planned value. Not required to calculate for assignments
8031                          --The earned value at task level should be based on baselined. earned value will be re-derived in rollup api.
8032                         --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
8033             --bug 4191360, dont check assignment exists for WQ
8034                         --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
8035                         IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
8036                    AND  NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
8037             THEN
8038                              OPEN cur_proj_elements(l_new_object_id);
8039                              FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
8040                              CLOSE cur_proj_elements;
8041 
8042                 IF g1_debug_mode  = 'Y' THEN
8043                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
8044                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
8045                 END IF;
8046 
8047                               --bug 4191360, recalc %complete only if deriv. code has changed
8048                  IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8049                  THEN
8050                  --bug 4191360, moved this from below
8051                      IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8052                      THEN
8053                      l_EFF_ROLLUP_PERCENT_COMP :=  round(PA_PROGRESS_UTILS.Calc_base_percent(
8054                                     p_task_id              => l_c1rec.object_id
8055                                    ,p_incr_work_qty        => l_c1rec.INCREMENTAL_WORK_QUANTITY
8056                                    ,p_cuml_work_qty        => l_c1rec.CUMULATIVE_WORK_QUANTITY
8057                                    ,p_est_remaining_effort => null
8058                                         ),8); --Bug 6854114
8059                      ELSIF NVL(l_assignment_exists, 'N') = 'N'
8060                      THEN
8061                          IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8062                          THEN
8063             /* Begin commenting out this code to fix bug # 4074299.
8064                      l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
8065                      l_planned_cost   := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
8066             End commenting out this code to fix bug # 4074299. */
8067             /* Begin fix for bug # 4074299. */
8068                          l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
8069                                   + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
8070                                   + nvl(l_c1rec.subprj_ppl_act_effort,0)
8071                                   + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
8072                                   + nvl(l_c1rec.estimated_remaining_effort,0)
8073                                   + nvl(l_c1rec.eqpmt_etc_effort,0)
8074                                   + nvl(l_c1rec.subprj_ppl_etc_effort,0)
8075                                   + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
8076 
8077             /* End fix for bug # 4074299. */
8078                          IF l_planned_effort = 0 OR l_planned_effort IS NULL
8079                          THEN
8080                             l_planned_effort := 1;
8081                          END iF;
8082                          l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
8083                         IF g1_debug_mode  = 'Y' THEN
8084                             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
8085                             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.PPL_ACT_EFFORT_TO_DATE='||l_c1rec.PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
8086                         END IF;
8087                     --bug 4191360, calc % complete for cost also
8088                          ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
8089                          THEN
8090                              l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
8091                                   +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
8092                                   +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
8093                                   +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
8094                                   +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
8095                                   +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
8096                                   +nvl(l_c1rec.ppl_etc_cost_pc,0)
8097                                   +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
8098                                   +nvl(l_c1rec.oth_etc_cost_pc,0)
8099                                   +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
8100                                   +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
8101                                   +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
8102                          IF l_planned_cost = 0 OR l_planned_cost IS NULL
8103                          THEN
8104                             l_planned_cost := 1;
8105                          END iF;
8106                          l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
8107                                              ELSE
8108                          l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8109                          END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8110                       --bug 4191360, moved this code above
8111                      /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8112                      THEN
8113                      l_EFF_ROLLUP_PERCENT_COMP :=  round(PA_PROGRESS_UTILS.Calc_base_percent(
8114                                     p_task_id              => l_c1rec.object_id
8115                                    ,p_incr_work_qty        => l_c1rec.INCREMENTAL_WORK_QUANTITY
8116                                    ,p_cuml_work_qty        => l_c1rec.CUMULATIVE_WORK_QUANTITY
8117                                    ,p_est_remaining_effort => null
8118                                         ),2);*/
8119                      ELSE
8120                       l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8121                      END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8122                  ELSE
8123                 l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8124                  END IF; -- IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8125                          ELSE
8126                               l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8127                               l_earned_value := l_c1rec.earned_value;
8128                          END IF;
8129 
8130 
8131                         -- 1.7). Calculate the incremental change in the workplan actuals for this period
8132                         -- between the recently inserted progress record and the previously existing progress
8133                         -- record (if any).
8134 
8135                         -- Bug 3621404 : Raw Cost Changes, Now they are derived in the code above
8136 
8137                         -- Assign the pl/sql tables bug 4050532
8138 
8139                       l_index2 := l_index2 + 1;
8140 
8141                       select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
8142                       percent_complete_id(l_index2)        := to_number(null);
8143                       PROJECT_ID(l_index2)                 := p_project_Id;
8144                       OBJECT_ID(l_index2)                  := l_new_object_id;
8145 					  l_cbs_element_id(l_index2)           := l_c1rec.cbs_element_id;-- added for 16895485
8146                       OBJECT_TYPE(l_index2)                := l_c1rec.object_type;
8147                       AS_OF_DATE(l_index2)                 := l_as_of_date;
8148                       OBJECT_VERSION_ID(l_index2)          := l_work_obj_ver_id;
8149                       LAST_UPDATE_DATE(l_index2)           := sysdate;
8150                       LAST_UPDATED_BY(l_index2)            := fnd_global.user_id;
8151                       CREATION_DATE(l_index2)              := sysdate;
8152                       CREATED_BY(l_index2)                 := fnd_global.user_id;
8153                       PROGRESS_STATUS_CODE(l_index2)       := l_c1rec.progress_status_code;
8154                       LAST_UPDATE_LOGIN(l_index2)          := fnd_global.login_id ;
8155                       INCREMENTAL_WORK_QUANTITY(l_index2)  := l_c1rec.INCREMENTAL_WORK_QUANTITY;
8156                       CUMULATIVE_WORK_QUANTITY(l_index2)   := l_c1rec.CUMULATIVE_WORK_QUANTITY;
8157                       BASE_PERCENT_COMPLETE(l_index2)      := l_c1rec.BASE_PERCENT_COMPLETE;
8158                       EFF_ROLLUP_PERCENT_COMP(l_index2)    := l_EFF_ROLLUP_PERCENT_COMP;
8159                       COMPLETED_PERCENTAGE(l_index2)       := l_c1rec.COMPLETED_PERCENTAGE;
8160                       ESTIMATED_START_DATE(l_index2)       := l_c1rec.ESTIMATED_START_DATE;
8161                       ESTIMATED_FINISH_DATE(l_index2)      := l_c1rec.ESTIMATED_FINISH_DATE;
8162                       ACTUAL_START_DATE(l_index2)          := l_c1rec.ACTUAL_START_DATE;
8163                       ACTUAL_FINISH_DATE(l_index2)         := l_c1rec.ACTUAL_FINISH_DATE;
8164                       RECORD_VERSION_NUMBER(l_index2)      := 1;
8165                       BASE_PERCENT_COMP_DERIV_CODE(l_index2) := NVL(l_BASE_PERCENT_COMP_DERIV_CODE, l_c1rec.BASE_PERCENT_COMP_DERIV_CODE);
8166                       BASE_PROGRESS_STATUS_CODE(l_index2)    := l_c1rec.BASE_PROGRESS_STATUS_CODE;
8167                       EFF_ROLLUP_PROG_STAT_CODE(l_index2)    := l_c1rec.EFF_ROLLUP_PROG_STAT_CODE;
8168                       STRUCTURE_TYPE(l_index2)               := 'WORKPLAN';
8169                       PROJ_ELEMENT_ID(l_index2)              := l_c1rec.PROJ_ELEMENT_ID;
8170                       STRUCTURE_VERSION_ID(l_index2)         := p_working_str_version_id;
8171                       PPL_ACT_EFFORT_TO_DATE(l_index2)       := l_c1rec.PPL_ACT_EFFORT_TO_DATE;
8172                       EQPMT_ACT_EFFORT_TO_DATE(l_index2)     := l_c1rec.EQPMT_ACT_EFFORT_TO_DATE;
8173                       OTH_QUANTITY_TO_DATE(l_index2)         := l_c1rec.OTH_QUANTITY_TO_DATE;
8174                       OTH_ACT_COST_TO_DATE_TC(l_index2)      := l_c1rec.OTH_ACT_COST_TO_DATE_TC;
8175                       OTH_ACT_RAWCOST_TO_DATE_TC(l_index2)   := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_TC;
8176                       OTH_ACT_COST_TO_DATE_FC(l_index2)      := l_c1rec.OTH_ACT_COST_TO_DATE_FC;
8177                       OTH_ACT_RAWCOST_TO_DATE_FC(l_index2)   := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_FC;
8178                       OTH_ACT_COST_TO_DATE_PC(l_index2)      := l_c1rec.OTH_ACT_COST_TO_DATE_PC;
8179                       OTH_ACT_RAWCOST_TO_DATE_PC(l_index2)   := l_c1rec.OTH_ACT_RAWCOST_TO_DATE_PC;
8180                       PPL_ACT_COST_TO_DATE_TC(l_index2)      := l_c1rec.PPL_ACT_COST_TO_DATE_TC;
8181                       PPL_ACT_RAWCOST_TO_DATE_TC(l_index2)   := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_TC;
8182                       PPL_ACT_COST_TO_DATE_FC(l_index2)      := l_c1rec.PPL_ACT_COST_TO_DATE_FC;
8183                       PPL_ACT_RAWCOST_TO_DATE_FC(l_index2)   := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_FC;
8184                       PPL_ACT_COST_TO_DATE_PC(l_index2)      := l_c1rec.PPL_ACT_COST_TO_DATE_PC;
8185                       PPL_ACT_RAWCOST_TO_DATE_PC(l_index2)   := l_c1rec.PPL_ACT_RAWCOST_TO_DATE_PC;
8186                       EQPMT_ACT_COST_TO_DATE_TC(l_index2)    := l_c1rec.EQPMT_ACT_COST_TO_DATE_TC;
8187                       EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
8188                       EQPMT_ACT_COST_TO_DATE_FC(l_index2)    := l_c1rec.EQPMT_ACT_COST_TO_DATE_FC;
8189                       EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
8190                       EQPMT_ACT_COST_TO_DATE_PC(l_index2)    := l_c1rec.EQPMT_ACT_COST_TO_DATE_PC;
8191                       EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index2) := l_c1rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8192                       EARNED_VALUE(l_index2)                 := l_c1rec.earned_value;
8193                       TASK_WT_BASIS_CODE(l_index2)           := l_c1rec.TASK_WT_BASIS_CODE;
8194                       CURRENT_FLAG(l_index2)                 := 'Y';
8195                       PROJFUNC_COST_RATE_TYPE(l_index2)      := l_c1rec.PROJFUNC_COST_RATE_TYPE;
8196                       PROJFUNC_COST_EXCHANGE_RATE(l_index2)  := l_c1rec.PROJFUNC_COST_EXCHANGE_RATE;
8197                       PROJFUNC_COST_RATE_DATE(l_index2)      := l_c1rec.PROJFUNC_COST_RATE_DATE;
8198                       PROJ_COST_RATE_TYPE(l_index2)          := l_c1rec.PROJ_COST_RATE_TYPE;
8199                       PROJ_COST_EXCHANGE_RATE(l_index2)      := l_c1rec.PROJ_COST_EXCHANGE_RATE;
8200                       PROJ_COST_RATE_DATE(l_index2)          := l_c1rec.PROJ_COST_RATE_DATE;
8201                       TXN_CURRENCY_CODE(l_index2)            := l_c1rec.TXN_CURRENCY_CODE;
8202                       PROG_PA_PERIOD_NAME(l_index2)          := l_c1rec.PROG_PA_PERIOD_NAME;
8203                       PROG_GL_PERIOD_NAME(l_index2)          := l_c1rec.PROG_GL_PERIOD_NAME;
8204               --end bug 4050532
8205 
8206                   ELSE   --if versioning not enabled then
8207 
8208                         --re-derive rollup percent complete at lowest level if % complete derivation code is changed bug 3906362
8209             --bug 4191360
8210                         --IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' ) AND NVL(l_assignment_exists, 'N') = 'N'
8211                         IF l_c1rec.object_type in( 'PA_TASKS' , 'PA_STRUCTURES' )
8212                     AND NVL( l_lowest_level_task,'N') = 'Y' --bug 4050532
8213             THEN
8214 
8215                              OPEN cur_proj_elements(l_c1rec.object_id);
8216                              FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
8217                              CLOSE cur_proj_elements;
8218                  IF g1_debug_mode  = 'Y' THEN
8219                    pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
8220                    pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
8221                  END IF;
8222 
8223                  --bug 4191360, calc % complete only if deriv. code has changed
8224                  IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8225                  THEN
8226                      --bug 4191360, moved this code from below
8227                      IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8228                      THEN
8229                      l_EFF_ROLLUP_PERCENT_COMP :=  round(PA_PROGRESS_UTILS.Calc_base_percent(
8230                                     p_task_id              => l_c1rec.object_id
8231                                    ,p_incr_work_qty        => l_c1rec.INCREMENTAL_WORK_QUANTITY
8232                                    ,p_cuml_work_qty        => l_c1rec.CUMULATIVE_WORK_QUANTITY
8233                                    ,p_est_remaining_effort => null
8234                                         ),8); --Bug 6854114
8235 
8236                      ELSIF NVL(l_assignment_exists, 'N') = 'N'
8237                      THEN
8238                          IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8239                          THEN
8240             /* Begin commenting out this code to fix bug # 4074299.
8241                      l_planned_effort := l_planned_effort_tbl_task(l_planned_effort_tbl_task.count);
8242                      l_planned_cost   := l_burdened_cost_tbl_task(l_burdened_cost_tbl_task.count);
8243             End commenting out this code to fix bug # 4074299. */
8244             /* Begin fix for bug # 4074299. */
8245                              l_planned_effort := nvl(l_c1rec.ppl_act_effort_to_date,0)
8246                                       + nvl(l_c1rec.eqpmt_act_effort_to_date,0)
8247                                       + nvl(l_c1rec.subprj_ppl_act_effort,0)
8248                                       + nvl(l_c1rec.subprj_eqpmt_act_effort,0)
8249                                       + nvl(l_c1rec.estimated_remaining_effort,0)
8250                                       + nvl(l_c1rec.eqpmt_etc_effort,0)
8251                                       + nvl(l_c1rec.subprj_ppl_etc_effort,0)
8252                                       + nvl(l_c1rec.subprj_eqpmt_etc_effort,0);
8253 
8254             /* End fix for bug # 4074299. */
8255 
8256                              IF l_planned_effort = 0 OR l_planned_effort IS NULL
8257                              THEN
8258                             l_planned_effort := 1;
8259                              END iF;
8260                              l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_c1rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
8261                          ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in( 'COST')
8262                          THEN
8263                              l_planned_cost := nvl(l_c1rec.oth_act_cost_to_date_pc,0)
8264                                    +nvl(l_c1rec.ppl_act_cost_to_date_pc,0)
8265                                    +nvl(l_c1rec.eqpmt_act_cost_to_date_pc,0)
8266                                    +nvl(l_c1rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)
8267                                    +nvl(l_c1rec.subprj_ppl_act_cost_pc,0)
8268                                    +nvl(l_c1rec.subprj_eqpmt_act_cost_pc,0)
8269                                    +nvl(l_c1rec.ppl_etc_cost_pc,0)
8270                                    +nvl(l_c1rec.eqpmt_etc_cost_pc,0)
8271                                    +nvl(l_c1rec.oth_etc_cost_pc,0)
8272                                    +nvl(l_c1rec.subprj_ppl_etc_cost_pc,0)
8273                                    +nvl(l_c1rec.subprj_eqpmt_etc_cost_pc,0)
8274                                    +nvl(l_c1rec.subprj_oth_etc_cost_pc,0);
8275                              IF l_planned_cost = 0 OR l_planned_cost IS NULL
8276                              THEN
8277                             l_planned_cost := 1;
8278                              END iF;
8279                              l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_c1rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
8280                          ELSE
8281                         l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8282                          END IF; --IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
8283                       --bug 4191360, moved this code above
8284                      /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8285                      THEN
8286                      l_EFF_ROLLUP_PERCENT_COMP :=  round(PA_PROGRESS_UTILS.Calc_base_percent(
8287                                     p_task_id              => l_c1rec.object_id
8288                                    ,p_incr_work_qty        => l_c1rec.INCREMENTAL_WORK_QUANTITY
8289                                    ,p_cuml_work_qty        => l_c1rec.CUMULATIVE_WORK_QUANTITY
8290                                    ,p_est_remaining_effort => null
8291                                         ),2);*/
8292                      ELSE
8293                       l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8294                      END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
8295                  ELSE
8296                  l_EFF_ROLLUP_PERCENT_COMP := l_c1rec.eff_rollup_percent_comp;
8297                  END IF; --IF NVL(l_c1rec.BASE_PERCENT_COMP_DERIV_CODE, 'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
8298 
8299 
8300                 IF g1_debug_mode  = 'Y' THEN
8301                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before updating the rollup table wiht new pc', x_Log_Level=> 3);
8302                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
8303                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_c1rec.progress_rollup_id='||l_c1rec.progress_rollup_id, x_Log_Level=> 3);
8304                 END IF;
8305 
8306                              UPDATE pa_progress_rollup
8307                                 SET EFF_ROLLUP_PERCENT_COMP = l_EFF_ROLLUP_PERCENT_COMP
8308                                    ,last_update_date = SYSDATE
8309                               WHERE progress_rollup_id =  l_c1rec.progress_rollup_id;
8310                                 IF g1_debug_mode  = 'Y' THEN
8311                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done updating the rollup table wiht new pc', x_Log_Level=> 3);
8312                                 END IF;
8313 
8314                          END IF;
8315                          --uncommented the code for bug 3906362
8316 
8317           END IF; -- If workplan versioning is enabled: 1
8318         END LOOP;
8319         CLOSE C1;
8320 
8321        IF g1_debug_mode  = 'Y' THEN
8322         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Outside main LOOP', x_Log_Level=> 3);
8323        END IF;
8324 
8325 
8326       IF (l_version_enabled_flag = 'Y') THEN
8327 
8328         --bug 4050532
8329          IF g1_debug_mode  = 'Y' THEN
8330         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before BULK insert l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
8331      END IF;
8332 
8333      DELETE FROM pa_progress_rollup WHERE project_id = p_project_id and structure_version_id = p_working_str_version_id;
8334 
8335          forall l_index1 in 1..l_index2
8336             INSERT INTO pa_progress_rollup(
8337                PROGRESS_ROLLUP_ID
8338               ,PERCENT_COMPLETE_ID
8339               ,PROJECT_ID
8340               ,OBJECT_ID
8341               ,OBJECT_TYPE
8342               ,AS_OF_DATE
8343               ,OBJECT_VERSION_ID
8344               ,LAST_UPDATE_DATE
8345               ,LAST_UPDATED_BY
8346               ,CREATION_DATE
8347               ,CREATED_BY
8348               ,PROGRESS_STATUS_CODE
8349               ,LAST_UPDATE_LOGIN
8350               ,INCREMENTAL_WORK_QUANTITY
8351               ,CUMULATIVE_WORK_QUANTITY
8352               ,BASE_PERCENT_COMPLETE
8353               ,EFF_ROLLUP_PERCENT_COMP
8354               ,COMPLETED_PERCENTAGE
8355               ,ESTIMATED_START_DATE
8356               ,ESTIMATED_FINISH_DATE
8357               ,ACTUAL_START_DATE
8358               ,ACTUAL_FINISH_DATE
8359               ,RECORD_VERSION_NUMBER
8360               ,BASE_PERCENT_COMP_DERIV_CODE
8361               ,BASE_PROGRESS_STATUS_CODE
8362               ,EFF_ROLLUP_PROG_STAT_CODE
8363               ,STRUCTURE_TYPE
8364               ,PROJ_ELEMENT_ID
8365               ,STRUCTURE_VERSION_ID
8366               ,PPL_ACT_EFFORT_TO_DATE
8367               ,EQPMT_ACT_EFFORT_TO_DATE
8368               ,OTH_ACT_COST_TO_DATE_TC
8369               ,OTH_ACT_COST_TO_DATE_FC
8370               ,OTH_ACT_COST_TO_DATE_PC
8371               ,PPL_ACT_COST_TO_DATE_TC
8372               ,PPL_ACT_COST_TO_DATE_FC
8373               ,PPL_ACT_COST_TO_DATE_PC
8374               ,EQPMT_ACT_COST_TO_DATE_TC
8375               ,EQPMT_ACT_COST_TO_DATE_FC
8376               ,EQPMT_ACT_COST_TO_DATE_PC
8377               ,EARNED_VALUE
8378               ,TASK_WT_BASIS_CODE
8379               ,CURRENT_FLAG
8380               ,PROJFUNC_COST_RATE_TYPE
8381               ,PROJFUNC_COST_EXCHANGE_RATE
8382               ,PROJFUNC_COST_RATE_DATE
8383               ,PROJ_COST_RATE_TYPE
8384               ,PROJ_COST_EXCHANGE_RATE
8385               ,PROJ_COST_RATE_DATE
8386               ,TXN_CURRENCY_CODE
8387               ,PROG_PA_PERIOD_NAME
8388               ,PROG_GL_PERIOD_NAME
8389               ,OTH_QUANTITY_TO_DATE
8390               ,OTH_ACT_RAWCOST_TO_DATE_TC
8391               ,OTH_ACT_RAWCOST_TO_DATE_FC
8392               ,OTH_ACT_RAWCOST_TO_DATE_PC
8393               ,PPL_ACT_RAWCOST_TO_DATE_TC
8394               ,PPL_ACT_RAWCOST_TO_DATE_FC
8395               ,PPL_ACT_RAWCOST_TO_DATE_PC
8396               ,EQPMT_ACT_RAWCOST_TO_DATE_TC
8397               ,EQPMT_ACT_RAWCOST_TO_DATE_FC
8398               ,EQPMT_ACT_RAWCOST_TO_DATE_PC
8399 			  ,CBS_ELEMENT_ID-- added for 16895485
8400               )
8401           VALUES(
8402                PROGRESS_ROLLUP_ID(l_index1)
8403               ,PERCENT_COMPLETE_ID(l_index1)
8404               ,PROJECT_ID(l_index1)
8405               ,OBJECT_ID(l_index1)
8406               ,OBJECT_TYPE(l_index1)
8407               ,AS_OF_DATE(l_index1)
8408               ,OBJECT_VERSION_ID(l_index1)
8409               ,LAST_UPDATE_DATE(l_index1)
8410               ,LAST_UPDATED_BY(l_index1)
8411               ,CREATION_DATE(l_index1)
8412               ,CREATED_BY(l_index1)
8413               ,PROGRESS_STATUS_CODE(l_index1)
8414               ,LAST_UPDATE_LOGIN(l_index1)
8415               ,INCREMENTAL_WORK_QUANTITY(l_index1)
8416               ,CUMULATIVE_WORK_QUANTITY(l_index1)
8417               ,BASE_PERCENT_COMPLETE(l_index1)
8418               ,EFF_ROLLUP_PERCENT_COMP(l_index1)
8419               ,COMPLETED_PERCENTAGE(l_index1)
8420               ,ESTIMATED_START_DATE(l_index1)
8421               ,ESTIMATED_FINISH_DATE(l_index1)
8422               ,ACTUAL_START_DATE(l_index1)
8423               ,ACTUAL_FINISH_DATE(l_index1)
8424               ,RECORD_VERSION_NUMBER(l_index1)
8425               ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
8426               ,BASE_PROGRESS_STATUS_CODE(l_index1)
8427               ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
8428               ,STRUCTURE_TYPE(l_index1)
8429               ,PROJ_ELEMENT_ID(l_index1)
8430               ,STRUCTURE_VERSION_ID(l_index1)
8431               ,PPL_ACT_EFFORT_TO_DATE(l_index1)
8432               ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
8433               ,OTH_ACT_COST_TO_DATE_TC(l_index1)
8434               ,OTH_ACT_COST_TO_DATE_FC(l_index1)
8435               ,OTH_ACT_COST_TO_DATE_PC(l_index1)
8436               ,PPL_ACT_COST_TO_DATE_TC(l_index1)
8437               ,PPL_ACT_COST_TO_DATE_FC(l_index1)
8438               ,PPL_ACT_COST_TO_DATE_PC(l_index1)
8439               ,EQPMT_ACT_COST_TO_DATE_TC(l_index1)
8440               ,EQPMT_ACT_COST_TO_DATE_FC(l_index1)
8441               ,EQPMT_ACT_COST_TO_DATE_PC(l_index1)
8442               ,EARNED_VALUE(l_index1)
8443               ,TASK_WT_BASIS_CODE(l_index1)
8444               ,CURRENT_FLAG(l_index1)
8445               ,PROJFUNC_COST_RATE_TYPE(l_index1)
8446               ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
8447               ,PROJFUNC_COST_RATE_DATE(l_index1)
8448               ,PROJ_COST_RATE_TYPE(l_index1)
8449               ,PROJ_COST_EXCHANGE_RATE(l_index1)
8450               ,PROJ_COST_RATE_DATE(l_index1)
8451               ,TXN_CURRENCY_CODE(l_index1)
8452               ,PROG_PA_PERIOD_NAME(l_index1)
8453               ,PROG_GL_PERIOD_NAME(l_index1)
8454               ,OTH_QUANTITY_TO_DATE(l_index1)
8455               ,OTH_ACT_RAWCOST_TO_DATE_TC(l_index1)
8456               ,OTH_ACT_RAWCOST_TO_DATE_FC(l_index1)
8457               ,OTH_ACT_RAWCOST_TO_DATE_PC(l_index1)
8458               ,PPL_ACT_RAWCOST_TO_DATE_TC(l_index1)
8459               ,PPL_ACT_RAWCOST_TO_DATE_FC(l_index1)
8460               ,PPL_ACT_RAWCOST_TO_DATE_PC(l_index1)
8461               ,EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1)
8462               ,EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1)
8463               ,EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1)
8464 			  ,L_CBS_ELEMENT_ID(l_index1)-- added for 16895485
8465           );
8466     IF g1_debug_mode  = 'Y' THEN
8467             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done with  BULK insert into pa_progress_rollup', x_Log_Level=> 3);
8468         END IF;
8469   END IF;
8470 
8471 
8472 
8473     -- Bug 3956248 : Added call of copy_actuals_for_workplan
8474 
8475     BEGIN
8476         IF g1_debug_mode  = 'Y' THEN
8477             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before calling pa_progress_pvt.copy_actuals_for_workplan ', x_Log_Level=> 3);
8478         END IF;
8479         --bug 4046422
8480         --pa_fp_copy_from_pkg.copy_actuals_for_workplan(
8481 
8482         pa_progress_pvt.copy_actuals_for_workplan(
8483            p_calling_context            => 'WP_APPLY_PROGRESS_TO_WORKING'
8484           ,p_project_id                 => p_project_id
8485           ,p_source_struct_ver_id       => PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id)
8486           ,p_target_struct_ver_id       => p_working_str_version_id
8487           ,x_return_status              => l_return_status
8488           ,x_msg_count                  => l_msg_count
8489           ,x_msg_data                   => l_msg_data);
8490 
8491 
8492         IF g1_debug_mode  = 'Y' THEN
8493             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After pa_progress_pvt.copy_actuals_for_workplan l_return_status='||l_return_status, x_Log_Level=> 3);
8494         END IF;
8495         EXCEPTION
8496                  WHEN OTHERS THEN
8497                      fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8498                                              p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8499                                              p_error_text     => SUBSTRB('PA_PROGRESS_PVT.COPY_ACTUALS_FOR_WORKPLAN:'||SQLERRM,1,120));
8500                      RAISE FND_API.G_EXC_ERROR;
8501         END;
8502 
8503         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8504                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8505                                     p_msg_name       => l_msg_data);
8506                x_msg_data := l_msg_data;
8507                x_return_status := 'E';
8508                x_msg_count := l_msg_count;
8509                RAISE  FND_API.G_EXC_ERROR;
8510         END IF;
8511 
8512 
8513     --        end if;  -- If workplan versioning is enabled: 2
8514 
8515         --bug 3846474
8516         -- Populate pl/sql tables with the all other lowest tasks and assignments.
8517     IF g1_debug_mode  = 'Y' THEN
8518         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Populating pl/sql tables for extra assignments and tasks', x_Log_Level=> 3);
8519     END IF;
8520 
8521         FOR all_lowest_task_rec in all_lowest_task LOOP
8522         IF g1_debug_mode  = 'Y' THEN
8523             --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.object_type='||all_lowest_task_rec.object_type, x_Log_Level=> 3);
8524             --pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.element_version_id='||all_lowest_task_rec.element_version_id, x_Log_Level=> 3);
8525             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.resource_assignment_id='||all_lowest_task_rec.resource_assignment_id, x_Log_Level=> 3);
8526             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'all_lowest_task_rec.txn_currency_code='||all_lowest_task_rec.txn_currency_code, x_Log_Level=> 3);
8527         END IF;
8528 
8529         IF all_lowest_task_rec.object_type = 'PA_ASSIGNMENTS'  THEN
8530             l_res_assgn_id_tbl_assgn.extend;
8531             l_currency_code_tbl_assgn.extend;
8532             l_raw_cost_tbl_assgn.extend;
8533             l_burdened_cost_tbl_assgn.extend;
8534             l_planned_qty_tbl_assgn.extend;
8535 
8536             l_res_assgn_id_tbl_assgn(l_res_assgn_id_tbl_assgn.count):= all_lowest_task_rec.resource_assignment_id;
8537             l_currency_code_tbl_assgn(l_currency_code_tbl_assgn.count) := all_lowest_task_rec.txn_currency_code;
8538             l_planned_qty_tbl_assgn(l_planned_qty_tbl_assgn.count) := null;
8539             l_raw_cost_tbl_assgn(l_raw_cost_tbl_assgn.count) := null;
8540             l_burdened_cost_tbl_assgn(l_burdened_cost_tbl_assgn.count) := null;
8541 
8542         END IF;
8543     END LOOP;
8544 
8545     IF g1_debug_mode  = 'Y' THEN
8546         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Printing PA_TASKS PL/SQL tables:count='||l_task_ver_id_tbl_task.count(), x_Log_Level=> 3);
8547             FOR i in 1..l_task_ver_id_tbl_task.count() LOOP
8548                 IF g1_debug_mode  = 'Y' THEN
8549                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_task_ver_id_tbl_task'||'('||i||')='||l_task_ver_id_tbl_task(i), x_Log_Level=> 3);
8550                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_effort_tbl_task'||'('||i||')='||l_planned_effort_tbl_task(i), x_Log_Level=> 3);
8551                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_task'||'('||i||')='||l_raw_cost_tbl_task(i), x_Log_Level=> 3);
8552                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_task'||'('||i||')='||l_burdened_cost_tbl_task(i), x_Log_Level=> 3);
8553                 END IF;
8554         END LOOP;
8555     END IF;
8556 
8557 
8558         -- Call FP API to copy the Total Actual Effort + Total ETC Effort to planned effort
8559 
8560     IF g1_debug_mode  = 'Y' THEN
8561         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Printing PA_ASSIGNMENTS PL/SQL tables:count='||l_res_assgn_id_tbl_assgn.count(), x_Log_Level=> 3);
8562         FOR i in 1..l_res_assgn_id_tbl_assgn.count() LOOP
8563                 IF g1_debug_mode  = 'Y' THEN
8564                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_res_assgn_id_tbl_assgn'||'('||i||')='||l_res_assgn_id_tbl_assgn(i), x_Log_Level=> 3);
8565                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_currency_code_tbl_assgn'||'('||i||')='||l_currency_code_tbl_assgn(i), x_Log_Level=> 3);
8566                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_planned_qty_tbl_assgn'||'('||i||')='||l_planned_qty_tbl_assgn(i), x_Log_Level=> 3);
8567                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_raw_cost_tbl_assgn'||'('||i||')='||l_raw_cost_tbl_assgn(i), x_Log_Level=> 3);
8568                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_burdened_cost_tbl_assgn'||'('||i||')='||l_burdened_cost_tbl_assgn(i), x_Log_Level=> 3);
8569                 END IF;
8570         END LOOP;
8571     END IF;
8572 
8573         -- Calling FP API for all assignments.
8574     -- IF (l_planned_ppl_effort_tbl_assgn.exists(1) OR l_planned_eqp_effort_tbl_assgn.exists(1) OR l_planned_qty_tbl_assgn.exists(1)) THEN
8575         IF (l_res_assgn_id_tbl_assgn.count > 0) then
8576         BEGIN
8577             IF g1_debug_mode  = 'Y' THEN
8578                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before PA_FP_CALC_PLAN_PKG.calculate', x_Log_Level=> 3);
8579             END IF;
8580                       /*  Commnted for Perf Bug 4189762 and added Calculate API
8581               pa_fp_planning_transaction_pub.update_planning_transactions
8582                                 (p_context                      => 'TASK_ASSIGNMENT'
8583                                 ,p_struct_elem_version_id       => p_working_str_version_id
8584                                 ,p_resource_assignment_id_tbl   => l_res_assgn_id_tbl_assgn
8585                                 ,p_quantity_tbl                 => l_planned_qty_tbl_assgn
8586                                 ,p_currency_code_tbl            => l_currency_code_tbl_assgn
8587                                 ,p_apply_progress_flag          => 'Y'
8588                                 ,p_raw_cost_tbl                 => l_raw_cost_tbl_assgn
8589                                 ,p_burdened_cost_tbl            => l_burdened_cost_tbl_assgn
8590                                 ,x_return_status                => l_return_status
8591                                 ,x_msg_count                    => l_msg_count
8592                                 ,x_msg_data                     => l_msg_data
8593                                 );
8594             */
8595 
8596             PA_FP_CALC_PLAN_PKG.calculate
8597             (
8598              p_project_id           => p_project_id
8599             ,p_budget_version_id        => PA_PLANNING_TRANSACTION_UTILS.Get_Wp_Budget_Version_Id(p_working_str_version_id)
8600             ,p_source_context       => 'RESOURCE_ASSIGNMENT'
8601             ,p_apply_progress_flag      => 'Y'
8602             ,p_resource_assignment_tab  => l_res_assgn_id_tbl_assgn
8603             ,p_txn_currency_code_tab       => l_currency_code_tbl_assgn
8604             ,p_total_qty_tab               => l_planned_qty_tbl_assgn
8605             ,p_total_raw_cost_tab          => l_raw_cost_tbl_assgn
8606             ,p_total_burdened_cost_tab     => l_burdened_cost_tbl_assgn
8607             ,x_return_status               => l_return_status
8608             ,x_msg_count                   => l_msg_count
8609             ,x_msg_data                    => l_msg_data);
8610             IF g1_debug_mode  = 'Y' THEN
8611                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After PA_FP_CALC_PLAN_PKG.calculate l_return_status='||l_return_status, x_Log_Level=> 3);
8612             END IF;
8613                 EXCEPTION
8614                 WHEN OTHERS THEN
8615                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8616                                         p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8617                                         p_error_text     => SUBSTRB('Call of PA_FP_CALC_PLAN_PKG.calculate Failed:'||SQLERRM,1,120));
8618                         RAISE FND_API.G_EXC_ERROR;
8619                 END;
8620 
8621         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8622                x_return_status := 'E';
8623                RAISE  FND_API.G_EXC_ERROR;
8624         END IF;
8625         END IF;
8626 
8627         pa_progress_pub.g_wbs_apply_prog := null; --- resetting the var back to null
8628         -- The following actions are also only performed if workplan versioning is enabled: 3:
8629         IF (l_version_enabled_flag = 'Y') THEN
8630 
8631             -- 3.1). Calling PJI API: PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE() within it own PL/SQL Block
8632             -- to push progress actuals. This is done once here instead of, for each of the lowest tasks by calling
8633             -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8634 
8635                  BEGIN
8636             IF g1_debug_mode  = 'Y' THEN
8637                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before calling PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE', x_Log_Level=> 3);
8638             END IF;
8639             --               PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(x_msg_code => l_msg_code
8640              --                                      ,x_return_status => l_return_status);
8641             IF g1_debug_mode  = 'Y' THEN
8642                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Done with calling PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:l_return_status='||l_return_status, x_Log_Level=> 3);
8643             END IF;
8644 
8645 
8646                  EXCEPTION
8647                     WHEN OTHERS THEN
8648                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8649                                         p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8650                                         p_error_text     => SUBSTRB('PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
8651                         RAISE FND_API.G_EXC_ERROR;
8652                 END;
8653 
8654                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8655                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8656                         p_msg_name       => l_msg_code);
8657                x_msg_data := l_msg_code;
8658                x_return_status := 'E';
8659                RAISE  FND_API.G_EXC_ERROR;
8660                 END IF;
8661 
8662                 -- 3.2). Calling PJI API: PJI_FM_XBS_ACCUM_UTILS.POPULATE_WORKPLAN_DATA() to populate
8663                 -- the temporary table: PJI_FM_XBS_ACCUM_TMP1.This is done once here instead of, for each of the lowest tasks by calling
8664                 -- PA_PROGRESS_PUB.push_workplan_actuals() with p_call_pji_apis_flag = 'Y'.
8665         -- Bug 3834339 : reducing the scope of IF so that populate_workplan_data gets called in version disabled case too
8666     END IF; -- IF (l_version_enabled_flag = 'Y') THEN
8667 
8668         BEGIN
8669 
8670         -- Bug 3846353 : Baselined str version also need to be passed, otherwise it will be null at task level
8671 
8672         l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
8673 
8674         IF l_baselined_str_ver_id = -1 OR l_baselined_str_ver_id IS NULL THEN
8675             l_baselined_str_ver_id := p_working_str_version_id;
8676         END IF;
8677 
8678 
8679         -- 4392189 : Program reporting Changes : We are calling populate_pji_tab_for_plan instead of directly calling populate_workplan_data
8680                 IF g1_debug_mode  = 'Y' THEN
8681                        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Before populate_pji_tab_for_plan', x_Log_Level=> 3);
8682                        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'l_baselined_str_ver_id='||l_baselined_str_ver_id, x_Log_Level=> 3);
8683                 END IF;
8684 
8685         PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
8686             p_calling_module    => p_calling_module
8687             ,p_project_id           => p_project_id
8688             ,p_structure_version_id => p_working_str_version_id
8689             ,p_baselined_str_ver_id => l_baselined_str_ver_id
8690             ,p_program_rollup_flag  => 'Y'
8691             ,p_calling_context  => 'ROLLUP'
8692             ,x_return_status        => l_return_status
8693             ,x_msg_count            => l_msg_count
8694             ,x_msg_data             => l_msg_data
8695             );
8696 
8697         /*
8698                 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
8699                                         p_project_id => p_project_id
8700                                         ,p_struct_ver_id => p_working_str_version_id
8701                                 ,p_base_struct_ver_id   =>  l_baselined_str_ver_id
8702                                         ,x_return_status => l_return_status
8703                                         ,x_msg_code      => l_msg_code );
8704 
8705         */
8706 
8707         IF g1_debug_mode  = 'Y' THEN
8708             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'After populate_pji_tab_for_plan task l_return_status='||l_return_status, x_Log_Level=> 3);
8709             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'Reading actuals and planned from PJI tmp', x_Log_Level=> 3);
8710 
8711             DECLARE
8712                 CURSOR tmp1 IS
8713                 SELECT
8714                 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
8715                 * FROM pji_fm_xbs_accum_tmp1 WHERE project_id = p_project_id
8716                 AND struct_version_id =p_working_str_version_id
8717                 ;
8718             BEGIN
8719                 FOR tmp1_rec IN tmp1 LOOP
8720                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PROJECT_ELEMENT_ID='||tmp1_rec.PROJECT_ELEMENT_ID, x_Log_Level=> 3);
8721                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_LABOR_HRS='||tmp1_rec.ACT_LABOR_HRS, x_Log_Level=> 3);
8722                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_EQUIP_HRS='||tmp1_rec.ACT_EQUIP_HRS, x_Log_Level=> 3);
8723                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'ACT_PRJ_BRDN_COST='||tmp1_rec.ACT_PRJ_BRDN_COST, x_Log_Level=> 3);
8724                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'LABOR_HOURS='||tmp1_rec.LABOR_HOURS, x_Log_Level=> 3);
8725                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'EQUIPMENT_HOURS='||tmp1_rec.EQUIPMENT_HOURS, x_Log_Level=> 3);
8726                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'BASE_LABOR_HOURS='||tmp1_rec.BASE_LABOR_HOURS, x_Log_Level=> 3);
8727                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'BASE_EQUIP_HOURS='||tmp1_rec.BASE_EQUIP_HOURS, x_Log_Level=> 3);
8728                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PRJ_BRDN_COST='||tmp1_rec.PRJ_BRDN_COST, x_Log_Level=> 3);
8729                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV', x_Msg => 'PRJ_BASE_BRDN_COST='||tmp1_rec.PRJ_BASE_BRDN_COST, x_Log_Level=> 3);
8730                 END LOOP;
8731             END;
8732         END IF;
8733         EXCEPTION
8734                 WHEN OTHERS THEN
8735                         fnd_msg_pub.add_exc_msg(p_pkg_name  => 'PA_PROGRESS_PUB',
8736                                         p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8737                                         p_error_text     => SUBSTRB('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN:'||SQLERRM,1,120));
8738                         RAISE FND_API.G_EXC_ERROR;
8739         END;
8740 
8741     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8742         x_msg_data := l_msg_data;
8743         x_return_status := 'E';
8744         x_msg_count := l_msg_count;
8745         RAISE  FND_API.G_EXC_ERROR;
8746         END IF;
8747 
8748         -- 3.3). Update table: pa_proj_element_ver_structure
8749         -- 3.4). Call Rollup API for the whole structure, Pass working structure version_id.
8750         -- Bug 4346801, we should rollup even for VD projects to re-calc EV.
8751         -- IF (l_version_enabled_flag <> 'Y') THEN
8752 
8753                 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
8754                  p_init_msg_list             => p_init_msg_list
8755         --Added by rtarway for BUG 3696263
8756                 ,p_calling_module       => p_calling_module
8757                 ,p_commit                    => p_commit
8758                 ,p_validate_only             => p_validate_only
8759                 ,p_project_id                => p_project_id
8760                 ,p_structure_version_id      => p_working_str_version_id
8761                 ,p_as_of_date                => l_as_of_date--l_max_as_of_date -- FPM Dev CR 4
8762                 ,p_wp_rollup_method          => l_task_weight_basis_code ---l_c1rec.TASK_WT_BASIS_CODE -- FPM Dev CR 4
8763                 ,p_rollup_entire_wbs         => 'Y' -- FPM Dev CR 4
8764                 ,p_working_wp_prog_flag      => 'N' ---bug 3846353 . pass 'N'. Use baselined BAC
8765                 ,x_return_status             => l_return_status
8766                 ,x_msg_count                 => l_msg_count
8767                 ,x_msg_data                  => l_msg_data);
8768 
8769         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8770             x_msg_data := l_msg_data;
8771             x_return_status := 'E';
8772             x_msg_count := l_msg_count;
8773             RAISE  FND_API.G_EXC_ERROR;
8774         END IF;
8775 
8776                 -- Call of rollup future is not needed here as there will be only one record per object in working version
8777 
8778         --- END IF; -- If workplan versioning is enabled
8779 
8780         UPDATE pa_proj_elem_ver_structure
8781                 set date_prog_applied_on_wver = sysdate
8782                   ,schedule_dirty_flag = decode( PA_Project_Structure_Utils.Check_Third_Party_Sch_Flag(p_project_id),  --bug 3844689
8783                                                    'Y', 'Y', schedule_dirty_flag )         --set this flag to indicate re-scheduling is required.
8784         WHERE project_id = p_project_id
8785         AND element_version_id = p_working_str_version_id;
8786 
8787         IF (p_commit = FND_API.G_TRUE) THEN
8788                 COMMIT;
8789         END IF;
8790 
8791 EXCEPTION
8792     when FND_API.G_EXC_ERROR then
8793       if p_commit = FND_API.G_TRUE then
8794          rollback to APPLY_LP_PROG_ON_CWV;
8795       end if;
8796       x_return_status := FND_API.G_RET_STS_ERROR;
8797       x_msg_count := fnd_msg_pub.count_msg;
8798 
8799 -- BEGIN: Commenting this code out to fix Bug # 3956275.
8800 /*
8801 
8802       -- BEGIN: Adding code to fix Bug # 3815741.
8803 
8804       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8805                               p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8806                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8807 
8808       -- END: Adding code to fix Bug # 3815741.
8809 
8810 */
8811 
8812 -- END: Commenting this code out to fix Bug # 3956275.
8813 
8814     when FND_API.G_EXC_UNEXPECTED_ERROR then
8815       if p_commit = FND_API.G_TRUE then
8816          rollback to APPLY_LP_PROG_ON_CWV;
8817       end if;
8818       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8819       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8820                               p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8821                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8822       x_msg_count := fnd_msg_pub.count_msg;
8823     when OTHERS then
8824       if p_commit = FND_API.G_TRUE then
8825         rollback to APPLY_LP_PROG_ON_CWV;
8826       end if;
8827       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8828       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8829                               p_procedure_name => 'APPLY_LP_PROG_ON_CWV',
8830                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8831       x_msg_count := fnd_msg_pub.count_msg;
8832       raise;
8833 END APPLY_LP_PROG_ON_CWV;
8834 
8835 -- Progress Management Changes. Bug # 3420093.
8836 
8837 PROCEDURE delete_working_wp_progress(
8838   p_api_version                 IN      NUMBER          :=1.0
8839  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
8840  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
8841  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
8842  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
8843  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
8844  ,p_debug_mode                  IN      VARCHAR2        :='N'
8845  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8846  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8847  ,p_structure_version_id        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8848  ,p_task_version_id             IN      SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()
8849  ,p_calling_context             IN      VARCHAR2        := 'STRUCTURE_VERSION'
8850  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8851  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
8852  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8853 )
8854 IS
8855    l_api_name           CONSTANT   VARCHAR2(30)    := 'DELETE_WORKING_WP_PROGRESS';
8856    l_api_version        CONSTANT   NUMBER          := p_api_version;
8857    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
8858    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
8859    l_return_status                 VARCHAR2(1);
8860    l_msg_count                     NUMBER;
8861    l_msg_data                      VARCHAR2(250);
8862    i                               NUMBER;
8863 BEGIN
8864         IF g1_debug_mode  = 'Y' THEN
8865                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8866         END IF;
8867 
8868         IF (p_debug_mode = 'Y') THEN
8869                 IF g1_debug_mode  = 'Y' THEN
8870                         pa_debug.debug('PA_PROGRESS_PUB.DELETE_WORKING_WP_PROGRESS');
8871                 END IF;
8872         END IF;
8873         IF (p_commit = FND_API.G_TRUE) THEN
8874                 savepoint DELETE_WORKING_WP_PROGRESS;
8875         END IF;
8876 
8877         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
8878                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8879         END IF;
8880 
8881         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
8882                 FND_MSG_PUB.initialize;
8883         END IF;
8884 
8885         x_return_status := FND_API.G_RET_STS_SUCCESS;
8886 
8887         if (p_calling_context = 'STRUCTURE_VERSION') then
8888 
8889                 delete from pa_progress_rollup
8890                 where project_id = p_project_id
8891                 -- and object_version_id = p_structure_version_id -- Bug 4190086
8892         and structure_version_id = p_structure_version_id -- Bug 4190086
8893         ;
8894 
8895         elsif (p_calling_context = 'PROJECT_STRUCTURE') then
8896 
8897                 delete from pa_progress_rollup
8898                 where project_id = p_project_id;
8899 
8900                 delete from pa_proj_progress_attr
8901                 where project_id = p_project_id;
8902 
8903                 delete from pa_proj_workplan_attr
8904                 where project_id = p_project_id;
8905 
8906         elsif (p_calling_context = 'TASK_VERSION') then
8907 
8908                 forall i in p_task_version_id.first..p_task_version_id.last
8909                 delete /*+ INDEX(PA_PROGRESS_ROLLUP PA_PROGRESS_ROLLUP_N4)*/ from pa_progress_rollup --Added hint for 15876400
8910                 where project_id = p_project_id
8911                   and object_version_id = p_task_version_id(i);
8912 
8913                 forall i in p_task_version_id.first..p_task_version_id.last
8914                 delete /*+ INDEX(PA_PERCENT_COMPLETES PA_PERCENT_COMPLETES_N5)*/ from pa_percent_completes -- added hint for bug 16325523
8915                 where project_id = p_project_id
8916                   and object_version_id = p_task_version_id(i);
8917 
8918         end if;
8919 
8920         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8921                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8922                                      p_msg_name       => l_msg_data);
8923                 x_msg_data := l_msg_data;
8924                 x_return_status := 'E';
8925                 x_msg_count := l_msg_count;
8926                 RAISE  FND_API.G_EXC_ERROR;
8927         END IF;
8928 
8929         IF (p_commit = FND_API.G_TRUE) THEN
8930                 COMMIT;
8931         END IF;
8932 EXCEPTION
8933     when FND_API.G_EXC_ERROR then
8934       if p_commit = FND_API.G_TRUE then
8935          rollback to DELETE_WORKING_WP_PROGRESS;
8936       end if;
8937       x_return_status := FND_API.G_RET_STS_ERROR;
8938     when FND_API.G_EXC_UNEXPECTED_ERROR then
8939       if p_commit = FND_API.G_TRUE then
8940          rollback to DELETE_WORKING_WP_PROGRESS;
8941       end if;
8942       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8943       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8944                               p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8945                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8946     when OTHERS then
8947       if p_commit = FND_API.G_TRUE then
8948          rollback to DELETE_WORKING_WP_PROGRESS;
8949       end if;
8950       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8951       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
8952                               p_procedure_name => 'DELETE_WORKING_WP_PROGRESS',
8953                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8954       raise;
8955 END delete_working_wp_progress;
8956 
8957 -- Progress Management Changes. Bug # 3420093.
8958 
8959 Procedure PULL_SUMMARIZED_ACTUALS (
8960   p_api_version                 IN      NUMBER          :=1.0
8961  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
8962  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
8963  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
8964  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
8965  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
8966  ,p_debug_mode                  IN      VARCHAR2        :='N'
8967  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8968    ,P_Project_ID        IN  NUMBER
8969    ,P_Calling_Mode      IN  VARCHAR2
8970    ,x_return_status     OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8971    ,x_msg_count         OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
8972    ,x_msg_data          OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
8973 )
8974 IS
8975    l_api_name           CONSTANT   VARCHAR2(30)    := 'PULL_SUMMARIZED_ACTUALS';
8976    l_api_version        CONSTANT   NUMBER          := p_api_version;
8977    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
8978    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
8979    l_project_id_list               SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8980    l_proj_pgm_level                SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
8981    l_msg_code           VARCHAR2(32);
8982 
8983   l_str_ver_id       NUMBER;
8984   Cursor cur_Summerized_Actuals
8985   IS
8986     Select ppevs.element_version_id
8987     FROM  PA_Proj_Elem_Ver_Structure ppevs,
8988           PA_Proj_Elements        ppe,
8989           PA_Proj_Structure_Types ppst,
8990           PA_Structure_types      pst
8991     WHERE ppevs.Project_ID        = P_Project_ID
8992     AND   ppevs.status_code       = 'STRUCTURE_PUBLISHED'
8993     AND   ppevs.proj_element_id   = ppe.Proj_Element_ID
8994     AND   ppe.Project_ID          = ppevs.Project_ID
8995     AND   ppe.Proj_Element_ID     = ppst.Proj_Element_ID
8996     AND   ppst.Structure_Type_ID  = pst.Structure_Type_ID
8997     AND   pst.structure_type      = 'WORKPLAN';
8998  -- Bug 4600547 Begin
8999  CURSOR c_check_prog_exists IS
9000  SELECT 'Y'
9001  FROM pa_progress_rollup
9002  where project_id = P_Project_ID
9003  AND structure_type = 'WORKPLAN'
9004  and structure_version_id is null;
9005 
9006  l_check_prog_exists VARCHAR2(1):='N';
9007  -- Bug 4600547 End
9008 
9009  -- Bug 5961235 Begin
9010   CURSOR c_check_prog_exists_prg IS
9011   SELECT 'Y' from dual
9012   where exists ( select DISTINCT ppev.PROJECT_ID
9013                  FROM pa_progress_rollup ppr,
9014                       pa_proj_element_versions ppev
9015                 where  ppr.project_id=ppev.project_id
9016                  and    ppev.OBJECT_TYPE = 'PA_STRUCTURES'
9017                  and    ppr.structure_type = 'WORKPLAN'
9018                  and    ppr.structure_version_id is null
9019                  and exists (select null
9020                          from   PA_PROJ_ELEMENT_VERSIONS ppev2
9021                          where  ppev2.project_id=p_project_id
9022                          and    ppev.prg_group=ppev2.prg_group)
9023                  );
9024 
9025   l_program_enable_flag VARCHAR2(1):='N';
9026  -- Bug 5961235 end
9027 
9028 BEGIN
9029         IF g1_debug_mode  = 'Y' THEN
9030                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS');
9031         END IF;
9032 
9033         IF g1_debug_mode  = 'Y' THEN
9034                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS Start : P_Project_ID='||P_Project_ID||', P_Calling_Mode='||P_Calling_Mode, x_Log_Level=> 3);
9035         END IF;
9036 
9037 	IF (p_commit = FND_API.G_TRUE) THEN
9038                 savepoint PULL_SUMMARIZED_ACTUALS;
9039         END IF;
9040 
9041         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9042                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9043         END IF;
9044 
9045         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9046                 FND_MSG_PUB.initialize;
9047         END IF;
9048 
9049         x_return_status := FND_API.G_RET_STS_SUCCESS;
9050 
9051         --bug 4573340
9052         IF NOT NVL(PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(P_Project_ID),'X') = 'SHARE_FULL'
9053         THEN
9054            return;
9055         END IF;
9056         --end bug 4573340 This check is not related to bugfix 4573340. This is added while fixing that bug.
9057 
9058     -- Check the record
9059         OPEN cur_Summerized_Actuals;
9060         FETCH cur_Summerized_Actuals INTO l_str_ver_id;
9061         fetch cur_Summerized_Actuals into l_str_ver_id;
9062         if cur_Summerized_Actuals%notfound then
9063            If p_calling_mode = 'PUBLISH' Then
9064              l_project_id_list.extend;
9065              l_proj_pgm_level.extend;
9066              l_project_id_list(1) := P_Project_ID;
9067              l_proj_pgm_level(1) := 1; ---setting to 2 so that pgm rollup is done
9068              -- 4600547 : We don't need to set it to 2 because PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS
9069              -- will take care of program rollup part after this call
9070 
9071              IF g1_debug_mode  = 'Y' THEN
9072 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'Calling GET_SUMMARIZED_ACTUALS with p_plan_res_level Y', x_Log_Level=> 3);
9073              END IF;
9074 
9075              PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
9076              p_project_id_list      => l_project_id_list
9077             --,p_extraction_type      => 'FULL' 4415960
9078             ,p_extraction_type      => 'PUBLISH'-- 4415960
9079             ,p_plan_res_level       => 'Y'
9080             ,p_proj_pgm_level       => l_proj_pgm_level
9081             ,x_return_status        => x_return_status
9082             ,x_msg_count            => x_msg_count
9083             ,x_msg_data             => x_msg_data
9084              );
9085 
9086 	     IF g1_debug_mode  = 'Y' THEN
9087 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'After Call x_return_status='||x_return_status, x_Log_Level=> 3);
9088 	     END IF;
9089 
9090    	    -- Added the if block for Bug#5659575
9091 	    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9092 		 RAISE FND_API.G_EXC_ERROR;
9093 	    END IF;
9094 
9095             begin
9096               PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (
9097                    p_plan_wbs_ver_id     => l_str_ver_id
9098                  , x_msg_code => l_msg_code
9099                  , x_return_status => x_return_status);
9100 
9101             EXCEPTION
9102              WHEN OTHERS THEN
9103                                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
9104                                             p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9105                                             p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE failed: sqlerrm='||SQLERRM,1,120));
9106                 RAISE FND_API.G_EXC_ERROR;
9107             END;
9108 
9109             -- Added the if block for Bug#5659575
9110 	    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9111 		 RAISE FND_API.G_EXC_ERROR;
9112 	    END IF;
9113 
9114             -- Bug 4600547 Begin
9115             -- Added thew following cursor call to avoid unnecessary creating rollup records
9116             -- whene there is no incremental amounts found in first run for assignments
9117 
9118             OPEN c_check_prog_exists;
9119             FETCH c_check_prog_exists INTO l_check_prog_exists;
9120             CLOSE c_check_prog_exists;
9121 
9122             -- Bug 5961235 : For programs if sub projects has progress then we need to rollup at program task level
9123                          IF  nvl(l_check_prog_exists,'N') = 'N' THEN
9124                                  l_program_enable_flag := PA_PROJECT_STRUCTURE_UTILS.check_program_flag_enable(P_Project_ID);
9125 
9126                                  If l_program_enable_flag = 'Y' then
9127                                          OPEN c_check_prog_exists_prg;
9128                                          FETCH c_check_prog_exists_prg INTO l_check_prog_exists;
9129                                          CLOSE c_check_prog_exists_prg;
9130                                  end if;
9131                          END IF;
9132 
9133             IF nvl(l_check_prog_exists,'N') = 'Y' THEN
9134 
9135 		IF g1_debug_mode  = 'Y' THEN
9136 			pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'Calling GET_SUMMARIZED_ACTUALS with p_plan_res_level N', x_Log_Level=> 3);
9137                 END IF;
9138 
9139             PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS (
9140              p_project_id_list      => l_project_id_list
9141             --,p_extraction_type      => 'FULL' 4415960
9142 	    ,p_extraction_type      => 'PUBLISH'-- 4415960
9143             ,p_plan_res_level       => 'N'
9144             ,p_proj_pgm_level       => l_proj_pgm_level
9145             ,x_return_status        => x_return_status
9146             ,x_msg_count            => x_msg_count
9147             ,x_msg_data             => x_msg_data
9148             );
9149 
9150             IF g1_debug_mode  = 'Y' THEN
9151 		pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PULL_SUMMARIZED_ACTUALS', x_Msg => 'After Call x_return_status='||x_return_status, x_Log_Level=> 3);
9152 	    END IF;
9153 
9154   	    -- Bug 5659575
9155 	    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
9156 		    RAISE FND_API.G_EXC_ERROR;
9157 	    END IF;
9158 
9159             END IF;
9160           End If;
9161         end if;
9162         CLOSE cur_Summerized_Actuals;
9163 
9164   EXCEPTION
9165     when FND_API.G_EXC_ERROR then
9166       if p_commit = FND_API.G_TRUE then
9167          rollback to PULL_SUMMARIZED_ACTUALS;
9168       end if;
9169       x_return_status := FND_API.G_RET_STS_ERROR;
9170     when FND_API.G_EXC_UNEXPECTED_ERROR then
9171       if p_commit = FND_API.G_TRUE then
9172          rollback to PULL_SUMMARIZED_ACTUALS;
9173       end if;
9174       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9175       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
9176                               p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9177                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9178     when OTHERS then
9179       if p_commit = FND_API.G_TRUE then
9180          rollback to DELETE_WORKING_WP_PROGRESS;
9181       end if;
9182       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9183       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
9184                               p_procedure_name => 'PULL_SUMMARIZED_ACTUALS',
9185                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9186       raise;
9187 END PULL_SUMMARIZED_ACTUALS;
9188 
9189 -- Progress Management Changes. Bug # 3420093.
9190 
9191 PROCEDURE UPDATE_PROGRESS(
9192   p_api_version                 IN      NUMBER          :=1.0
9193  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
9194  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
9195  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
9196  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
9197  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
9198  ,p_debug_mode                  IN      VARCHAR2        :='N'
9199  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9200  ,p_action                      IN      VARCHAR2        :='SAVE'
9201  ,P_rollup_entire_wbs_flag      IN      VARCHAR2        :='N'
9202  ,p_progress_mode               IN      VARCHAR2        :='FUTURE'
9203  ,p_percent_complete_id         IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9204  ,p_project_id                  IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9205  ,p_object_id                   IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9206  ,p_object_version_id           IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9207  ,p_object_type                 IN      VARCHAR2        :='PA_TASKS'
9208  ,p_as_of_date                  IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9209  ,p_percent_complete            IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9210  ,p_progress_status_code        IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9211  ,p_progress_comment            IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9212  ,p_brief_overview              IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9213  ,p_actual_start_date           IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9214  ,p_actual_finish_date          IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9215  ,p_estimated_start_date        IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9216  ,p_estimated_finish_date       IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9217  ,p_scheduled_start_date        IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9218  ,p_scheduled_finish_date       IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
9219  ,p_record_version_number       IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9220  ,p_task_status                 IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9221  ,p_est_remaining_effort        IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9222  ,p_ETC_cost                    IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9223  ,p_actual_work_quantity        IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9224  ,p_pm_product_code             IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9225  ,p_structure_type              IN      VARCHAR2        :='WORKPLAN'
9226  ,p_actual_effort               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9227  ,p_actual_cost                 IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9228  ,p_actual_effort_this_period   IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9229  ,p_actual_cost_this_period     IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9230  ,p_object_sub_type             IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9231  ,p_task_id                     IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9232  ,p_structure_version_id        IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9233  ,p_prog_fom_wp_flag            IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9234  ,p_rollup_reporting_lines_flag IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9235  ,p_planned_cost                IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9236  ,p_planned_effort              IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9237  ,p_rate_based_flag             IN      VARCHAR         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9238  ,p_resource_class_code         IN      VARCHAR         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9239  ,p_transfer_wp_pc_flag         IN      VARCHAR         := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9240  ,p_txn_currency_code           IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
9241  ,p_rbs_element_id              IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9242 -- ,p_resource_list_member_id     IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3764224
9243  ,p_resource_assignment_id    IN        NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  -- Bug 3764224
9244 ,p_eff_rollup_percent_complete  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  --    3910193
9245  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9246  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
9247  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9248 )
9249 IS
9250    l_api_name           CONSTANT   VARCHAR2(30)    := 'UPDATE_PROGRESSES'       ;
9251    l_api_version        CONSTANT   NUMBER          := p_api_version             ;
9252    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID        ;
9253    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID       ;
9254    l_return_status                 VARCHAR2(1)                                  ;
9255    l_msg_count                     NUMBER                                       ;
9256    l_msg_data                      VARCHAR2(250)                                ;
9257    l_object_type                   VARCHAR2(30)                                 ;
9258    l_structure_version_id          NUMBER                                       ;
9259    l_task_version_id               NUMBER                                       ;
9260    l_wp_rollup_method              pa_proj_progress_attr.task_weight_basis_code%TYPE;
9261    l_fin_rollup_method             pa_proj_progress_attr.task_weight_basis_code%TYPE;
9262    l_rollup_method                 pa_proj_progress_attr.task_weight_basis_code%TYPE;
9263    L_LOWEST_LEVEL_TASK             VARCHAR2(1);
9264    l_last_progress_date            DATE;
9265    l_plan_version_id               NUMBER;
9266 
9267    --BUG3632883
9268    l_flag                          VARCHAR2(1);
9269 
9270    CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
9271    IS
9272    SELECT element_version_id, parent_structure_version_id
9273    FROM pa_proj_element_versions
9274    WHERE proj_element_id = c_proj_element_id
9275    AND object_type = 'PA_TASKS'
9276    AND project_id = c_project_id
9277    AND parent_structure_version_id = c_structure_version_id;
9278 
9279    CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
9280    IS
9281    SELECT task_weight_basis_code
9282    FROM pa_proj_progress_attr
9283    WHERE project_id = c_project_id
9284    AND structure_type = c_structure_type;
9285 
9286    CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
9287    IS
9288    SELECT elemver.element_version_id, elemver.parent_structure_version_id
9289    FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
9290    WHERE elemver.proj_element_id = c_proj_element_id
9291    AND elemver.object_type = 'PA_TASKS'
9292    AND elemver.project_id = c_project_id
9293    AND str.project_id = c_project_id
9294    AND elemver.parent_structure_version_id = str.element_version_id
9295    AND str.latest_eff_published_flag = 'Y';
9296 
9297    --BUG3632883: Check for template, progress should not be allowed for template.
9298    --to be used only in AMG flow
9299    CURSOR c_get_template_flag
9300    IS
9301    SELECT TEMPLATE_FLAG
9302    FROM PA_PROJECTS_ALL
9303    WHERE PROJECT_ID = p_project_id;
9304 
9305    l_structure_sharing_code    pa_projects_all.structure_sharing_code%TYPE; -- Bug 3586648
9306    l_task_id                   NUMBER; --3603636
9307    -- Bug 3722011 Begin
9308    L_SHARING_ENABLED          VARCHAR2(1)                                               ;
9309    L_SPLIT_WORKPLAN           VARCHAR2(1)                                               ;
9310    l_project_ids              SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()        ;
9311    l_struture_version_ids     SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()        ;
9312    l_proj_thru_dates_tbl      SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type()       ;
9313    -- Bug 3722011 End
9314 
9315    -- BEGIN: Code to fix Bug # 3821106.
9316 
9317    cursor cur_percent_complete(p_project_id NUMBER, p_object_id NUMBER
9318                                , p_object_version_id NUMBER, p_object_type VARCHAR2
9319                                , p_as_of_date DATE) is
9320    select 'Y'
9321    from pa_progress_rollup
9322    where project_id = p_project_id
9323    and object_id = p_object_id
9324    and object_type = p_object_type
9325    and as_of_date = p_as_of_date
9326    and structure_type = 'WORKPLAN'
9327    and current_flag = 'Y'
9328    and not exists (select 1
9329            from pa_percent_completes
9330            where project_id = p_project_id
9331            and object_id = p_object_id
9332            and object_type = p_object_type
9333            and date_computed = p_as_of_date
9334            and structure_type = 'WORKPLAN');
9335 
9336    cur_percent_complete_rec cur_percent_complete%rowtype;
9337 
9338    l_action VARCHAR2(30);
9339 
9340    l_resource_list_member_id NUMBER;
9341    l_prog_pa_period_name VARCHAR2(30);
9342    l_prog_gl_period_name VARCHAR2(30);
9343 
9344    -- END: Code to fix Bug # 3821106.
9345    l_base_struct_ver_id   NUMBER;
9346    l_msg_code             VARCHAR2(32);
9347    l_calling_mode     VARCHAR2(15);
9348 
9349 -- Begin Bug # 4524977.
9350 
9351 l_prev_prog_upd_date date; -- 7225884
9352 
9353 cursor l_cur_publish(l_request_id NUMBER)  is
9354 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
9355 from fnd_conc_req_summary_v fcrsv
9356 where fcrsv.request_id = l_request_id;
9357 
9358 l_rec_publish l_cur_publish%ROWTYPE;
9359 
9360 l_wp_ver_enabled_flag VARCHAR2(1) := null;
9361 
9362 l_request_id            NUMBER          := null;
9363 l_process_code          VARCHAR2(30)    := null;
9364 l_str_version_id        NUMBER          := null;
9365 l_structure_id          NUMBER          := null;
9366 
9367 -- End for Bug # 4524977.
9368 
9369 BEGIN
9370 
9371         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9372 
9373         IF g1_debug_mode  = 'Y' THEN
9374                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS');
9375         END IF;
9376 
9377         -- FPM Dev CR 3 : Added Debug messages
9378         IF g1_debug_mode  = 'Y' THEN
9379                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS Start : Passed Parameters :', x_Log_Level=> 3);
9380                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
9381                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
9382                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
9383                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
9384                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
9385                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
9386                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
9387                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
9388                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_mode='||p_progress_mode, x_Log_Level=> 3);
9389                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete_id='||p_percent_complete_id, x_Log_Level=> 3);
9390                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
9391                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_id='||p_object_id, x_Log_Level=> 3);
9392                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
9393                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_type='||p_object_type, x_Log_Level=> 3);
9394                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
9395                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_percent_complete='||p_percent_complete, x_Log_Level=> 3);
9396                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_eff_rollup_percent_complete='||p_eff_rollup_percent_complete, x_Log_Level=> 3);
9397                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_status_code='||p_progress_status_code, x_Log_Level=> 3);
9398                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_progress_comment='||p_progress_comment, x_Log_Level=> 3);
9399                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_brief_overview='||p_brief_overview, x_Log_Level=> 3);
9400                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_start_date='||p_actual_start_date, x_Log_Level=> 3);
9401                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_finish_date='||p_actual_finish_date, x_Log_Level=> 3);
9402                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_start_date='||p_estimated_start_date, x_Log_Level=> 3);
9403                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_estimated_finish_date='||p_estimated_finish_date, x_Log_Level=> 3);
9404                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_start_date='||p_scheduled_start_date, x_Log_Level=> 3);
9405                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_scheduled_finish_date='||p_scheduled_finish_date, x_Log_Level=> 3);
9406                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_record_version_number='||p_record_version_number, x_Log_Level=> 3);
9407                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_status='||p_task_status, x_Log_Level=> 3);
9408                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_est_remaining_effort='||p_est_remaining_effort, x_Log_Level=> 3);
9409                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_ETC_cost='||p_ETC_cost, x_Log_Level=> 3);
9410                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_work_quantity='||p_actual_work_quantity, x_Log_Level=> 3);
9411                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_pm_product_code='||p_pm_product_code, x_Log_Level=> 3);
9412                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
9413                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_effort='||p_actual_effort, x_Log_Level=> 3);
9414                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_cost='||p_actual_cost, x_Log_Level=> 3);
9415                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_effort_this_period='||p_actual_effort_this_period, x_Log_Level=> 3);
9416                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_actual_cost_this_period='||p_actual_cost_this_period, x_Log_Level=> 3);
9417                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_object_sub_type='||p_object_sub_type, x_Log_Level=> 3);
9418                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
9419                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
9420                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_prog_fom_wp_flag='||p_prog_fom_wp_flag, x_Log_Level=> 3);
9421                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rollup_reporting_lines_flag='||p_rollup_reporting_lines_flag, x_Log_Level=> 3);
9422                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_cost='||p_planned_cost, x_Log_Level=> 3);
9423                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_planned_effort='||p_planned_effort, x_Log_Level=> 3);
9424                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rate_based_flag='||p_rate_based_flag, x_Log_Level=> 3);
9425                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_class_code='||p_resource_class_code, x_Log_Level=> 3);
9426                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_transfer_wp_pc_flag='||p_transfer_wp_pc_flag, x_Log_Level=> 3);
9427                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_txn_currency_code='||p_txn_currency_code, x_Log_Level=> 3);
9428                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_rbs_element_id='||p_rbs_element_id, x_Log_Level=> 3);
9429                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_resource_assignment_id='||p_resource_assignment_id, x_Log_Level=> 3);
9430         END IF;
9431 
9432         IF (p_commit = FND_API.G_TRUE) THEN
9433                 savepoint UPDATE_PROGRESS;
9434         END IF;
9435 
9436         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9437                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9438         END IF;
9439 
9440         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9441                 FND_MSG_PUB.initialize;
9442         END IF;
9443 
9444         x_return_status := FND_API.G_RET_STS_SUCCESS;
9445 
9446         -- Begin fix for Bug # 4524977.
9447 
9448         PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
9449         (p_project_id            => p_project_id
9450         ,p_structure_type        => p_structure_type
9451         ,x_request_id            => l_request_id
9452         ,x_process_code          => l_process_code
9453         ,x_structure_version_id  => l_str_version_id
9454         ,x_return_status         => l_return_status
9455         ,x_msg_count             => l_msg_count
9456         ,x_msg_data              => l_msg_data);
9457 
9458 
9459         if l_return_status <> FND_API.G_RET_STS_SUCCESS then
9460 
9461                 x_msg_data := l_msg_data;
9462                 x_return_status := 'E';
9463                 x_msg_count := l_msg_count;
9464 
9465                 raise FND_API.G_EXC_ERROR;
9466 
9467         end if;
9468 
9469         open l_cur_publish(l_request_id);
9470         fetch l_cur_publish into l_rec_publish;
9471         close l_cur_publish;
9472 
9473         l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id);
9474 
9475         if ((l_rec_publish.process = 'CONC_PUBLISH')
9476             and (l_process_code in ('WUP', 'WUE'))
9477             and (l_wp_ver_enabled_flag = 'Y')) then
9478 
9479                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9480                                      ,p_msg_name      => 'PA_PS_PUBLISH_NO_PROG');
9481 
9482                 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
9483 
9484                 x_return_status := FND_API.G_RET_STS_ERROR;
9485 
9486                 raise FND_API.G_EXC_ERROR;
9487 
9488         elsif ((l_rec_publish.process = 'CONC_UPDATE')
9489                and (l_process_code = 'WUP')
9490                and (l_wp_ver_enabled_flag = 'N')) then
9491 
9492                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9493                                      ,p_msg_name      => 'PA_PS_UPDATE_NO_PROG');
9494 
9495                 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
9496 
9497                 x_return_status := FND_API.G_RET_STS_ERROR;
9498 
9499                 raise FND_API.G_EXC_ERROR;
9500 
9501         elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
9502                and (l_process_code = 'WUP')
9503                and (l_wp_ver_enabled_flag = 'N')) then
9504 
9505                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
9506                                      ,p_msg_name      => 'PA_PS_APLPRG_NO_PROG');
9507 
9508                 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
9509 
9510                 x_return_status := FND_API.G_RET_STS_ERROR;
9511 
9512                 raise FND_API.G_EXC_ERROR;
9513 
9514         end if;
9515 
9516         -- End fix for Bug # 4524977.
9517 
9518          -- BEGIN: Code to fix Bug # 3821106.
9519 
9520      l_action := p_action;
9521      -- Bug 3879461 : Commented teporary code below.
9522         /*
9523          if (p_action = 'SAVE') then
9524             open cur_percent_complete(p_project_id, p_object_id
9525                                       , p_object_version_id, p_object_type
9526                                       , p_as_of_date);
9527             fetch cur_percent_complete into cur_percent_complete_rec;
9528             if cur_percent_complete%FOUND then
9529                     l_action := 'PUBLISH';
9530             end if;
9531             close cur_percent_complete;
9532          end if;
9533      */
9534 
9535          -- END: Code to fix Bug # 3821106.
9536 
9537         l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
9538         -- Bug 3722011 Begin
9539         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
9540         IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) AND p_structure_type = 'WORKPLAN' THEN
9541                 l_split_workplan := 'Y';
9542         ELSE
9543                 l_split_workplan := 'N';
9544         END IF;
9545         -- Bug 3722011 End
9546 
9547         --BUG3632883
9548         IF (p_calling_module = 'AMG')
9549         THEN
9550             OPEN c_get_template_flag;
9551             FETCH c_get_template_flag INTO l_flag;
9552             CLOSE c_get_template_flag;
9553 
9554             IF (l_flag = 'Y')
9555             THEN
9556             --Raise Error
9557                PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
9558                                     ,p_msg_name       => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
9559                x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
9560                x_return_status := FND_API.G_RET_STS_ERROR;
9561                RAISE  FND_API.G_EXC_ERROR;
9562             END IF;
9563         END IF;
9564 
9565     -- Begin code fix for bug # 3974859.
9566 
9567 	IF p_structure_type = 'WORKPLAN' THEN
9568 	  -- bug 7225884
9569 	  BEGIN
9570 	     SELECT next_progress_update_date
9571 	       INTO l_prev_prog_upd_date
9572 	       FROM pa_proj_progress_attr
9573 	      WHERE project_id = p_project_id
9574 	    AND object_type    = 'PA_STRUCTURES'
9575 	    AND structure_type = 'WORKPLAN';
9576 	  EXCEPTION
9577 	  WHEN OTHERS THEN
9578 	    l_prev_prog_upd_date := p_as_of_date-1;
9579 	  END;
9580 
9581 	  IF NVL(l_prev_prog_upd_date,p_as_of_date-1) <> p_as_of_date THEN
9582 	     UPDATE pa_proj_progress_attr
9583 	    SET next_progress_update_date = p_as_of_date
9584 	      WHERE project_id            = p_project_id
9585 	    AND object_type               = 'PA_STRUCTURES'
9586 	    AND structure_type            = 'WORKPLAN';
9587 	  END IF;
9588 	END IF;
9589 
9590     -- End code fix for bug # 3974859.
9591 
9592         -- FPM Dev CR 1 : Added call of UPDATE_FINANCIAL_TASK_PROGRESS for Financial Percent Complete
9593         IF p_structure_type = 'FINANCIAL'
9594         THEN
9595                 IF g1_debug_mode  = 'Y' THEN
9596                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
9597                 END IF;
9598 
9599                 l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
9600                                      p_task_id        => p_task_id
9601                                     ,p_project_id     => p_project_id
9602                                     ,p_object_id      => p_object_id
9603                                     ,p_object_type    => p_object_type
9604                                     ,p_structure_type => p_structure_type
9605                           );
9606                 IF g1_debug_mode  = 'Y' THEN
9607                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'l_last_progress_date='||l_last_progress_date, x_Log_Level=> 3);
9608                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
9609                 END IF;
9610 
9611                 PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
9612                         p_api_version                   => l_api_version
9613                         ,p_init_msg_list                => p_init_msg_list
9614                         ,p_commit                       => p_commit
9615                         ,p_validate_only                => p_validate_only
9616                         ,p_validation_level             => p_validation_level
9617                         ,p_calling_module               => p_calling_module
9618                         ,p_action                       => l_action -- Code to fix Bug # 3821106.
9619                         ,P_rollup_entire_wbs_flag       => P_rollup_entire_wbs_flag
9620                         ,p_percent_complete_id          => p_percent_complete_id
9621                         ,p_project_id                   => p_project_id
9622                         ,p_object_id                    => p_object_id
9623                         ,p_object_version_id            => p_object_version_id
9624                         ,p_object_type                  => p_object_type
9625                         ,p_as_of_date                   => p_as_of_date
9626                         ,p_percent_complete             => p_percent_complete
9627                         ,p_structure_type               => p_structure_type
9628                         ,p_task_id                      => p_task_id
9629                         ,p_structure_version_id         => p_structure_version_id
9630                         ,p_record_version_number        => p_record_version_number
9631                         ,p_progress_comment             => p_progress_comment -- Bug 3595585
9632                         ,p_brief_overview               => p_brief_overview -- Bug 3595585
9633                         ,x_return_status                => l_return_status
9634                         ,x_msg_count                    => l_msg_count
9635                         ,x_msg_data                     => l_msg_data
9636                           );
9637                 IF g1_debug_mode  = 'Y' THEN
9638                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_FINANCIAL_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9639                 END IF;
9640 
9641         -- PA_ASSIGNMENTS
9642         ELSIF p_object_type = 'PA_ASSIGNMENTS'  AND p_structure_type = 'WORKPLAN' THEN
9643                 IF g1_debug_mode  = 'Y' THEN
9644                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
9645                 END IF;
9646 
9647                 PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
9648                 p_api_version                   => l_api_version
9649                 ,p_init_msg_list                => p_init_msg_list
9650                 ,p_commit                       => p_commit
9651                 ,p_validate_only                => p_validate_only
9652                 ,p_validation_level             => p_validation_level
9653                 ,p_calling_module               => p_calling_module
9654                 ,p_action                       => l_action -- Code to fix Bug # 3821106.
9655                 ,p_bulk_load_flag               => p_rollup_entire_wbs_flag
9656                 ,p_progress_mode                => p_progress_mode
9657                 ,p_percent_complete_id          => p_percent_complete_id
9658                 ,p_project_id                   => p_project_id
9659                 ,p_object_id                    => p_object_id
9660                 ,p_object_version_id            => p_object_version_id
9661                 ,p_task_id                      => p_task_id
9662                 ,p_as_of_date                   => p_as_of_date
9663                 ,p_progress_comment             => p_progress_comment
9664                 ,p_brief_overview               => p_brief_overview
9665                 ,p_actual_start_date            => p_actual_start_date
9666                 ,p_actual_finish_date           => p_actual_finish_date
9667                 ,p_estimated_start_date         => p_estimated_start_date
9668                 ,p_estimated_finish_date        => p_estimated_finish_date
9669                 ,p_record_version_number        => p_record_version_number
9670                 ,p_pm_product_code              => p_pm_product_code
9671                 ,p_structure_type               => p_structure_type
9672                 ,p_structure_version_id         => p_structure_version_id
9673                 ,p_actual_cost_this_period      => p_actual_cost_this_period
9674                 ,p_actual_effort_this_period    => p_actual_effort_this_period
9675                 ,p_rate_based_flag              => p_rate_based_flag
9676                 ,p_resource_class_code          => p_resource_class_code
9677                 ,p_actual_cost                  => p_actual_cost
9678                 ,p_actual_effort                => p_actual_effort
9679                 ,p_etc_cost_this_period         => p_etc_cost
9680                 ,p_etc_effort_this_period       =>  p_est_remaining_effort
9681                 ,p_txn_currency_code            => p_txn_currency_code
9682                 ,p_rbs_element_id               => p_rbs_element_id
9683 --                ,p_resource_list_member_id      => p_resource_list_member_id -- Bug 3764224
9684                 ,p_resource_assignment_id      => p_resource_assignment_id -- Bug 3764224
9685                 ,p_scheduled_start_date         => p_scheduled_start_date -- Bug 3586648
9686                 ,p_scheduled_finish_date        => p_scheduled_finish_date -- Bug 3586648
9687                 ,x_return_status                => l_return_status
9688                 ,x_msg_count                    => l_msg_count
9689                 ,x_msg_data                     => l_msg_data
9690                 );
9691                 IF g1_debug_mode  = 'Y' THEN
9692                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_ASSIGNMENT_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9693                 END IF;
9694         -- PA_DELIVERABLES
9695         ELSIF p_object_type = 'PA_DELIVERABLES'  AND p_structure_type = 'WORKPLAN' THEN
9696                 IF g1_debug_mode  = 'Y' THEN
9697                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
9698                 END IF;
9699 
9700                 PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
9701                 p_api_version                   => l_api_version
9702                 ,p_init_msg_list                => p_init_msg_list
9703                 ,p_commit                       => p_commit
9704                 ,p_validate_only                => p_validate_only
9705                 ,p_validation_level             => p_validation_level
9706                 ,p_calling_module               => p_calling_module
9707                 ,p_action                       => l_action -- Code to fix Bug # 3821106.
9708                 ,p_bulk_load_flag               => P_rollup_entire_wbs_flag
9709                 ,p_progress_mode                => p_progress_mode
9710                 ,p_percent_complete_id          => p_percent_complete_id
9711                 ,p_project_id                   => p_project_id
9712                 ,p_object_id                    => p_object_id
9713                 ,p_object_type                  => p_object_type
9714                 ,p_object_version_id            => p_object_version_id
9715                 ,p_del_status                   => p_task_status -- FPM Dev CR 1
9716                 ,p_task_id                      => p_task_id
9717                 ,p_as_of_date                   => p_as_of_date
9718                 ,p_percent_complete             => p_percent_complete
9719                 ,p_progress_status_code         => p_progress_status_code
9720                 ,p_progress_comment             => p_progress_comment
9721                 ,p_brief_overview               => p_brief_overview
9722                 ,p_actual_finish_date           => p_actual_finish_date
9723                 ,p_record_version_number        => p_record_version_number
9724                 ,p_pm_product_code              => p_pm_product_code
9725                 ,p_structure_type               => p_structure_type
9726                 ,x_return_status                => l_return_status
9727                 ,x_msg_count                    => l_msg_count
9728                 ,x_msg_data                     => l_msg_data
9729                 );
9730                 IF g1_debug_mode  = 'Y' THEN
9731                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_DELIVERABLE_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9732                 END IF;
9733 
9734         -- PA_TASKS and PA_STRUCTURES
9735         ELSIF (p_object_type = 'PA_TASKS' OR p_object_type = 'PA_STRUCTURES')   AND p_structure_type = 'WORKPLAN'  THEN
9736                 IF g1_debug_mode  = 'Y' THEN
9737                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
9738                 END IF;
9739                 PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
9740                  p_api_version           => l_api_version
9741                 ,p_init_msg_list         => p_init_msg_list
9742                 ,p_commit                => p_commit
9743                 ,p_validate_only         => p_validate_only
9744                 ,p_validation_level      => p_validation_level
9745                 ,p_calling_module        => p_calling_module
9746                 ,p_debug_mode            => p_debug_mode
9747                 ,p_max_msg_count         => p_max_msg_count
9748                 ,p_action                => l_action -- Code to fix Bug # 3821106.
9749                 ,p_bulk_load_flag        => p_rollup_entire_wbs_flag
9750                 ,p_progress_mode         => p_progress_mode
9751                 ,p_percent_complete_id   => p_percent_complete_id
9752                 ,p_project_id            => p_project_id
9753                 ,p_object_id             => p_object_id
9754                 ,p_object_version_id     => p_object_version_id
9755                 ,p_object_type           => p_object_type
9756                 ,p_as_of_date            => p_as_of_date
9757                 ,p_percent_complete      => p_percent_complete
9758                 ,p_progress_status_code  => p_progress_status_code
9759                 ,p_progress_comment      => p_progress_comment
9760                 ,p_brief_overview        => p_brief_overview
9761                 ,p_actual_start_date     => p_actual_start_date
9762                 ,p_actual_finish_date    => p_actual_finish_date
9763                 ,p_estimated_start_date  => p_estimated_start_date
9764                 ,p_estimated_finish_date => p_estimated_finish_date
9765                 ,p_record_version_number => p_record_version_number
9766                 ,p_task_status           => p_task_status
9767                 ,p_actual_work_quantity  => p_actual_work_quantity
9768                 ,p_pm_product_code       => p_pm_product_code
9769                 ,p_structure_type        => p_structure_type
9770                 ,p_prog_fom_wp_flag      => p_prog_fom_wp_flag
9771                 ,p_planned_cost          => p_planned_cost
9772                 ,p_planned_effort        => p_planned_effort
9773                 ,p_actual_effort         => p_actual_effort
9774                 ,p_est_remaining_effort  => p_est_remaining_effort
9775                 ,p_structure_version_id  => p_structure_version_id -- Bug 3608422 : Passing structure version id too
9776                 ,p_eff_rollup_percent_complete => p_eff_rollup_percent_complete  --bug 3910193
9777                 ,x_resource_list_member_id => l_resource_list_member_id
9778                 ,x_return_status         => l_return_status
9779                 ,x_msg_count             => l_msg_count
9780                 ,x_msg_data              => l_msg_data
9781                 );
9782                 IF g1_debug_mode  = 'Y' THEN
9783                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling UPDATE_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
9784                 END IF;
9785         END IF;
9786 
9787          IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9788                 x_msg_data := l_msg_data;
9789                 x_return_status := 'E';
9790                 x_msg_count := l_msg_count;
9791                 RAISE  FND_API.G_EXC_ERROR;
9792          END IF;
9793 
9794         -- Bug 3614828 : Moved the code to get local variables for object type, task version id, structure type etc..
9795         -- here, so that it is also accessible to ASGN_DLV_TO_TASK_ROLLUP_PVT
9796         IF (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES'
9797         OR (p_structure_type = 'FINANCIAL' and p_object_type = 'PA_TASKS')) THEN
9798 
9799             l_object_type := 'PA_TASKS';
9800             l_task_version_id := null;
9801             -- FPM Dev CR 1 : Call of cursor c_get_latest_pub_task_ver
9802             IF   p_object_type = 'PA_DELIVERABLES' AND  (p_task_id IS NOT NULL AND p_task_id <>PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM )THEN
9803                 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
9804                     -- Bug 3957792 --  Proceed for roll-up only if task is not in cancelled status
9805                     IF ( PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) <> 'CANCELLED' ) THEN
9806                 OPEN c_get_latest_pub_task_ver(p_task_id, p_project_id);
9807                 FETCH c_get_latest_pub_task_ver INTO l_task_version_id, l_structure_version_id;
9808                 CLOSE c_get_latest_pub_task_ver;
9809             END IF;
9810 
9811             ELSE
9812                     OPEN c_get_task_version_id(p_task_id, p_project_id ,p_structure_version_id);
9813                     FETCH c_get_task_version_id INTO l_task_version_id, l_structure_version_id;
9814                     CLOSE c_get_task_version_id;
9815             END IF;
9816             l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9817             l_task_id := p_task_id; -- 3603636
9818         ELSE
9819             l_object_type := p_object_type;
9820             l_task_version_id   := p_object_version_id;
9821             l_lowest_level_task := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id );
9822             l_structure_version_id := p_structure_version_id;
9823             l_task_id := p_object_id; -- 3603636
9824         END IF;
9825 
9826         OPEN c_get_task_weight_method(p_project_id, p_structure_type);
9827         FETCH c_get_task_weight_method INTO l_rollup_method;
9828         CLOSE c_get_task_weight_method;
9829 
9830         IF p_structure_type = 'WORKPLAN' THEN
9831                 l_wp_rollup_method := l_rollup_method;
9832         ELSE
9833                 l_fin_rollup_method := l_rollup_method;
9834         END IF;
9835 
9836         /* maansari 21-JUN-2004 */
9837         -- Begin commenting  out since we do not want this to be patched on pjd2qa unless this is tested
9838 
9839         -- Bug 3614828 : Added call of ASGN_DLV_TO_TASK_ROLLUP_PVT for partial rollup
9840         IF ((l_action = 'SAVE' AND p_calling_module = 'TASK_PROG_DET_PAGE' -- Code to fix Bug # 3821106.
9841                 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9842                 AND  (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9843                 AND (p_object_type = 'PA_ASSIGNMENTS' OR p_object_type = 'PA_DELIVERABLES' )  --bug 4097524 added PA_TASKS also
9844                 -- This condition can be modified to make PA_TASKS if we can make sure that task records are getting inserted at the last after inserting assignment and delievarble progress from Task Progress Details page
9845                 -- This will improve performance as it will be called once only i.e. for tasks
9846                 -- as of now it will be called for each assignments and deliverables for a task
9847                 AND p_structure_type = 'WORKPLAN')
9848         OR --bug 4101208
9849         (l_action = 'SAVE'
9850                 AND (p_task_id IS NOT NULL AND p_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9851                 AND  (l_task_version_id IS NOT NULL AND l_task_version_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)
9852                 AND ( p_object_type = 'PA_TASKS')
9853                 AND p_structure_type = 'WORKPLAN')
9854         )
9855         THEN
9856                 pa_progress_pub.ASGN_DLV_TO_TASK_ROLLUP_PVT(
9857                         p_calling_module => p_calling_module,
9858                         p_project_id => p_project_id,
9859                         p_task_id => p_task_id,
9860                         p_task_version_id => l_task_version_id,
9861                         p_as_of_date => p_as_of_date,
9862                         p_structure_version_id => l_structure_version_id,
9863                         p_wp_rollup_method     => l_wp_rollup_method,
9864                         x_return_status                => l_return_status,
9865                         x_msg_count                     => l_msg_count,
9866                         x_msg_data                      => l_msg_data);
9867 
9868 
9869                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9870                         x_msg_data := l_msg_data;
9871                         x_return_status := 'E';
9872                         x_msg_count := l_msg_count;
9873                         RAISE  FND_API.G_EXC_ERROR;
9874                 END IF;
9875          END IF;
9876 
9877 
9878         --End commenting out since we do not want this to be patched on pjd2qa unless this is tested.
9879         /* maansari 21-JUN-2004 */
9880 
9881              -- Amit : 1. Call of Future Rollup Progress
9882              --        2. lowest task variable population
9883              --        3. object version id is of task to be passed
9884              --        4. p_process_whole_tree to be passed as Y
9885              --        5. structure type also to be passed
9886              --        6. p_fin_rollup_method and p_wp_rollup_method is to be passed
9887              --        7. l_structure_version_id is not having any value.
9888              --        8. Call of program rollup private API
9889 
9890     IF l_action = 'PUBLISH' -- Code to fix Bug # 3821106.
9891     THEN
9892 
9893         IF g1_debug_mode  = 'Y' THEN
9894             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'p_action PUBLISH', x_Log_Level=> 3);
9895         END IF;
9896 
9897         IF ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
9898         THEN
9899             IF l_split_workplan = 'Y' AND p_object_type <> 'PA_DELIVERABLES' THEN -- Bug 4370820 : Added <> DELIVERABLES
9900                 BEGIN
9901                     Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N'; -- Bug 4186007
9902                     -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
9903                     -- is not called. Actually it gets called but PJI code does not do anything.
9904 
9905                     l_project_ids.extend(1);
9906                     l_project_ids(1) := p_project_id;
9907                     l_struture_version_ids.extend(1);
9908                     l_struture_version_ids(1) := l_structure_version_id;
9909                     l_proj_thru_dates_tbl.extend(1);
9910                     l_proj_thru_dates_tbl(1) := p_as_of_date;
9911                     PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
9912                            (P_PROJECT_ID_TAB                   => l_project_ids,
9913                         P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
9914                         P_ACTUALS_THRU_DATE                => l_proj_thru_dates_tbl,
9915                         P_CALLING_CONTEXT                  => 'WP_PROGRESS',
9916                         P_EXTRACTION_TYPE                  => 'INCREMENTAL', -- Bug 4186007
9917                         X_RETURN_STATUS                    => l_return_status,
9918                         X_MSG_COUNT                        => l_msg_count,
9919                         X_MSG_DATA                         => l_msg_data
9920                          );
9921 
9922                     Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ; -- Bug 4186007
9923                     delete from PA_PROG_ACT_BY_PERIOD_TEMP where project_id = p_project_id
9924                     AND structure_version_id = l_structure_version_id;
9925                     -- 3994165 : Deletion is now moved here.
9926                 EXCEPTION
9927                      WHEN OTHERS THEN
9928                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
9929                          p_procedure_name => 'update_progress',
9930                          p_error_text     => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
9931                         RAISE FND_API.G_EXC_ERROR;
9932                 END;
9933 
9934                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9935                     PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9936                                               p_msg_name       => l_msg_data);
9937                     x_msg_data := l_msg_data;
9938                     x_return_status := 'E';
9939                     x_msg_count := l_msg_count;
9940                     RAISE  FND_API.G_EXC_ERROR;
9941                 END IF;
9942 
9943             END IF; -- l_split_workplan = 'Y' THEN
9944 
9945             IF p_structure_type = 'WORKPLAN' THEN
9946                 BEGIN
9947                     --- getting plan id
9948                     l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
9949                               p_project_id => p_project_id,
9950                               p_plan_type_id => -1,
9951                               p_proj_str_ver_id => l_structure_version_id) ;
9952                     PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE(
9953                             p_plan_version_id => l_plan_version_id,
9954                             x_msg_code => l_msg_code,
9955                             x_return_status => x_return_status);
9956                 EXCEPTION
9957                     WHEN OTHERS THEN
9958                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
9959                         p_procedure_name => 'update_progress',
9960                         p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
9961                         RAISE FND_API.G_EXC_ERROR;
9962                 END;
9963                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9964                     PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
9965                                               p_msg_name       => l_msg_code);
9966                     x_return_status := 'E';
9967                     RAISE  FND_API.G_EXC_ERROR;
9968                 END IF;
9969 
9970 
9971                 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
9972 
9973                 IF (l_base_struct_ver_id = -1) THEN
9974                     l_base_struct_ver_id := l_structure_version_id; --maansari7/6 bug 3742356
9975                 END IF;
9976                 -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
9977                 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
9978                     p_calling_module    => p_calling_module
9979                     ,p_project_id           => p_project_id
9980                     ,p_structure_version_id => l_structure_version_id
9981                     ,p_baselined_str_ver_id => l_base_struct_ver_id
9982                     ,p_program_rollup_flag  => 'Y'
9983                     ,p_calling_context  => 'SUMMARIZE'
9984                     ,p_as_of_date       => p_as_of_date
9985                     ,x_return_status        => l_return_status
9986                     ,x_msg_count            => l_msg_count
9987                     ,x_msg_data             => l_msg_data
9988                     );
9989                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9990                     x_msg_data := l_msg_data;
9991                     x_return_status := 'E';
9992                     x_msg_count := l_msg_count;
9993                     RAISE  FND_API.G_EXC_ERROR;
9994                 END IF;
9995 
9996                 /*
9997                 BEGIN
9998                     PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
9999                         p_project_id        => p_project_id,
10000                         p_struct_ver_id     => l_structure_version_id,
10001                         p_base_struct_ver_id => l_base_struct_ver_id,
10002                         p_as_of_date    => p_as_of_date, -- Fix for Bug # 4251406.
10003                         x_return_status     => x_return_status,
10004                         x_msg_code          => l_msg_code
10005                         );
10006                 EXCEPTION
10007                     WHEN OTHERS THEN
10008                         fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10009                             p_procedure_name => 'update_progress',
10010                             p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
10011                         RAISE FND_API.G_EXC_ERROR;
10012                 END;
10013                 */
10014             END IF;-- p_structure_type = 'WORKPLAN' THEN
10015 
10016             PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
10017              p_init_msg_list                => 'F'
10018             ,p_commit                       => 'F'
10019             ,p_validate_only                => 'F'
10020             ,p_calling_module       => p_calling_module
10021             ,p_progress_mode                => p_progress_mode
10022             ,p_project_id                   => p_project_id
10023             ,P_OBJECT_TYPE                  => 'PA_TASKS'
10024             ,P_OBJECT_ID                    => l_task_id -- p_task_id 3603636
10025             ,p_object_version_id            => l_task_version_id
10026             ,p_as_of_date                   => p_as_of_date
10027             ,p_lowest_level_task            => nvl(l_lowest_level_task, 'N')
10028             ,p_process_whole_tree           => 'Y'
10029             ,p_structure_version_id         => l_structure_version_id
10030             ,p_rollup_entire_wbs             => p_rollup_entire_wbs_flag
10031             ,p_fin_rollup_method             => l_fin_rollup_method
10032             ,p_wp_rollup_method     => l_wp_rollup_method
10033             ,p_task_version_id      => l_task_version_id
10034             ,p_structure_type               => p_structure_type
10035             ,x_return_status                => l_return_status
10036             ,x_msg_count                    => l_msg_count
10037             ,x_msg_data                     => l_msg_data);
10038 
10039             IF g1_debug_mode  = 'Y' THEN
10040                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling ROLLUP_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
10041             END IF;
10042 
10043             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10044                 x_msg_data := l_msg_data;
10045                 x_return_status := 'E';
10046                 x_msg_count := l_msg_count;
10047                 RAISE  FND_API.G_EXC_ERROR;
10048             END IF;
10049 
10050             -----5466645
10051         IF p_progress_mode <> 'BACKDATED' AND p_object_type = 'PA_TASKS'
10052 	   AND p_structure_type = 'WORKPLAN'   --maansari fpm changes
10053 	THEN
10054           IF ( NVL( l_lowest_level_task, 'N' ) = 'Y' ) THEN
10055                    PA_TASK_PVT1.Update_Dates_To_All_Versions(
10056                        p_project_id           => p_project_id
10057                       ,p_element_version_id       => l_task_version_id
10058                       ,x_return_status               => l_return_status
10059                       ,x_msg_count                   => l_msg_count
10060                       ,x_msg_data                    => l_msg_data );
10061 		IF l_return_status <> FND_API.G_RET_STS_SUCCESS
10062 		THEN
10063 		PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
10064 			     p_msg_name       => l_msg_data);
10065 			x_msg_data := l_msg_data;
10066 			x_return_status := 'E';
10067 			RAISE  FND_API.G_EXC_ERROR;
10068 		END IF;
10069 
10070 		BEGIN
10071 			Select ppev1.proj_element_id
10072 			into l_structure_id
10073 			from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
10074 			where ppev2.element_version_id = l_task_version_id
10075 			and ppev2.project_id = ppev1.project_id
10076 			and ppev2.parent_structure_version_id = ppev1.element_version_id;
10077 		EXCEPTION WHEN OTHERS THEN
10078 			l_structure_id := -999;
10079 		END;
10080 
10081 		IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
10082 		AND
10083 		(PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id) = 'Y')    --Bug 3784405  Satish
10084 		AND
10085 		(PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id) = 'Y'))
10086 		THEN
10087 		--copy to transaction dates
10088 			PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
10089 			p_validate_only => FND_API.G_FALSE
10090 			,p_project_id => p_project_id
10091 			,x_return_status => x_return_status
10092 			,x_msg_count => x_msg_count
10093 			,x_msg_data => x_msg_data);
10094 		END IF;
10095            END IF;
10096 	END IF; ------ p_progress_mode <> backdated
10097             -----5466645
10098 
10099             IF p_progress_mode <> 'BACKDATED' THEN
10100                 IF p_structure_type = 'WORKPLAN' OR
10101                     (p_structure_type = 'FINANCIAL' AND p_as_of_date < NVL( l_last_progress_date, p_as_of_date ))
10102                 THEN
10103                     IF g1_debug_mode  = 'Y' THEN
10104                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
10105                     END IF;
10106                         IF p_object_type IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
10107                         l_calling_mode := null;
10108                     ELSE
10109                         l_calling_mode := 'FUTURE_ROLLUP';
10110                     END IF;
10111 
10112                     PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
10113                           p_project_id               => p_project_id
10114                          ,P_OBJECT_TYPE              => l_object_type
10115                          ,P_OBJECT_ID                => l_task_id -- p_task_id 3603636
10116                          ,p_object_version_id        => l_task_version_id
10117                          ,p_as_of_date               => p_as_of_date
10118                          ,p_lowest_level_task        => NVL( l_lowest_level_task, 'N' )
10119                          ,p_calling_module           => p_calling_module
10120                          ,p_calling_mode             => l_calling_mode -- Bug 4097710
10121                          ,p_structure_type           => p_structure_type
10122                          ,p_structure_version_id     => l_structure_version_id
10123                          ,p_fin_rollup_method        => l_fin_rollup_method
10124                          ,p_wp_rollup_method         => l_wp_rollup_method
10125                          ,x_return_status            => l_return_status
10126                          ,x_msg_count                => l_msg_count
10127                          ,x_msg_data                 => l_msg_data
10128                        );
10129 
10130                     IF g1_debug_mode  = 'Y' THEN
10131                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling ROLLUP_FUTURE_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
10132                     END IF;
10133                     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10134                         x_msg_data := l_msg_data;
10135                         x_return_status := 'E';
10136                         x_msg_count := l_msg_count;
10137                         RAISE  FND_API.G_EXC_ERROR;
10138                     END IF;
10139             END IF; -- IF p_progress_mode <> 'BACKDATED'
10140                 END IF; -- ( p_rollup_entire_wbs_flag = 'N' AND l_object_type = 'PA_TASKS' AND l_task_version_id IS NOT NULL)
10141      END IF; -- p_action='PUBLISH'
10142 
10143     -- Bug 4392189 : Uncommenting and chaning the code for program rollup
10144      -- Bug 3807299 Calling program_rollup_pvt always
10145       --Added by rtarway for BUG 3668168, l_structure_version_id IS NOT NULL
10146       --program roll up should not be called in case of null structure version id
10147        --Program Rollup is not supported in FPM
10148        --bug 4033869
10149        --Need not be called in backdate mode, as per saima's mail
10150 
10151          IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
10152             AND p_rollup_entire_wbs_flag = 'N'
10153             AND l_structure_version_id IS NOT NULL THEN
10154                     IF g1_debug_mode  = 'Y' THEN
10155                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
10156                     END IF;
10157                 pa_progress_pvt.program_rollup_pvt(
10158                          p_init_msg_list        => 'F'
10159                         ,p_commit               => 'F'
10160                         ,p_validate_only        => 'F'
10161                         ,p_project_id           => p_project_id
10162                         ,p_as_of_date           => p_as_of_date
10163                         ,p_structure_type       => p_structure_type
10164                         ,p_structure_ver_id     => l_structure_version_id
10165                         ,x_return_status        => l_return_status
10166                         ,x_msg_count            => l_msg_count
10167                         ,x_msg_data             => l_msg_data);
10168                     IF g1_debug_mode  = 'Y' THEN
10169                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS', x_Msg => 'After Calling program_rollup_pvt l_return_status='||l_return_status, x_Log_Level=> 3);
10170                     END IF;
10171          END IF;
10172 
10173 
10174          IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10175                 x_msg_data := l_msg_data;
10176                 x_return_status := 'E';
10177                 x_msg_count := l_msg_count;
10178                 RAISE  FND_API.G_EXC_ERROR;
10179          END IF;
10180 
10181 
10182      -- Bug 3807299 Calling new API update_link_proj_rollup_dates
10183       -- ADDed by rtarway for 3668168, l_structure_version_id IS NOT NULL and l_task_version_id IS NOT NULL
10184       -- Bug 3957792 : Removed the call of update_link_proj_rollup_dates. It is not implemnted as part of FPM
10185       --Uncommented as per Majid's Mail, BUG 4080922, rtarway
10186       --Need not be called in backdate mode, as per saima's mail
10187 
10188       IF p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
10189          --AND p_rollup_entire_wbs_flag = 'N' --4080922, rtarway, removed this check because it needs to be called from AMG for each task too
10190         AND p_object_type = 'PA_TASKS'
10191          AND l_structure_version_id IS NOT NULL
10192          AND l_task_version_id IS NOT NULL
10193      THEN
10194         pa_progress_pub.update_link_proj_rollup_dates(
10195              p_init_msg_list    => 'F'
10196             ,p_commit       => 'F'
10197             ,p_calling_module   => p_calling_module
10198             ,p_project_id       => p_project_id
10199             ,p_task_id      => l_task_id
10200             ,p_task_version_id  => l_task_version_id
10201             ,p_as_of_date           => p_as_of_date
10202             ,p_structure_version_id => l_structure_version_id
10203             ,x_return_status        => l_return_status
10204             ,x_msg_count            => l_msg_count
10205             ,x_msg_data             => l_msg_data
10206             );
10207       END IF;
10208 
10209           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10210                 x_msg_data := l_msg_data;
10211                 x_return_status := 'E';
10212                 x_msg_count := l_msg_count;
10213                 RAISE  FND_API.G_EXC_ERROR;
10214           END IF;
10215 
10216      END IF;
10217 
10218 
10219          IF (p_commit = FND_API.G_TRUE) THEN
10220                 COMMIT;
10221          END IF;
10222 EXCEPTION
10223     when FND_API.G_EXC_ERROR then
10224       if p_commit = FND_API.G_TRUE then
10225          rollback to UPDATE_PROGRESS;
10226       end if;
10227       x_return_status := FND_API.G_RET_STS_ERROR;
10228       x_msg_count := fnd_msg_pub.count_msg;
10229     when FND_API.G_EXC_UNEXPECTED_ERROR then
10230       if p_commit = FND_API.G_TRUE then
10231          rollback to UPDATE_PROGRESS;
10232       end if;
10233       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10234       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10235                               p_procedure_name => 'UPDATE_PROGRESS',
10236                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10237       x_msg_count := fnd_msg_pub.count_msg;
10238     when OTHERS then
10239       if p_commit = FND_API.G_TRUE then
10240          rollback to UPDATE_PROGRESS;
10241       end if;
10242       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10243       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10244                               p_procedure_name => 'UPDATE_PROGRESS',
10245                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10246       x_msg_count := fnd_msg_pub.count_msg;
10247       raise;
10248 END update_progress;
10249 
10250 -- Progress Management Changes. Bug # 3420093.
10251 
10252 PROCEDURE populate_pji_tab_for_plan(
10253   p_api_version                 IN      NUMBER          :=1.0
10254  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
10255  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
10256  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
10257  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10258  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
10259  ,p_debug_mode                  IN      VARCHAR2        :='N'
10260  ,p_max_msg_count               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10261  ,p_project_id                  IN      NUMBER
10262  ,p_project_element_id          IN      NUMBER   DEFAULT NULL --bug 4183307
10263  ,p_structure_version_id        IN      NUMBER   DEFAULT NULL
10264  ,p_baselined_str_ver_id        IN      NUMBER   DEFAULT NULL
10265  ,p_structure_type              IN      VARCHAR2        := 'WORKPLAN' -- Bug 3627315
10266  ,p_populate_tmp_tab_flag       IN      VARCHAR2        := 'Y'   --bug 4290593
10267  ,p_program_rollup_flag     IN      VARCHAR2        := 'Y'   --bug 4392189
10268  ,p_calling_context     IN      VARCHAR2        := 'ROLLUP'  -- bug 4392189 , Possible values are ROLLUP and SUMMARIZE
10269  ,p_as_of_date          IN      DATE        := null  -- bug 4392189
10270  ,x_return_status       OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10271  ,x_msg_count           OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
10272  ,x_msg_data            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10273 ) AS
10274    l_api_name           CONSTANT   VARCHAR2(30)    := 'populate_pji_tab_for_plan';
10275    l_api_version        CONSTANT   NUMBER          := p_api_version;
10276    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
10277    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
10278    l_return_status                 VARCHAR2(1);
10279    l_msg_count                     NUMBER;
10280    l_msg_data                      VARCHAR2(250);
10281    l_baselined_str_ver_id          NUMBER; -- FPM Dev CR 7
10282    l_plan_version_id               NUMBER; -- Bug 3627315
10283    l_structure_version_id          NUMBER; -- Bug 3627315
10284 BEGIN
10285 
10286         IF g1_debug_mode  = 'Y' THEN
10287                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN');
10288         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
10289         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10290         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_project_element_id='||p_project_element_id, x_Log_Level=> 3);
10291         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
10292         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_baselined_str_ver_id='||p_baselined_str_ver_id, x_Log_Level=> 3);
10293         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
10294         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_populate_tmp_tab_flag='||p_populate_tmp_tab_flag, x_Log_Level=> 3);
10295         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_program_rollup_flag='||p_program_rollup_flag, x_Log_Level=> 3);
10296         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'p_calling_context='||p_calling_context, x_Log_Level=> 3);
10297         END IF;
10298 
10299         IF (p_commit = FND_API.G_TRUE) THEN
10300                 savepoint plan_qtys;
10301         END IF;
10302 
10303         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10304                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10305         END IF;
10306 
10307         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10308                 FND_MSG_PUB.initialize;
10309         END IF;
10310 
10311         x_return_status := FND_API.G_RET_STS_SUCCESS;
10312 
10313         --bug 4290593
10314         IF p_populate_tmp_tab_flag = 'N' AND PA_PROJ_STRUCTURE_UTILS.CHECK_PJI_TEMP_TAB_POPULATED(p_project_id) = 'Y'
10315         THEN
10316            return;
10317         END IF;
10318         --end bug 4290593
10319 
10320         -- FPM Dev CR 7 : Passing null if baseline structure version id is -1
10321         IF p_baselined_str_ver_id = -1 THEN
10322                 l_baselined_str_ver_id := null;
10323         ELSE
10324                 l_baselined_str_ver_id := p_baselined_str_ver_id;
10325         END IF;
10326         -- Bug 3627315 : Added coce to get baseline plan version id and structure version id
10327         IF p_structure_type = 'FINANCIAL' THEN
10328 
10329         /* Begin Fix for Bug # 4115607. */
10330 
10331                 -- l_plan_version_id := PA_FIN_PLAN_UTILS.Get_app_budget_cost_cb_ver(p_project_id);
10332 
10333         l_plan_version_id := pa_progress_utils.get_app_cost_budget_cb_wor_ver(p_project_id);
10334 
10335         /* End fix for Bug # 4115607. */
10336 
10337                 l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_FIN_STRUC_VER_ID(p_project_id);
10338         END IF;
10339 
10340         BEGIN
10341                 -- Bug 3627315 : Added code to conditionally call PJI API with diff parameters
10342                 IF p_structure_type = 'WORKPLAN' THEN
10343                   PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
10344                     p_project_id        => p_project_id,
10345                     p_struct_ver_id     => p_structure_version_id,
10346                     p_base_struct_ver_id    => l_baselined_str_ver_id,
10347                     p_project_element_id    => p_project_element_id, ----bug 4183307
10348             p_program_rollup_flag   => p_program_rollup_flag, -- bug 4392189
10349             p_calling_context       => p_calling_context, -- bug 4392189
10350             p_as_of_date        => p_as_of_date, -- bug 4392189
10351                     x_return_status     => l_return_status,
10352                     x_msg_code          => l_msg_data
10353                     );
10354                 ELSE --FINANCIAL
10355 
10356           IF (l_plan_version_id is not null) THEN  -- Added to fix Bug # 3813130.
10357 
10358                     PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(
10359                             p_project_id        => p_project_id,
10360                             p_struct_ver_id     => l_structure_version_id,
10361                             p_workplan_flag     => 'N',                    --This will populate financial data in pji tmp1 table.
10362                             p_plan_version_id   => l_plan_version_id,
10363                             x_return_status     => l_return_status,
10364                             x_msg_code          => l_msg_data
10365                             );
10366 
10367          end if; -- Added to fix Bug # 3813130.
10368 
10369                 END IF;
10370         EXCEPTION
10371            WHEN OTHERS THEN
10372                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10373                             p_procedure_name => 'POPULATE_PJI_TAB_FOR_PLAN',
10374                             p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data Failed. SQLERRM='||SQLERRM,1,120));
10375                 RAISE FND_API.G_EXC_ERROR;
10376         END;
10377 
10378      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10379                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
10380                                      p_msg_name       => l_msg_data);
10381                 x_msg_data := l_msg_data;
10382                 x_return_status := 'E';
10383                 x_msg_count := l_msg_count;
10384                 RAISE  FND_API.G_EXC_ERROR;
10385           END IF;
10386 
10387 
10388 EXCEPTION
10389     when FND_API.G_EXC_ERROR then
10390       if p_commit = FND_API.G_TRUE then
10391          rollback to plan_qtys;
10392       end if;
10393       x_return_status := FND_API.G_RET_STS_ERROR;
10394     when FND_API.G_EXC_UNEXPECTED_ERROR then
10395       if p_commit = FND_API.G_TRUE then
10396          rollback to plan_qtys;
10397       end if;
10398       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10399       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10400                               p_procedure_name => 'populate_pji_tab_for_plan',
10401                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10402     when OTHERS then
10403       if p_commit = FND_API.G_TRUE then
10404          rollback to plan_qtys;
10405       end if;
10406       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10407       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10408                               p_procedure_name => 'populate_pji_tab_for_plan',
10409                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10410       raise;
10411 END populate_pji_tab_for_plan;
10412 
10413 -- This API takes Actual and ETC incrmental amounts to update in PJI data model
10414 
10415 PROCEDURE push_workplan_actuals(
10416   p_api_version                 IN      NUMBER          :=1.0
10417  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
10418  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
10419  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
10420  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10421  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
10422  ,p_debug_mode                  IN      VARCHAR2        :='N'
10423  ,p_max_msg_count               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10424  ,p_project_Id                          NUMBER
10425  ,p_structure_version_id                NUMBER
10426  ,p_proj_element_id                     NUMBER
10427  ,p_object_id                           NUMBER
10428  ,p_object_type                         VARCHAR2
10429  ,p_as_of_date                          DATE
10430  ,p_resource_assignment_id      NUMBER      :=null -- Bug 4186007
10431  ,p_resource_list_member_id     NUMBER      :=null-- Bug 4186007
10432  ,p_rbs_element_id                      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10433  ,p_rate_based_flag                     VARCHAR2        := 'Y' -- Default for Task
10434  ,p_resource_class_code                 VARCHAR2        :='PEOPLE' -- Default for Task
10435 -- ,p_TXN_CURRENCY_CODE                 VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR Bug 3595585 Removed not needed
10436  ,p_act_TXN_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10437  ,p_act_PRJ_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10438  ,p_act_POU_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10439  ,p_act_effort_this_period              NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10440  ,p_etc_TXN_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10441  ,p_etc_PRJ_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10442  ,p_etc_POU_COST_this_period            NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10443  ,p_etc_effort_this_period              NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM-- Bug 3595585
10444  ,p_call_pji_apis_flag                  VARCHAR2        := 'Y'
10445  ,p_act_TXN_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10446  ,p_act_PRJ_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10447  ,p_act_POU_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10448  ,p_etc_TXN_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10449  ,p_etc_PRJ_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10450  ,p_etc_POU_raw_COST_this_period        NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM -- Bug 3621404
10451  -- BUG # 3659659.
10452  ,p_txn_currency_code                   VARCHAR2        := null
10453  ,p_prj_currency_code                   VARCHAR2        := null
10454  ,p_pfn_currency_code                   VARCHAR2        := null
10455  -- BUG # 3659659.
10456 --bug3675107
10457  ,p_pa_period_name                      VARCHAR2    :=null
10458  ,p_gl_period_name                      VARCHAR2    :=null
10459 --bug3675107
10460  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10461  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
10462  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10463  ,p_cbs_element_id   NUMBER := null -- Added for CBS phase 2 16200605
10464 ) IS
10465 -- Bug 3621404 : Added parameters for raw cost fields. Existing fields will work as burdened cost
10466    l_api_name           CONSTANT   VARCHAR2(30)    := 'push_workplan_actuals';
10467    l_api_version        CONSTANT   NUMBER          := p_api_version;
10468    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
10469    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
10470    l_return_status                 VARCHAR2(1);
10471    l_msg_count                     NUMBER;
10472    l_msg_data                      VARCHAR2(250);
10473 
10474 
10475    CURSOR cur_rollup(c_period_type VARCHAR2)
10476    IS
10477      SELECT decode(c_period_type, 'P', PROG_PA_PERIOD_NAME, 'G', PROG_GL_PERIOD_NAME, null )
10478       FROM pa_progress_rollup
10479       WHERE project_id = p_project_id
10480         AND object_id = p_object_id
10481         AND proj_element_id = p_proj_element_id
10482         AND as_of_date = p_as_of_date
10483         AND structure_type = 'WORKPLAN'
10484 		AND NVL(cbs_element_id,-1) = NVL(p_cbs_element_id,-1) --Added for CBS phase 2 16200605
10485       ;
10486 
10487    l_period_name                VARCHAR2(150);
10488    l_period_TYPE                VARCHAR2(1);
10489    l_RBS_VERSION_ID             NUMBER;
10490    l_structure_version_id       NUMBER;
10491    l_RBS_ELEMENT_ID             NUMBER;
10492    l_TXN_BRDN_COST              NUMBER;
10493    l_PRJ_BRDN_COST              NUMBER;
10494    l_PFC_BRDN_COST              NUMBER;
10495    l_etc_quantity               NUMBER; -- Bug 3595585
10496    l_org_id                     NUMBER; -- Bug 3595585
10497    l_rate_based_flag            VARCHAR2(1); -- Bug 3595585
10498    l_ETC_TXN_BURDENED_COST      NUMBER; -- Bug 3595585
10499    l_ETC_PRJ_BURDENED_COST      NUMBER; -- Bug 3595585
10500    l_ETC_PFC_BURDENED_COST      NUMBER; -- Bug 3595585
10501    l_resource_class_code        pa_resource_assignments.resource_class_code%TYPE; -- Bug 3595585
10502    l_PLAN_TYPE_ID               NUMBER; -- Bug 3595585
10503    l_PLAN_VERSION_ID            NUMBER; -- Bug 3595585
10504    L_BASE_STRUCT_VER_ID         NUMBER; -- Bug 3595585
10505    l_msg_code                   VARCHAR2(32);
10506    -- Bug 3621404 : Raw Cost Changes
10507    l_etc_TXN_raw_COST_this_period       NUMBER;
10508    l_etc_PRJ_raw_COST_this_period       NUMBER;
10509    l_etc_POU_raw_COST_this_period       NUMBER;
10510 
10511    -- BUG # 3659659.
10512 
10513    l_txn_currency_code                   VARCHAR2(15)        := null;
10514    l_prj_currency_code                   VARCHAR2(15)        := null;
10515    l_pfn_currency_code                   VARCHAR2(15)        := null;
10516 
10517    cursor proj_all(p_project_id NUMBER) is
10518    select project_currency_code, projfunc_currency_code
10519    from pa_projects_all
10520    where project_id = p_project_id;
10521 
10522    -- BUG # 3659659.
10523 
10524     cursor cur_org_id(p_project_id NUMBER) is
10525     select org_id
10526     from pa_projects
10527     where project_id = p_project_Id;
10528 
10529 --bug3675107
10530  l_pa_period_name                      VARCHAR2(30)    :=null;
10531  l_gl_period_name                      VARCHAR2(30)    :=null;
10532 --bug3675107
10533 l_track_wp_cost_flag  VARCHAR2(1) := 'Y'; -- Bug 3801745
10534 
10535 -- Bug 4186007 Begin
10536 l_structure_sharing_code        VARCHAR2(30);
10537 l_sharing_Enabled VARCHAR2(1);
10538 l_split_workplan VARCHAR2(1);
10539 -- Bug 4186007 End
10540 
10541 BEGIN
10542 
10543         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10544         IF g1_debug_mode  = 'Y' THEN
10545                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.push_workplan_actuals');
10546         END IF;
10547 
10548         IF (p_debug_mode = 'Y') THEN
10549                 IF g1_debug_mode  = 'Y' THEN
10550                         pa_debug.debug('PA_PROGRESS_PUB.push_workplan_actuals');
10551                 END IF;
10552         END IF;
10553 
10554         IF (p_commit = FND_API.G_TRUE) THEN
10555                 savepoint push_actuals;
10556         END IF;
10557 
10558         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10559                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10560         END IF;
10561 
10562         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10563                 FND_MSG_PUB.initialize;
10564         END IF;
10565 
10566         x_return_status := FND_API.G_RET_STS_SUCCESS;
10567         l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --Bug 3801745
10568 
10569         IF NVL(p_structure_version_id,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM)  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM  --bug 3625085
10570         THEN
10571            l_structure_version_id := PA_PROJECT_STRUCTURE_UTILS.GET_LATEST_WP_VERSION(p_project_id);
10572         ELSE
10573            l_structure_version_id := p_structure_version_id;
10574         END IF;
10575 
10576         IF p_RBS_ELEMENT_ID  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10577         THEN
10578            l_RBS_ELEMENT_ID := null;
10579         ELSE
10580            l_RBS_ELEMENT_ID := p_RBS_ELEMENT_ID;
10581         END IF;
10582 
10583        -- Bug 3595585 : Added following checks
10584 
10585 
10586         IF p_etc_effort_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10587         THEN
10588            l_ETC_QUANTITY := null;
10589         ELSE
10590            l_ETC_QUANTITY := p_etc_effort_this_period;
10591         END IF;
10592 
10593         IF p_etc_TXN_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10594         THEN
10595            l_ETC_TXN_BURDENED_COST := null;
10596         ELSE
10597            l_ETC_TXN_BURDENED_COST := p_etc_TXN_COST_this_period;
10598         END IF;
10599 
10600         IF p_etc_PRJ_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10601         THEN
10602            l_ETC_PRJ_BURDENED_COST := null;
10603         ELSE
10604            l_ETC_PRJ_BURDENED_COST := p_etc_PRJ_COST_this_period;
10605         END IF;
10606 
10607         IF p_etc_POU_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10608         THEN
10609            l_ETC_PFC_BURDENED_COST := null;
10610         ELSE
10611            l_ETC_PFC_BURDENED_COST := p_etc_POU_COST_this_period;
10612         END IF;
10613 
10614         IF p_resource_class_code  IS NULL
10615         THEN
10616            l_resource_class_code := 'PEOPLE';
10617         ELSE
10618            l_resource_class_code := p_resource_class_code;
10619         END IF;
10620 
10621         IF p_rate_based_flag  IS NULL
10622         THEN
10623            l_rate_based_flag := 'Y';
10624         ELSE
10625            l_rate_based_flag := p_rate_based_flag;
10626         END IF;
10627         -- Bug 3621404 : Raw Cost Changes
10628 
10629 
10630         IF p_etc_TXN_raw_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10631         THEN
10632            l_etc_TXN_raw_COST_this_period := null;
10633         ELSE
10634            l_etc_TXN_raw_COST_this_period := p_etc_TXN_raw_COST_this_period;
10635         END IF;
10636 
10637         IF p_etc_PRJ_raw_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10638         THEN
10639            l_etc_PRJ_raw_COST_this_period := null;
10640         ELSE
10641            l_etc_PRJ_raw_COST_this_period := p_etc_PRJ_raw_COST_this_period;
10642         END IF;
10643 
10644         IF p_etc_POU_raw_COST_this_period  = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10645         THEN
10646            l_etc_POU_raw_COST_this_period := null;
10647         ELSE
10648            l_etc_POU_raw_COST_this_period := p_etc_POU_raw_COST_this_period;
10649         END IF;
10650 
10651         BEGIN
10652                 open cur_org_id(p_project_id);
10653                 fetch cur_org_id into l_org_id;
10654                 close cur_org_id;
10655         END;
10656 
10657         BEGIN
10658           l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase( l_structure_version_id ); -- Bug 3608422 : passing l_ instead of p_
10659         EXCEPTION
10660            WHEN OTHERS THEN
10661                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10662                             p_procedure_name => 'push_workplan_actuals',
10663                             p_error_text     => SUBSTRB('PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase:'||SQLERRM,1,120));
10664                 RAISE FND_API.G_EXC_ERROR;
10665         END;
10666 
10667 
10668         IF l_period_type = 'P' AND p_pa_period_name IS NOT NULL
10669         THEN
10670             l_PERIOD_NAME := p_pa_period_name;
10671         ELSIF l_period_type = 'P' AND p_pa_period_name IS NULL
10672         THEN
10673             l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
10674         END IF;
10675 
10676         IF l_period_type = 'G' AND p_gl_period_name IS NOT NULL
10677         THEN
10678            l_PERIOD_NAME := p_gl_period_name;
10679         ELSIF l_period_type = 'G' AND p_gl_period_name IS NULL
10680         THEN
10681            l_PERIOD_NAME := PA_PROGRESS_UTILS.Prog_Get_gl_Period_Name(p_as_of_date);
10682         END IF;
10683 
10684 --bug 3675107
10685 
10686         BEGIN
10687                 l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
10688         EXCEPTION
10689                 WHEN OTHERS THEN
10690                 fnd_msg_pub.add_exc_msg(p_pkg_name      => 'PA_PROGRESS_PUB',
10691                                     p_procedure_name    => 'PUSH_WORKPLAN_ACTUALS',
10692                                     p_error_text     => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id:'||SQLERRM,1,120));
10693                 RAISE FND_API.G_EXC_ERROR;
10694         END;
10695 
10696         BEGIN
10697                 l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
10698                                                       p_project_id => p_project_id,
10699                                                       p_plan_type_id => -1,
10700                                                       p_proj_str_ver_id => l_structure_version_id) ;
10701         EXCEPTION
10702                 WHEN OTHERS THEN
10703                 fnd_msg_pub.add_exc_msg(p_pkg_name      => 'PA_PROGRESS_PUB',
10704                                     p_procedure_name    => 'PUSH_WORKPLAN_ACTUALS',
10705                                     p_error_text     => SUBSTRB('Call Pa_Fp_wp_gen_amt_utils.get_wp_version_id:'||SQLERRM,1,120));
10706                 RAISE FND_API.G_EXC_ERROR;
10707         END;
10708 
10709         BEGIN
10710 
10711                 --  BUG # 3659659. Obtain proper values of currency codes if they are null.
10712 
10713                 if (p_prj_currency_code is null or p_pfn_currency_code is null) then
10714                         open proj_all(p_project_id);
10715                         fetch proj_all INTO l_prj_currency_code, l_pfn_currency_code;
10716                         close proj_all;
10717                 end if;
10718 
10719                 if (p_prj_currency_code is not null) then
10720                         l_prj_currency_code := p_prj_currency_code;
10721                 end if;
10722 
10723                 if (p_pfn_currency_code is not null) then
10724                         l_pfn_currency_code := p_pfn_currency_code;
10725                 end if;
10726 
10727                 if (p_txn_currency_code is null) then
10728                         l_txn_currency_code := l_prj_currency_code;
10729                 else
10730                         l_txn_currency_code := p_txn_currency_code;
10731                 end if;
10732 
10733         -- Bug 3801745 : Commneted below code, not required now
10734         --IF l_rate_based_flag = 'N' THEN -- Bug 3836485
10735         --  l_act_quantity := null;
10736         --  l_ETC_QUANTITY := null;
10737         --END IF;
10738 
10739         IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
10740             l_TXN_BRDN_COST := null;
10741             l_PRJ_BRDN_COST := null;
10742             l_PFC_BRDN_COST := null;
10743             l_ETC_TXN_BURDENED_COST := null;
10744             l_ETC_PRJ_BURDENED_COST := null;
10745             l_ETC_PFC_BURDENED_COST := null;
10746             l_etc_TXN_raw_COST_this_period := null;
10747             l_etc_PRJ_raw_COST_this_period := null;
10748             l_etc_POU_raw_COST_this_period := null;
10749         END IF;
10750 
10751 
10752 
10753         IF g1_debug_mode  = 'Y' THEN
10754             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Log_Level=> 3);
10755             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_PROJECT_ID='||p_PROJECT_ID, x_Log_Level=> 3);
10756             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_org_id='||l_org_id, x_Log_Level=> 3);
10757             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_PROJ_ELEMENT_ID='||p_PROJ_ELEMENT_ID, x_Log_Level=> 3);
10758             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_structure_version_id='||l_structure_version_id, x_Log_Level=> 3);
10759             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PERIOD_NAME='||l_PERIOD_NAME, x_Log_Level=> 3);
10760             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_period_TYPE='||l_period_TYPE, x_Log_Level=> 3);
10761             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
10762             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_RBS_ELEMENT_ID='||l_RBS_ELEMENT_ID, x_Log_Level=> 3);
10763             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_plan_version_id='||l_plan_version_id, x_Log_Level=> 3);
10764             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_plan_type_id='||l_plan_type_id, x_Log_Level=> 3);
10765             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_txn_currency_code='||l_txn_currency_code, x_Log_Level=> 3);
10766             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_prj_currency_code='||l_prj_currency_code, x_Log_Level=> 3);
10767             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_pfn_currency_code='||l_pfn_currency_code, x_Log_Level=> 3);
10768             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_resource_class_code='||l_resource_class_code, x_Log_Level=> 3);
10769             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_rate_based_flag='||l_rate_based_flag, x_Log_Level=> 3);
10770             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_TXN_BRDN_COST='||l_TXN_BRDN_COST, x_Log_Level=> 3);
10771             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PRJ_BRDN_COST='||l_PRJ_BRDN_COST, x_Log_Level=> 3);
10772             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_PFC_BRDN_COST='||l_PFC_BRDN_COST, x_Log_Level=> 3);
10773             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_QUANTITY='||l_ETC_QUANTITY, x_Log_Level=> 3);
10774             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_TXN_BURDENED_COST='||l_ETC_TXN_BURDENED_COST, x_Log_Level=> 3);
10775             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_PRJ_BURDENED_COST='||l_ETC_PRJ_BURDENED_COST, x_Log_Level=> 3);
10776             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_ETC_PFC_BURDENED_COST='||l_ETC_PFC_BURDENED_COST, x_Log_Level=> 3);
10777             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_TXN_raw_COST_this_period='||l_etc_TXN_raw_COST_this_period, x_Log_Level=> 3);
10778             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_raw_COST_this_period, x_Log_Level=> 3);
10779             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUSH_WORKPLAN_ACTUALS', x_Msg => 'l_etc_POU_raw_COST_this_period='||l_etc_POU_raw_COST_this_period, x_Log_Level=> 3);
10780         END IF;
10781 
10782 
10783 	 -- Bug 15928585
10784          -- Commenting this insert since after this PJI API is not called.
10785  	 -- This data is staying in the table and is getting used in the next user update to plan
10786  	 -- amounts and causing data corruption.
10787          /*       INSERT INTO PJI_FM_EXTR_PLAN_LINES (
10788                          PROJECT_ID
10789                         ,PROJECT_ORG_ID
10790                         ,PROJECT_ELEMENT_ID
10791                         ,STRUCT_VER_ID
10792                         ,PERIOD_NAME
10793                         ,CALENDAR_TYPE
10794                         ,START_DATE
10795                         ,END_DATE
10796                         ,RBS_ELEMENT_ID
10797                         ,RBS_VERSION_ID
10798                         ,PLAN_VERSION_ID
10799                         ,PLAN_TYPE_ID
10800                         ,WP_VERSION_FLAG
10801                         ,ROLLUP_TYPE
10802                         ,TXN_CURRENCY_CODE
10803                         ,TXN_RAW_COST
10804                         ,TXN_BURDENED_COST
10805                         ,TXN_REVENUE
10806                         ,PRJ_CURRENCY_CODE
10807                         ,PRJ_RAW_COST
10808                         ,PRJ_BURDENED_COST
10809                         ,PRJ_REVENUE
10810                         ,PFC_CURRENCY_CODE
10811                         ,PFC_RAW_COST
10812                         ,PFC_BURDENED_COST
10813                         ,PFC_REVENUE
10814                         ,QUANTITY
10815                         ,RESOURCE_CLASS_CODE
10816                         ,RATE_BASED_FLAG
10817                         ,ETC_QUANTITY
10818                         ,ETC_TXN_BURDENED_COST
10819                         ,ETC_PRJ_BURDENED_COST
10820                         ,ETC_PFC_BURDENED_COST
10821                         ,ETC_TXN_RAW_COST
10822                         ,ETC_PRJ_RAW_COST
10823                         ,ETC_PFC_RAW_COST
10824 						,CBS_ELEMENT_ID -- Added for CBS PHASE 2 16200605
10825                 )
10826                 values(
10827                          p_PROJECT_ID
10828                         ,l_org_id
10829                         ,p_PROJ_ELEMENT_ID
10830                         ,l_structure_version_id
10831                         ,l_PERIOD_NAME
10832                         ,l_period_TYPE
10833                         ,null
10834                         ,p_as_of_date
10835                         ,l_RBS_ELEMENT_ID
10836                         ,null
10837                         ,l_plan_version_id
10838                         ,l_plan_type_id
10839                         ,'Y'
10840                         ,'W'
10841                         ,l_txn_currency_code
10842                         ,null
10843                         ,null
10844                         ,null
10845                         ,l_prj_currency_code
10846                         ,null
10847                         ,null
10848                         ,null
10849                         ,l_pfn_currency_code
10850                         ,null
10851                         ,null
10852                         ,null
10853                         ,null
10854                         ,l_resource_class_code
10855                         ,l_rate_based_flag
10856                         ,l_ETC_QUANTITY
10857                         ,l_ETC_TXN_BURDENED_COST
10858                         ,l_ETC_PRJ_BURDENED_COST
10859                         ,l_ETC_PFC_BURDENED_COST
10860                         ,l_etc_TXN_raw_COST_this_period
10861                         ,l_etc_PRJ_raw_COST_this_period
10862                         ,l_etc_POU_raw_COST_this_period
10863 						,P_CBS_ELEMENT_ID -- Added for CBS PHASE 2 16200605
10864                 );*/
10865  	          -- End Bug 15928585
10866         EXCEPTION
10867            WHEN OTHERS THEN
10868                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10869                             p_procedure_name => 'push_workplan_actuals',
10870                             p_error_text     => SUBSTRB('INSERT INTO PJI_FM_EXTR_PLAN_LINES:'||SQLERRM,1,120));
10871                 RAISE FND_API.G_EXC_ERROR;
10872         END;
10873 
10874     -- Bug 4186007 Begin
10875     -- Now we will not use POPULATE_PRG_ACT_TBL_SINGLE to poulate the PA_PROG_ACT_BY_PERIOD_TEMP
10876     -- it was populating the cumulative amount.
10877     -- Now we will populate the incrmental amount and will call API MAINTAIN_ACTUAL_AMT_WRP
10878     -- with p_extraction_type as INCRMENTAL
10879         l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id); -- Bug 3586648
10880         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
10881         IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL'))  THEN
10882                 l_split_workplan := 'Y';
10883         ELSE
10884                 l_split_workplan := 'N';
10885         END IF;
10886 
10887     IF NVL(l_split_workplan, 'N') = 'Y'  AND p_resource_assignment_id IS NOT NULL THEN
10888                        --delete from PA_PROG_ACT_BY_PERIOD_TEMP;
10889                -- 3994165 : Deletion is now moved to the wrapper Bulk API.
10890 
10891             INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
10892                   project_id
10893                 , structure_version_id
10894                 , task_id
10895                 , resource_assignment_id
10896                 , as_of_date
10897                 , actual_cost
10898                 , actual_effort
10899                 , period_name
10900                 , txn_currency_code
10901                 , actual_cost_pc
10902                 , actual_cost_fc
10903                 , actual_rawcost
10904                 , actual_rawcost_pc
10905                 , actual_rawcost_fc
10906                 , hidden_res_assgn_id
10907                 , resource_list_member_id
10908                 , current_flag
10909                 , object_type
10910                 , percent_complete_id
10911                 , attribute1
10912                 , attribute2
10913                 , attribute3
10914                 , attribute4
10915                 , attribute5
10916                 , attribute6
10917                 , start_date -- 4310021
10918                 , finish_date -- 4310021
10919                 )
10920             VALUES (
10921                   p_PROJECT_ID
10922                         , l_structure_version_id
10923                         , p_PROJ_ELEMENT_ID
10924                         , p_resource_assignment_id
10925                         , p_as_of_date
10926                         , p_act_TXN_COST_this_period
10927                         , p_act_effort_this_period
10928                 , l_PERIOD_NAME
10929                         , l_txn_currency_code
10930                         , p_act_PRJ_COST_this_period
10931                         , p_act_POU_COST_this_period
10932                         , p_act_TXN_raw_COST_this_period
10933                         , p_act_PRJ_raw_COST_this_period
10934                         , p_act_POU_raw_COST_this_period
10935                         , to_number(null)
10936                         , p_resource_list_member_id
10937                 , to_char(null)
10938                 , p_object_type
10939                 , to_number(null)
10940                 , to_char(null)
10941                 , to_char(null)
10942                 , to_char(null)
10943                 , to_number(null)
10944                 , to_number(null)
10945                 , to_number(null)
10946                 , p_as_of_date -- 4310021
10947                 , p_as_of_date -- 4310021
10948                 );
10949 
10950     END IF; -- NVL(l_split_workplan, 'N') = 'Y'
10951     -- Bug 4186007 End
10952 
10953 
10954         -- Call PJI API's if p_call_pji_apis_flag is set.
10955 
10956        --  NO NEED TO CALL PLAN_UPDATE HERE. IT IS CALLED IN UPDATE_PROGRESS ONLY
10957 
10958 
10959         IF x_return_status <> 'S' THEN
10960                 RAISE FND_API.G_EXC_ERROR;
10961         END IF;
10962 
10963 EXCEPTION
10964     when FND_API.G_EXC_ERROR then
10965       if p_commit = FND_API.G_TRUE then
10966          rollback to push_actuals;
10967       end if;
10968       x_return_status := FND_API.G_RET_STS_ERROR;
10969     when FND_API.G_EXC_UNEXPECTED_ERROR then
10970       if p_commit = FND_API.G_TRUE then
10971          rollback to push_actuals;
10972       end if;
10973       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10974       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10975                               p_procedure_name => 'push_workplan_actuals',
10976                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10977     when OTHERS then
10978       if p_commit = FND_API.G_TRUE then
10979          rollback to push_actuals;
10980       end if;
10981       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10982       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
10983                               p_procedure_name => 'push_workplan_actuals',
10984                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10985       raise;
10986 END push_workplan_actuals;
10987 
10988 -- Progress Management Change for bug # 3420093.
10989 
10990 PROCEDURE program_rollup_pvt(
10991   p_api_version                 IN      NUMBER          :=1.0
10992  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
10993  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
10994  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
10995  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10996  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
10997  ,p_debug_mode                  IN      VARCHAR2        :='N'
10998  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10999  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11000  ,p_as_of_date                  IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
11001  ,p_structure_type              IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
11002  ,p_structure_ver_id            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11003  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11004  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
11005  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11006 )
11007 IS
11008    l_api_name           CONSTANT   VARCHAR2(30)    := 'PROGRAM_ROLLUP_PVT';
11009    l_api_version        CONSTANT   NUMBER          := p_api_version;
11010    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
11011    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
11012    l_return_status                 VARCHAR2(1);
11013    l_msg_count                     NUMBER;
11014    l_msg_data                      VARCHAR2(250);
11015    g1_debug_mode                    VARCHAR2(1);
11016 
11017 BEGIN
11018 
11019 --Open Question:
11020 --1. The parent Project progress record should go to the parent project cycle date.
11021 --As of now it is going with just passed as of date.
11022 --2.
11023         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11024 
11025         IF g1_debug_mode  = 'Y' THEN
11026                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
11027         END IF;
11028 
11029         IF g1_debug_mode  = 'Y' THEN
11030                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
11031                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
11032                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_ver_id='||p_structure_ver_id, x_Log_Level=> 3);
11033                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
11034                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
11035         END IF;
11036 
11037     IF g1_debug_mode  = 'Y' THEN
11038                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PROGRAM_ROLLUP_PVT');
11039         END IF;
11040 
11041         IF (p_commit = FND_API.G_TRUE) THEN
11042                 savepoint PROGRAM_ROLLUP_PVT;
11043         END IF;
11044 
11045         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
11046                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11047         END IF;
11048 
11049         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11050                 FND_MSG_PUB.initialize;
11051         END IF;
11052 
11053         x_return_status := FND_API.G_RET_STS_SUCCESS;
11054 
11055         -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
11056 
11057     PA_PROGRESS_PVT.program_rollup_pvt(
11058     p_api_version        => p_api_version
11059     ,p_init_msg_list     => p_init_msg_list
11060     ,p_commit        => p_commit
11061     ,p_validate_only     => p_validate_only
11062     ,p_validation_level  => p_validation_level
11063     ,p_calling_module    => p_calling_module
11064     ,p_debug_mode        => p_debug_mode
11065     ,p_max_msg_count     => p_max_msg_count
11066     ,p_project_id        => p_project_id
11067     ,p_as_of_date        => p_as_of_date
11068     ,p_structure_type    => p_structure_type
11069     ,p_structure_ver_id  => p_structure_ver_id
11070     ,x_return_status     => l_return_status
11071     ,x_msg_count         => l_msg_count
11072     ,x_msg_data      => l_msg_data);
11073 
11074         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11075                 x_msg_data := l_msg_data;
11076                 x_return_status := 'E';
11077                 x_msg_count := l_msg_count;
11078                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
11079         END IF;
11080 
11081         IF (p_commit = FND_API.G_TRUE) THEN
11082                 COMMIT;
11083         END IF;
11084 
11085 EXCEPTION
11086     when FND_API.G_EXC_ERROR then
11087       if p_commit = FND_API.G_TRUE then
11088          rollback to PROGRAM_ROLLUP_PVT;
11089       end if;
11090       x_return_status := FND_API.G_RET_STS_ERROR;
11091     when FND_API.G_EXC_UNEXPECTED_ERROR then
11092       if p_commit = FND_API.G_TRUE then
11093          rollback to PROGRAM_ROLLUP_PVT;
11094       end if;
11095       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11096       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
11097                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
11098                               p_error_text     => SUBSTRB(SQLERRM,1,120));
11099     when OTHERS then
11100       if p_commit = FND_API.G_TRUE then
11101          rollback to PROGRAM_ROLLUP_PVT;
11102       end if;
11103       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11104       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
11105                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
11106                               p_error_text     => SUBSTRB(SQLERRM,1,120));
11107       raise;
11108 END program_rollup_pvt;
11109 
11110 PROCEDURE transfer_wp_percent_to_fin(
11111   p_api_version                 IN      NUMBER          :=1.0
11112  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
11113  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
11114  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
11115  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
11116  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
11117  ,p_debug_mode                  IN      VARCHAR2        :='N'
11118  ,p_max_msg_count               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11119  ,p_project_id                  IN      NUMBER
11120  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11121  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
11122  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11123 )
11124 IS
11125    l_api_name           CONSTANT   VARCHAR2(30)    := 'TRANSFER_WP_PERCENT_TO_FIN';
11126    l_api_version        CONSTANT   NUMBER          := p_api_version;
11127    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
11128    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
11129    l_return_status                 VARCHAR2(1);
11130    l_msg_count                     NUMBER;
11131    l_msg_data                      VARCHAR2(250);
11132 
11133    l_structure_sharing_code        VARCHAR2(30);
11134    l_structure_version_id          NUMBER;
11135    l_fin_structure_version_id      NUMBER;
11136 
11137    l_percent_bac                   NUMBER    := 0;
11138    l_sum_bac                       NUMBER    := 0;
11139    l_bac_task                      NUMBER    := 0;
11140    l_percent_complete              NUMBER    := 0;
11141    l_wp_rollup_method              VARCHAR2(30);
11142    g1_debug_mode                   VARCHAR2(1);
11143 
11144 
11145    CURSOR cur_fin_low_tasks(c_structure_type VARCHAR, c_structure_version_id number ) -- Bug 3957457 : Added c_structure_version_id
11146    IS
11147       -- Bug 3957457 : get percent complete from pa_progress_rollup instead of pa_percent_complete
11148       -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
11149      -- SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
11150       SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
11151       FROM   pa_proj_element_versions ppv, pa_progress_rollup ppr
11152       WHERE  ppv.project_id = p_project_id
11153       AND    ppv.financial_task_flag = 'Y'
11154       AND    ppv.parent_structure_version_id = c_structure_version_id -- Bug 3957457
11155 --      AND    PA_PROJ_ELEMENTS_UTILS.check_child_element_exist(ppv.element_version_id) = 'N' bug 4086613
11156       AND    ppv.project_id = ppr.project_id(+)
11157 --      AND    ppv.element_version_id = ppc.object_version_id(+)
11158       AND    ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
11159       AND    ppr.current_flag(+) = 'Y'
11160       AND    ppr.structure_type(+) = c_structure_type
11161       AND    ppr.structure_version_id(+) is null -- Bug 3957457
11162       and not exists (select 1
11163                         from pa_object_relationships por,
11164                              pa_proj_element_versions ppv1
11165                        where por.object_id_from1 = ppv.element_version_id
11166                          and relationship_type = 'S'
11167                          and ppv1.element_version_id = por.object_id_to1
11168                          and ppv1.financial_task_flag = 'Y')
11169       ;
11170 
11171    -- 4392189 : Program Reporting Changes - Phase 2 : Get base % complete rather rollup % complete
11172    CURSOR cur_wp_task( c_object_version_id NUMBER, c_structure_version_id number ) -- Bug 3952006 : Added c_structure_version_id
11173    IS
11174       -- Bug 3952006 : get percent complete from pa_progress_rollup instead of pa_percent_complete
11175       --SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage
11176       SELECT ppv.proj_element_id, ppv.element_version_id, ppv.record_version_number, nvl(ppr.completed_percentage, ppr.base_percent_complete) completed_percentage
11177       FROM   pa_proj_element_versions ppv, pa_progress_rollup ppr, pa_object_relationships por
11178       WHERE  ppv.project_id = p_project_id
11179       AND    ppv.parent_structure_version_id = c_structure_version_id -- Bug 3952006
11180       AND    ppv.project_id = ppr.project_id(+)
11181       AND    por.object_id_to1 = c_object_version_id
11182       AND    por.relationship_type = 'M'
11183       AND    ppv.element_version_id = por.object_id_from1
11184 --      AND    ppv.element_version_id = ppc.object_version_id(+)
11185       AND    ppv.proj_element_id = ppr.object_id(+) -- Bug 3696820
11186       AND    ppr.current_flag(+) = 'Y'
11187       AND    ppr.structure_type(+) = 'WORKPLAN'
11188       AND    ppr.structure_version_id(+) is null -- Bug 3696820
11189       ;
11190 
11191    -- Bug 3603636 : Added cusrosr c_get_task_weight_method and variable l_rollup_method
11192 
11193    CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
11194    IS
11195    SELECT task_weight_basis_code
11196    FROM pa_proj_progress_attr
11197    WHERE project_id = c_project_id
11198    AND structure_type = c_structure_type;
11199 
11200    l_rollup_method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                    ;
11201    l_baselined_str_ver_id          NUMBER                                                               ;
11202    -- Bug 4136239 : Added l_call_rollup, l_call_update_progress
11203    l_call_rollup                   VARCHAR2(1):='N'                         ;
11204    l_call_update_progress      VARCHAR2(1):='N'                         ;
11205 
11206    -- Bug 4284353 Begin
11207    l_as_of_date                    DATE;
11208 
11209    CURSOR c_max_date IS
11210 --   4487630 : Now Date will be derived as max of existing financial as of date, workplan as of date, sysdate
11211 --   select max(decode(structure_type, 'WORKPLAN', as_of_date, as_of_date+1))
11212    select max(as_of_date)
11213    from pa_progress_rollup
11214    where project_id = p_project_id
11215    and structure_version_id is null
11216    and structure_type IN('WORKPLAN', 'FINANCIAL')
11217    and current_flag = 'Y';
11218    -- Bug 4284353 End
11219 BEGIN
11220         g1_debug_mode  := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11221 
11222         IF g1_debug_mode  = 'Y' THEN
11223                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
11224         END IF;
11225 
11226 
11227         IF g1_debug_mode  = 'Y' THEN
11228                pa_debug.debug('PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN');
11229         END IF;
11230 
11231 
11232         IF g1_debug_mode  = 'Y' THEN
11233               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'p_project_id : '||p_project_id, x_Log_Level=> 3);
11234         END IF;
11235 
11236 
11237         IF (p_commit = FND_API.G_TRUE) THEN
11238                 SAVEPOINT TRANSFER_WP_PERCENT_TO_FIN;
11239         END IF;
11240 
11241         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
11242                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11243         END IF;
11244 
11245         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
11246                 FND_MSG_PUB.initialize;
11247         END IF;
11248 
11249 
11250         x_return_status := FND_API.G_RET_STS_SUCCESS;
11251 
11252          IF g1_debug_mode  = 'Y' THEN
11253                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'getting the structure sharing code', x_Log_Level=> 3);
11254          END IF;
11255 
11256         SELECT structure_sharing_code
11257         INTO l_structure_sharing_code
11258         FROM pa_projects_all
11259         WHERE project_id = p_project_id;
11260 
11261 
11262         l_fin_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'FINANCIAL');
11263 
11264 
11265         IF PA_PROJECT_STRUCTURE_UTILS.check_workplan_enabled(p_project_id) = 'N'
11266         THEN
11267             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11268                                  ,p_msg_name       => 'PA_PS_WORKPLAN_DISABLED');
11269             x_msg_data := 'PA_PS_WORKPLAN_DISABLED';
11270             x_return_status := 'E';
11271             RAISE  FND_API.G_EXC_ERROR;
11272         END IF;
11273 
11274 
11275         IF ((l_structure_sharing_code = 'SPLIT_NO_MAPPING') or l_structure_sharing_code is null) -- Added OR condition for Bug no 4767821.
11276         THEN
11277                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11278                                      ,p_msg_name       => 'PA_TRAN_SHCODE_INV');
11279                 x_msg_data := 'PA_TRAN_SHCODE_INV';
11280                 x_return_status := 'E';
11281         RAISE  FND_API.G_EXC_ERROR;
11282         END IF;
11283 
11284     OPEN c_max_date;
11285     FETCH c_max_date INTO l_as_of_date;
11286     CLOSE c_max_date;
11287 
11288     	-- Bug 4284353
11289 	-- Bug 7184046  - Reverted this change done as part of the bug 4284353 as copying progress from workplan is displaying sysdate rather than work plan as of date when workplan as of date < sysdate
11290 	/*IF trunc(nvl(l_as_of_date,sysdate)) <= trunc(sysdate) THEN
11291 		l_as_of_date := trunc(sysdate);
11292 	END IF; */
11293 
11294 
11295          IF g1_debug_mode  = 'Y' THEN
11296                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'l_fin_structure_version_id : '||l_fin_structure_version_id, x_Log_Level=> 3);
11297          END IF;
11298 
11299          IF g1_debug_mode  = 'Y' THEN
11300                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'l_structure_sharing_code : '||l_structure_sharing_code, x_Log_Level=> 3);
11301          END IF;
11302 
11303         IF l_structure_sharing_code = 'SHARE_FULL' OR l_structure_sharing_code = 'SHARE_PARTIAL'
11304         THEN
11305             FOR cur_task IN cur_fin_low_tasks('WORKPLAN', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
11306             LOOP
11307 
11308             IF g1_debug_mode  = 'Y' THEN
11309                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'percent complete : '||cur_task.completed_percentage, x_Log_Level=> 3);
11310             END IF;
11311 
11312             IF g1_debug_mode  = 'Y' THEN
11313                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'element version id : '||cur_task.element_version_id, x_Log_Level=> 3);
11314             END IF;
11315 
11316             IF cur_task.completed_percentage IS NOT NULL
11317             THEN
11318         l_call_rollup := 'Y'; -- Bug 4136239
11319                 PA_PROGRESS_PUB.UPDATE_PROGRESS(
11320                         p_action                        => 'PUBLISH'
11321                        ,P_rollup_entire_wbs_flag        => 'Y'
11322                        ,p_progress_mode                 => 'FUTURE'
11323                        ,p_project_id                    => p_project_id
11324                        ,p_object_id                     => cur_task.proj_element_id
11325                        ,p_object_version_id             => cur_task.element_version_id
11326                        ,p_object_type                   => 'PA_TASKS'
11327                        ,p_as_of_date                    => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
11328                        ,p_percent_complete              => cur_task.completed_percentage
11329                        ,p_structure_type                => 'FINANCIAL'
11330                        ,p_structure_version_id          => l_fin_structure_version_id
11331                        ,p_task_id                       => cur_task.proj_element_id -- FPM Dev CR 2
11332                        ,p_record_version_number         => cur_task.record_version_number
11333                        ,p_transfer_wp_pc_flag           => 'Y'
11334                        ,x_return_status                 => l_return_status
11335                        ,x_msg_count                     => l_msg_count
11336                        ,x_msg_data                      => l_msg_data
11337                 );
11338             END IF;
11339 
11340             END LOOP;
11341 
11342         ELSIF l_structure_sharing_code = 'SPLIT_MAPPING'
11343         THEN
11344             l_structure_version_id := PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id);
11345 
11346             IF l_structure_version_id = -1
11347             THEN
11348                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
11349                                      ,p_msg_name       => 'PA_NO_PUBLISHED_VERSION');
11350                 x_msg_data := 'PA_NO_PUBLISHED_VERSION';
11351                 x_return_status := 'E';
11352                 RAISE  FND_API.G_EXC_ERROR;
11353             END IF;
11354             -- Bug 3696820 : begin
11355             BEGIN
11356                 l_baselined_str_ver_id := PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(p_project_id);
11357             EXCEPTION
11358                 WHEN OTHERS THEN
11359                         l_baselined_str_ver_id := null;
11360             END;
11361 
11362             pa_progress_pub.populate_pji_tab_for_plan(
11363                         p_init_msg_list         => FND_API.G_FALSE,
11364                         p_calling_module        => p_calling_module,
11365                         p_project_id            => p_project_id,
11366                         p_structure_version_id  => l_structure_version_id,
11367                         p_baselined_str_ver_id  => l_baselined_str_ver_id,
11368                         p_structure_type        => 'WORKPLAN',
11369                         x_return_status         => l_return_status,
11370                         x_msg_count             => l_msg_count,
11371                         x_msg_data              => l_msg_data
11372                         );
11373 
11374             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11375                         x_msg_data := l_msg_data;
11376                         x_return_status := 'E';
11377                         x_msg_count := l_msg_count;
11378                         RAISE  FND_API.G_EXC_ERROR;
11379             END IF;
11380             -- Bug 3696820 : end
11381 
11382         -- Bug 3952006 : Begin
11383         -- Commented the below code and added cursor call
11384             --SELECT task_weight_basis_code
11385             --INTO l_wp_rollup_method
11386             --FROM PA_PROJ_PROGRESS_ATTR
11387             --WHERE project_id = p_project_id
11388             --AND STRUCTURE_TYPE = 'FINANCIAL';
11389 
11390             OPEN c_get_task_weight_method(p_project_id, 'WORKPLAN');
11391             FETCH c_get_task_weight_method INTO l_wp_rollup_method;
11392             CLOSE c_get_task_weight_method;
11393         -- Bug 3952006 : End
11394 
11395             FOR cur_task IN cur_fin_low_tasks('FINANCIAL', l_fin_structure_version_id) -- Bug 3957457 : Passed l_fin_structure_version_id
11396             LOOP
11397                    IF g1_debug_mode  = 'Y' THEN
11398                        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'fin element version id : '||cur_task.element_version_id, x_Log_Level=> 3);
11399                    END IF;
11400            l_sum_bac := null; -- Bug 3952006
11401            l_percent_bac := null; -- Bug 3952006
11402            l_percent_complete := null; -- Bug 4136239
11403            l_call_update_progress := 'N'; -- Bug 4136239
11404 
11405                    FOR cur_per IN cur_wp_task(cur_task.element_version_id, l_structure_version_id) -- Bug 3952006 : Added l_structure_version_id
11406                    LOOP
11407 
11408                          IF g1_debug_mode  = 'Y' THEN
11409                                pa_debug.write(x_Module=>'PA_PROGRESS_PUB.TRANSFER_WP_PERCENT_TO_FIN', x_Msg => 'wp element version id : '||cur_per.element_version_id, x_Log_Level=> 3);
11410                          END IF;
11411             l_bac_task := null; -- Bug 3952006
11412                         l_bac_task := PA_PROGRESS_UTILS.Get_BAC_Value(
11413                                                 p_project_id           => p_project_id
11414                                                ,p_task_weight_method   => l_wp_rollup_method
11415                                                ,p_proj_element_id      => cur_per.proj_element_id
11416                                                ,p_structure_version_id => l_structure_version_id
11417                                                ,p_structure_type       => 'WORKPLAN'
11418                                                );
11419                         -- Bug 3696820 : Used nvl
11420                         l_percent_bac := nvl(l_percent_bac,0) + nvl(cur_per.completed_percentage,0) * nvl(l_bac_task,0);
11421                         l_sum_bac := nvl(l_sum_bac,0) + nvl(l_bac_task,0);
11422             IF cur_per.completed_percentage IS NOT NULL THEN -- Bug 4136239
11423             -- If % complete is there on mapped tasks, then only for financial task update_progress shd be called
11424                 l_call_update_progress := 'Y';
11425             END IF;
11426                    END LOOP;
11427 
11428                   IF l_sum_bac <> 0
11429                   THEN
11430                       l_percent_complete := l_percent_bac/l_sum_bac;
11431               --Commented by rtarway, for BUG 3950574
11432                 --l_percent_complete := round(l_percent_complete,2);
11433                   END IF;
11434 
11435                   IF l_percent_complete IS NOT NULL AND l_call_update_progress = 'Y' -- Bug 4136239 Added l_call_update_progress
11436                   THEN
11437            l_call_rollup := 'Y'; -- Bug 4136239
11438                    PA_PROGRESS_PUB.UPDATE_PROGRESS(
11439                                 p_action                        => 'PUBLISH'
11440                                ,P_rollup_entire_wbs_flag        => 'Y'
11441                                ,p_progress_mode                 => 'FUTURE'
11442                                ,p_project_id                    => p_project_id
11443                                ,p_object_id                     => cur_task.proj_element_id
11444                                ,p_object_version_id             => cur_task.element_version_id
11445                                ,p_object_type                   => 'PA_TASKS'
11446                                ,p_as_of_date                    => trunc(l_as_of_date) -- Bug 3603636 Used Trunc
11447                                ,p_percent_complete              => l_percent_complete
11448                                ,p_structure_type                => 'FINANCIAL'
11449                                ,p_structure_version_id          => l_fin_structure_version_id
11450                                ,p_task_id                       => cur_task.proj_element_id -- FPM Dev CR 2
11451                                ,p_record_version_number         => cur_task.record_version_number
11452                                ,p_transfer_wp_pc_flag           => 'Y'
11453                                ,x_return_status                 => l_return_status
11454                                ,x_msg_count                     => l_msg_count
11455                                ,x_msg_data                      => l_msg_data
11456                    );
11457                   END IF;
11458             END LOOP;
11459         END IF;
11460 
11461         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11462                 x_msg_data := l_msg_data;
11463                 x_return_status := 'E';
11464                 x_msg_count := l_msg_count;
11465                 RAISE  FND_API.G_EXC_ERROR;
11466         END IF;
11467         -- Bug 3603636 : Added call of Rollup API
11468 
11469         IF l_call_rollup = 'Y' THEN  -- Bug 4136239
11470 
11471                         -- 4609910 : We need to call PJI temp table population here
11472                         -- It is strange that the table did not find any data here
11473                         -- so need to call it here
11474                         PA_PROGRESS_PUB.populate_pji_tab_for_plan(
11475                                 p_project_id              => p_project_id,
11476                                 p_structure_type          => 'FINANCIAL',
11477                                 x_return_status           => l_return_status,
11478                                 x_msg_count               => l_msg_count,
11479                                 x_msg_data                => l_msg_data
11480                                 );
11481 
11482                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11483                                 x_msg_data := l_msg_data;
11484                                 x_return_status := 'E';
11485                                 x_msg_count := l_msg_count;
11486                                 RAISE  FND_API.G_EXC_ERROR;
11487                         END IF;
11488 
11489             OPEN c_get_task_weight_method(p_project_id, 'FINANCIAL');
11490             FETCH c_get_task_weight_method INTO l_rollup_method;
11491             CLOSE c_get_task_weight_method;
11492 
11493 
11494             PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
11495              p_init_msg_list             => p_init_msg_list
11496             ,p_commit                    => p_commit
11497             --Added by rtarway for BUG 3696263
11498             ,p_calling_module       => p_calling_module
11499                         ,p_progress_mode        => 'TRANSFER_WP_PC'    --bug 4284353
11500 
11501             ,p_validate_only             => p_validate_only
11502             ,p_project_id                => p_project_id
11503             ,p_structure_version_id      => l_fin_structure_version_id
11504             ,p_as_of_date                => trunc(l_as_of_date)
11505             ,p_fin_rollup_method         => l_rollup_method
11506             ,p_rollup_entire_wbs         => 'Y'
11507             ,p_structure_type            => 'FINANCIAL'
11508             ,x_return_status             => l_return_status
11509             ,x_msg_count                 => l_msg_count
11510             ,x_msg_data                  => l_msg_data);
11511 
11512 
11513             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11514                 x_msg_data := l_msg_data;
11515                 x_return_status := 'E';
11516                 x_msg_count := l_msg_count;
11517                 RAISE  FND_API.G_EXC_ERROR;
11518             END IF;
11519         END IF; --IF l_call_rollup = 'Y'
11520 
11521         IF (p_commit = FND_API.G_TRUE) THEN
11522                 COMMIT;
11523         END IF;
11524 EXCEPTION
11525     when FND_API.G_EXC_ERROR then
11526       if p_commit = FND_API.G_TRUE then
11527          rollback to TRANSFER_WP_PERCENT_TO_FIN;
11528       end if;
11529       x_return_status := FND_API.G_RET_STS_ERROR;
11530     when FND_API.G_EXC_UNEXPECTED_ERROR then
11531       if p_commit = FND_API.G_TRUE then
11532          rollback to TRANSFER_WP_PERCENT_TO_FIN;
11533       end if;
11534       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11535       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
11536                               p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11537                               p_error_text     => SUBSTRB(SQLERRM,1,120));
11538     when OTHERS then
11539       if p_commit = FND_API.G_TRUE then
11540          rollback to TRANSFER_WP_PERCENT_TO_FIN;
11541       end if;
11542       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11543       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
11544                               p_procedure_name => 'TRANSFER_WP_PERCENT_TO_FIN',
11545                               p_error_text     => SUBSTRB(SQLERRM,1,120));
11546       raise;
11547 END transfer_wp_percent_to_fin;
11548 
11549 -- Bug 3839288 : Rewritten this procedure.
11550 --Bug 5027965. Made sure that the ETC cost is copied from current working version
11551 --if the latest progress is already  applied
11552 PROCEDURE publish_progress(
11553   p_api_version                 IN      NUMBER          :=1.0
11554  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
11555  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
11556  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
11557  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
11558  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
11559  ,p_debug_mode                  IN      VARCHAR2        :='N'
11560  ,p_max_msg_count               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
11561  ,p_project_id                  IN      NUMBER
11562  ,p_working_str_ver_id          IN      NUMBER    -- Bug 4190086
11563  ,p_pub_structure_version_id    IN      NUMBER          -- Bug 3839288
11564  ,x_upd_new_elem_ver_id_flag    OUT     NOCOPY VARCHAR2    -- BUG 3951024, rtarway --File.Sql.39 bug 4440895
11565  ,x_as_of_date                 OUT     NOCOPY DATE      -- Bug 3839288   --File.Sql.39 bug 4440895
11566  ,x_task_weight_basis_code      OUT     NOCOPY VARCHAR2 -- Bug 3839288   --File.Sql.39 bug 4440895
11567  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11568  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
11569  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
11570 )
11571 IS
11572    l_api_name           CONSTANT   VARCHAR2(30)    := 'PUBLISH_PROGRESS';
11573    l_api_version        CONSTANT   NUMBER          := p_api_version;
11574    l_return_status                 VARCHAR2(1);
11575    l_msg_count                     NUMBER;
11576    l_msg_data                      VARCHAR2(250);
11577    p_baseline_flag                 VARCHAR2(1):='N';
11578 
11579 CURSOR C2(p_project_id NUMBER) is
11580                 select max(trunc(as_of_date)) -- 5294838 truncate
11581                 from pa_progress_rollup ppr
11582                 where ppr.project_id = p_project_id
11583                 and ppr.structure_version_id is null
11584                 and ppr.structure_type = 'WORKPLAN'
11585         and current_flag = 'Y';
11586 
11587 CURSOR cur_proj_prog_attr IS
11588 SELECT pppa.task_weight_basis_code
11589 FROM pa_proj_progress_attr pppa
11590 WHERE project_id=p_project_id
11591 AND structure_type ='WORKPLAN'
11592 ;
11593 
11594 
11595 CURSOR c_get_working_wp_progress is
11596                 select ppr.*
11597                 from pa_progress_rollup ppr
11598                 where ppr.project_id = p_project_id
11599 --                and ppr.structure_version_id is not null -- Bug 4190086
11600                 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11601                 and ppr.structure_type = 'WORKPLAN';
11602 
11603 -- Bug 4111107 : Added c_get_all_progress
11604 -- Bug 4871809, replaced ppr.* with column names to reduce sharable memory
11605 CURSOR c_get_all_progress is
11606           select PROJECT_ID,
11607                  OBJECT_ID ,
11608                  OBJECT_TYPE,
11609                  AS_OF_DATE ,
11610                  OBJECT_VERSION_ID,
11611                  PROGRESS_STATUS_CODE,
11612                  INCREMENTAL_WORK_QUANTITY ,
11613                  CUMULATIVE_WORK_QUANTITY ,
11614                  BASE_PERCENT_COMPLETE ,
11615                  EFF_ROLLUP_PERCENT_COMP,
11616                  COMPLETED_PERCENTAGE ,
11617                  ESTIMATED_START_DATE ,
11618                  ESTIMATED_FINISH_DATE ,
11619                  ACTUAL_START_DATE ,
11620                  ACTUAL_FINISH_DATE ,
11621                  ESTIMATED_REMAINING_EFFORT ,
11622                  BASE_PERCENT_COMP_DERIV_CODE,
11623                  STRUCTURE_TYPE ,
11624                  PROJ_ELEMENT_ID,
11625                  STRUCTURE_VERSION_ID ,
11626                  PPL_ACT_EFFORT_TO_DATE ,
11627                  EQPMT_ACT_EFFORT_TO_DATE,
11628                  OTH_ACT_COST_TO_DATE_TC ,
11629                  OTH_ACT_COST_TO_DATE_FC,
11630                  OTH_ACT_COST_TO_DATE_PC ,
11631                  PPL_ACT_COST_TO_DATE_TC ,
11632                  PPL_ACT_COST_TO_DATE_FC,
11633                  PPL_ACT_COST_TO_DATE_PC ,
11634                  EQPMT_ACT_COST_TO_DATE_TC,
11635                  EQPMT_ACT_COST_TO_DATE_FC,
11636                  EQPMT_ACT_COST_TO_DATE_PC,
11637                  EARNED_VALUE ,
11638 				 CBS_ELEMENT_ID-- added for 16895485
11639                 from pa_progress_rollup ppr
11640                 where ppr.project_id = p_project_id
11641                 and ppr.structure_version_id = p_working_str_ver_id -- Bug 4190086
11642                 and ppr.structure_type = 'WORKPLAN'
11643         and ppr.proj_element_id <> 0 -- 4398411
11644         and ppr.proj_element_id is not null -- 4398411
11645         UNION ALL
11646                 select PROJECT_ID,
11647                  OBJECT_ID ,
11648                  OBJECT_TYPE,
11649                  AS_OF_DATE ,
11650                  OBJECT_VERSION_ID,
11651                  PROGRESS_STATUS_CODE,
11652                  INCREMENTAL_WORK_QUANTITY ,
11653                  CUMULATIVE_WORK_QUANTITY ,
11654                  BASE_PERCENT_COMPLETE ,
11655                  EFF_ROLLUP_PERCENT_COMP,
11656                  COMPLETED_PERCENTAGE ,
11657                  ESTIMATED_START_DATE ,
11658                  ESTIMATED_FINISH_DATE ,
11659                  ACTUAL_START_DATE ,
11660                  ACTUAL_FINISH_DATE ,
11661                  ESTIMATED_REMAINING_EFFORT ,
11662                  BASE_PERCENT_COMP_DERIV_CODE,
11663                  STRUCTURE_TYPE ,
11664                  PROJ_ELEMENT_ID,
11665                  STRUCTURE_VERSION_ID ,
11666                  PPL_ACT_EFFORT_TO_DATE ,
11667                  EQPMT_ACT_EFFORT_TO_DATE,
11668                  OTH_ACT_COST_TO_DATE_TC ,
11669                  OTH_ACT_COST_TO_DATE_FC,
11670                  OTH_ACT_COST_TO_DATE_PC ,
11671                  PPL_ACT_COST_TO_DATE_TC ,
11672                  PPL_ACT_COST_TO_DATE_FC,
11673                  PPL_ACT_COST_TO_DATE_PC ,
11674                  EQPMT_ACT_COST_TO_DATE_TC,
11675                  EQPMT_ACT_COST_TO_DATE_FC,
11676                  EQPMT_ACT_COST_TO_DATE_PC,
11677                  EARNED_VALUE,
11678 				 CBS_ELEMENT_ID-- added for 16895485
11679                 from pa_progress_rollup ppr1
11680                 where ppr1.project_id = p_project_id
11681                 and ppr1.structure_version_id IS NULL
11682                 and ppr1.structure_type = 'WORKPLAN'
11683         and ppr1.current_flag = 'Y'
11684         and ppr1.proj_element_id <> 0 -- 4398411
11685         and ppr1.proj_element_id is not null -- 4398411
11686         and not exists
11687         (select 'xyz' from pa_progress_rollup ppr2
11688          where ppr2.project_id = ppr1.project_id
11689          and ppr2.object_id = ppr1.object_id
11690          and nvl(ppr2.proj_element_id,0) = nvl(ppr1.proj_element_id,0)
11691          and ppr2.structure_version_id = p_working_str_ver_id
11692          and ppr2.structure_type = 'WORKPLAN'
11693         )
11694         ;
11695 
11696 
11697  CURSOR c_get_ppc_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11698                 select rowid, ppc.*
11699                 from pa_percent_completes ppc
11700                 where ppc.project_id = c_project_id
11701                 and ppc.structure_type = 'WORKPLAN'
11702         --and trunc(ppc.date_computed) = trunc(c_as_of_date) -- Bug 4227280
11703         and ppc.published_flag = 'N' -- Bug 4227280
11704         and ppc.object_id = c_object_id
11705         and ppc.task_id = c_proj_element_id
11706         and ppc.object_type = c_object_type
11707 		and NVL(ppc.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11708 
11709  CURSOR c_get_last_ppc_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11710                 select ppc.*
11711                 from pa_percent_completes ppc
11712                 where ppc.project_id = c_project_id
11713                 and ppc.structure_type = 'WORKPLAN'
11714         ---and trunc(ppc.date_computed) <= trunc(c_as_of_date)
11715         and ppc.object_id = c_object_id
11716         and ppc.task_id = c_proj_element_id
11717         and ppc.object_type = c_object_type
11718         and ppc.current_flag = 'Y'
11719         and ppc.published_flag = 'Y'
11720 		and NVL(ppc.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11721 
11722 CURSOR c_get_work_obj_ver_id(c_proj_element_id NUMBER, c_structure_version_id NUMBER, c_object_type VARCHAR2) IS
11723                 select element_version_id
11724                 from pa_proj_element_versions
11725                 where project_id = p_project_id
11726                 and proj_element_id = c_proj_element_id
11727                 and ((c_object_type <> 'PA_DELIVERABLES' and parent_structure_version_id = c_structure_version_id)
11728             OR c_object_type = 'PA_DELIVERABLES'); -- 4398411 : Added Deliverable condition
11729 
11730 CURSOR c_get_progress_status(c_proj_element_id NUMBER) IS
11731                 select initial_progress_status_code
11732                 from pa_proj_elements
11733         , pa_task_types
11734                 where project_id = p_project_id
11735                 and proj_element_id = c_proj_element_id
11736         and type_id = task_type_id;
11737 
11738 CURSOR c_get_ppr_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11739                 select rowid, ppr.*
11740                 from pa_progress_rollup ppr
11741                 where ppr.project_id = c_project_id
11742                 and ppr.structure_type = 'WORKPLAN'
11743         and ppr.structure_version_id is null
11744         --and trunc(ppr.as_of_date) = trunc(c_as_of_date) -- Bug 4227280
11745         and ppr.current_flag = 'W' -- Bug 4227280
11746         and ppr.object_id = c_object_id
11747         and ppr.proj_element_id = c_proj_element_id
11748         and ppr.object_type = c_object_type
11749 		and NVL(ppr.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11750 
11751 CURSOR c_get_last_ppr_rec(c_project_id NUMBER, c_object_id NUMBER, c_proj_element_id NUMBER, c_object_type VARCHAR2, c_as_of_date DATE,c_cbs_element_id Number) is
11752                 select ppr.*
11753                 from pa_progress_rollup ppr
11754                 where ppr.project_id = c_project_id
11755                 and ppr.structure_type = 'WORKPLAN'
11756         and ppr.structure_version_id is null
11757   ------ and trunc(ppr.as_of_date) < trunc(c_as_of_date) redundant cond. 4743866
11758         and ppr.object_id = c_object_id
11759         and ppr.proj_element_id = c_proj_element_id
11760         and ppr.object_type = c_object_type
11761         and ppr.current_flag = 'Y'
11762 		and NVL(ppr.cbs_element_id,-1)=NVL(c_cbs_element_id,-1);
11763 
11764 CURSOR get_prev_published_ver  IS
11765   SELECT a.element_version_id
11766   FROM pa_proj_elem_ver_structure a
11767   WHERE a.project_id = p_project_id
11768   AND a.LATEST_EFF_PUBLISHED_FLAG <> 'Y'
11769   AND a.STATUS_CODE = 'STRUCTURE_PUBLISHED'
11770   ORDER BY published_date desc;
11771 
11772 CURSOR c_get_sch_dates(c_project_id NUMBER, c_object_version_id NUMBER) IS
11773                 select scheduled_start_date, scheduled_finish_date
11774                 from pa_proj_elem_ver_schedule
11775                 where project_id = c_project_id
11776                 and element_version_id = c_object_version_id ;
11777 
11778 CURSOR c_ptav_cur(c_project_id NUMBER, c_object_id NUMBER, c_task_id NUMBER, c_task_version_id NUMBER, c_structure_version_id NUMBER, c_ta_display_flag VARCHAR2, c_cbs_element_id NUMBER) IS
11779 SELECT resource_class_code
11780        ,resource_list_member_id
11781        ,assignment_start_date
11782        ,assignment_end_date
11783        ,txn_currency_code
11784        ,resource_assignment_id
11785        ,planned_quantity
11786        ,planned_bur_cost_txn_cur
11787        ,planned_bur_cost_projfunc
11788        ,planned_bur_cost_proj_cur
11789        ,planned_raw_cost_txn_cur
11790        ,planned_raw_cost_proj_cur
11791        ,planned_raw_cost_projfunc
11792        ,rate_based_flag
11793        ,budget_version_id        --- 4372462
11794 	   ,cbs_element_id
11795 FROM pa_task_asgmts_v
11796 WHERE project_id = c_project_id
11797       AND resource_list_member_id = c_object_id
11798       AND task_id = c_task_id
11799       AND task_version_id = c_task_version_id
11800       AND structure_version_id = c_structure_version_id
11801 	  and NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1);-- added for 16895485
11802       --AND ta_display_flag = c_ta_display_flag;  bug 3958686, now select all assignments
11803 
11804 l_ptav_rec      c_ptav_cur%ROWTYPE;
11805 
11806    l_ppc_rec                c_get_ppc_rec%ROWTYPE;
11807    l_ppr_rec                c_get_ppr_rec%ROWTYPE;
11808    l_last_ppc_rec           c_get_last_ppc_rec%ROWTYPE;
11809    l_last_ppr_rec           c_get_last_ppr_rec%ROWTYPE;
11810    l_as_of_date             DATE := NULL;
11811    l_max_as_of_date         DATE := NULL;
11812    l_user_id                NUMBER := fnd_global.user_id;
11813    l_login_id               NUMBER := fnd_global.login_id;
11814    l_published_by_party_id      NUMBER := PA_UTILS.get_party_id(l_user_id);
11815    L_LATEST_PUB_WP_VERSION_ID       NUMBER;
11816    L_PRE_PUB_STR_VER_ID         NUMBER;
11817    L_TASK_WEIGHT_BASIS_CODE     pa_proj_progress_attr.task_weight_basis_code%TYPE;
11818    L_OBJECT_VERSION_ID          NUMBER;
11819    L_PROGRESS_STATUS_CODE       pa_progress_rollup.progress_status_code%TYPE;
11820    L_ACTUAL_START_DATE          DATE;
11821    L_ACTUAL_FINISH_DATE         DATE;
11822    L_ESTIMATED_START_DATE       DATE;
11823    L_ESTIMATED_FINISH_DATE      DATE;
11824    L_TASK_STATUS            pa_percent_completes.status_code%TYPE;
11825    L_PERCENT_COMPLETE_ID        NUMBER;
11826    L_SYSTEM_STATUS_CODE         pa_project_statuses.project_system_status_code%TYPE;
11827    L_PROGRESS_ROLLUP_ID         NUMBER;
11828    L_BAC_VALUE              NUMBER;
11829    L_EARNED_VALUE           NUMBER;
11830    L_PROG_PA_PERIOD_NAME        pa_progress_rollup.PROG_PA_PERIOD_NAME%TYPE;
11831    L_PROG_GL_PERIOD_NAME        pa_progress_rollup.PROG_GL_PERIOD_NAME%TYPE;
11832    l_scheduled_start_date       DATE;
11833    l_scheduled_finish_date      DATE;
11834    l_baselined_str_ver_id               NUMBER;
11835    l_oth_etc_quantity           NUMBER;
11836    l_oth_etc_cost_tc            NUMBER;
11837    l_oth_etc_cost_pc            NUMBER;
11838    l_oth_etc_cost_fc            NUMBER;
11839    l_oth_etc_rawcost_tc         NUMBER;
11840    l_oth_etc_rawcost_pc         NUMBER;
11841    l_oth_etc_rawcost_fc         NUMBER;
11842    l_estimated_remaining_effort     NUMBER;
11843    l_ppl_etc_cost_tc            NUMBER;
11844    l_ppl_etc_cost_pc            NUMBER;
11845    l_ppl_etc_cost_fc            NUMBER;
11846    l_ppl_etc_rawcost_tc         NUMBER;
11847    l_ppl_etc_rawcost_pc         NUMBER;
11848    l_ppl_etc_rawcost_fc         NUMBER;
11849    l_eqpmt_etc_effort           NUMBER;
11850    l_eqpmt_etc_cost_tc          NUMBER;
11851    l_eqpmt_etc_cost_pc          NUMBER;
11852    l_eqpmt_etc_cost_fc          NUMBER;
11853    l_eqpmt_etc_rawcost_tc       NUMBER;
11854    l_eqpmt_etc_rawcost_pc       NUMBER;
11855    l_eqpmt_etc_rawcost_fc       NUMBER;
11856 
11857 --reset ETC whenever workplan gets published.
11858 
11859    l_etc_reset_flag             VARCHAR2(1) := 'Y';
11860    --Added by rtarway for BUG 3951024
11861    l_upd_new_elem_ver_id_flag   VARCHAR2(1) := 'Y';
11862 
11863         CURSOR cur_lp_progress is
11864         select *
11865         from pa_progress_rollup ppr
11866         where ppr.project_id = p_project_id
11867         and ppr.structure_version_id is null
11868         and ppr.object_type = 'PA_TASKS'
11869         and structure_type = 'WORKPLAN'
11870         and pa_proj_elements_utils.is_lowest_task(ppr.object_version_id) = 'Y' -- Bug 3627315 issue 8 Added this condition
11871         and pa_progress_utils.check_assignment_exists(p_project_id,ppr.object_version_id,ppr.object_type) = 'N' -- Bug 3627315 issue 8 Added this condition
11872         and current_flag = 'Y'
11873         Union
11874         select *
11875         from pa_progress_rollup ppr
11876         where ppr.project_id = p_project_id
11877         and ppr.structure_version_id is null
11878         and ppr.object_type = 'PA_ASSIGNMENTS'
11879         and structure_type = 'WORKPLAN'
11880         and current_flag = 'Y';
11881 
11882 CURSOR c_ptav_cur_task(c_project_id NUMBER, c_object_id NUMBER, c_task_id NUMBER, c_task_version_id NUMBER, c_structure_version_id NUMBER, c_ta_display_flag VARCHAR2,c_cbs_element_id NUMBER) IS
11883 SELECT resource_class_code
11884        ,resource_list_member_id
11885        ,assignment_start_date
11886        ,assignment_end_date
11887        ,txn_currency_code
11888        ,resource_assignment_id
11889        ,planned_quantity
11890        ,planned_bur_cost_txn_cur
11891        ,planned_bur_cost_projfunc
11892        ,planned_bur_cost_proj_cur
11893        ,planned_raw_cost_txn_cur
11894        ,planned_raw_cost_proj_cur
11895        ,planned_raw_cost_projfunc
11896        ,rate_based_flag
11897        ,budget_version_id        --- 4372462
11898 	   ,cbs_element_id
11899 FROM pa_task_asgmts_v
11900 WHERE project_id = c_project_id
11901       AND task_id = c_task_id
11902       AND task_version_id = c_task_version_id
11903       AND structure_version_id = c_structure_version_id
11904       AND ta_display_flag = c_ta_display_flag
11905 	  and NVL(cbs_element_id,-1)=NVL(c_cbs_element_id,-1);-- added for 16895485
11906 
11907 -- Bug 3865516 : Added c_get_task_status
11908 CURSOR c_get_task_status(c_project_id NUMBER, c_proj_element_id NUMBER) IS
11909     select status_code
11910     from pa_proj_elements
11911     where project_id = c_project_id
11912     and proj_element_id = c_proj_element_id;
11913 
11914 
11915 l_track_wp_cost_flag  VARCHAR2(1) := 'Y'; -- Bug 3801745
11916 
11917 --bug 3906362
11918 l_EFF_ROLLUP_PERCENT_COMP         NUMBER;
11919 l_planned_effort                  NUMBER;
11920 l_BASE_PERCENT_COMP_DERIV_CODE    VARCHAR2(30);
11921 
11922 CURSOR cur_proj_elements(c_proj_element_id NUMBER)
11923 IS
11924    SELECT BASE_PERCENT_COMP_DERIV_CODE
11925      from pa_proj_elements
11926     where project_id = p_project_id
11927      and proj_element_id = c_proj_element_id;
11928 
11929 CURSOR cur_task_plan (c_proj_element_id NUMBER)
11930 IS
11931    SELECT labor_effort
11932      FROM pji_xbs_plans_v
11933     WHERE project_id = p_project_id
11934      AND  proj_element_id = c_proj_element_id
11935      AND  STRUCTURE_VERSION_ID = p_pub_structure_version_id
11936      AND  STRUCTURE_TYPE = 'WORKPLAN'
11937      ;
11938 --end bug 3906362
11939 
11940 --bug 4191360, start
11941 /*CURSOR cur_task_plan_cost (c_proj_element_id NUMBER)
11942 IS
11943    SELECT nvl(BRDN_COST, 0)
11944      FROM pji_xbs_plans_v
11945     WHERE project_id = p_project_id
11946      AND  proj_element_id = c_proj_element_id
11947      AND  STRUCTURE_VERSION_ID = p_pub_structure_version_id
11948      AND  STRUCTURE_TYPE = 'WORKPLAN'
11949      ;*/
11950 l_planned_cost             NUMBER;
11951 l_assignment_exists   VARCHAR2(1);
11952 --bug 4191360, end
11953 
11954 -- ETC Changes
11955 
11956 l_task_id_tbl                   PA_PLSQL_DATATYPES.Num15TabTyp;
11957 l_completed_percentage_tbl          PA_PLSQL_DATATYPES.NumTabTyp;
11958 l_project_id_tbl                PA_PLSQL_DATATYPES.Num15TabTyp;
11959 l_object_type_tbl               PA_PLSQL_DATATYPES.Char30TabTyp;
11960 l_object_id_tbl                 PA_PLSQL_DATATYPES.Num15TabTyp;
11961 l_cbs_element_id_tbl			PA_PLSQL_DATATYPES.Num15TabTyp;
11962 l_object_version_id_tbl             PA_PLSQL_DATATYPES.Num15TabTyp;
11963 l_progress_status_code_tbl          PA_PLSQL_DATATYPES.Char30TabTyp;
11964 l_act_start_date_tbl                PA_PLSQL_DATATYPES.DateTabTyp;
11965 l_act_finish_date_tbl               PA_PLSQL_DATATYPES.DateTabTyp;
11966 l_est_start_date_tbl                PA_PLSQL_DATATYPES.DateTabTyp;
11967 l_est_finish_date_tbl               PA_PLSQL_DATATYPES.DateTabTyp;
11968 l_task_status_code_tbl              PA_PLSQL_DATATYPES.Char30TabTyp;
11969 l_earned_value_tbl              PA_PLSQL_DATATYPES.AmtTabTyp;
11970 l_incr_work_quantity_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11971 l_cumu_work_quantity_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11972 l_eff_rollup_percent_comp_tbl           PA_PLSQL_DATATYPES.NumTabTyp;
11973 l_base_prog_status_code_tbl         PA_PLSQL_DATATYPES.Char30TabTyp;
11974 l_eff_roll_prog_stat_code_tbl           PA_PLSQL_DATATYPES.Char30TabTyp;
11975 l_percent_complete_id_tbl           PA_PLSQL_DATATYPES.Num15TabTyp;
11976 l_base_per_comp_deriv_code_tbl          PA_PLSQL_DATATYPES.Char30TabTyp;
11977 l_base_perc_comp_tbl                            PA_PLSQL_DATATYPES.NumTabTyp; -- 4604661
11978 
11979 l_ppl_act_effort_to_date_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11980 l_eqpmt_act_effort_to_date_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11981 l_oth_quantity_to_date_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11982 
11983 l_eqpmt_etc_effort_tbl              PA_PLSQL_DATATYPES.AmtTabTyp;
11984 l_est_remaining_effort_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11985 l_oth_etc_quantity_tbl              PA_PLSQL_DATATYPES.AmtTabTyp;
11986 
11987 l_ppl_etc_cost_tc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
11988 l_ppl_etc_cost_fc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
11989 l_ppl_etc_cost_pc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
11990 l_ppl_etc_rawcost_tc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11991 l_ppl_etc_rawcost_fc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11992 l_ppl_etc_rawcost_pc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
11993 l_eqpmt_etc_cost_tc_tbl             PA_PLSQL_DATATYPES.AmtTabTyp;
11994 l_eqpmt_etc_cost_fc_tbl             PA_PLSQL_DATATYPES.AmtTabTyp;
11995 l_eqpmt_etc_cost_pc_tbl             PA_PLSQL_DATATYPES.AmtTabTyp;
11996 l_eqpmt_etc_rawcost_tc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11997 l_eqpmt_etc_rawcost_fc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11998 l_eqpmt_etc_rawcost_pc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
11999 l_oth_etc_cost_tc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
12000 l_oth_etc_cost_fc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
12001 l_oth_etc_cost_pc_tbl               PA_PLSQL_DATATYPES.AmtTabTyp;
12002 l_oth_etc_rawcost_tc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12003 l_oth_etc_rawcost_fc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12004 l_oth_etc_rawcost_pc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12005 
12006 l_ppl_act_cost_to_date_tc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12007 l_ppl_act_cost_to_date_fc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12008 l_ppl_act_cost_to_date_pc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12009 l_eqp_act_cost_to_date_tc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12010 l_eqp_act_cost_to_date_fc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12011 l_eqp_act_cost_to_date_pc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12012 l_oth_act_cost_to_date_tc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12013 l_oth_act_cost_to_date_fc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12014 l_oth_act_cost_to_date_pc_tbl           PA_PLSQL_DATATYPES.AmtTabTyp;
12015 
12016 l_ppl_act_raw_to_date_tc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12017 l_ppl_act_raw_to_date_fc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12018 l_ppl_act_raw_to_date_pc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12019 l_eqpmt_act_raw_to_date_tc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
12020 l_eqpmt_act_raw_to_date_fc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
12021 l_eqpmt_act_raw_to_date_pc_tbl          PA_PLSQL_DATATYPES.AmtTabTyp;
12022 l_oth_act_raw_to_date_tc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12023 l_oth_act_raw_to_date_fc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12024 l_oth_act_raw_to_date_pc_tbl            PA_PLSQL_DATATYPES.AmtTabTyp;
12025 
12026 l_projfunc_cost_rate_type_tbl           PA_PLSQL_DATATYPES.Char30TabTyp;
12027 l_projfunc_cost_exc_rate_tbl            PA_PLSQL_DATATYPES.NumTabTyp;
12028 l_projfunc_cost_rate_date_tbl           PA_PLSQL_DATATYPES.DateTabTyp;
12029 l_proj_cost_rate_type_tbl           PA_PLSQL_DATATYPES.Char30TabTyp;
12030 l_proj_cost_exchange_rate_tbl           PA_PLSQL_DATATYPES.NumTabTyp;
12031 l_proj_cost_rate_date_tbl           PA_PLSQL_DATATYPES.DateTabTyp;
12032 l_txn_currency_code_tbl             PA_PLSQL_DATATYPES.Char15TabTyp;
12033 l_progress_rollup_id_tbl            PA_PLSQL_DATATYPES.Num15TabTyp;
12034 
12035 l_description                       PA_PLSQL_DATATYPES.Char250TabTyp;
12036 TYPE pa_varchar2_4000_tbl_type IS TABLE OF VARCHAR2(4000);
12037 l_progress_comment                  pa_varchar2_4000_tbl_type:= pa_varchar2_4000_tbl_type();
12038 
12039 
12040 l_count                     Number;
12041 l_index                     Number;
12042 
12043 
12044 -- Bug 4282618 Begin
12045 CURSOR cur_prog_enabled(c_proj_element_id NUMBER)
12046 IS
12047    SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N')
12048      from pa_task_types ttype
12049      , pa_proj_elements elem
12050     where elem.project_id = p_project_id
12051      and elem.proj_element_id = c_proj_element_id
12052      and elem.object_type = 'PA_TASKS'
12053      and elem.type_id = ttype.task_type_id;
12054 
12055 l_prog_enabled_tbl              PA_PLSQL_DATATYPES.Char1TabTyp;
12056 l_prog_enabled                  VARCHAR2(1);
12057 -- Bug 4282618 End
12058 l_prog_rec_found VARCHAR2(1):='N';      --4600547
12059 
12060 --Bug 5027965
12061 l_etc_cost_calc_mode            VARCHAR2(30);
12062 l_latest_prog_applied_flag      VARCHAR2(1);
12063 l_plan_version_id               pa_budget_versions.budget_version_id%TYPE;
12064 l_curr_workplan_ver_bv_id       pa_budget_versions.budget_version_id%TYPE;
12065 
12066 l_upd_rollup_prog               varchar2(1) := 'N';  --5212999
12067 
12068 --Bug 6499700
12069 l_last_ppc_pub_flag             VARCHAR2(1);
12070 
12071 BEGIN
12072 
12073 -- LOGIAL FLOW OF API: PUBLISH_PROGRESS():
12074 -- ---------------------------------------
12075 --
12076 -- 1). Update current_flag in rollup table to 'N' for old records before inserting published records.
12077 -- 2). Find max(as_of_date) for all progress records for the project.
12078 -- 3). Find the next_progress_cycle date for the max(as_of_date).
12079 -- 4). Insert published progress records with the above next_progress_cycle date as as_of_date.
12080 
12081         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
12082 
12083         IF g1_debug_mode  = 'Y' THEN
12084                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.PUBLISH_PROGRESS');
12085         END IF;
12086 
12087         IF g1_debug_mode  = 'Y' THEN
12088               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'p_project_id : '||p_project_id, x_Log_Level=> 3);
12089         END IF;
12090 
12091         IF (p_commit = FND_API.G_TRUE) THEN
12092                 SAVEPOINT PUBLISH_PROGRESS;
12093         END IF;
12094 
12095         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) THEN
12096                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12097         END IF;
12098 
12099         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
12100                 FND_MSG_PUB.initialize;
12101         END IF;
12102 
12103     x_return_status := FND_API.G_RET_STS_SUCCESS;
12104 
12105     -- Bug 4111107
12106     -- Now it will create Progress records for all objects
12107     -- for which they have progress records for working wp version
12108     -- or for published wp version
12109 
12110     -- We should not be resetting ETC if ETC is overidden in publish wp version.
12111     -- This change will be done later
12112 
12113 
12114         -- Get max(as_of_date) for all progress records for the project.
12115 
12116         OPEN c2(p_project_id);
12117         FETCH c2 INTO l_max_as_of_date;
12118         CLOSE c2;
12119 
12120         IF g1_debug_mode  = 'Y' THEN
12121               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_max_as_of_date='||l_max_as_of_date, x_Log_Level=> 3);
12122         END IF;
12123 
12124         -- Get next_progress_cycle_date for max(as_of_date).
12125 
12126         --- date should not move if it is in future 5226910(5212999)
12127            if (l_max_as_of_date >= trunc(sysdate)) then
12128               l_as_of_date := l_max_as_of_date;
12129               l_upd_rollup_prog := 'Y';
12130            else
12131               l_as_of_date := pa_progress_utils.get_next_progress_cycle(
12132                            p_project_id => p_project_id
12133                            ,p_task_id => null
12134                            ,p_start_date => l_max_as_of_date);
12135 	     l_as_of_date := trunc(l_as_of_date);  -- 5294838
12136            end if;
12137 
12138 
12139     -- On this l_as_of_date, there can be working progress record which we will update
12140     -- with working wp version progress
12141 
12142     l_latest_pub_wp_version_id := p_pub_structure_version_id;--PA_PROJ_ELEMENTS_UTILS.latest_published_ver_id(p_project_id, 'WORKPLAN');
12143         l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --Bug 3801745
12144 
12145         IF g1_debug_mode  = 'Y' THEN
12146               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
12147               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_latest_pub_wp_version_id='||l_latest_pub_wp_version_id, x_Log_Level=> 3);
12148         END IF;
12149 
12150         OPEN cur_proj_prog_attr;
12151         FETCH cur_proj_prog_attr INTO l_task_weight_basis_code;
12152         CLOSE cur_proj_prog_attr;
12153 
12154     -- ETC Changes Begin
12155     l_index := 0;
12156     l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(l_as_of_date);
12157     l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(l_as_of_date);
12158 
12159         -- Bug 4111107 : Delete all Working Progress Records
12160     -- Previously it was getting deleted inside the curosr
12161 
12162     DELETE from pa_percent_completes
12163     where project_id = p_project_id
12164     and structure_type = 'WORKPLAN'
12165     and published_flag = 'N';
12166 
12167     DELETE from pa_progress_rollup
12168     where project_id = p_project_id
12169     and structure_type = 'WORKPLAN'
12170     and structure_version_id is null
12171     and current_flag = 'W';
12172 
12173     --Bug 5027965. If the latest progress is applied on current working version then the ETC cost should be
12174      --copied from the working version. Otherwise, it shoule be derived based on the rate setup on as_of_date
12175      l_latest_prog_applied_flag := pa_progress_utils.check_wwp_prog_publishing_ok(p_project_id            =>p_project_id,
12176                                                                                   p_structure_version_id  =>p_working_str_ver_id);
12177      IF (l_latest_prog_applied_flag = 'Y') THEN
12178 
12179          l_etc_cost_calc_mode := 'COPY';
12180 
12181          SELECT budget_version_id
12182          INTO   l_curr_workplan_ver_bv_id
12183          FROM   pa_budget_versions
12184          WHERE  project_structure_version_id=p_working_str_ver_id;
12185 
12186      ELSE
12187 
12188          l_etc_cost_calc_mode:= 'DERIVE';
12189 
12190      END IF;
12191 
12192         -- Bug 4111107 : Replaced c_get_working_wp_progress to c_get_all_progress
12193     FOR l_rec IN c_get_all_progress LOOP
12194         l_index := l_index+1;
12195         l_eff_rollup_percent_comp := l_rec.eff_rollup_percent_comp; -- 4604661 : Initialize
12196         l_prog_rec_found :='Y'; --4600547
12197             IF g1_debug_mode  = 'Y' THEN
12198             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_id='||l_rec.object_id, x_Log_Level=> 3);
12199             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.proj_element_id='||l_rec.proj_element_id, x_Log_Level=> 3);
12200             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_type='||l_rec.object_type, x_Log_Level=> 3);
12201             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.object_version_id='||l_rec.object_version_id, x_Log_Level=> 3);
12202             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.EFF_ROLLUP_PERCENT_COMP='||l_rec.EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12203             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.COMPLETED_PERCENTAGE='|| l_rec.COMPLETED_PERCENTAGE, x_Log_Level=> 3);
12204         END IF;
12205         -- Bug 4111107 : Now deletion of working record is moved above
12206         -- Check if ppc record is there on max as of date
12207         --l_ppc_rec := null;
12208         --OPEN c_get_ppc_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date);
12209         --FETCH c_get_ppc_rec INTO l_ppc_rec;
12210         --CLOSE c_get_ppc_rec;
12211 
12212         --IF l_ppc_rec.project_id IS NOT NULL THEN
12213               -- If this is found, it means there exists working progress record
12214               -- delete it
12215         --  IF g1_debug_mode  = 'Y' THEN
12216         --      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPC Record Found, Deleting it', x_Log_Level=> 3);
12217         --  END IF;
12218         --    PA_PERCENT_COMPLETES_PKG.DELETE_ROW(l_ppc_rec.rowid);
12219         --END IF;
12220 
12221         l_last_ppc_rec := null;
12222         OPEN c_get_last_ppc_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date,l_rec.cbs_element_id);
12223         FETCH c_get_last_ppc_rec INTO l_last_ppc_rec;
12224         CLOSE c_get_last_ppc_rec;
12225 
12226         --Bug 3956234 : Now rollup record is opened here instead of below in the code.
12227         -- This was required to get the rollup progress status code.
12228 
12229         -- Bug 4111107 : Now deletion of working record is moved above
12230         -- Check if ppr record is there on max as of date
12231         --l_ppr_rec := null;
12232         --OPEN c_get_ppr_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date);
12233         --FETCH c_get_ppr_rec INTO l_ppr_rec;
12234         --CLOSE c_get_ppr_rec;
12235 
12236         --IF l_ppr_rec.project_id IS NOT NULL THEN
12237               -- If this is found, it means there exists working progress record
12238               -- delete it
12239         --  IF g1_debug_mode  = 'Y' THEN
12240         --      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Working PPR Record Found, Deleting it', x_Log_Level=> 3);
12241         --  END IF;
12242         --      PA_PROGRESS_ROLLUP_PKG.DELETE_ROW(l_ppr_rec.rowid);
12243         --END IF;
12244 
12245         l_last_ppr_rec := null;
12246         OPEN c_get_last_ppr_rec(l_rec.project_id, l_rec.object_id, l_rec.proj_element_id, l_rec.object_type, l_as_of_date,l_rec.cbs_element_id);
12247         FETCH c_get_last_ppr_rec INTO l_last_ppr_rec;
12248         CLOSE c_get_last_ppr_rec;
12249 
12250         --Bug 6499700 .For already published records, incremental_work_quantity should not be considered.
12251         BEGIN
12252             SELECT published_flag
12253             INTO   l_last_ppc_pub_flag
12254             FROM   pa_percent_completes
12255             WHERE  percent_complete_id=l_last_ppr_rec.percent_complete_id;
12256         EXCEPTION
12257         WHEN NO_DATA_FOUND THEN
12258             l_last_ppc_pub_flag:='N';
12259         END;
12260 
12261         IF l_last_ppc_pub_flag='Y' THEN
12262             l_last_ppr_rec.incremental_work_quantity:=to_number(null);
12263         END IF;
12264         --End of fix for bug Bug 6499700
12265 
12266         l_object_version_id := null;
12267         l_progress_status_code := null;
12268         l_actual_start_date := null;
12269         l_actual_finish_date := null;
12270         l_estimated_start_date := null;
12271         l_estimated_finish_date := null;
12272         l_task_status := null;
12273         l_percent_complete_id := null;
12274 
12275         -- Bug 4398411 : Added object_type in following cursor
12276         OPEN c_get_work_obj_ver_id(l_rec.proj_element_id, l_latest_pub_wp_version_id, l_rec.object_type);
12277         FETCH c_get_work_obj_ver_id INTO l_object_version_id;
12278         CLOSE c_get_work_obj_ver_id;
12279 
12280         IF l_last_ppc_rec.progress_status_code IS NOT NULL THEN
12281             l_progress_status_code := l_last_ppc_rec.progress_status_code;
12282         --Bug 3956234 : Introduced rollup status code below.
12283         ELSIF NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code) IS NOT NULL THEN
12284             l_progress_status_code := NVL(l_last_ppr_rec.progress_status_code, l_last_ppr_rec.eff_rollup_prog_stat_code);
12285         ELSE
12286             OPEN c_get_progress_status(l_rec.proj_element_id);
12287             FETCH c_get_progress_status INTO l_progress_status_code;
12288             CLOSE c_get_progress_status;
12289         END IF;
12290 
12291         l_estimated_start_date := l_rec.estimated_start_date;
12292         l_estimated_finish_date := l_rec.estimated_finish_date;
12293 
12294         l_actual_start_date := l_rec.actual_start_date;
12295         l_actual_finish_date := l_rec.actual_finish_date;
12296 
12297         -- Bug 3865516 : l_rec.completed_percentage and l_rec.EFF_ROLLUP_PERCENT_COMP shd not have OR
12298         -- it shd be NVL
12299         IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) > 0 AND  l_actual_start_date IS null) THEN
12300             OPEN c_get_sch_dates(p_project_id, l_rec.object_version_id);
12301             FETCH c_get_sch_dates INTO l_scheduled_start_date, l_scheduled_finish_date;
12302             CLOSE c_get_sch_dates;
12303             l_actual_start_date := nvl(l_estimated_start_date,l_scheduled_start_date);
12304         END IF;
12305 
12306         IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100 AND l_actual_finish_date IS null) THEN
12307             l_actual_finish_date := nvl(l_estimated_finish_date,l_scheduled_finish_date);
12308         END IF;
12309         -- Bug 3865516 Begin
12310         IF l_rec.object_type = 'PA_TASKS' THEN
12311             IF l_last_ppc_rec.status_code IS NOT NULL THEN
12312                 l_task_status := l_last_ppc_rec.status_code;
12313             ELSE
12314                 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
12315                 FETCH c_get_task_status INTO l_task_status;
12316                 CLOSE c_get_task_status;
12317             END IF;
12318             l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status);
12319 
12320             IF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) = 100  AND l_system_status_code <> 'COMPLETED')
12321             THEN
12322                 l_task_status := '127';
12323             ELSIF (NVL(l_rec.completed_percentage,l_rec.EFF_ROLLUP_PERCENT_COMP) > 0 AND (l_system_status_code = 'NOT_STARTED' OR l_system_status_code IS NULL OR l_system_status_code = ''))
12324             THEN
12325                 l_task_status := '125';
12326             END IF;
12327         -- Bug 3865516 End
12328         -- Bug 4343997 rtarway Begin
12329         ELSIF l_rec.object_type = 'PA_DELIVERABLES' THEN
12330             IF l_last_ppc_rec.status_code IS NOT NULL THEN
12331                 l_task_status := l_last_ppc_rec.status_code;
12332             ELSE
12333                 OPEN c_get_task_status(p_project_id,l_rec.proj_element_id);
12334                 FETCH c_get_task_status INTO l_task_status;
12335                 CLOSE c_get_task_status;
12336             END IF;
12337             l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status(l_task_status,'PA_DELIVERABLES');
12338         END IF;
12339         -- Bug 4343997 rtarway End
12340 
12341             IF g1_debug_mode  = 'Y' THEN
12342             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_version_id='||l_object_version_id, x_Log_Level=> 3);
12343             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_last_ppc_rec.progress_status_code='||l_last_ppc_rec.progress_status_code, x_Log_Level=> 3);
12344             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
12345             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
12346             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
12347             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
12348             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.actual_start_date='||l_rec.actual_start_date, x_Log_Level=> 3);
12349             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
12350             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.actual_finish_date='||l_rec.actual_finish_date, x_Log_Level=> 3);
12351             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
12352             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_task_status='||l_task_status, x_Log_Level=> 3);
12353         END IF;
12354 
12355 
12356         l_task_id_tbl(l_index)          := l_rec.proj_element_id;
12357         l_completed_percentage_tbl(l_index) := l_rec.completed_percentage;
12358         l_project_id_tbl(l_index)       := l_rec.project_id;
12359         l_object_type_tbl(l_index)      := l_rec.object_type;
12360         l_object_id_tbl(l_index)                := l_rec.object_id;
12361 		 l_cbs_element_id_tbl(l_index)                := l_rec.cbs_element_Id;
12362 --      l_object_version_id_tbl(l_index)        := l_rec.object_version_id; Bug 4227280
12363         l_object_version_id_tbl(l_index)        := l_object_version_id; -- Bug 4227280
12364         l_progress_status_code_tbl(l_index) := l_progress_status_code;
12365         l_act_start_date_tbl(l_index)       := l_actual_start_date;
12366         l_act_finish_date_tbl(l_index)      := l_actual_finish_date;
12367         l_est_start_date_tbl(l_index)       := l_estimated_start_date;
12368         l_est_finish_date_tbl(l_index)      := l_estimated_finish_date;
12369         l_task_status_code_tbl(l_index)     := l_task_status;
12370         l_earned_value_tbl(l_index)     := l_rec.earned_value;
12371         l_base_per_comp_deriv_code_tbl(l_index) := l_last_ppr_rec.BASE_PERCENT_COMP_DERIV_CODE;
12372         l_base_perc_comp_tbl(l_index)           := l_rec.base_percent_complete; -- 4604661
12373         l_description(l_index) := l_last_ppc_rec.description;
12374         l_progress_comment.extend(1);
12375         l_progress_comment(l_index) := l_last_ppc_rec.progress_comment;
12376 
12377         -- Bug 4282618 Begin
12378         l_prog_enabled := 'Y';
12379         OPEN cur_prog_enabled(l_rec.proj_element_id);
12380         FETCH cur_prog_enabled INTO l_prog_enabled;
12381         CLOSE cur_prog_enabled;
12382 
12383         l_prog_enabled_tbl(l_index)     := l_prog_enabled;
12384                 -- Bug 4282618 End
12385 
12386 
12387         l_oth_etc_quantity := null;
12388         l_oth_etc_cost_tc := null;
12389         l_oth_etc_cost_pc := null;
12390         l_oth_etc_cost_fc := null;
12391         l_oth_etc_rawcost_tc := null;
12392         l_oth_etc_rawcost_pc := null;
12393         l_oth_etc_rawcost_fc := null;
12394         l_estimated_remaining_effort := null;
12395         l_ppl_etc_cost_tc := null;
12396         l_ppl_etc_cost_pc := null;
12397         l_ppl_etc_cost_fc := null;
12398         l_ppl_etc_rawcost_tc := null;
12399         l_ppl_etc_rawcost_pc := null;
12400         l_ppl_etc_rawcost_fc := null;
12401         l_eqpmt_etc_effort := null;
12402         l_eqpmt_etc_cost_tc := null;
12403         l_eqpmt_etc_cost_pc := null;
12404         l_eqpmt_etc_cost_fc := null;
12405         l_eqpmt_etc_rawcost_tc := null;
12406         l_eqpmt_etc_rawcost_pc := null;
12407         l_eqpmt_etc_rawcost_fc := null;
12408 
12409 
12410         -- We need to derive ETC as new planned-actual for assignments and lowest tasks which do not have assignments
12411         -- For summary level rollup API will take care
12412 
12413         IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
12414             l_ptav_rec := null;
12415             OPEN c_ptav_cur(p_project_id, l_rec.object_id, l_rec.proj_element_id, l_object_version_id, l_latest_pub_wp_version_id, 'Y',l_rec.cbs_element_id);
12416             FETCH c_ptav_cur INTO l_ptav_rec;
12417             CLOSE c_ptav_cur;
12418 
12419             IF g1_debug_mode  = 'Y' THEN
12420                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur', x_Log_Level=> 3);
12421                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.resource_class_cod='||l_ptav_rec.resource_class_code, x_Log_Level=> 3);
12422                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_quantity='||l_ptav_rec.planned_quantity, x_Log_Level=> 3);
12423                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_bur_cost_txn_cur='||l_ptav_rec.planned_bur_cost_txn_cur, x_Log_Level=> 3);
12424                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_proj_cur='||l_ptav_rec.planned_bur_cost_proj_cur, x_Log_Level=> 3);
12425                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_projfunc='||l_ptav_rec.planned_bur_cost_projfunc, x_Log_Level=> 3);
12426                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_txn_cur='||l_ptav_rec.planned_raw_cost_txn_cur, x_Log_Level=> 3);
12427                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_proj_cur='||l_ptav_rec.planned_raw_cost_proj_cur, x_Log_Level=> 3);
12428                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_projfunc='||l_ptav_rec.planned_raw_cost_projfunc, x_Log_Level=> 3);
12429                 END IF;
12430 
12431             IF l_ptav_rec.resource_class_code = 'FINANCIAL_ELEMENTS' THEN
12432                 --5726773
12433        --adding the below code for Bug 7185549
12434             l_oth_etc_quantity := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(NVL(l_ptav_rec.planned_quantity,0),NVL(l_last_ppr_rec.oth_quantity_to_date,0));
12435 
12436 	        /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
12437                 IF l_oth_etc_quantity < 0 THEN
12438                     l_oth_etc_quantity := 0;
12439                 END IF; */
12440             ELSIF l_ptav_rec.resource_class_code = 'MATERIAL_ITEMS' THEN
12441                 --5726773
12442  	        l_oth_etc_quantity := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.oth_quantity_to_date);
12443  	        /* 5726773 l_oth_etc_quantity := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.oth_quantity_to_date,0);
12444                 IF l_oth_etc_quantity < 0 THEN
12445                     l_oth_etc_quantity := 0;
12446                 END IF; */
12447             ELSIF l_ptav_rec.resource_class_code = 'PEOPLE' THEN
12448                 --5726773
12449  	        l_estimated_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.ppl_act_effort_to_date);
12450  	        /*5726773 l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
12451                 IF l_estimated_remaining_effort < 0 THEN
12452                     l_estimated_remaining_effort := 0;
12453                 END IF; */
12454             ELSIF l_ptav_rec.resource_class_code = 'EQUIPMENT' THEN
12455                 --5726773
12456  	        l_eqpmt_etc_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_ptav_rec.planned_quantity,l_last_ppr_rec.eqpmt_act_effort_to_date);
12457  	        /* 5726773        l_eqpmt_etc_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.eqpmt_act_effort_to_date,0);
12458                 IF l_eqpmt_etc_effort < 0 THEN
12459                     l_eqpmt_etc_effort := 0;
12460                 END IF; */
12461             END IF;
12462                         l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;  --bug 3906362
12463                 --bug 4191360, consider for lowest level task only
12464         --ELSIF l_rec.object_type = 'PA_TASKS' AND NVL(PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_object_version_id,l_rec.object_type),'N') = 'N' THEN
12465         ELSIF l_rec.object_type = 'PA_TASKS' AND NVL(pa_proj_elements_utils.is_lowest_task(l_object_version_id),'N') = 'Y' THEN
12466             l_ptav_rec := null;
12467             --bug 4191360, added IF NVL(l_assignment_exists, 'N')
12468             l_assignment_exists := PA_PROGRESS_UTILS.check_assignment_exists(p_project_id,l_object_version_id,l_rec.object_type);
12469             IF NVL(l_assignment_exists, 'N') = 'N'
12470             THEN
12471                 OPEN c_ptav_cur_task(p_project_id, l_rec.object_id, l_rec.proj_element_id, l_object_version_id, l_latest_pub_wp_version_id, 'N',l_rec.cbs_element_id);
12472                 FETCH c_ptav_cur_task INTO l_ptav_rec;
12473                 CLOSE c_ptav_cur_task;
12474 
12475                 IF g1_debug_mode  = 'Y' THEN
12476                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After openign cursor c_ptav_cur_task', x_Log_Level=> 3);
12477                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.resource_class_cod='||l_ptav_rec.resource_class_code, x_Log_Level=> 3);
12478                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_quantity='||l_ptav_rec.planned_quantity, x_Log_Level=> 3);
12479                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_bur_cost_txn_cur='||l_ptav_rec.planned_bur_cost_txn_cur, x_Log_Level=> 3);
12480                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_proj_cur='||l_ptav_rec.planned_bur_cost_proj_cur, x_Log_Level=> 3);
12481                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.l_ptav_rec.planned_bur_cost_projfunc='||l_ptav_rec.planned_bur_cost_projfunc, x_Log_Level=> 3);
12482                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_txn_cur='||l_ptav_rec.planned_raw_cost_txn_cur, x_Log_Level=> 3);
12483                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_proj_cur='||l_ptav_rec.planned_raw_cost_proj_cur, x_Log_Level=> 3);
12484                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ptav_rec.planned_raw_cost_projfunc='||l_ptav_rec.planned_raw_cost_projfunc, x_Log_Level=> 3);
12485                 END IF;
12486 
12487                 /*l_estimated_remaining_effort := nvl(l_ptav_rec.planned_quantity,0)-nvl(l_last_ppr_rec.ppl_act_effort_to_date,0);
12488                 IF l_estimated_remaining_effort < 0 THEN
12489                     l_estimated_remaining_effort := 0;
12490                 END IF; */
12491               -- Commented above and added below for Bug# 6713712
12492               -- Used PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act to calculate
12493               -- l_estimated_remaining_effort.
12494               l_estimated_remaining_effort := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(NVL(l_ptav_rec.planned_quantity,0),NVL(l_last_ppr_rec.ppl_act_effort_to_date,0));
12495             END IF;
12496             --bug 3906362
12497 
12498             l_BASE_PERCENT_COMP_DERIV_CODE := null;
12499 
12500                         OPEN cur_proj_elements(l_rec.object_id);
12501                         FETCH cur_proj_elements INTO l_BASE_PERCENT_COMP_DERIV_CODE;
12502                         CLOSE cur_proj_elements;
12503 
12504             l_base_per_comp_deriv_code_tbl(l_index) := l_BASE_PERCENT_COMP_DERIV_CODE;
12505 
12506                         IF g1_debug_mode  = 'Y' THEN
12507                           pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Re-derive percent complete at lowest task level', x_Log_Level=> 3);
12508                           pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_BASE_PERCENT_COMP_DERIV_CODE='||l_BASE_PERCENT_COMP_DERIV_CODE, x_Log_Level=> 3);
12509                         END IF;
12510 
12511                         --bug 4191360, rederive rollup percent only if %complete derv. code has changed
12512             IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12513             OR l_estimated_remaining_effort <> l_last_ppr_rec.estimated_remaining_effort -- Bug 4111107 : this should be done when ETC changes too
12514 	    OR l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED' -- 4617909
12515             THEN
12516                 --bug 4191360, for lowest level task calculate percent complete if der code is WQ based, irrespective of assignment
12517                 IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12518                 THEN
12519                      l_EFF_ROLLUP_PERCENT_COMP :=  PA_PROGRESS_UTILS.Calc_base_percent(
12520                               p_task_id              => l_rec.object_id
12521                         --4617909     ,p_incr_work_qty        => l_rec.INCREMENTAL_WORK_QUANTITY
12522                         --4617909      ,p_cuml_work_qty        => l_rec.CUMULATIVE_WORK_QUANTITY
12523 			-- Using l_last_ppr_rec values as working ver progress might be old
12524                             ,p_incr_work_qty        => l_last_ppr_rec.INCREMENTAL_WORK_QUANTITY
12525                             ,p_cuml_work_qty        => l_last_ppr_rec.CUMULATIVE_WORK_QUANTITY
12526                              ,p_est_remaining_effort => null
12527                                      );
12528                      IF g1_debug_mode  = 'Y' THEN
12529                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12530                      END IF;
12531                 --for lowest level task calc percent complete if assignment doesnt exist
12532                 ELSIF NVL(l_assignment_exists, 'N') = 'N' THEN
12533                     l_planned_effort := null;
12534                     l_planned_cost := null;
12535                     IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12536                     THEN
12537                         --bug 4191360, get the planned directly from cursor c_ptav_cur_task
12538                         /*IF l_rec.estimated_remaining_effort IS NULL
12539                         THEN
12540                         OPEN cur_task_plan(l_rec.object_id);
12541                         FETCH cur_task_plan INTO l_planned_effort;
12542                         CLOSE cur_task_plan;
12543                         END IF;
12544                         l_planned_effort := nvl( l_rec.PPL_ACT_EFFORT_TO_DATE,0) + nvl(l_rec.estimated_remaining_effort,nvl(l_planned_effort,0)-nvl( l_rec.PPL_ACT_EFFORT_TO_DATE,0));*/
12545                         l_planned_effort := l_ptav_rec.planned_quantity;
12546                         IF l_planned_effort = 0 OR l_planned_effort IS NULL
12547                         THEN
12548                            l_planned_effort := 1;
12549                         END iF;
12550                         l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_rec.PPL_ACT_EFFORT_TO_DATE,0)/l_planned_effort)*100,8); --Bug 6854114
12551                         IF g1_debug_mode  = 'Y' THEN
12552                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.PPL_ACT_EFFORT_TO_DATE='||l_rec.PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
12553                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_rec.estimated_remaining_effort='||l_rec.estimated_remaining_effort, x_Log_Level=> 3);
12554                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_planned_effort='||l_planned_effort, x_Log_Level=> 3);
12555                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12556                         END IF;
12557                     --bug 4191360, consider cost as well
12558                     ELSIF l_BASE_PERCENT_COMP_DERIV_CODE in('COST')
12559                     THEN
12560                         --bug 4191360, get the planned cost directly from cursor c_ptav_cur_task
12561                         /*IF l_rec.PPL_ETC_COST_PC IS NULL
12562                         THEN
12563                         OPEN cur_task_plan_cost(l_rec.object_id);
12564                         FETCH cur_task_plan_cost INTO l_planned_cost;
12565                         CLOSE cur_task_plan_cost;
12566                         END IF;
12567                         l_planned_cost := nvl( l_rec.PPL_ACT_COST_TO_DATE_PC,0) + nvl(l_rec.PPL_ETC_COST_PC,nvl(l_planned_cost,0)-nvl( l_rec.PPL_ACT_COST_TO_DATE_PC,0));*/
12568                         l_planned_cost := l_ptav_rec.planned_bur_cost_proj_cur;
12569                         IF l_planned_cost = 0 OR l_planned_cost IS NULL
12570                         THEN
12571                            l_planned_cost := 1;
12572                         END iF;
12573                         l_EFF_ROLLUP_PERCENT_COMP :=  round((nvl(l_rec.PPL_ACT_COST_TO_DATE_PC,0)/l_planned_cost)*100,8); --Bug 6854114
12574                                         ELSE
12575                                             l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12576                     END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE in( 'EFFORT')
12577                  --bug 4191360, moved this code above
12578                  /*ELSIF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12579                  THEN
12580                      l_EFF_ROLLUP_PERCENT_COMP :=  PA_PROGRESS_UTILS.Calc_base_percent(
12581                               p_task_id              => l_rec.object_id
12582                              ,p_incr_work_qty        => l_rec.INCREMENTAL_WORK_QUANTITY
12583                              ,p_cuml_work_qty        => l_rec.CUMULATIVE_WORK_QUANTITY
12584                              ,p_est_remaining_effort => null
12585                                      );
12586                      IF g1_debug_mode  = 'Y' THEN
12587                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_EFF_ROLLUP_PERCENT_COMP='||l_EFF_ROLLUP_PERCENT_COMP, x_Log_Level=> 3);
12588                      END IF;*/
12589                   ELSE
12590                      l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12591                   END IF; -- IF l_BASE_PERCENT_COMP_DERIV_CODE = 'WQ_DERIVED'
12592             ELSE
12593                 l_EFF_ROLLUP_PERCENT_COMP := l_rec.eff_rollup_percent_comp;
12594             END IF;  -- IF NVL(l_rec.BASE_PERCENT_COMP_DERIV_CODE,'N') <> l_BASE_PERCENT_COMP_DERIV_CODE
12595             --bug 3906362
12596         END IF; -- IF l_rec.object_type = 'PA_ASSIGNMENTS' THEN
12597 
12598         IF g1_debug_mode  = 'Y' THEN
12599             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'Before Costing out ETC', x_Log_Level=> 3);
12600             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12601             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12602             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12603         END IF;
12604 
12605         IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN -- Bug 3801745
12606                 l_ppl_etc_cost_tc := null;
12607                 l_ppl_etc_cost_fc := null;
12608                 l_ppl_etc_cost_pc := null;
12609                 l_ppl_etc_rawcost_tc := null;
12610                 l_ppl_etc_rawcost_fc := null;
12611                 l_ppl_etc_rawcost_pc := null;
12612                 l_eqpmt_etc_cost_tc := null;
12613                 l_eqpmt_etc_cost_fc := null;
12614                 l_eqpmt_etc_cost_pc := null;
12615                 l_eqpmt_etc_rawcost_tc := null;
12616                 l_eqpmt_etc_rawcost_fc := null;
12617                 l_eqpmt_etc_rawcost_pc := null;
12618                 l_oth_etc_cost_tc := null;
12619                 l_oth_etc_cost_fc := null;
12620                 l_oth_etc_cost_pc := null;
12621                 l_oth_etc_rawcost_tc := null;
12622                 l_oth_etc_rawcost_fc := null;
12623                 l_oth_etc_rawcost_pc := null;
12624         ELSE -- ETC Changes : Costing out ETC always
12625             IF l_oth_etc_quantity IS NOT NULL THEN
12626                 IF l_oth_etc_quantity = 0 THEN
12627                     l_oth_etc_cost_tc := 0;
12628                     l_oth_etc_cost_fc := 0;
12629                     l_oth_etc_cost_pc := 0;
12630                     l_oth_etc_rawcost_tc := 0;
12631                     l_oth_etc_rawcost_fc := 0;
12632                     l_oth_etc_rawcost_pc := 0;
12633                 ELSE
12634                     --Bug 5027965.
12635                     IF l_etc_cost_calc_mode ='COPY' THEN
12636                         l_plan_version_id := l_curr_workplan_ver_bv_id;
12637                     ELSE
12638                         l_plan_version_id := l_ptav_rec.budget_version_id;
12639                     END IF;
12640                     pa_progress_utils.get_plan_costs_for_qty
12641                         ( p_etc_cost_calc_mode     => l_etc_cost_calc_mode --Bug 5027965
12642                           ,p_resource_list_mem_id    => l_ptav_rec.resource_list_member_id
12643                           ,p_project_id         => p_project_id
12644                           ,p_task_id            => l_rec.proj_element_id
12645                           ,p_as_of_date         => l_as_of_date
12646                           ,p_structure_version_id       => l_latest_pub_wp_version_id
12647                           ,p_txn_currency_code          => l_ptav_rec.txn_currency_code
12648                           ,p_rate_based_flag            => l_ptav_rec.rate_based_flag
12649                           ,p_quantity                   => l_oth_etc_quantity
12650                           ,p_budget_version_id          => l_plan_version_id ---5027965 ---4372462
12651                           ,p_res_assignment_id          => l_ptav_rec.resource_assignment_id
12652                           ,x_rawcost_tc                 => l_oth_etc_rawcost_tc
12653                           ,x_brdncost_tc                => l_oth_etc_cost_tc
12654                           ,x_rawcost_pc                 => l_oth_etc_rawcost_pc
12655                           ,x_brdncost_pc                => l_oth_etc_cost_pc
12656                           ,x_rawcost_fc                 => l_oth_etc_rawcost_fc
12657                           ,x_brdncost_fc                => l_oth_etc_cost_fc
12658                           ,x_return_status      => x_return_status
12659                           ,x_msg_count          => x_msg_count
12660                           ,x_msg_data           => x_msg_data
12661                         );
12662                     IF x_return_status <> 'S' THEN
12663                         raise FND_API.G_EXC_ERROR;
12664                     END IF;
12665                 END IF;
12666             ELSIF l_estimated_remaining_effort IS NOT NULL THEN
12667                 IF l_estimated_remaining_effort = 0 THEN
12668                     l_ppl_etc_cost_tc := 0;
12669                     l_ppl_etc_cost_fc := 0;
12670                     l_ppl_etc_cost_pc := 0;
12671                     l_ppl_etc_rawcost_tc := 0;
12672                     l_ppl_etc_rawcost_fc := 0;
12673                     l_ppl_etc_rawcost_pc := 0;
12674                 ELSE
12675                     --Bug 5027965.
12676                     IF l_etc_cost_calc_mode ='COPY' THEN
12677                         l_plan_version_id := l_curr_workplan_ver_bv_id;
12678                     ELSE
12679                         l_plan_version_id := l_ptav_rec.budget_version_id;
12680                     END IF;
12681                     pa_progress_utils.get_plan_costs_for_qty
12682                         ( p_etc_cost_calc_mode     => l_etc_cost_calc_mode --Bug 5027965
12683                           ,p_resource_list_mem_id    => l_ptav_rec.resource_list_member_id
12684                           ,p_project_id         => p_project_id
12685                           ,p_task_id            => l_rec.proj_element_id
12686                           ,p_as_of_date         => l_as_of_date
12687                           ,p_structure_version_id       => l_latest_pub_wp_version_id
12688                           ,p_txn_currency_code          => l_ptav_rec.txn_currency_code
12689                           ,p_rate_based_flag            => l_ptav_rec.rate_based_flag
12690                           ,p_quantity                   => l_estimated_remaining_effort
12691                           ,p_budget_version_id          => l_plan_version_id   ---4372462 --Bug 5027965
12692                           ,p_res_assignment_id          => l_ptav_rec.resource_assignment_id
12693                           ,x_rawcost_tc                 => l_ppl_etc_rawcost_tc
12694                           ,x_brdncost_tc                => l_ppl_etc_cost_tc
12695                           ,x_rawcost_pc                 => l_ppl_etc_rawcost_pc
12696                           ,x_brdncost_pc                => l_ppl_etc_cost_pc
12697                           ,x_rawcost_fc                 => l_ppl_etc_rawcost_fc
12698                           ,x_brdncost_fc                => l_ppl_etc_cost_fc
12699                           ,x_return_status      => x_return_status
12700                           ,x_msg_count          => x_msg_count
12701                           ,x_msg_data           => x_msg_data
12702                         );
12703                     IF x_return_status <> 'S' THEN
12704                         raise FND_API.G_EXC_ERROR;
12705                     END IF;
12706                 END IF;
12707             ELSIF l_eqpmt_etc_effort IS NOT NULL THEN
12708                 IF l_eqpmt_etc_effort = 0 THEN
12709                     l_eqpmt_etc_cost_tc := 0;
12710                     l_eqpmt_etc_cost_fc := 0;
12711                     l_eqpmt_etc_cost_pc := 0;
12712                     l_eqpmt_etc_rawcost_tc := 0;
12713                     l_eqpmt_etc_rawcost_fc := 0;
12714                     l_eqpmt_etc_rawcost_pc := 0;
12715                 ELSE
12716                     --Bug 5027965.
12717                     IF l_etc_cost_calc_mode ='COPY' THEN
12718                         l_plan_version_id := l_curr_workplan_ver_bv_id;
12719                     ELSE
12720                         l_plan_version_id := l_ptav_rec.budget_version_id;
12721                     END IF;
12722                     pa_progress_utils.get_plan_costs_for_qty
12723                         ( p_etc_cost_calc_mode     => l_etc_cost_calc_mode --Bug 5027965
12724                           ,p_resource_list_mem_id    => l_ptav_rec.resource_list_member_id
12725                           ,p_project_id         => p_project_id
12726                           ,p_task_id            => l_rec.proj_element_id
12727                           ,p_as_of_date         => l_as_of_date
12728                           ,p_structure_version_id       => l_latest_pub_wp_version_id
12729                           ,p_txn_currency_code          => l_ptav_rec.txn_currency_code
12730                           ,p_rate_based_flag            => l_ptav_rec.rate_based_flag
12731                           ,p_quantity                   => l_eqpmt_etc_effort
12732                           ,p_budget_version_id          => l_plan_version_id   ---4372462 --Bug 5027965
12733                           ,p_res_assignment_id          => l_ptav_rec.resource_assignment_id
12734                           ,x_rawcost_tc                 => l_eqpmt_etc_rawcost_tc
12735                           ,x_brdncost_tc                => l_eqpmt_etc_cost_tc
12736                           ,x_rawcost_pc                 => l_eqpmt_etc_rawcost_pc
12737                           ,x_brdncost_pc                => l_eqpmt_etc_cost_pc
12738                           ,x_rawcost_fc                 => l_eqpmt_etc_rawcost_fc
12739                           ,x_brdncost_fc                => l_eqpmt_etc_cost_fc
12740                           ,x_return_status      => x_return_status
12741                           ,x_msg_count          => x_msg_count
12742                           ,x_msg_data           => x_msg_data
12743                         );
12744                     IF x_return_status <> 'S' THEN
12745                         raise FND_API.G_EXC_ERROR;
12746                     END IF;
12747                 END IF;
12748             END IF;
12749         END IF;
12750 
12751         IF g1_debug_mode  = 'Y' THEN
12752             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After Costing out ETC', x_Log_Level=> 3);
12753             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_quantity='||l_oth_etc_quantity, x_Log_Level=> 3);
12754             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_tc='||l_oth_etc_cost_tc, x_Log_Level=> 3);
12755             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_pc='||l_oth_etc_cost_pc, x_Log_Level=> 3);
12756             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_cost_fc='||l_oth_etc_cost_fc, x_Log_Level=> 3);
12757             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_tc='||l_oth_etc_rawcost_tc, x_Log_Level=> 3);
12758             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_pc='||l_oth_etc_rawcost_pc, x_Log_Level=> 3);
12759             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_oth_etc_rawcost_fc='||l_oth_etc_rawcost_fc, x_Log_Level=> 3);
12760             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_estimated_remaining_effort='||l_estimated_remaining_effort, x_Log_Level=> 3);
12761             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_tc='||l_ppl_etc_cost_tc, x_Log_Level=> 3);
12762             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_pc='||l_ppl_etc_cost_pc, x_Log_Level=> 3);
12763             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_cost_fc='||l_ppl_etc_cost_fc, x_Log_Level=> 3);
12764             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_tc='||l_ppl_etc_rawcost_tc, x_Log_Level=> 3);
12765             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_pc='||l_ppl_etc_rawcost_pc, x_Log_Level=> 3);
12766             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_ppl_etc_rawcost_fc='||l_ppl_etc_rawcost_fc, x_Log_Level=> 3);
12767             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_effort='||l_eqpmt_etc_effort, x_Log_Level=> 3);
12768             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_tc='||l_eqpmt_etc_cost_tc, x_Log_Level=> 3);
12769             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_pc='||l_eqpmt_etc_cost_pc, x_Log_Level=> 3);
12770             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_cost_fc='||l_eqpmt_etc_cost_fc, x_Log_Level=> 3);
12771             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_tc='||l_eqpmt_etc_rawcost_tc, x_Log_Level=> 3);
12772             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_pc='||l_eqpmt_etc_rawcost_pc, x_Log_Level=> 3);
12773             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eqpmt_etc_rawcost_fc='||l_eqpmt_etc_rawcost_fc, x_Log_Level=> 3);
12774         END IF;
12775 
12776         l_incr_work_quantity_tbl(l_index)       := l_last_ppr_rec.INCREMENTAL_WORK_Quantity;
12777         l_cumu_work_quantity_tbl(l_index)       := l_last_ppr_rec.CUMULATIVE_WORK_Quantity;
12778         l_eff_rollup_percent_comp_tbl(l_index)      := l_EFF_ROLLUP_PERCENT_COMP;
12779 
12780         l_base_prog_status_code_tbl(l_index)        := l_last_ppr_rec.BASE_PROGRESS_STATUS_CODE;
12781         l_eff_roll_prog_stat_code_tbl(l_index)      := l_last_ppr_rec.EFF_ROLLUP_PROG_STAT_CODE;
12782 
12783         l_ppl_act_effort_to_date_tbl(l_index)       := l_last_ppr_rec.PPL_ACT_EFFORT_TO_DATE;
12784         l_PPL_ACT_COST_TO_DATE_TC_tbl(l_index)      := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_TC;
12785         l_PPL_ACT_COST_TO_DATE_FC_tbl(l_index)      := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_FC;
12786         l_PPL_ACT_COST_TO_DATE_PC_tbl(l_index)      := l_last_ppr_rec.PPL_ACT_COST_TO_DATE_PC;
12787         l_ppl_act_raw_to_date_tc_tbl(l_index)       := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_TC;
12788         l_ppl_act_raw_to_date_fc_tbl(l_index)       := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
12789         l_ppl_act_raw_to_date_pc_tbl(l_index)       := l_last_ppr_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
12790 
12791         l_est_remaining_effort_tbl(l_index)     := l_estimated_remaining_effort;
12792         l_ppl_etc_cost_tc_tbl(l_index)          := l_ppl_etc_cost_tc;
12793         l_ppl_etc_cost_fc_tbl(l_index)          := l_ppl_etc_cost_fc;
12794         l_ppl_etc_cost_pc_tbl(l_index)          := l_ppl_etc_cost_pc;
12795         l_ppl_etc_rawcost_tc_tbl(l_index)       := l_ppl_etc_rawcost_tc;
12796         l_ppl_etc_rawcost_fc_tbl(l_index)       := l_ppl_etc_rawcost_fc;
12797         l_ppl_etc_rawcost_pc_tbl(l_index)       := l_ppl_etc_rawcost_pc;
12798 
12799         l_eqpmt_act_effort_to_date_tbl(l_index)     := l_last_ppr_rec.EQPMT_ACT_EFFORT_TO_DATE;
12800         l_eqp_act_cost_to_date_tc_tbl(l_index)      := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_TC;
12801         l_eqp_act_cost_to_date_fc_tbl(l_index)      := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_FC;
12802         l_eqp_act_cost_to_date_pc_tbl(l_index)      := l_last_ppr_rec.EQPMT_ACT_COST_TO_DATE_PC;
12803         l_eqpmt_act_raw_to_date_tc_tbl(l_index)     := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC;
12804         l_eqpmt_act_raw_to_date_fc_tbl(l_index)     := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
12805         l_eqpmt_act_raw_to_date_pc_tbl(l_index)     := l_last_ppr_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
12806 
12807         l_eqpmt_etc_effort_tbl(l_index)         := l_eqpmt_etc_effort;
12808         l_eqpmt_etc_cost_tc_tbl(l_index)        := l_eqpmt_etc_cost_tc;
12809         l_eqpmt_etc_cost_fc_tbl(l_index)        := l_eqpmt_etc_cost_fc;
12810         l_eqpmt_etc_cost_pc_tbl(l_index)        := l_eqpmt_etc_cost_pc;
12811         l_eqpmt_etc_rawcost_tc_tbl(l_index)     := l_eqpmt_etc_rawcost_tc;
12812         l_eqpmt_etc_rawcost_fc_tbl(l_index)     := l_eqpmt_etc_rawcost_fc;
12813         l_eqpmt_etc_rawcost_pc_tbl(l_index)     := l_eqpmt_etc_rawcost_pc;
12814 
12815         l_oth_quantity_to_date_tbl(l_index)     := l_last_ppr_rec.oth_quantity_to_date;
12816         l_OTH_ACT_COST_TO_DATE_TC_tbl(l_index)      := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_TC;
12817         l_OTH_ACT_COST_TO_DATE_FC_tbl(l_index)      := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_FC;
12818         l_OTH_ACT_COST_TO_DATE_PC_tbl(l_index)      := l_last_ppr_rec.OTH_ACT_COST_TO_DATE_PC;
12819         l_oth_act_raw_to_date_tc_tbl(l_index)       := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_TC;
12820         l_oth_act_raw_to_date_fc_tbl(l_index)       := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
12821         l_oth_act_raw_to_date_pc_tbl(l_index)       := l_last_ppr_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
12822 
12823         l_oth_etc_quantity_tbl(l_index)         := l_oth_etc_quantity;
12824         l_oth_etc_cost_tc_tbl(l_index)          := l_oth_etc_cost_tc;
12825         l_oth_etc_cost_fc_tbl(l_index)          := l_oth_etc_cost_fc;
12826         l_oth_etc_cost_pc_tbl(l_index)          := l_oth_etc_cost_pc;
12827         l_oth_etc_rawcost_tc_tbl(l_index)       := l_oth_etc_rawcost_tc;
12828         l_oth_etc_rawcost_fc_tbl(l_index)       := l_oth_etc_rawcost_fc;
12829         l_oth_etc_rawcost_pc_tbl(l_index)       := l_oth_etc_rawcost_pc;
12830 
12831         l_PROJFUNC_COST_RATE_TYPE_tbl(l_index)      := l_last_ppr_rec.PROJFUNC_COST_RATE_TYPE;
12832         l_projfunc_cost_exc_rate_tbl(l_index)       := l_last_ppr_rec.PROJFUNC_COST_EXCHANGE_RATE;
12833         l_PROJFUNC_COST_RATE_DATE_tbl(l_index)      := l_last_ppr_rec.PROJFUNC_COST_RATE_DATE;
12834         l_PROJ_COST_RATE_TYPE_tbl(l_index)      := l_last_ppr_rec.PROJ_COST_RATE_TYPE;
12835         l_PROJ_COST_EXCHANGE_RATE_tbl(l_index)      := l_last_ppr_rec.PROJ_COST_EXCHANGE_RATE;
12836         l_PROJ_COST_RATE_DATE_tbl(l_index)      := l_last_ppr_rec.PROJ_COST_RATE_DATE;
12837         l_TXN_CURRENCY_CODE_tbl(l_index)        := l_last_ppr_rec.TXN_CURRENCY_CODE;
12838 
12839         -- Bug 4111107 : Now l_etc_reset_flag is not used anymore
12840         --l_etc_reset_flag              := 'N'; -- Bug 4227280
12841 
12842         -- Bug 4282618 Begin
12843         IF l_prog_enabled = 'N' THEN
12844             l_completed_percentage_tbl(l_index) := null;
12845             l_progress_status_code_tbl(l_index) := null;
12846             l_earned_value_tbl(l_index)     := null;
12847             l_eff_rollup_percent_comp_tbl(l_index)  := null;
12848             l_eff_roll_prog_stat_code_tbl(l_index)  := null;
12849         END IF;
12850         -- Bug 4282618 End
12851     END LOOP;
12852 
12853     IF g1_debug_mode  = 'Y' THEN
12854         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After plsql table is built l_index='||l_index, x_Log_Level=> 3);
12855     END IF;
12856 
12857         FORALL i IN 1..l_index
12858             update pa_percent_completes
12859         set current_flag = 'N'
12860             where project_id = l_project_id_tbl(i)
12861         and current_flag = 'Y'
12862         and structure_type = 'WORKPLAN'
12863         and object_type = l_object_type_tbl(i)
12864         and object_id = l_object_id_tbl(i)
12865 		and NVL(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12866         and task_id = l_task_id_tbl(i)
12867         and l_prog_enabled_tbl(i) = 'Y' -- Bug 4282618
12868         ;
12869     IF g1_debug_mode  = 'Y' THEN
12870         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk update' , x_Log_Level=> 3);
12871     END IF;
12872 
12873 
12874         FORALL i IN 1..l_index
12875             update pa_proj_elements
12876         set status_code = l_task_status_code_tbl(i)
12877             where project_id = l_project_id_tbl(i)
12878         and proj_element_id = l_task_id_tbl(i)
12879         and l_object_type_tbl(i) = 'PA_TASKS'
12880         ;
12881 
12882     IF g1_debug_mode  = 'Y' THEN
12883         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk update' , x_Log_Level=> 3);
12884     END IF;
12885 
12886         FORALL i IN 1..l_index
12887         insert into pa_percent_completes(TASK_ID,
12888                       DATE_COMPUTED,
12889                       LAST_UPDATE_DATE,
12890                       LAST_UPDATED_BY,
12891                       CREATION_DATE,
12892                       CREATED_BY,
12893                       LAST_UPDATE_LOGIN,
12894                       COMPLETED_PERCENTAGE,
12895                       PROJECT_ID,
12896                       CURRENT_FLAG,
12897                       PERCENT_COMPLETE_ID,
12898                       object_VERSION_ID,
12899                       OBJECT_TYPE,
12900                       OBJECT_id,
12901                       PROGRESS_STATUS_CODE,
12902                       ACTUAL_START_DATE,
12903                       ACTUAL_FINISH_DATE,
12904                       ESTIMATED_START_DATE,
12905                       ESTIMATED_FINISH_DATE,
12906                       PUBLISHED_FLAG,
12907                       published_BY_party_ID,
12908                       history_flag,
12909                       status_code,
12910                       RECORD_VERSION_NUMBER,
12911                       structure_type,
12912                       description,
12913                       progress_comment,
12914 					  cbs_element_id
12915         ) values
12916              (  l_task_id_tbl(i)
12917                           ,l_as_of_date
12918                           ,sysdate
12919                           ,l_user_id
12920                           ,sysdate
12921                           ,l_user_id
12922                           ,l_login_id
12923                           ,l_completed_percentage_tbl(i)
12924                           ,l_project_id_tbl(i)
12925                           ,'Y'
12926                           ,PA_PERCENT_COMPLETES_S.nextval
12927                           ,l_object_version_id_tbl(i)
12928                           ,l_object_type_tbl(i)
12929                           ,l_object_id_tbl(i)
12930                           ,l_progress_status_code_tbl(i)
12931                           ,l_act_start_date_tbl(i)
12932                           ,l_act_finish_date_tbl(i)
12933                           ,l_est_start_date_tbl(i)
12934                           ,l_est_finish_date_tbl(i)
12935                           ,'Y'
12936                           ,l_published_by_party_id
12937               ,'N'
12938               ,l_task_status_code_tbl(i)
12939               ,to_number(1)
12940               ,'WORKPLAN'
12941               ,l_description(i)
12942               ,l_progress_comment(i)
12943 			  ,l_cbs_element_id_tbl(i)
12944               )
12945                      RETURNING PERCENT_COMPLETE_ID
12946                          BULK COLLECT INTO l_percent_complete_id_tbl;
12947 
12948     IF g1_debug_mode  = 'Y' THEN
12949         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After first bulk insert' , x_Log_Level=> 3);
12950     END IF;
12951 
12952     -- Bug 4282618 Begin
12953     -- The seprate delete is added after the insertion
12954     -- This is because of Bulk returning clause, we can not use select .. from dual ..where with bulk returning
12955         FOR i IN 1..l_index LOOP
12956         IF l_prog_enabled_tbl(i) = 'N' THEN
12957             DELETE pa_percent_completes
12958             where percent_complete_id = l_percent_complete_id_tbl(i);
12959 
12960             l_percent_complete_id_tbl(i):=null;
12961         END IF;
12962     END LOOP;
12963     -- Bug 4282618 End
12964 
12965 
12966     ---5212999
12967     if (l_upd_rollup_prog = 'N') then
12968         FORALL i IN 1..l_index
12969             update pa_progress_rollup
12970             set current_flag = 'N'
12971             where project_id = l_project_id_tbl(i)
12972         and current_flag = 'Y'
12973         and structure_version_id is null
12974         and structure_type = 'WORKPLAN'
12975         and object_type = l_object_type_tbl(i)
12976         and object_id = l_object_id_tbl(i)
12977 		and nvl(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12978         and proj_element_id = l_task_id_tbl(i);
12979 
12980     else
12981         FORALL i IN 1..l_index
12982         delete from pa_progress_rollup
12983         where project_id = l_project_id_tbl(i)
12984         and current_flag = 'Y'
12985         and structure_version_id is null
12986         and structure_type = 'WORKPLAN'
12987         and object_type = l_object_type_tbl(i)
12988         and object_id = l_object_id_tbl(i)
12989 		and nvl(cbs_element_id,-1) = NVL(l_cbs_element_id_tbl(i),-1)
12990         and proj_element_id = l_task_id_tbl(i);
12991     end if;
12992 
12993     IF g1_debug_mode  = 'Y' THEN
12994         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After third bulk update' , x_Log_Level=> 3);
12995         /* For Debug Purposes, Can be removed
12996         FOR i IN 1..l_index LOOP
12997             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_project_id_tbl(i)='||l_project_id_tbl(i), x_Log_Level=> 3);
12998             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_id_tbl(i)='||l_object_id_tbl(i), x_Log_Level=> 3);
12999             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_type_tbl(i)='||l_object_type_tbl(i), x_Log_Level=> 3);
13000             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_object_version_id_tbl(i)='||l_object_version_id_tbl(i), x_Log_Level=> 3);
13001             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_progress_status_code_tbl(i)='||l_progress_status_code_tbl(i), x_Log_Level=> 3);
13002             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_incr_work_quantity_tbl(i)='||l_incr_work_quantity_tbl(i), x_Log_Level=> 3);
13003             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_cumu_work_quantity_tbl(i)='||l_cumu_work_quantity_tbl(i), x_Log_Level=> 3);
13004             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eff_rollup_percent_comp_tbl(i)='||l_eff_rollup_percent_comp_tbl(i), x_Log_Level=> 3);
13005             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_completed_percentage_tbl(i)='||l_completed_percentage_tbl(i), x_Log_Level=> 3);
13006             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_start_date_tbl(i)='||l_est_start_date_tbl(i), x_Log_Level=> 3);
13007             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_finish_date_tbl(i)='||l_est_finish_date_tbl(i), x_Log_Level=> 3);
13008             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_act_start_date_tbl(i)='||l_act_start_date_tbl(i), x_Log_Level=> 3);
13009             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_act_finish_date_tbl(i)='||l_act_finish_date_tbl(i), x_Log_Level=> 3);
13010             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_est_remaining_effort_tbl(i)='||l_est_remaining_effort_tbl(i), x_Log_Level=> 3);
13011             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_base_per_comp_deriv_code_tbl(i)='||l_base_per_comp_deriv_code_tbl(i), x_Log_Level=> 3);
13012             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_base_prog_status_code_tbl(i)='||l_base_prog_status_code_tbl(i), x_Log_Level=> 3);
13013             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_eff_roll_prog_stat_code_tbl(i)='||l_eff_roll_prog_stat_code_tbl(i), x_Log_Level=> 3);
13014             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_percent_complete_id_tbl(i)='||l_percent_complete_id_tbl(i), x_Log_Level=> 3);
13015             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_task_id_tbl(i)='||l_task_id_tbl(i), x_Log_Level=> 3);
13016         END LOOP;
13017         */
13018     END IF;
13019 
13020 
13021 
13022         FORALL i IN 1..l_index
13023          insert into pa_progress_rollup(
13024                     PROGRESS_ROLLUP_ID
13025                    ,PROJECT_ID
13026                    ,OBJECT_ID
13027                    ,OBJECT_TYPE
13028                    ,AS_OF_DATE
13029                    ,OBJECT_VERSION_ID
13030                    ,LAST_UPDATE_DATE
13031                    ,LAST_UPDATED_BY
13032                    ,CREATION_DATE
13033                    ,CREATED_BY
13034                    ,PROGRESS_STATUS_CODE
13035                    ,LAST_UPDATE_LOGIN
13036                    ,INCREMENTAL_WORK_QUANTITY
13037                    ,CUMULATIVE_WORK_QUANTITY
13038                    ,EFF_ROLLUP_PERCENT_COMP
13039                    ,COMPLETED_PERCENTAGE
13040                    ,ESTIMATED_START_DATE
13041                    ,ESTIMATED_FINISH_DATE
13042                    ,ACTUAL_START_DATE
13043                    ,ACTUAL_FINISH_DATE
13044                    ,ESTIMATED_REMAINING_EFFORT
13045                    ,RECORD_VERSION_NUMBER
13046                    ,BASE_PERCENT_COMP_DERIV_CODE
13047                    ,BASE_PROGRESS_STATUS_CODE
13048                    ,EFF_ROLLUP_PROG_STAT_CODE
13049                    ,PERCENT_COMPLETE_ID
13050            ,STRUCTURE_TYPE
13051            ,PROJ_ELEMENT_ID
13052            ,PPL_ACT_EFFORT_TO_DATE
13053            ,EQPMT_ACT_EFFORT_TO_DATE
13054            ,EQPMT_ETC_EFFORT
13055            ,OTH_ACT_COST_TO_DATE_TC
13056            ,OTH_ACT_COST_TO_DATE_FC
13057            ,OTH_ACT_COST_TO_DATE_PC
13058            ,OTH_ETC_COST_TC
13059            ,OTH_ETC_COST_FC
13060            ,OTH_ETC_COST_PC
13061            ,PPL_ACT_COST_TO_DATE_TC
13062            ,PPL_ACT_COST_TO_DATE_FC
13063            ,PPL_ACT_COST_TO_DATE_PC
13064            ,PPL_ETC_COST_TC
13065            ,PPL_ETC_COST_FC
13066            ,PPL_ETC_COST_PC
13067            ,EQPMT_ACT_COST_TO_DATE_TC
13068            ,EQPMT_ACT_COST_TO_DATE_FC
13069            ,EQPMT_ACT_COST_TO_DATE_PC
13070            ,EQPMT_ETC_COST_TC
13071            ,EQPMT_ETC_COST_FC
13072            ,EQPMT_ETC_COST_PC
13073            ,EARNED_VALUE
13074            ,TASK_WT_BASIS_CODE
13075            ,CURRENT_FLAG
13076            ,PROJFUNC_COST_RATE_TYPE
13077            ,PROJFUNC_COST_EXCHANGE_RATE
13078            ,PROJFUNC_COST_RATE_DATE
13079            ,PROJ_COST_RATE_TYPE
13080            ,PROJ_COST_EXCHANGE_RATE
13081            ,PROJ_COST_RATE_DATE
13082            ,TXN_CURRENCY_CODE
13083            ,PROG_PA_PERIOD_NAME
13084            ,PROG_GL_PERIOD_NAME
13085                    ,OTH_QUANTITY_TO_DATE
13086                    ,OTH_ETC_QUANTITY
13087                    ,OTH_ACT_RAWCOST_TO_DATE_TC
13088                    ,OTH_ACT_RAWCOST_TO_DATE_FC
13089                    ,OTH_ACT_RAWCOST_TO_DATE_PC
13090                    ,OTH_ETC_RAWCOST_TC
13091                    ,OTH_ETC_RAWCOST_FC
13092                    ,OTH_ETC_RAWCOST_PC
13093                    ,PPL_ACT_RAWCOST_TO_DATE_TC
13094                    ,PPL_ACT_RAWCOST_TO_DATE_FC
13095                    ,PPL_ACT_RAWCOST_TO_DATE_PC
13096                    ,PPL_ETC_RAWCOST_TC
13097                    ,PPL_ETC_RAWCOST_FC
13098                    ,PPL_ETC_RAWCOST_PC
13099                    ,EQPMT_ACT_RAWCOST_TO_DATE_TC
13100                    ,EQPMT_ACT_RAWCOST_TO_DATE_FC
13101                    ,EQPMT_ACT_RAWCOST_TO_DATE_PC
13102                    ,EQPMT_ETC_RAWCOST_TC
13103                    ,EQPMT_ETC_RAWCOST_FC
13104                    ,EQPMT_ETC_RAWCOST_PC
13105                    ,BASE_PERCENT_COMPLETE -- 4604661
13106 				   ,CBS_ELEMENT_ID
13107              ) VALUES (
13108                     PA_PROGRESS_ROLLUP_S.nextval
13109                    ,l_project_id_tbl(i)
13110                    ,l_object_id_tbl(i)
13111                    ,l_object_type_tbl(i)
13112                    ,l_as_of_date
13113                    ,l_object_version_id_tbl(i)
13114                    ,sysdate
13115                    ,l_user_id
13116                    ,sysdate
13117                    ,l_user_id
13118                    ,l_progress_status_code_tbl(i)
13119                    ,l_login_id
13120                    ,l_incr_work_quantity_tbl(i)
13121                    ,l_cumu_work_quantity_tbl(i)
13122                    ,l_eff_rollup_percent_comp_tbl(i)
13123                    ,l_completed_percentage_tbl(i)
13124                    ,l_est_start_date_tbl(i)
13125                    ,l_est_finish_date_tbl(i)
13126                    ,l_act_start_date_tbl(i)
13127                    ,l_act_finish_date_tbl(i)
13128                    ,l_est_remaining_effort_tbl(i)
13129            ,to_number(1)
13130                    ,l_base_per_comp_deriv_code_tbl(i)
13131            ,l_base_prog_status_code_tbl(i)
13132            ,l_eff_roll_prog_stat_code_tbl(i)
13133                    ,l_percent_complete_id_tbl(i)
13134            ,'WORKPLAN'
13135            ,l_task_id_tbl(i)
13136            ,l_ppl_act_effort_to_date_tbl(i)
13137            ,l_eqpmt_act_effort_to_date_tbl(i)
13138            ,l_eqpmt_etc_effort_tbl(i)
13139            ,l_oth_act_cost_to_date_tc_tbl(i)
13140            ,l_oth_act_cost_to_date_fc_tbl(i)
13141            ,l_oth_act_cost_to_date_pc_tbl(i)
13142            ,l_oth_etc_cost_tc_tbl(i)
13143            ,l_oth_etc_cost_fc_tbl(i)
13144            ,l_oth_etc_cost_pc_tbl(i)
13145            ,l_ppl_act_cost_to_date_tc_tbl(i)
13146            ,l_ppl_act_cost_to_date_fc_tbl(i)
13147            ,l_ppl_act_cost_to_date_pc_tbl(i)
13148            ,l_ppl_etc_cost_tc_tbl(i)
13149            ,l_ppl_etc_cost_fc_tbl(i)
13150            ,l_ppl_etc_cost_pc_tbl(i)
13151            ,l_eqp_act_cost_to_date_tc_tbl(i)
13152            ,l_eqp_act_cost_to_date_fc_tbl(i)
13153            ,l_eqp_act_cost_to_date_pc_tbl(i)
13154            ,l_eqpmt_etc_cost_tc_tbl(i)
13155            ,l_eqpmt_etc_cost_fc_tbl(i)
13156            ,l_eqpmt_etc_cost_pc_tbl(i)
13157            ,l_earned_value_tbl(i)
13158            ,l_task_weight_basis_code
13159            ,'Y'
13160                    ,l_projfunc_cost_rate_type_tbl(i)
13161                    ,l_projfunc_cost_exc_rate_tbl(i)
13162                    ,l_projfunc_cost_rate_date_tbl(i)
13163                    ,l_proj_cost_rate_type_tbl(i)
13164                    ,l_proj_cost_exchange_rate_tbl(i)
13165                    ,l_proj_cost_rate_date_tbl(i)
13166                    ,l_txn_currency_code_tbl(i)
13167                    ,l_prog_pa_period_name
13168                    ,l_prog_gl_period_name
13169            ,l_oth_quantity_to_date_tbl(i)
13170            ,l_oth_etc_quantity_tbl(i)
13171                    ,l_oth_act_raw_to_date_tc_tbl(i)
13172                    ,l_oth_act_raw_to_date_fc_tbl(i)
13173                    ,l_oth_act_raw_to_date_pc_tbl(i)
13174                    ,l_oth_etc_rawcost_tc_tbl(i)
13175                    ,l_oth_etc_rawcost_fc_tbl(i)
13176                    ,l_oth_etc_rawcost_pc_tbl(i)
13177                    ,l_ppl_act_raw_to_date_tc_tbl(i)
13178                    ,l_ppl_act_raw_to_date_fc_tbl(i)
13179                    ,l_ppl_act_raw_to_date_pc_tbl(i)
13180                    ,l_ppl_etc_rawcost_tc_tbl(i)
13181                    ,l_ppl_etc_rawcost_fc_tbl(i)
13182                    ,l_ppl_etc_rawcost_pc_tbl(i)
13183                    ,l_eqpmt_act_raw_to_date_tc_tbl(i)
13184                    ,l_eqpmt_act_raw_to_date_fc_tbl(i)
13185                    ,l_eqpmt_act_raw_to_date_pc_tbl(i)
13186                    ,l_eqpmt_etc_rawcost_tc_tbl(i)
13187                    ,l_eqpmt_etc_rawcost_fc_tbl(i)
13188                    ,l_eqpmt_etc_rawcost_pc_tbl(i)
13189                    ,l_base_perc_comp_tbl(i) -- 4604661
13190 				   ,l_cbs_element_id_tbl(i)
13191                  );
13192 
13193     IF g1_debug_mode  = 'Y' THEN
13194         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'After second bulk insert' , x_Log_Level=> 3);
13195     END IF;
13196 
13197     -- ETC Changes End
13198 
13199     --reset the ETC whenever workplan gets published.
13200     -- This code is removed now. Now we select all progress record from published or working wp version
13201 
13202     -- Now l_upd_new_elem_ver_id_flag wil not be used as we are creating progress records always,
13203     -- irrespective whether Apply Progress id Done or not.
13204 
13205     IF g1_debug_mode  = 'Y' THEN
13206             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
13207         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'l_upd_new_elem_ver_id_flag='||l_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
13208         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.PUBLISH_PROGRESS', x_Msg => 'x_return_status='||x_return_status, x_Log_Level=> 3);
13209     END IF;
13210 
13211      -- 4600547 : We should only assign x_as_of_date to next cycle date only if progress records are found.
13212      -- otherwise it was doing unnecessary calling rollup api in process_wbs_updates and creating prog records
13213         IF nvl(l_prog_rec_found,'N') = 'Y' THEN
13214                 x_as_of_date := l_as_of_date;
13215         ELSE
13216                 x_as_of_date := null;
13217         END IF;
13218 
13219     x_task_weight_basis_code := l_task_weight_basis_code;
13220     --rtarway, BUG 3951024
13221     x_upd_new_elem_ver_id_flag := l_upd_new_elem_ver_id_flag;
13222 
13223     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13224         x_return_status := 'E';
13225         x_msg_count := x_msg_count;
13226         RAISE  FND_API.G_EXC_ERROR;
13227     END IF;
13228 
13229 
13230         IF (p_commit = FND_API.G_TRUE) THEN
13231                 COMMIT;
13232         END IF;
13233 EXCEPTION
13234     when FND_API.G_EXC_ERROR then
13235       if p_commit = FND_API.G_TRUE then
13236          rollback to PUBLISH_PROGRESS;
13237       end if;
13238       x_return_status := FND_API.G_RET_STS_ERROR;
13239     when FND_API.G_EXC_UNEXPECTED_ERROR then
13240       if p_commit = FND_API.G_TRUE then
13241          rollback to PUBLISH_PROGRESS;
13242       end if;
13243       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13244       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
13245                               p_procedure_name => 'PUBLISH_PROGRESS',
13246                               p_error_text     => SUBSTRB(SQLERRM,1,120));
13247     when OTHERS then
13248       if p_commit = FND_API.G_TRUE then
13249          rollback to PUBLISH_PROGRESS;
13250       end if;
13251       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13252       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
13253                               p_procedure_name => 'PUBLISH_PROGRESS',
13254                               p_error_text     => SUBSTRB(SQLERRM,1,120));
13255       raise;
13256 
13257 END PUBLISH_PROGRESS;
13258 
13259 
13260 PROCEDURE GET_SUMMARIZED_ACTUALS(p_project_id_list IN SYSTEM.pa_num_tbl_type,
13261                                  p_extraction_type IN VARCHAR2,
13262                                  p_plan_res_level  IN VARCHAR2,
13263                                  p_proj_pgm_level  IN SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type(),
13264                                  x_return_status     OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
13265                                  x_msg_count         OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
13266                                  x_msg_data          OUT NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
13267 
13268 l_project_id                       NUMBER;
13269 l_object_id                        NUMBER;
13270 l_object_version_id                NUMBER;
13271 l_task_version_id                  NUMBER;
13272 l_object_Type                      VARCHAR2(80);
13273 l_base_pc_deriv_code               VARCHAR2(150);
13274 l_task_wt_basis_code               VARCHAR2(30);
13275 l_txn_curr_code                    VARCHAR2(30);
13276 l_org_id                           NUMBER;
13277 l_shared_structure                 VARCHAR2(30);
13278 l_db_case                          VARCHAR2(1);
13279 l_last_projelemid                  NUMBER:=0;
13280 l_last_res_list_mem_id             NUMBER:=0;
13281 l_new_res_list_member_id           NUMBER; -- Bug 3764224 : RLM Id Changes
13282 l_last_object_Type                 VARCHAR2(80);
13283 l_last_cbs_element_id              NUMBER; -- CBS Check
13284 l_txn_raw_cost                     NUMBER(22,5); --start 5343956
13285 l_txn_brdn_cost                    NUMBER(22,5);
13286 l_txn_raw_cost_tot                 NUMBER(22,5);
13287 l_txn_brdn_cost_tot                NUMBER(22,5); --end 5343956
13288 l_sch_start_date                   DATE;
13289 l_sch_end_date                     DATE;
13290 l_asgn_sch_start_date              DATE;
13291 l_asgn_sch_finish_date             DATE;
13292 l_res_list_member_id               NUMBER;
13293 --CBS Change in Get_Summarized_Actuals
13294 l_cbs_element_id  NUMBER;
13295 --End CBS Change in Get_Summarized_Actuals
13296 l_res_assignment_id                NUMBER;
13297 l_res_class_code                   VARCHAR2(30);
13298 l_task_id                          NUMBER;
13299 l_planned_eff                      NUMBER;
13300 l_planned_cost                     NUMBER(22,5); --5343956
13301 l_percent_comp                     NUMBER;
13302 l_eff_rollup_pc                    NUMBER;
13303 l_earned_val                       NUMBER;
13304 l_rate_based_flag                  VARCHAR2(1);
13305 l_init_prog_stat_code              VARCHAR2(150);
13306 l_uncategorized_flag               VARCHAR2(1);
13307 l_ppl_res_list_mem_id              NUMBER;
13308 l_plan_type                        VARCHAR2(1);
13309 l_plan_type_id                     NUMBER;
13310 l_plan_version_id                  NUMBER;
13311 l_rbs_element_id                   NUMBER;
13312 
13313 x_txn_rate_type                    VARCHAR2(30);
13314 x_txn_rate_date                    DATE;
13315 x_txn_exch_rate                    NUMBER(22,5); --start 5343956
13316 x_txn_raw_cost                     NUMBER(22,5);
13317 x_txn_brdn_cost                    NUMBER(22,5);
13318 x_txn_raw_cost_tot                 NUMBER(22,5);
13319 x_txn_brdn_cost_tot                NUMBER(22,5); --end 5343956
13320 x_projfunc_curr_code               VARCHAR2(30);
13321 x_projfunc_cost_rate_type          VARCHAR2(30);
13322 x_projfunc_cost_rate_date          DATE;
13323 x_projfunc_cost_exch_rate          NUMBER(22,5);  --5343956
13324 x_projfunc_raw_cost                NUMBER(22,5);  --5343956
13325 x_msg_code                         VARCHAR2(80);
13326 
13327 l_init_vars                        VARCHAR2(1);
13328 l_ignore_rec                       VARCHAR2(1);
13329 l_match_found                      VARCHAR2(1);
13330 l_index                            NUMBER;
13331 l_index1                           NUMBER;
13332 l_index2                           NUMBER;
13333 l_index3                           NUMBER;
13334 l_index4                           NUMBER;
13335 l_temp_index2                      NUMBER;
13336 l_latest_wp_struct_ver_id          NUMBER;
13337 l_base_struct_ver_id               NUMBER;
13338 l_period_start_date                DATE;
13339 l_temp_as_of_date                  DATE;
13340 l_conv_rate_date                   DATE;
13341 l_max_as_of_date                   DATE;
13342 l_max_as_of_date_assign            DATE;
13343 l_pa_period_name                   VARCHAR2(80);
13344 l_gl_period_name                   VARCHAR2(80);
13345 l_period_name                      VARCHAR2(80);
13346 l_working_rec_found                VARCHAR2(1);
13347 l_return_status                    VARCHAR2(1);
13348 l_track_wp_cost_flag               VARCHAR2(1) := 'Y'; -- Bug 3801745
13349 l_proj_curr_code                   VARCHAR2(15);
13350 l_proj_func_curr_code              VARCHAR2(15);
13351 l_wp_prl_res_class_flag            VARCHAR2(1) := 'Y'; -- CBS: Workplan PRL Resource Class Flag
13352 
13353 
13354 L_ACT_COST_TO_DATE_TC              NUMBER(22,5);  --start 5343956
13355 L_ACT_RAWCOST_TO_DATE_TC           NUMBER(22,5);
13356 L_PPL_ACT_COST_TO_DATE_TC          NUMBER(22,5);
13357 L_PPL_ACT_RAWCOST_TO_DATE_TC       NUMBER(22,5);
13358 L_EQPMT_ACT_COST_TO_DATE_TC        NUMBER(22,5);
13359 L_EQPMT_ACT_RAWCOST_TO_DATE_TC     NUMBER(22,5);
13360 l_asgn_plan_quantity               NUMBER(22,5);
13361 l_asgn_plan_bur_cost_tc            NUMBER(22,5);
13362 l_asgn_plan_bur_cost_fc            NUMBER(22,5);
13363 l_asgn_plan_bur_cost_pc            NUMBER(22,5);
13364 l_asgn_plan_raw_cost_tc            NUMBER(22,5);
13365 l_asgn_plan_raw_cost_fc            NUMBER(22,5);
13366 l_asgn_plan_raw_cost_pc            NUMBER(22,5);  --end 5343956
13367 l_asgmt_count                      NUMBER;  -- Added for Bug 13419867
13368 
13369 l_no_rate_exception                Exception;
13370 cursor projects_in_range is
13371    select ppa.org_id, ppa.project_currency_code, ppa.projfunc_currency_code,
13372           PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(ppa.project_id) shared_structure
13373      from pa_projects_all ppa
13374     where ppa.project_id = l_project_id;
13375 
13376 -- tables to hold project_ids, latest WP ids and res list ids.
13377 proj_ids_tbl                       SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13378 latest_wp_struct_ver_ids_tbl       SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13379 res_list_ids_tbl                   SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13380 proj_org_ids_tbl                   SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13381 proj_thru_dates_tbl                SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
13382 calendar_type_tbl                  SYSTEM.pa_varchar2_1_tbl_type:= SYSTEM.pa_varchar2_1_tbl_type();
13383 proj_curr_code_tbl                 SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
13384 proj_func_curr_code_tbl            SYSTEM.pa_varchar2_15_tbl_type:= SYSTEM.pa_varchar2_15_tbl_type();
13385 proj_pgm_level_tbl                 SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13386 
13387 -- Added for bug 5464875
13388 base_struct_ver_ids_tbl            SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13389 populate_in_tbl                    PJI_FM_XBS_ACCUM_UTILS.populate_in_tbl_type;
13390 
13391 /* Begin: Fix for Bug # 5526638. */
13392 l_act_err_flag                     SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13393 --l_act_err_msg                      SYSTEM.pa_varchar2_240_tbl_type:= SYSTEM.pa_varchar2_240_tbl_type();
13394 l_act_err_msg                      SYSTEM.pa_varchar2_2000_tbl_type:= SYSTEM.pa_varchar2_2000_tbl_type(); --increased the size for the bug 13640836
13395 l_act_out_report                   VARCHAR2(1) := 'N';
13396 l_err_msg                          VARCHAR2(600); --increased the size for the bug 13640836
13397 l_skip_exception                   Exception;
13398 l_pji_wp_exception                 Exception;
13399 skip_proj_ids_tbl                  SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13400 skip_latest_wp_str_ver_id_tbl      SYSTEM.pa_num_tbl_type:= SYSTEM.pa_num_tbl_type();
13401 skip_proj_thru_dates_tbl           SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
13402 /* End: Fix for Bug # 5526638. */
13403 
13404 cursor max_as_of_Date is
13405 select max(date_computed) from pa_percent_completes ppc
13406 where project_id = l_project_id
13407   and published_flag ='Y'
13408   and current_flag = 'Y'
13409   and object_type = 'PA_TASKS'
13410   and structure_type = 'WORKPLAN'
13411   and not exists (select '1'   --- 4871809,5503428
13412                     from pa_object_relationships
13413                    where object_Type_from = 'PA_TASKS'
13414                      and relationship_type = 'S'
13415                      and object_id_from1 = ppc.object_version_id);
13416 
13417 cursor max_as_of_date_assign is
13418 select max(date_computed) from pa_percent_completes
13419 where project_id = l_project_id
13420   and published_flag ='Y'
13421   and current_flag = 'Y'
13422   and object_type = 'PA_ASSIGNMENTS'
13423   and structure_type = 'WORKPLAN';
13424 
13425 cursor max_as_of_date_rollup is
13426 select max(as_of_date) from pa_progress_rollup
13427 where project_id = l_project_id
13428   and structure_type = 'WORKPLAN'
13429   and structure_version_id is null
13430   and current_flag = 'Y';
13431 
13432 cursor max_as_of_date_rollup_tsk is
13433 select max(as_of_date) from pa_progress_rollup
13434 where project_id = l_project_id
13435   and object_type = 'PA_TASKS'
13436   and structure_type = 'WORKPLAN'
13437   and structure_version_id is null
13438   and current_flag = 'Y';
13439 
13440 -- table for rollup records
13441  PROGRESS_ROLLUP_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
13442  PERCENT_COMPLETE_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
13443  PROJECT_ID                               PA_PLSQL_DATATYPES.Num15TabTyp;
13444  OBJECT_ID                                PA_PLSQL_DATATYPES.Num15TabTyp;
13445  --Add cbs_element_id
13446  CBS_ELEMENT_ID                           PA_PLSQL_DATATYPES.Num15TabTyp;
13447  OBJECT_TYPE                              PA_PLSQL_DATATYPES.Char30TabTyp;
13448  AS_OF_DATE                               PA_PLSQL_DATATYPES.DateTabTyp;
13449  OBJECT_VERSION_ID                        PA_PLSQL_DATATYPES.Num15TabTyp;
13450  LAST_UPDATE_DATE                         PA_PLSQL_DATATYPES.DateTabTyp;
13451  LAST_UPDATED_BY                          PA_PLSQL_DATATYPES.Num15TabTyp;
13452  CREATION_DATE                            PA_PLSQL_DATATYPES.DateTabTyp;
13453  CREATED_BY                               PA_PLSQL_DATATYPES.Num15TabTyp;
13454  PROGRESS_STATUS_CODE                     PA_PLSQL_DATATYPES.Char150TabTyp;
13455  LAST_UPDATE_LOGIN                        PA_PLSQL_DATATYPES.Num15TabTyp;
13456  INCREMENTAL_WORK_QUANTITY                PA_PLSQL_DATATYPES.QtyTabtyp;
13457  CUMULATIVE_WORK_QUANTITY                 PA_PLSQL_DATATYPES.QtyTabtyp;
13458  BASE_PERCENT_COMPLETE                    PA_PLSQL_DATATYPES.QtyTabtyp;
13459  EFF_ROLLUP_PERCENT_COMP                  PA_PLSQL_DATATYPES.QtyTabtyp;
13460  COMPLETED_PERCENTAGE                     PA_PLSQL_DATATYPES.QtyTabtyp;
13461  ESTIMATED_START_DATE                     PA_PLSQL_DATATYPES.DateTabTyp;
13462  ESTIMATED_FINISH_DATE                    PA_PLSQL_DATATYPES.DateTabTyp;
13463  ACTUAL_START_DATE                        PA_PLSQL_DATATYPES.DateTabTyp;
13464  ACTUAL_FINISH_DATE                       PA_PLSQL_DATATYPES.DateTabTyp;
13465  ESTIMATED_REMAINING_EFFORT               PA_PLSQL_DATATYPES.QtyTabtyp;
13466  RECORD_VERSION_NUMBER                    PA_PLSQL_DATATYPES.Num15TabTyp;
13467  BASE_PERCENT_COMP_DERIV_CODE             PA_PLSQL_DATATYPES.Char30TabTyp;
13468  BASE_PROGRESS_STATUS_CODE                PA_PLSQL_DATATYPES.Char150TabTyp;
13469  EFF_ROLLUP_PROG_STAT_CODE                PA_PLSQL_DATATYPES.Char150TabTyp;
13470  STRUCTURE_TYPE                           PA_PLSQL_DATATYPES.Char30TabTyp;
13471  PROJ_ELEMENT_ID                          PA_PLSQL_DATATYPES.Num15TabTyp;
13472  STRUCTURE_VERSION_ID                     PA_PLSQL_DATATYPES.Num15TabTyp;
13473  PPL_ACT_EFFORT_TO_DATE                   PA_PLSQL_DATATYPES.QtyTabtyp;
13474  EQPMT_ACT_EFFORT_TO_DATE                 PA_PLSQL_DATATYPES.QtyTabtyp;
13475  EQPMT_ETC_EFFORT                         PA_PLSQL_DATATYPES.QtyTabtyp;
13476  OTH_QTY                                  PA_PLSQL_DATATYPES.AmtTabTyp;
13477  OTH_ETC_QTY                              PA_PLSQL_DATATYPES.AmtTabTyp;
13478  OTH_ACT_COST_TO_DATE_TC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13479  OTH_ACT_RAWCOST_TO_DATE_TC               PA_PLSQL_DATATYPES.AmtTabTyp;
13480  OTH_ACT_COST_TO_DATE_FC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13481  OTH_ACT_RAWCOST_TO_DATE_FC               PA_PLSQL_DATATYPES.AmtTabTyp;
13482  OTH_ACT_COST_TO_DATE_PC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13483  OTH_ACT_RAWCOST_TO_DATE_PC               PA_PLSQL_DATATYPES.AmtTabTyp;
13484  OTH_ETC_COST_TC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13485  OTH_ETC_RAWCOST_TC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13486  OTH_ETC_COST_FC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13487  OTH_ETC_RAWCOST_FC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13488  OTH_ETC_COST_PC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13489  OTH_ETC_RAWCOST_PC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13490  PPL_ACT_COST_TO_DATE_TC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13491  PPL_ACT_RAWCOST_TO_DATE_TC               PA_PLSQL_DATATYPES.AmtTabTyp;
13492  PPL_ACT_COST_TO_DATE_FC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13493  PPL_ACT_RAWCOST_TO_DATE_FC               PA_PLSQL_DATATYPES.AmtTabTyp;
13494  PPL_ACT_COST_TO_DATE_PC                  PA_PLSQL_DATATYPES.AmtTabTyp;
13495  PPL_ACT_RAWCOST_TO_DATE_PC               PA_PLSQL_DATATYPES.AmtTabTyp;
13496  PPL_ETC_COST_TC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13497  PPL_ETC_RAWCOST_TC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13498  PPL_ETC_COST_FC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13499  PPL_ETC_RAWCOST_FC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13500  PPL_ETC_COST_PC                          PA_PLSQL_DATATYPES.AmtTabTyp;
13501  PPL_ETC_RAWCOST_PC                       PA_PLSQL_DATATYPES.AmtTabTyp;
13502  EQPMT_ACT_COST_TO_DATE_TC                PA_PLSQL_DATATYPES.AmtTabTyp;
13503  EQPMT_ACT_RAWCOST_TO_DATE_TC             PA_PLSQL_DATATYPES.AmtTabTyp;
13504  EQPMT_ACT_COST_TO_DATE_FC                PA_PLSQL_DATATYPES.AmtTabTyp;
13505  EQPMT_ACT_RAWCOST_TO_DATE_FC             PA_PLSQL_DATATYPES.AmtTabTyp;
13506  EQPMT_ACT_COST_TO_DATE_PC                PA_PLSQL_DATATYPES.AmtTabTyp;
13507  EQPMT_ACT_RAWCOST_TO_DATE_PC             PA_PLSQL_DATATYPES.AmtTabTyp;
13508  EQPMT_ETC_COST_TC                        PA_PLSQL_DATATYPES.AmtTabTyp;
13509  EQPMT_ETC_RAWCOST_TC                     PA_PLSQL_DATATYPES.AmtTabTyp;
13510  EQPMT_ETC_COST_FC                        PA_PLSQL_DATATYPES.AmtTabTyp;
13511  EQPMT_ETC_RAWCOST_FC                     PA_PLSQL_DATATYPES.AmtTabTyp;
13512  EQPMT_ETC_COST_PC                        PA_PLSQL_DATATYPES.AmtTabTyp;
13513  EQPMT_ETC_RAWCOST_PC                     PA_PLSQL_DATATYPES.AmtTabTyp;
13514  EARNED_VALUE                             PA_PLSQL_DATATYPES.QtyTabtyp;
13515  TASK_WT_BASIS_CODE                       PA_PLSQL_DATATYPES.Char30TabTyp;
13516  SUBPRJ_PPL_ACT_EFFORT                    PA_PLSQL_DATATYPES.QtyTabtyp;
13517  SUBPRJ_EQPMT_ACT_EFFORT                  PA_PLSQL_DATATYPES.QtyTabtyp;
13518  SUBPRJ_PPL_ETC_EFFORT                    PA_PLSQL_DATATYPES.QtyTabtyp;
13519  SUBPRJ_EQPMT_ETC_EFFORT                  PA_PLSQL_DATATYPES.QtyTabtyp;
13520  SUBPRJ_OTH_ACT_COST_TO_DT_TC           PA_PLSQL_DATATYPES.AmtTabTyp;
13521  SPJ_OTH_ACT_RAWCOST_TO_DT_TC           PA_PLSQL_DATATYPES.AmtTabTyp;
13522  SUBPRJ_OTH_ACT_COST_TO_DT_FC           PA_PLSQL_DATATYPES.AmtTabTyp;
13523  SPJ_OTH_ACT_RAWCOST_TO_DT_FC           PA_PLSQL_DATATYPES.AmtTabTyp;
13524  SUBPRJ_OTH_ACT_COST_TO_DT_PC           PA_PLSQL_DATATYPES.AmtTabTyp;
13525  SPJ_OTH_ACT_RAWCOST_TO_DT_PC           PA_PLSQL_DATATYPES.AmtTabTyp;
13526  SUBPRJ_PPL_ACT_COST_TC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13527  SUBPRJ_PPL_ACT_RAWCOST_TC                PA_PLSQL_DATATYPES.AmtTabTyp;
13528  SUBPRJ_PPL_ACT_COST_FC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13529  SUBPRJ_PPL_ACT_RAWCOST_FC                PA_PLSQL_DATATYPES.AmtTabTyp;
13530  SUBPRJ_PPL_ACT_COST_PC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13531  SUBPRJ_PPL_ACT_RAWCOST_PC                PA_PLSQL_DATATYPES.AmtTabTyp;
13532  SUBPRJ_EQPMT_ACT_COST_TC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13533  SUBPRJ_EQPMT_ACT_RAWCOST_TC              PA_PLSQL_DATATYPES.AmtTabTyp;
13534  SUBPRJ_EQPMT_ACT_COST_FC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13535  SUBPRJ_EQPMT_ACT_RAWCOST_FC              PA_PLSQL_DATATYPES.AmtTabTyp;
13536  SUBPRJ_EQPMT_ACT_COST_PC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13537  SUBPRJ_EQPMT_ACT_RAWCOST_PC              PA_PLSQL_DATATYPES.AmtTabTyp;
13538  SUBPRJ_OTH_ETC_COST_TC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13539  SUBPRJ_OTH_ETC_RAWCOST_TC                PA_PLSQL_DATATYPES.AmtTabTyp;
13540  SUBPRJ_OTH_ETC_COST_FC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13541  SUBPRJ_OTH_ETC_RAWCOST_FC                PA_PLSQL_DATATYPES.AmtTabTyp;
13542  SUBPRJ_OTH_ETC_COST_PC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13543  SUBPRJ_OTH_ETC_RAWCOST_PC                PA_PLSQL_DATATYPES.AmtTabTyp;
13544  SUBPRJ_PPL_ETC_COST_TC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13545  SUBPRJ_PPL_ETC_RAWCOST_TC                PA_PLSQL_DATATYPES.AmtTabTyp;
13546  SUBPRJ_PPL_ETC_COST_PC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13547  SUBPRJ_PPL_ETC_RAWCOST_PC                PA_PLSQL_DATATYPES.AmtTabTyp;
13548  SUBPRJ_PPL_ETC_COST_FC                   PA_PLSQL_DATATYPES.AmtTabTyp;
13549  SUBPRJ_PPL_ETC_RAWCOST_FC                PA_PLSQL_DATATYPES.AmtTabTyp;
13550  SUBPRJ_EQPMT_ETC_COST_TC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13551  SUBPRJ_EQPMT_ETC_RAWCOST_TC              PA_PLSQL_DATATYPES.AmtTabTyp;
13552  SUBPRJ_EQPMT_ETC_COST_FC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13553  SUBPRJ_EQPMT_ETC_RAWCOST_FC              PA_PLSQL_DATATYPES.AmtTabTyp;
13554  SUBPRJ_EQPMT_ETC_COST_PC                 PA_PLSQL_DATATYPES.AmtTabTyp;
13555  SUBPRJ_EQPMT_ETC_RAWCOST_PC              PA_PLSQL_DATATYPES.AmtTabTyp;
13556  SUBPRJ_EARNED_VALUE                      PA_PLSQL_DATATYPES.QtyTabtyp;
13557  CURRENT_FLAG                             PA_PLSQL_DATATYPES.Char1TabTyp;
13558  PROJFUNC_COST_RATE_TYPE                  PA_PLSQL_DATATYPES.Char30TabTyp;
13559  PROJFUNC_COST_EXCHANGE_RATE              PA_PLSQL_DATATYPES.AmtTabTyp;
13560  PROJFUNC_COST_RATE_DATE                  PA_PLSQL_DATATYPES.DateTabTyp;
13561  PROJ_COST_RATE_TYPE                      PA_PLSQL_DATATYPES.Char30TabTyp;
13562  PROJ_COST_EXCHANGE_RATE                  PA_PLSQL_DATATYPES.AmtTabTyp;
13563  PROJ_COST_RATE_DATE                      PA_PLSQL_DATATYPES.DateTabTyp;
13564  TXN_CURRENCY_CODE                        PA_PLSQL_DATATYPES.Char15TabTyp;
13565  PROG_PA_PERIOD_NAME                      PA_PLSQL_DATATYPES.Char30TabTyp;
13566  PROG_GL_PERIOD_NAME                      PA_PLSQL_DATATYPES.Char30TabTyp;
13567 
13568  u_progress_rollup_id                     PA_PLSQL_DATATYPES.Num15TabTyp;
13569  u_object_version_id                      PA_PLSQL_DATATYPES.Num15TabTyp;
13570  u_completed_percentage                   PA_PLSQL_DATATYPES.QtyTabtyp;
13571  u_eff_rollup_percent_comp                PA_PLSQL_DATATYPES.QtyTabtyp;
13572  u_earned_val                             PA_PLSQL_DATATYPES.QtyTabtyp;
13573  u_actual_finish_date                     PA_PLSQL_DATATYPES.DateTabTyp;
13574  u_oth_qty                                PA_PLSQL_DATATYPES.AmtTabTyp;
13575  u_oth_act_cost_to_date_tc                PA_PLSQL_DATATYPES.AmtTabTyp;
13576  u_oth_act_rawcost_to_date_tc             PA_PLSQL_DATATYPES.AmtTabTyp;
13577  u_oth_act_cost_to_date_pc                PA_PLSQL_DATATYPES.AmtTabTyp;
13578  u_oth_act_rawcost_to_date_pc             PA_PLSQL_DATATYPES.AmtTabTyp;
13579  u_oth_act_cost_to_date_fc                PA_PLSQL_DATATYPES.AmtTabTyp;
13580  u_oth_act_rawcost_to_date_fc             PA_PLSQL_DATATYPES.AmtTabTyp;
13581  u_oth_etc_qty                            PA_PLSQL_DATATYPES.AmtTabTyp;
13582  u_oth_etc_cost_to_date_tc                PA_PLSQL_DATATYPES.AmtTabTyp;
13583  u_oth_etc_rawcost_to_date_tc             PA_PLSQL_DATATYPES.AmtTabTyp;
13584  u_oth_etc_cost_to_date_pc                PA_PLSQL_DATATYPES.AmtTabTyp;
13585  u_oth_etc_rawcost_to_date_pc             PA_PLSQL_DATATYPES.AmtTabTyp;
13586  u_oth_etc_cost_to_date_fc                PA_PLSQL_DATATYPES.AmtTabTyp;
13587  u_oth_etc_rawcost_to_date_fc             PA_PLSQL_DATATYPES.AmtTabTyp;
13588  u_ppl_act_effort_to_date                 PA_PLSQL_DATATYPES.QtyTabtyp;
13589  u_ppl_act_cost_to_date_tc                PA_PLSQL_DATATYPES.AmtTabTyp;
13590  u_ppl_act_rawcost_to_date_tc             PA_PLSQL_DATATYPES.AmtTabTyp;
13591  u_ppl_act_cost_to_date_pc                PA_PLSQL_DATATYPES.AmtTabTyp;
13592  u_ppl_act_rawcost_to_date_pc             PA_PLSQL_DATATYPES.AmtTabTyp;
13593  u_ppl_act_cost_to_date_fc                PA_PLSQL_DATATYPES.AmtTabTyp;
13594  u_ppl_act_rawcost_to_date_fc             PA_PLSQL_DATATYPES.AmtTabTyp;
13595  u_ppl_etc_effort_to_date                 PA_PLSQL_DATATYPES.QtyTabtyp;
13596  u_ppl_etc_cost_to_date_tc                PA_PLSQL_DATATYPES.AmtTabTyp;
13597  u_ppl_etc_rawcost_to_date_tc             PA_PLSQL_DATATYPES.AmtTabTyp;
13598  u_ppl_etc_cost_to_date_pc                PA_PLSQL_DATATYPES.AmtTabTyp;
13599  u_ppl_etc_rawcost_to_date_pc             PA_PLSQL_DATATYPES.AmtTabTyp;
13600  u_ppl_etc_cost_to_date_fc                PA_PLSQL_DATATYPES.AmtTabTyp;
13601  u_ppl_etc_rawcost_to_date_fc             PA_PLSQL_DATATYPES.AmtTabTyp;
13602  u_eqpmt_act_effort_to_date               PA_PLSQL_DATATYPES.QtyTabtyp;
13603  u_eqpmt_act_cost_to_date_tc              PA_PLSQL_DATATYPES.AmtTabTyp;
13604  u_eqpmt_act_rawcost_to_date_tc           PA_PLSQL_DATATYPES.AmtTabTyp;
13605  u_eqpmt_act_cost_to_date_pc              PA_PLSQL_DATATYPES.AmtTabTyp;
13606  u_eqpmt_act_rawcost_to_date_pc           PA_PLSQL_DATATYPES.AmtTabTyp;
13607  u_eqpmt_act_cost_to_date_fc              PA_PLSQL_DATATYPES.AmtTabTyp;
13608  u_eqpmt_act_rawcost_to_date_fc           PA_PLSQL_DATATYPES.AmtTabTyp;
13609  u_eqpmt_etc_effort_to_date               PA_PLSQL_DATATYPES.QtyTabtyp;
13610  u_eqpmt_etc_cost_to_date_tc              PA_PLSQL_DATATYPES.AmtTabTyp;
13611  u_eqpmt_etc_rawcost_to_date_tc           PA_PLSQL_DATATYPES.AmtTabTyp;
13612  u_eqpmt_etc_cost_to_date_pc              PA_PLSQL_DATATYPES.AmtTabTyp;
13613  u_eqpmt_etc_rawcost_to_date_pc           PA_PLSQL_DATATYPES.AmtTabTyp;
13614  u_eqpmt_etc_cost_to_date_fc              PA_PLSQL_DATATYPES.AmtTabTyp;
13615  u_eqpmt_etc_rawcost_to_date_fc           PA_PLSQL_DATATYPES.AmtTabTyp;
13616 
13617  u1_progress_rollup_id                    PA_PLSQL_DATATYPES.Num15TabTyp;
13618 
13619  ETC_PROJECT_ID                           PA_PLSQL_DATATYPES.Num15TabTyp;
13620  ETC_PROJECT_ORG_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
13621  ETC_PROJECT_ELEMENT_ID                   PA_PLSQL_DATATYPES.Num15TabTyp;
13622  -- CBS Change in Get_Summarized_Actuals
13623  ETC_CBS_ELEMENT_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
13624  -- End CBS Change in Get_Summarized_Actuals
13625  ETC_STRUCT_VER_ID                        PA_PLSQL_DATATYPES.Num15TabTyp;
13626  ETC_PERIOD_NAME                          PA_PLSQL_DATATYPES.Char80TabTyp;
13627  ETC_CALENDAR_TYPE                        PA_PLSQL_DATATYPES.Char1TabTyp;
13628  ETC_START_DATE                           PA_PLSQL_DATATYPES.DateTabTyp;
13629  ETC_END_DATE                             PA_PLSQL_DATATYPES.DateTabTyp;
13630  ETC_RBS_ELEMENT_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
13631  ETC_RBS_VERSION_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
13632  ETC_PLAN_VERSION_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
13633  ETC_PLAN_TYPE_ID                         PA_PLSQL_DATATYPES.Num15TabTyp;
13634  ETC_WP_VERSION_FLAG                      PA_PLSQL_DATATYPES.Char1TabTyp;
13635  ETC_ROLLUP_TYPE                          PA_PLSQL_DATATYPES.Char1TabTyp;
13636  ETC_TXN_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
13637  ETC_QUANTITY                             PA_PLSQL_DATATYPES.AmtTabTyp;
13638  ETC_TXN_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
13639  ETC_PRJ_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
13640  ETC_PFC_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
13641  ETC_TXN_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
13642  ETC_PRJ_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
13643  ETC_PFC_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
13644  ETC_RESOURCE_CLASS_CODE                  PA_PLSQL_DATATYPES.Char30TabTyp;
13645  ETC_RATE_BASED_FLAG                      PA_PLSQL_DATATYPES.Char1TabTyp;
13646  ETC_PRJ_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
13647  ETC_PFC_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
13648 
13649 -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13650 
13651  t_PROJECT_ID                               PA_PLSQL_DATATYPES.Num15TabTyp;
13652  t_STRUCTURE_VERSION_ID                     PA_PLSQL_DATATYPES.Num15TabTyp;
13653  t_TASK_ID                                  PA_PLSQL_DATATYPES.Num15TabTyp;
13654  t_RESOURCE_ASSIGNMENT_ID                   PA_PLSQL_DATATYPES.Num15TabTyp;
13655  t_AS_OF_DATE                               PA_PLSQL_DATATYPES.DateTabTyp;
13656  t_ACTUAL_COST                              PA_PLSQL_DATATYPES.AmtTabTyp;
13657  t_ACTUAL_EFFORT                            PA_PLSQL_DATATYPES.QtyTabTyp;
13658  t_PERIOD_NAME                              PA_PLSQL_DATATYPES.Char30TabTyp;
13659  t_TXN_CURRENCY_CODE                        PA_PLSQL_DATATYPES.Char15TabTyp;
13660  t_ACTUAL_COST_PC                           PA_PLSQL_DATATYPES.AmtTabTyp;
13661  t_ACTUAL_COST_FC                           PA_PLSQL_DATATYPES.AmtTabTyp;
13662  t_ACTUAL_RAWCOST                           PA_PLSQL_DATATYPES.AmtTabTyp;
13663  t_ACTUAL_RAWCOST_PC                        PA_PLSQL_DATATYPES.AmtTabTyp;
13664  t_ACTUAL_RAWCOST_FC                        PA_PLSQL_DATATYPES.AmtTabTyp;
13665  t_HIDDEN_RES_ASSGN_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
13666  t_RESOURCE_LIST_MEMBER_ID                  PA_PLSQL_DATATYPES.Num15TabTyp;
13667  t_CURRENT_FLAG                             PA_PLSQL_DATATYPES.Char1TabTyp;
13668  t_OBJECT_TYPE                              PA_PLSQL_DATATYPES.Char30TabTyp;
13669  t_PERCENT_COMPLETE_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
13670  t_track_wp_cost_flag                       PA_PLSQL_DATATYPES.Char1TabTyp;
13671  t_min_start_date                           PA_PLSQL_DATATYPES.DateTabTyp;
13672  t_max_end_date                             PA_PLSQL_DATATYPES.DateTabTyp;
13673 
13674  l_t_index                           NUMBER:=0;
13675  l_index_etc                         NUMBER:=0;
13676  l_sri_index_etc                     NUMBER:=0;  -- 6266824 added this variable for replacing
13677  l_t_temp_index                      NUMBER:=0;
13678  i                   NUMBER;
13679  l_period_flag               VARCHAR2(1);
13680  l_last_period_flag                  VARCHAR2(1);
13681  l_extraction_type                   VARCHAR2(30);
13682 
13683 -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
13684 
13685 -- cursor to get rollup record for as of date
13686 cursor rollup_rec_asofdate is
13687 select PROGRESS_ROLLUP_ID,
13688        PERCENT_COMPLETE_ID,
13689        PROJECT_ID,
13690        OBJECT_ID,
13691        OBJECT_TYPE,
13692        AS_OF_DATE,
13693        OBJECT_VERSION_ID,
13694        LAST_UPDATE_DATE,
13695        LAST_UPDATED_BY,
13696        CREATION_DATE,
13697        CREATED_BY,
13698        PROGRESS_STATUS_CODE,
13699        LAST_UPDATE_LOGIN,
13700        INCREMENTAL_WORK_QUANTITY,
13701        CUMULATIVE_WORK_QUANTITY,
13702        BASE_PERCENT_COMPLETE,
13703        EFF_ROLLUP_PERCENT_COMP,
13704        COMPLETED_PERCENTAGE,
13705        ESTIMATED_START_DATE,
13706        ESTIMATED_FINISH_DATE,
13707        ACTUAL_START_DATE,
13708        ACTUAL_FINISH_DATE,
13709        ESTIMATED_REMAINING_EFFORT,
13710        RECORD_VERSION_NUMBER,
13711        BASE_PERCENT_COMP_DERIV_CODE,
13712        BASE_PROGRESS_STATUS_CODE,
13713        EFF_ROLLUP_PROG_STAT_CODE,
13714        STRUCTURE_TYPE,
13715        PROJ_ELEMENT_ID,
13716        STRUCTURE_VERSION_ID,
13717        PPL_ACT_EFFORT_TO_DATE,
13718        EQPMT_ACT_EFFORT_TO_DATE,
13719        EQPMT_ETC_EFFORT,
13720        OTH_ACT_COST_TO_DATE_TC,
13721        OTH_ACT_RAWCOST_TO_DATE_TC,
13722        OTH_ACT_COST_TO_DATE_FC,
13723        OTH_ACT_RAWCOST_TO_DATE_FC,
13724        OTH_ACT_COST_TO_DATE_PC,
13725        OTH_ACT_RAWCOST_TO_DATE_PC,
13726        OTH_ETC_COST_TC,
13727        OTH_ETC_RAWCOST_TC,
13728        OTH_ETC_COST_FC,
13729        OTH_ETC_RAWCOST_FC,
13730        OTH_ETC_COST_PC,
13731        OTH_ETC_RAWCOST_PC,
13732        PPL_ACT_COST_TO_DATE_TC,
13733        PPL_ACT_RAWCOST_TO_DATE_TC,
13734        PPL_ACT_COST_TO_DATE_FC,
13735        PPL_ACT_RAWCOST_TO_DATE_FC,
13736        PPL_ACT_COST_TO_DATE_PC,
13737        PPL_ACT_RAWCOST_TO_DATE_PC,
13738        PPL_ETC_COST_TC,
13739        PPL_ETC_RAWCOST_TC,
13740        PPL_ETC_COST_FC,
13741        PPL_ETC_RAWCOST_FC,
13742        PPL_ETC_COST_PC,
13743        PPL_ETC_RAWCOST_PC,
13744        EQPMT_ACT_COST_TO_DATE_TC,
13745        EQPMT_ACT_RAWCOST_TO_DATE_TC,
13746        EQPMT_ACT_COST_TO_DATE_FC,
13747        EQPMT_ACT_RAWCOST_TO_DATE_FC,
13748        EQPMT_ACT_COST_TO_DATE_PC,
13749        EQPMT_ACT_RAWCOST_TO_DATE_PC,
13750        EQPMT_ETC_COST_TC,
13751        EQPMT_ETC_RAWCOST_TC,
13752        EQPMT_ETC_COST_FC,
13753        EQPMT_ETC_RAWCOST_FC,
13754        EQPMT_ETC_COST_PC,
13755        EQPMT_ETC_RAWCOST_PC,
13756        EARNED_VALUE,
13757        TASK_WT_BASIS_CODE,
13758        SUBPRJ_PPL_ACT_EFFORT,
13759        SUBPRJ_EQPMT_ACT_EFFORT,
13760        SUBPRJ_PPL_ETC_EFFORT,
13761        SUBPRJ_EQPMT_ETC_EFFORT,
13762        SUBPRJ_OTH_ACT_COST_TO_DT_TC,
13763        SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
13764        SUBPRJ_OTH_ACT_COST_TO_DT_FC,
13765        SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
13766        SUBPRJ_OTH_ACT_COST_TO_DT_PC,
13767        SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
13768        SUBPRJ_PPL_ACT_COST_TC,
13769        SUBPRJ_PPL_ACT_RAWCOST_TC,
13770        SUBPRJ_PPL_ACT_COST_FC,
13771        SUBPRJ_PPL_ACT_RAWCOST_FC,
13772        SUBPRJ_PPL_ACT_COST_PC,
13773        SUBPRJ_PPL_ACT_RAWCOST_PC,
13774        SUBPRJ_EQPMT_ACT_COST_TC,
13775        SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13776        SUBPRJ_EQPMT_ACT_COST_FC,
13777        SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13778        SUBPRJ_EQPMT_ACT_COST_PC,
13779        SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13780        SUBPRJ_OTH_ETC_COST_TC,
13781        SUBPRJ_OTH_ETC_RAWCOST_TC,
13782        SUBPRJ_OTH_ETC_COST_FC,
13783        SUBPRJ_OTH_ETC_RAWCOST_FC,
13784        SUBPRJ_OTH_ETC_COST_PC,
13785        SUBPRJ_OTH_ETC_RAWCOST_PC,
13786        SUBPRJ_PPL_ETC_COST_TC,
13787        SUBPRJ_PPL_ETC_RAWCOST_TC,
13788        SUBPRJ_PPL_ETC_COST_FC,
13789        SUBPRJ_PPL_ETC_RAWCOST_FC,
13790        SUBPRJ_PPL_ETC_COST_PC,
13791        SUBPRJ_PPL_ETC_RAWCOST_PC,
13792        SUBPRJ_EQPMT_ETC_COST_TC,
13793        SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13794        SUBPRJ_EQPMT_ETC_COST_FC,
13795        SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13796        SUBPRJ_EQPMT_ETC_COST_PC,
13797        SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13798        SUBPRJ_EARNED_VALUE,
13799        CURRENT_FLAG,
13800        PROJFUNC_COST_RATE_TYPE,
13801        PROJFUNC_COST_EXCHANGE_RATE,
13802        PROJFUNC_COST_RATE_DATE,
13803        PROJ_COST_RATE_TYPE,
13804        PROJ_COST_EXCHANGE_RATE,
13805        PROJ_COST_RATE_DATE,
13806        TXN_CURRENCY_CODE,
13807        PROG_PA_PERIOD_NAME,
13808        PROG_GL_PERIOD_NAME,
13809        OTH_QUANTITY_TO_DATE,
13810        OTH_ETC_QUANTITY,
13811        -- Add cbs_element_id
13812        CBS_ELEMENT_ID
13813   from pa_progress_rollup
13814  where  project_id = l_project_id
13815      and object_id = l_object_id
13816      and object_Type = l_object_type
13817      -- Add cbs_element_id
13818      and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13819      and structure_type = 'WORKPLAN'
13820      and structure_version_id is null
13821      and proj_element_id = l_task_id
13822      AND current_flag <> 'W'   -- Bug 3879461
13823      and trunc(as_of_date) = (select max(trunc(as_of_Date))
13824                                 from pa_progress_rollup
13825                                where project_id = l_project_id
13826                                  and object_id = l_object_id
13827                                  and object_Type = l_object_type
13828                                  -- Add cbs_element_id
13829                                  and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13830                                  and structure_type = 'WORKPLAN'
13831                                  and structure_version_id is null
13832                                  and proj_element_id = l_task_id
13833                                  AND current_flag <> 'W'   -- Bug 3879461
13834                                  and trunc(as_of_Date) <= l_temp_as_of_date);
13835 
13836 l_rollup_rec_asofdate     rollup_rec_asofdate%rowtype;
13837 
13838 -- cursor to get working rollup record for as of date
13839 cursor w_rollup_rec_asofdate is
13840 select PROGRESS_ROLLUP_ID,
13841        PERCENT_COMPLETE_ID,
13842        PROJECT_ID,
13843        OBJECT_ID,
13844        OBJECT_TYPE,
13845        AS_OF_DATE,
13846        OBJECT_VERSION_ID,
13847        LAST_UPDATE_DATE,
13848        LAST_UPDATED_BY,
13849        CREATION_DATE,
13850        CREATED_BY,
13851        PROGRESS_STATUS_CODE,
13852        LAST_UPDATE_LOGIN,
13853        INCREMENTAL_WORK_QUANTITY,
13854        CUMULATIVE_WORK_QUANTITY,
13855        BASE_PERCENT_COMPLETE,
13856        EFF_ROLLUP_PERCENT_COMP,
13857        COMPLETED_PERCENTAGE,
13858        ESTIMATED_START_DATE,
13859        ESTIMATED_FINISH_DATE,
13860        ACTUAL_START_DATE,
13861        ACTUAL_FINISH_DATE,
13862        ESTIMATED_REMAINING_EFFORT,
13863        RECORD_VERSION_NUMBER,
13864        BASE_PERCENT_COMP_DERIV_CODE,
13865        BASE_PROGRESS_STATUS_CODE,
13866        EFF_ROLLUP_PROG_STAT_CODE,
13867        STRUCTURE_TYPE,
13868        PROJ_ELEMENT_ID,
13869        STRUCTURE_VERSION_ID,
13870        PPL_ACT_EFFORT_TO_DATE,
13871        EQPMT_ACT_EFFORT_TO_DATE,
13872        EQPMT_ETC_EFFORT,
13873        OTH_ACT_COST_TO_DATE_TC,
13874        OTH_ACT_RAWCOST_TO_DATE_TC,
13875        OTH_ACT_COST_TO_DATE_FC,
13876        OTH_ACT_RAWCOST_TO_DATE_FC,
13877        OTH_ACT_COST_TO_DATE_PC,
13878        OTH_ACT_RAWCOST_TO_DATE_PC,
13879        OTH_ETC_COST_TC,
13880        OTH_ETC_RAWCOST_TC,
13881        OTH_ETC_COST_FC,
13882        OTH_ETC_RAWCOST_FC,
13883        OTH_ETC_COST_PC,
13884        OTH_ETC_RAWCOST_PC,
13885        PPL_ACT_COST_TO_DATE_TC,
13886        PPL_ACT_RAWCOST_TO_DATE_TC,
13887        PPL_ACT_COST_TO_DATE_FC,
13888        PPL_ACT_RAWCOST_TO_DATE_FC,
13889        PPL_ACT_COST_TO_DATE_PC,
13890        PPL_ACT_RAWCOST_TO_DATE_PC,
13891        PPL_ETC_COST_TC,
13892        PPL_ETC_RAWCOST_TC,
13893        PPL_ETC_COST_FC,
13894        PPL_ETC_RAWCOST_FC,
13895        PPL_ETC_COST_PC,
13896        PPL_ETC_RAWCOST_PC,
13897        EQPMT_ACT_COST_TO_DATE_TC,
13898        EQPMT_ACT_RAWCOST_TO_DATE_TC,
13899        EQPMT_ACT_COST_TO_DATE_FC,
13900        EQPMT_ACT_RAWCOST_TO_DATE_FC,
13901        EQPMT_ACT_COST_TO_DATE_PC,
13902        EQPMT_ACT_RAWCOST_TO_DATE_PC,
13903        EQPMT_ETC_COST_TC,
13904        EQPMT_ETC_RAWCOST_TC,
13905        EQPMT_ETC_COST_FC,
13906        EQPMT_ETC_RAWCOST_FC,
13907        EQPMT_ETC_COST_PC,
13908        EQPMT_ETC_RAWCOST_PC,
13909        EARNED_VALUE,
13910        TASK_WT_BASIS_CODE,
13911        SUBPRJ_PPL_ACT_EFFORT,
13912        SUBPRJ_EQPMT_ACT_EFFORT,
13913        SUBPRJ_PPL_ETC_EFFORT,
13914        SUBPRJ_EQPMT_ETC_EFFORT,
13915        SUBPRJ_OTH_ACT_COST_TO_DT_TC,
13916        SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
13917        SUBPRJ_OTH_ACT_COST_TO_DT_FC,
13918        SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
13919        SUBPRJ_OTH_ACT_COST_TO_DT_PC,
13920        SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
13921        SUBPRJ_PPL_ACT_COST_TC,
13922        SUBPRJ_PPL_ACT_RAWCOST_TC,
13923        SUBPRJ_PPL_ACT_COST_FC,
13924        SUBPRJ_PPL_ACT_RAWCOST_FC,
13925        SUBPRJ_PPL_ACT_COST_PC,
13926        SUBPRJ_PPL_ACT_RAWCOST_PC,
13927        SUBPRJ_EQPMT_ACT_COST_TC,
13928        SUBPRJ_EQPMT_ACT_RAWCOST_TC,
13929        SUBPRJ_EQPMT_ACT_COST_FC,
13930        SUBPRJ_EQPMT_ACT_RAWCOST_FC,
13931        SUBPRJ_EQPMT_ACT_COST_PC,
13932        SUBPRJ_EQPMT_ACT_RAWCOST_PC,
13933        SUBPRJ_OTH_ETC_COST_TC,
13934        SUBPRJ_OTH_ETC_RAWCOST_TC,
13935        SUBPRJ_OTH_ETC_COST_FC,
13936        SUBPRJ_OTH_ETC_RAWCOST_FC,
13937        SUBPRJ_OTH_ETC_COST_PC,
13938        SUBPRJ_OTH_ETC_RAWCOST_PC,
13939        SUBPRJ_PPL_ETC_COST_TC,
13940        SUBPRJ_PPL_ETC_RAWCOST_TC,
13941        SUBPRJ_PPL_ETC_COST_FC,
13942        SUBPRJ_PPL_ETC_RAWCOST_FC,
13943        SUBPRJ_PPL_ETC_COST_PC,
13944        SUBPRJ_PPL_ETC_RAWCOST_PC,
13945        SUBPRJ_EQPMT_ETC_COST_TC,
13946        SUBPRJ_EQPMT_ETC_RAWCOST_TC,
13947        SUBPRJ_EQPMT_ETC_COST_FC,
13948        SUBPRJ_EQPMT_ETC_RAWCOST_FC,
13949        SUBPRJ_EQPMT_ETC_COST_PC,
13950        SUBPRJ_EQPMT_ETC_RAWCOST_PC,
13951        SUBPRJ_EARNED_VALUE,
13952        CURRENT_FLAG,
13953        PROJFUNC_COST_RATE_TYPE,
13954        PROJFUNC_COST_EXCHANGE_RATE,
13955        PROJFUNC_COST_RATE_DATE,
13956        PROJ_COST_RATE_TYPE,
13957        PROJ_COST_EXCHANGE_RATE,
13958        PROJ_COST_RATE_DATE,
13959        TXN_CURRENCY_CODE,
13960        PROG_PA_PERIOD_NAME,
13961        PROG_GL_PERIOD_NAME,
13962        OTH_QUANTITY_TO_DATE,
13963        OTH_ETC_QUANTITY
13964   from pa_progress_rollup
13965  where  project_id = l_project_id
13966      and object_id = l_object_id
13967      and object_Type = l_object_type
13968        -- Add cbs_element_id
13969       and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
13970      and structure_type = 'WORKPLAN'
13971      and structure_version_id is null
13972      and proj_element_id = l_task_id
13973      AND current_flag = 'W';   -- Bug 3879461
13974 
13975 l_w_rollup_rec_asofdate     w_rollup_rec_asofdate%rowtype;
13976 
13977 -- cursor to get rollup records after as of date
13978 cursor future_rollup_recs is
13979 select PROGRESS_ROLLUP_ID,
13980        PERCENT_COMPLETE_ID,
13981        PROJECT_ID,
13982        OBJECT_ID,
13983        OBJECT_TYPE,
13984        AS_OF_DATE,
13985        OBJECT_VERSION_ID,
13986        LAST_UPDATE_DATE,
13987        LAST_UPDATED_BY,
13988        CREATION_DATE,
13989        CREATED_BY,
13990        PROGRESS_STATUS_CODE,
13991        LAST_UPDATE_LOGIN,
13992        INCREMENTAL_WORK_QUANTITY,
13993        CUMULATIVE_WORK_QUANTITY,
13994        BASE_PERCENT_COMPLETE,
13995        EFF_ROLLUP_PERCENT_COMP,
13996        COMPLETED_PERCENTAGE,
13997        ESTIMATED_START_DATE,
13998        ESTIMATED_FINISH_DATE,
13999        ACTUAL_START_DATE,
14000        ACTUAL_FINISH_DATE,
14001        ESTIMATED_REMAINING_EFFORT,
14002        RECORD_VERSION_NUMBER,
14003        BASE_PERCENT_COMP_DERIV_CODE,
14004        BASE_PROGRESS_STATUS_CODE,
14005        EFF_ROLLUP_PROG_STAT_CODE,
14006        STRUCTURE_TYPE,
14007        PROJ_ELEMENT_ID,
14008        STRUCTURE_VERSION_ID,
14009        PPL_ACT_EFFORT_TO_DATE,
14010        EQPMT_ACT_EFFORT_TO_DATE,
14011        EQPMT_ETC_EFFORT,
14012        OTH_ACT_COST_TO_DATE_TC,
14013        OTH_ACT_RAWCOST_TO_DATE_TC,
14014        OTH_ACT_COST_TO_DATE_FC,
14015        OTH_ACT_RAWCOST_TO_DATE_FC,
14016        OTH_ACT_COST_TO_DATE_PC,
14017        OTH_ACT_RAWCOST_TO_DATE_PC,
14018        OTH_ETC_COST_TC,
14019        OTH_ETC_RAWCOST_TC,
14020        OTH_ETC_COST_FC,
14021        OTH_ETC_RAWCOST_FC,
14022        OTH_ETC_COST_PC,
14023        OTH_ETC_RAWCOST_PC,
14024        PPL_ACT_COST_TO_DATE_TC,
14025        PPL_ACT_RAWCOST_TO_DATE_TC,
14026        PPL_ACT_COST_TO_DATE_FC,
14027        PPL_ACT_RAWCOST_TO_DATE_FC,
14028        PPL_ACT_COST_TO_DATE_PC,
14029        PPL_ACT_RAWCOST_TO_DATE_PC,
14030        PPL_ETC_COST_TC,
14031        PPL_ETC_RAWCOST_TC,
14032        PPL_ETC_COST_FC,
14033        PPL_ETC_RAWCOST_FC,
14034        PPL_ETC_COST_PC,
14035        PPL_ETC_RAWCOST_PC,
14036        EQPMT_ACT_COST_TO_DATE_TC,
14037        EQPMT_ACT_RAWCOST_TO_DATE_TC,
14038        EQPMT_ACT_COST_TO_DATE_FC,
14039        EQPMT_ACT_RAWCOST_TO_DATE_FC,
14040        EQPMT_ACT_COST_TO_DATE_PC,
14041        EQPMT_ACT_RAWCOST_TO_DATE_PC,
14042        EQPMT_ETC_COST_TC,
14043        EQPMT_ETC_RAWCOST_TC,
14044        EQPMT_ETC_COST_FC,
14045        EQPMT_ETC_RAWCOST_FC,
14046        EQPMT_ETC_COST_PC,
14047        EQPMT_ETC_RAWCOST_PC,
14048        EARNED_VALUE,
14049        TASK_WT_BASIS_CODE,
14050        SUBPRJ_PPL_ACT_EFFORT,
14051        SUBPRJ_EQPMT_ACT_EFFORT,
14052        SUBPRJ_PPL_ETC_EFFORT,
14053        SUBPRJ_EQPMT_ETC_EFFORT,
14054        SUBPRJ_OTH_ACT_COST_TO_DT_TC,
14055        SPJ_OTH_ACT_RAWCOST_TO_DT_TC,
14056        SUBPRJ_OTH_ACT_COST_TO_DT_FC,
14057        SPJ_OTH_ACT_RAWCOST_TO_DT_FC,
14058        SUBPRJ_OTH_ACT_COST_TO_DT_PC,
14059        SPJ_OTH_ACT_RAWCOST_TO_DT_PC,
14060        SUBPRJ_PPL_ACT_COST_TC,
14061        SUBPRJ_PPL_ACT_RAWCOST_TC,
14062        SUBPRJ_PPL_ACT_COST_FC,
14063        SUBPRJ_PPL_ACT_RAWCOST_FC,
14064        SUBPRJ_PPL_ACT_COST_PC,
14065        SUBPRJ_PPL_ACT_RAWCOST_PC,
14066        SUBPRJ_EQPMT_ACT_COST_TC,
14067        SUBPRJ_EQPMT_ACT_RAWCOST_TC,
14068        SUBPRJ_EQPMT_ACT_COST_FC,
14069        SUBPRJ_EQPMT_ACT_RAWCOST_FC,
14070        SUBPRJ_EQPMT_ACT_COST_PC,
14071        SUBPRJ_EQPMT_ACT_RAWCOST_PC,
14072        SUBPRJ_OTH_ETC_COST_TC,
14073        SUBPRJ_OTH_ETC_RAWCOST_TC,
14074        SUBPRJ_OTH_ETC_COST_FC,
14075        SUBPRJ_OTH_ETC_RAWCOST_FC,
14076        SUBPRJ_OTH_ETC_COST_PC,
14077        SUBPRJ_OTH_ETC_RAWCOST_PC,
14078        SUBPRJ_PPL_ETC_COST_TC,
14079        SUBPRJ_PPL_ETC_RAWCOST_TC,
14080        SUBPRJ_PPL_ETC_COST_FC,
14081        SUBPRJ_PPL_ETC_RAWCOST_FC,
14082        SUBPRJ_PPL_ETC_COST_PC,
14083        SUBPRJ_PPL_ETC_RAWCOST_PC,
14084        SUBPRJ_EQPMT_ETC_COST_TC,
14085        SUBPRJ_EQPMT_ETC_RAWCOST_TC,
14086        SUBPRJ_EQPMT_ETC_COST_FC,
14087        SUBPRJ_EQPMT_ETC_RAWCOST_FC,
14088        SUBPRJ_EQPMT_ETC_COST_PC,
14089        SUBPRJ_EQPMT_ETC_RAWCOST_PC,
14090        SUBPRJ_EARNED_VALUE,
14091        CURRENT_FLAG,
14092        PROJFUNC_COST_RATE_TYPE,
14093        PROJFUNC_COST_EXCHANGE_RATE,
14094        PROJFUNC_COST_RATE_DATE,
14095        PROJ_COST_RATE_TYPE,
14096        PROJ_COST_EXCHANGE_RATE,
14097        PROJ_COST_RATE_DATE,
14098        TXN_CURRENCY_CODE,
14099        PROG_PA_PERIOD_NAME,
14100        PROG_GL_PERIOD_NAME,
14101        OTH_QUANTITY_TO_DATE,
14102        OTH_ETC_QUANTITY
14103   from pa_progress_rollup
14104  where project_id = l_project_id
14105    and object_id = l_object_id
14106    and object_type = l_object_type
14107    -- Add cbs_element_id
14108    and ( (l_object_type <> 'PA_ASSIGNMENTS') or (l_object_type = 'PA_ASSIGNMENTS' and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1)))
14109    and structure_type = 'WORKPLAN'
14110    and structure_version_id is null
14111    and proj_element_id = l_task_id
14112    and as_of_Date > l_temp_as_of_date;
14113 
14114 l_future_rollup_recs     future_rollup_recs%rowtype;
14115 
14116 -- cursor to get all assignment records for that as of date
14117 cursor all_assignments_asofdate is
14118 select *
14119   from pa_progress_rollup
14120  where project_id = l_project_id
14121    and object_type = 'PA_ASSIGNMENTS'
14122    and structure_version_id is null
14123    and structure_Type = 'WORKPLAN'
14124    --- and nvl(ppl_act_effort_to_date,0) + nvl(eqpmt_act_effort_to_date,0) + nvl(oth_quantity_to_date,0) > 0
14125    AND current_flag <> 'W'   -- Bug 3879461
14126    and as_of_date = l_temp_as_of_Date;
14127 
14128 -- cursor to get all assignment records for the previous as of date
14129 cursor all_assign_prev_asofdate is
14130 select *
14131   from pa_progress_rollup ppr
14132  where ppr.project_id = l_project_id
14133    and ppr.object_type = 'PA_ASSIGNMENTS'
14134    and ppr.structure_version_id is null
14135    and ppr.structure_Type = 'WORKPLAN'
14136    AND current_flag <> 'W'   -- Bug 3879461
14137    and ppr.as_of_date = (select /*+ no_merge leading(PPr1) */ max(as_of_date) --Added hint for 11694228
14138                          from pa_progress_rollup ppr1
14139                         where ppr1.project_id = l_project_id
14140                           and ppr1.object_type = 'PA_ASSIGNMENTS'
14141                           and ppr1.object_id = ppr.object_id
14142                           and ppr1.proj_element_id = ppr.proj_element_id
14143                           and ppr1.structure_version_id is null
14144                           and ppr1.structure_Type = 'WORKPLAN'
14145                           AND current_flag <> 'W'   -- Bug 3879461
14146                           and ppr1.as_of_date < l_temp_as_of_Date
14147                           and not exists (select 1  ---4871809 performance bug
14148                                           from pa_progress_rollup ppr2
14149                                          where ppr2.project_id = l_project_id
14150                                            and ppr2.object_type = 'PA_ASSIGNMENTS'
14151                                            and ppr2.object_id = ppr.object_id
14152                                            and ppr2.proj_element_id = ppr.proj_element_id
14153                                            and ppr2.structure_version_id is null
14154                                            and ppr2.structure_Type = 'WORKPLAN'
14155                                            AND current_flag <> 'W'   -- Bug 3879461
14156                                            and ppr2.as_of_date = l_temp_as_of_Date));
14157 
14158 -- cursor to get all objects from summ temp table
14159 cursor all_objects_in_temp is
14160 select
14161        /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Bug # 4162534.
14162        *
14163   from pji_fm_xbs_accum_tmp1
14164  where project_id = l_project_id
14165    and struct_version_id = l_latest_wp_struct_ver_id
14166    and nvl(plan_version_id,-1) = decode(p_plan_res_level,'Y',-1,nvl(plan_version_id,-1))
14167    and project_element_id > 0
14168    -- and nvl(act_labor_hrs,0)+nvl(act_equip_hrs,0)+nvl(act_prj_raw_cost,0) > 0 --4654495,5091800
14169  order by project_id,struct_version_id,project_element_id,res_list_member_id,period_name;
14170 
14171 -- cursor to get resource_list_member_id's resource_class code
14172 cursor get_resource_class_code is
14173 select resource_class_code
14174   from pa_resource_list_members
14175  where resource_list_member_id = l_res_list_member_id;
14176 
14177 -- cursor to check if resource_list_memebr_id is that of a planned assignment
14178 cursor get_assignment_info is
14179 select resource_assignment_id,
14180        rbs_element_id,
14181        resource_class_code,
14182        rate_based_flag,
14183        txn_currency_code,
14184        assignment_start_date,
14185        assignment_end_date,
14186        planned_quantity,
14187        planned_bur_cost_txn_cur,
14188        planned_bur_cost_projfunc,
14189        planned_bur_cost_proj_cur,
14190        planned_raw_cost_txn_cur,
14191        planned_raw_cost_projfunc,
14192        planned_raw_cost_proj_cur,
14193        --CBS Change in Get_Summarized_Actuals
14194        cbs_element_id
14195        -- End CBS Change in Get_Summarized_Actuals
14196   from pa_task_asgmts_v
14197  where project_id = l_project_id
14198    and structure_version_id = l_latest_wp_struct_ver_id
14199    and task_id = l_task_id
14200    and resource_list_member_id = l_res_list_member_id
14201    -- CBS Change in Get_Summarized_Actuals
14202    and nvl(cbs_element_id,-1) = nvl(l_cbs_element_id,-1) ; -- Bug 16743324
14203    -- End CBS Change in Get_Summarized_Actuals
14204 
14205 l_get_assignment_info             get_assignment_info%rowtype;
14206 
14207 -- cursor to get task information
14208 cursor task_info(l_obj number) is
14209 select ppev.element_version_id,
14210        decode(ppe.base_percent_comp_deriv_code,null,ptt.BASE_PERCENT_COMP_DERIV_CODE,'^',ptt.BASE_PERCENT_COMP_DERIV_CODE,ppe.base_percent_comp_deriv_code) base_percent_comp_deriv_code,
14211        ptt.initial_progress_status_code,
14212        ppevs.scheduled_start_date,
14213        ppevs.scheduled_finish_date
14214   from pa_proj_elements ppe,
14215        pa_proj_element_versions ppev,
14216        pa_proj_elem_ver_schedule ppevs,
14217        pa_task_types ptt
14218  where ppev.proj_element_id = l_obj
14219    and ppev.parent_structure_version_id = l_latest_wp_struct_ver_id
14220    and ppev.proj_element_id = ppe.proj_element_id
14221    and ppevs.element_version_id = ppev.element_version_id
14222    and ppe.type_id = ptt.task_type_id(+);
14223 
14224 -- cursor to get progress rollup attrs
14225 cursor rollup_method is
14226 select TASK_WEIGHT_BASIS_CODE
14227   from pa_proj_progress_attr
14228  where project_id = l_project_id
14229    and structure_type = 'WORKPLAN';
14230 
14231 -- cursor to get planned value for task
14232 cursor get_planned_val_for_task is
14233 select labor_effort, labor_brdn_cost
14234   from pji_xbs_plans_v
14235  where project_id = l_project_id
14236    and structure_version_id = l_latest_wp_struct_ver_id
14237    and proj_element_id = l_object_id
14238    and structure_type = 'WORKPLAN';
14239 
14240 /* Begin: Fix for Bug # 4018249. */
14241 
14242 cursor cur_record_count(l_cur_project_id NUMBER) is
14243 select
14244 /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
14245 count(*)
14246 from pji_fm_xbs_accum_tmp1
14247 where project_id = l_cur_project_id;
14248 
14249 l_record_count  NUMBER := null;
14250 
14251 /* End: Fix for Bug # 4018249. CURSOR NOT USED ANYMORE, PJI passes period dates*/
14252 --- this cursor is used to get start_date for periods
14253 --- need this for converting act txn curr to plan txn curr
14254 CURSOR get_gl_pa_st_date_csr IS
14255 SELECT gp.START_DATE
14256   FROM gl_periods gp,
14257        gl_sets_of_books gsb,
14258        pa_implementations_all pia,
14259        pa_projects_all ppa
14260  WHERE ppa.project_id      = l_project_id
14261    and nvl(ppa.org_id,-99) = nvl(pia.org_id,-99)
14262    and gsb.set_of_books_id = pia.set_of_books_id
14263    and gp.period_set_name  = gsb.period_set_name
14264    AND gp.period_name      = l_period_name
14265    AND gp.period_type      = decode(l_plan_type,'G',gsb.accounted_period_type,'P',pia.pa_period_type)
14266    AND gp.adjustment_period_flag = 'N'
14267  ORDER BY gp.start_date;
14268 
14269 CURSOR cur_prog_setup(c_proj_element_id NUMBER, c_project_id number)
14270 IS
14271    SELECT nvl(ttype.PROG_ENTRY_ENABLE_FLAG, 'N'),initial_progress_status_code
14272      from pa_task_types ttype
14273      , pa_proj_elements elem
14274      where elem.project_id = c_project_id
14275        and elem.proj_element_id = c_proj_element_id
14276        and elem.object_type = 'PA_TASKS'
14277        and elem.type_id = ttype.task_type_id;
14278 l_prog_stat_code varchar2(240);
14279 l_prog_enable_flag varchar2(30);
14280 
14281 -- Added for Bug 6917961
14282 
14283 CURSOR c_get_prog_roll(c_progress_rollup_id NUMBER) IS
14284 SELECT ppr.progress_status_code
14285 , ppr.actual_start_date
14286 , ppr.actual_finish_date
14287 , ppr.proj_element_id
14288 , ppr.object_type
14289 , ppr.project_id
14290 FROM pa_progress_rollup ppr
14291 , pa_proj_elements ppe
14292 WHERE ppr.progress_rollup_id = c_progress_rollup_id
14293 AND ppr.proj_element_id = ppe.proj_element_id
14294 ;
14295 
14296 l_t_progress_status_code varchar2(240);
14297 l_t_actual_start_date date;
14298 l_t_actual_finish_date date;
14299 l_t_proj_element_id number;
14300 l_t_object_type varchar2(100);
14301 l_t_project_id number;
14302 
14303 U_PROGRESS_STATUS_CODE                PA_PLSQL_DATATYPES.Char150TabTyp;
14304 
14305 -- Added for Bug 6917961
14306 
14307 l_get_summ_call_contxt VARCHAR2(1) := 'W'; -- 4415960
14308 
14309 -- 4533112 Begin
14310 -- jjkumar : added c_proj_element_id parameter for bug 9778012
14311 CURSOR c_get_dates_overrides(c_project_id number, c_object_id number, c_object_type varchar2, c_as_of_date Date, c_proj_element_id number) IS
14312 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
14313 , ppr.estimated_start_date
14314 , ppr.estimated_finish_date
14315 , ppr.actual_start_date
14316 , ppr.actual_finish_date
14317 , ppe.status_code
14318 FROM pa_progress_rollup ppr
14319 , pa_proj_elements ppe
14320 WHERE ppr.project_id = c_project_id
14321 AND ppr.object_id = c_object_id
14322 AND ppr.object_type = c_object_type
14323 AND ppr.structure_type = 'WORKPLAN'
14324 AND ppr.structure_version_id is null
14325 AND trunc(ppr.as_of_date) <= trunc(c_as_of_date)
14326 AND ppr.current_flag IN ('Y', 'N')
14327 AND ppr.proj_element_id = ppe.proj_element_id
14328 AND ppe.proj_element_id = c_proj_element_id -- added c_proj_element_id for bug 9778012
14329 ORDER by as_of_date desc;
14330 
14331 CURSOR c_get_rec_overrides(c_progress_rollup_id NUMBER) IS
14332 SELECT decode(ppr.base_progress_status_code,'Y','Y','N') date_override_flag
14333 , ppr.estimated_start_date
14334 , ppr.estimated_finish_date
14335 , ppr.actual_start_date
14336 , ppr.actual_finish_date
14337 , ppe.status_code
14338 , ppr.object_id
14339 , ppr.object_version_id
14340 , ppr.proj_element_id
14341 , ppr.object_type
14342 , ppr.as_of_date
14343 , ppr.project_id
14344 , ppr.current_flag
14345 FROM pa_progress_rollup ppr
14346 , pa_proj_elements ppe
14347 WHERE ppr.progress_rollup_id = c_progress_rollup_id
14348 AND ppr.proj_element_id = ppe.proj_element_id
14349 ;
14350 
14351 l_date_override_flag            VARCHAR2(1):='N';
14352 l_db_date_override_flag         VARCHAR2(1):='N';
14353 l_db_estimated_start_date       DATE;
14354 l_db_estimated_finish_date      DATE;
14355 l_db_actual_start_date          DATE;
14356 l_db_actual_finish_date         DATE;
14357 l_clex_estimated_start_date     DATE;
14358 l_clex_estimated_finish_date    DATE;
14359 l_clex_actual_start_date        DATE;
14360 l_clex_actual_finish_date       DATE;
14361 l_task_status_code              VARCHAR2(150);
14362 u_actual_start_date             PA_PLSQL_DATATYPES.DateTabTyp;
14363 u_estimated_start_date          PA_PLSQL_DATATYPES.DateTabTyp;
14364 u_estimated_finish_date         PA_PLSQL_DATATYPES.DateTabTyp;
14365 u_base_progress_status_code     PA_PLSQL_DATATYPES.Char150TabTyp;
14366 l_db_object_id                  NUMBER;
14367 l_db_object_version_id          NUMBER;
14368 l_db_proj_element_id            NUMBER;
14369 l_db_object_type                VARCHAR2(30);
14370 l_db_as_of_date                 DATE;
14371 l_db_project_id                 NUMBER;
14372 l_db_current_flag               VARCHAR2(1);
14373 l_clex_pc                       NUMBER;
14374 -- 4533112 End
14375 
14376 -- 4654495
14377 cursor some_progress_exists is
14378 select 'Y'
14379   from pa_progress_rollup
14380  where project_id = l_project_id
14381    and proj_element_id = l_task_id
14382    and object_type in ('PA_TASKS','PA_ASSIGNMENTS');
14383 
14384 l_some_progress_exists          some_progress_exists%rowtype;
14385 -- Bug 6321238
14386 cursor check_pup_pue(c_project_id number,
14387                  c_latest_published_version_id number) is
14388 select 'Y'
14389   from pa_proj_elem_ver_structure
14390  where project_id = c_project_id
14391    and element_version_id = c_latest_published_version_id
14392    and process_code = 'PUE';
14393 
14394 l_check_pup_pue          VARCHAR2(1);
14395 
14396 
14397 l_data VARCHAR2(1000);-- 4746476
14398 l_msg_index_out NUMBER;	-- 4746476
14399 
14400 l_conc_request_id NUMBER; -- Added for Bug#5659575
14401 l_multi_curr_flag pa_proj_fp_options.PLAN_IN_MULTI_CURR_FLAG%TYPE := 'N'; --Bug 13823145
14402 
14403 --added for the Bug 13640836
14404 CURSOR get_element_number (l_proj_element_id NUMBER)
14405 IS
14406    SELECT element_number
14407      FROM pa_proj_elements p
14408     WHERE proj_element_id=l_proj_element_id;
14409 CURSOR get_res_assignment_name (l_resource_assignment_id NUMBER)
14410 IS
14411    SELECT rlm.ALIAS
14412      FROM pa_resource_assignments ra,
14413     pa_resource_list_members rlm
14414     WHERE ra.resource_list_member_id=rlm.resource_list_member_id
14415   AND ra.resource_assignment_id     =l_resource_assignment_id;
14416 CURSOR get_budget_version_name(l_budget_version_id NUMBER)
14417 IS
14418    SELECT version_name
14419      FROM pa_budget_versions
14420     WHERE budget_version_id=l_budget_version_id;
14421 l_element_number pa_proj_elements.element_number%type;
14422 l_res_assignment_name pa_resource_list_members.alias%type;
14423 l_plan_version_name pa_budget_versions.version_name%type;
14424 --added for the Bug 13640836
14425 BEGIN
14426   pa_debug.set_process('PLSQL');
14427   pa_debug.log_message('Begin GET_SUMM_ACT: p_extraction: '||p_extraction_type||' p_res_level: '||p_plan_res_level, 1);
14428 
14429   x_return_status := 'S';
14430   l_return_status := 'S';
14431   l_index := 0;
14432   l_extraction_type := p_extraction_type;
14433   if (p_extraction_type = 'INITIAL' OR p_extraction_type = 'PUBLISH') then -- 4415960 Added PUBLISH
14434      l_extraction_type := 'FULL';
14435   end if;
14436   -- 4415960
14437   if p_extraction_type = 'PUBLISH' then
14438      l_get_summ_call_contxt := 'P';
14439   end if;
14440 
14441   for l_index2 in 1..p_project_id_list.COUNT loop
14442     l_project_id := p_project_id_list(l_index2);
14443     l_org_id := to_number(null);
14444     l_shared_structure := 'N';
14445 
14446     open projects_in_range;
14447     fetch projects_in_range into l_org_id, l_proj_curr_code, l_proj_func_curr_code, l_shared_structure;
14448     close projects_in_range;
14449 
14450     if l_shared_structure = 'SHARE_FULL' then
14451 
14452              /* Commented for Bug 6414995  and reverted as above.
14453 
14454      if p_extraction_type = 'PUBLISH' then -- Added If block for bug#5659575
14455       l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id);
14456      else
14457       l_latest_wp_struct_ver_id := pa_project_structure_utils.GET_LATEST_FIN_STRUC_VER_ID(l_project_id);
14458      end if;
14459            Bug 6414995 */
14460      l_latest_wp_struct_ver_id := pa_project_structure_utils.get_latest_wp_version(l_project_id); --  Bug 6414995
14461       if l_latest_wp_struct_ver_id is not null then
14462          IF g1_debug_mode  = 'Y' THEN
14463            pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14464                     x_Msg => 'Project:'||l_project_id||' Structure:'||l_latest_wp_struct_ver_id,
14465                     x_Log_Level=> 3);
14466          END IF;
14467          l_index := l_index + 1;
14468          --- find the max published as_of_date for all lowest level tasks
14469          open max_as_of_date;
14470          fetch max_as_of_date into l_max_as_of_Date;
14471          close max_as_of_date;
14472 
14473          open max_as_of_date_assign;
14474          fetch max_as_of_date_assign into l_max_as_of_Date_assign;
14475          close max_as_of_date_assign;
14476 
14477          if (l_max_as_of_Date is null and l_max_as_of_Date_assign is null) then
14478             if (p_plan_res_level = 'Y') then
14479                open max_as_of_date_rollup;
14480                fetch max_as_of_date_rollup into l_max_as_of_Date;
14481                if (l_max_as_of_Date is not null) then
14482                  l_max_as_of_Date := l_max_as_of_Date;  ---5226910(5212999)
14483                end if;
14484                close max_as_of_date_rollup;
14485             else
14486                open max_as_of_date_rollup_tsk;
14487                fetch max_as_of_date_rollup_tsk into l_max_as_of_Date;
14488                if (l_max_as_of_Date is not null) then
14489                  l_max_as_of_Date := l_max_as_of_Date;  ---5226910(5212999)
14490                end if;
14491                close max_as_of_date_rollup_tsk;
14492             end if;
14493          end if;
14494 
14495          if nvl(l_max_as_of_date,trunc(sysdate)) <= trunc(sysdate) then
14496            l_max_as_of_date := trunc(sysdate) - 1;
14497          end if;
14498 
14499          if nvl(l_max_as_of_Date_assign,l_max_as_of_date) > l_max_as_of_date then
14500            l_max_as_of_date := l_max_as_of_Date_assign;
14501          end if;
14502 
14503          --- 5226910(5212999)
14504          if (l_max_as_of_date >= trunc(sysdate)) then
14505              l_temp_as_of_date := l_max_as_of_date;
14506          else
14507              --- get next cycle date after l_max_as_of_date
14508              l_temp_as_of_date := trunc(pa_progress_utils.get_next_progress_cycle(p_project_id => l_project_id,
14509                                               p_task_id           => to_number(null),
14510                                               p_start_date        => l_max_as_of_date));
14511          end if;
14512          proj_ids_tbl.extend;
14513          latest_wp_struct_ver_ids_tbl.extend;
14514          res_list_ids_tbl.extend;
14515          proj_org_ids_tbl.extend;
14516          proj_thru_dates_tbl.extend;
14517          calendar_type_tbl.extend;
14518          proj_curr_code_tbl.extend;
14519          proj_func_curr_code_tbl.extend;
14520          proj_pgm_level_tbl.extend;
14521          base_struct_ver_ids_tbl.extend;  -- Added for bug 5464875
14522 
14523          proj_ids_tbl(l_index) := l_project_id;
14524          latest_wp_struct_ver_ids_tbl(l_index) := l_latest_wp_struct_ver_id;
14525          res_list_ids_tbl(l_index) := pa_fin_plan_utils.Get_wp_bv_res_list_id(l_latest_wp_struct_ver_id);
14526          proj_org_ids_tbl(l_index) := l_org_id;
14527          proj_thru_dates_tbl(l_index) := trunc(l_temp_as_of_date);
14528          calendar_type_tbl(l_index) := pa_progress_utils.get_time_phase_period(l_latest_wp_struct_ver_id, l_project_id);
14529          proj_curr_code_tbl(l_index) := l_proj_curr_code;
14530          proj_func_curr_code_tbl(l_index) := l_proj_func_curr_code;
14531          if (p_proj_pgm_level.exists(l_index2)) then
14532             proj_pgm_level_tbl(l_index) := p_proj_pgm_level(l_index2);
14533          else
14534             proj_pgm_level_tbl(l_index) := 1;
14535          end if;
14536 
14537          -- Added for bug 5464875
14538          if (p_plan_res_level = 'N') then
14539             base_struct_ver_ids_tbl(l_index) := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14540             if (base_struct_ver_ids_tbl(l_index) = -1) then
14541                base_struct_ver_ids_tbl(l_index) := null;
14542             end if;
14543          end if;
14544       end if;
14545     end if;
14546   end loop;
14547 
14548   --- update next_progress_cycle_date column to stamp the date upto which
14549   --- actuals are pulled in
14550   forall l_index in 1..proj_ids_tbl.count
14551      update pa_proj_progress_attr
14552         set next_progress_update_date = proj_thru_dates_tbl(l_index)
14553       where project_id = proj_ids_tbl(l_index)
14554         and object_type = 'PA_STRUCTURES'
14555         and structure_type = 'WORKPLAN';
14556 
14557   begin
14558     if (p_plan_res_level = 'Y') then
14559       pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.get_summarized_data', 1);
14560       --- Call Reporting API to populate temp table with summarized actuals
14561       pji_fm_xbs_accum_utils.get_summarized_data(p_project_ids  => proj_ids_tbl,
14562                                              p_resource_list_ids => res_list_ids_tbl,
14563                                              p_struct_ver_ids => latest_wp_struct_ver_ids_tbl,
14564                                              p_end_Date => proj_thru_dates_tbl,
14565                                              p_calendar_type => calendar_type_tbl,
14566                                              p_record_type => 'NYN',
14567                                              p_currency_type => 6,
14568                                              --p_calling_context => 'W',
14569 					     p_calling_context => l_get_summ_call_contxt, -- 4415960
14570                                              p_extraction_type => l_extraction_type,
14571                                              x_return_status => x_return_status,
14572                                              x_msg_code => x_msg_code);
14573 
14574       /* Begin: Added for bug 5526638*/
14575       /* Added and condition for bug#5659575*/
14576 	 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') then
14577           PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14578                  p_msg_name       => x_msg_code);
14579           x_msg_data := x_msg_code;
14580           x_return_status := 'E';
14581           pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.get_summarized_data', 1);
14582                   RAISE  l_pji_wp_exception;
14583         END IF;
14584      /* End: Added for bug 5526638*/
14585 
14586       IF g1_debug_mode  = 'Y' THEN
14587        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14588                     x_Msg => 'Done with pji_fm_xbs_accum_utils.get_summarized_data',
14589                     x_Log_Level=> 3);
14590       END IF;
14591     end if;
14592   exception when others then
14593     pa_debug.log_message('GET_SUMM_ACT: get_summarized_data failed with exception', 1);
14594     fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
14595                             p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14596                             p_error_text     => SUBSTRB('pji_fm_xbs_accum_utils.get_summarized_data:'||SQLERRM,1,120));
14597     raise;
14598   end;
14599 
14600   -- Added for bug 5464875. Used Bulk Processing
14601   --- here call populate_workplan_data when plan_res_level is 'N'
14602   if (p_plan_res_level = 'N') then
14603     begin
14604       for i in 1..proj_ids_tbl.COUNT loop
14605         populate_in_tbl(i).project_id         := proj_ids_tbl(i);
14606         populate_in_tbl(i).struct_ver_id      := latest_wp_struct_ver_ids_tbl(i);
14607         populate_in_tbl(i).base_struct_ver_id := base_struct_ver_ids_tbl(i);
14608         populate_in_tbl(i).plan_version_id    := Null;
14609         populate_in_tbl(i).as_of_date         := proj_thru_dates_tbl(i);
14610         populate_in_tbl(i).project_element_id := Null;
14611 
14612         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'Starts', x_Log_Level=> 3);
14613         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).project_id='||populate_in_tbl(i).project_id, x_Log_Level=> 3);
14614         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).struct_ver_id='||populate_in_tbl(i).struct_ver_id, x_Log_Level=> 3);
14615         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).base_struct_ver_id='||populate_in_tbl(i).base_struct_ver_id, x_Log_Level=>3);
14616         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).plan_version_id='||populate_in_tbl(i).plan_version_id, x_Log_Level=> 3);
14617         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).as_of_date='||populate_in_tbl(i).as_of_date, x_Log_Level=> 3);
14618         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN', x_Msg => 'populate_in_tbl(i).project_element_id='||populate_in_tbl(i).project_element_id, x_Log_Level=> 3);
14619 
14620       end loop;
14621 
14622       pa_debug.log_message('GET_SUMM_ACT: Calling pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14623       --- Call Reporting API to populate temp table with workplan data
14624       PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_populate_in_tbl      => populate_in_tbl,
14625                                  p_calling_context      => 'SUMMARIZE',
14626                                  p_program_rollup_flag  => 'Y',
14627                                  x_return_status        => x_return_status,
14628                                  x_msg_code             => x_msg_code );
14629       /* Begin: Added for bug 5526638*/
14630 	 /* Added and condition for bug#5659575*/
14631 	 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS and p_extraction_type <> 'PUBLISH') THEN
14632             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14633                  p_msg_name       => x_msg_code);
14634             x_msg_data := x_msg_code;
14635             x_return_status := 'E';
14636             pa_debug.log_message('GET_SUMM_ACT: Error in pji_fm_xbs_accum_utils.populate_workplan_data', 1);
14637             RAISE  l_pji_wp_exception;
14638          END IF;
14639      /* End: Added for bug 5526638*/
14640 
14641       IF g1_debug_mode  = 'Y' THEN
14642          pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14643                         x_Msg => 'Done with pji_fm_xbs_accum_utils.populate_workplan_data',
14644                         x_Log_Level=> 3);
14645       END IF;
14646     exception when others then
14647      pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14648      fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
14649                              p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14650                              p_error_text     => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14651      raise;
14652    end;
14653   end if;
14654 
14655   --- Once the temp table is populated we need to update progress rollup
14656   --- records with the summarized actuals.
14657 
14658   if (x_return_status = 'S') then
14659 
14660     l_t_index := 0;  -- init here because this can be for range of projects
14661     l_index_etc := 0;  -- init here because this can be for range of projects
14662     l_sri_index_etc := 0;  -- for bug 6266824: init here because this can be for range of projects
14663 
14664     for l_index in 1..proj_ids_tbl.COUNT loop  --- FOR each PROJECT
14665       /* Begin: Fix for Bug # 5526638. */
14666        Begin
14667         l_act_err_flag.extend;
14668         l_act_err_msg.extend;
14669         l_err_msg := null;
14670         l_act_err_flag(l_index) := 0;
14671         l_act_err_msg(l_index)  := l_err_msg;
14672         SAVEPOINT ACT_PROJECT;
14673       /* End: Fix for Bug # 5526638. */
14674 
14675       l_project_id := proj_ids_tbl(l_index);
14676       l_wp_prl_res_class_flag := PA_PROJECT_STRUCTURE_UTILS.get_resource_class_flag(l_project_id); -- CBS Changes
14677       l_temp_as_of_date := proj_thru_dates_tbl(l_index);
14678       pa_debug.log_message('GET_SUMM_ACT: Project Id: '||l_project_id||' As of Date: '||l_temp_as_of_date||' Project Level: '||proj_pgm_level_tbl(l_index), 1);
14679       l_latest_wp_struct_ver_id := latest_wp_struct_ver_ids_tbl(l_index);
14680 
14681        /* Added for Bug 6414995 */
14682       l_check_pup_pue := 'N';
14683       if p_extraction_type <> 'PUBLISH' then
14684           open check_pup_pue(l_project_id, l_latest_wp_struct_ver_id);
14685           fetch check_pup_pue into l_check_pup_pue;
14686           close check_pup_pue;
14687 
14688           if (l_check_pup_pue = 'Y') then
14689             l_err_msg := 'Workplan publish for this project has failed.';
14690             raise l_skip_exception;
14691           end if;
14692       end if;
14693       /* End for Bug 6414995 */
14694 
14695       l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(l_project_id);  --Bug 3801745
14696       l_plan_type := calendar_type_tbl(l_index);
14697       l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => l_project_id);
14698       l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
14699                                                       p_project_id => l_project_id,
14700                                                       p_plan_type_id => -1,
14701                                                       p_proj_str_ver_id => l_latest_wp_struct_ver_id) ;
14702  --added for the Bug 13640836
14703 l_plan_version_name:=null;
14704 open get_budget_version_name(l_plan_version_id);
14705 fetch get_budget_version_name into l_plan_version_name;
14706 close get_budget_version_name;
14707 --added for the Bug 13640836
14708       l_proj_curr_code := proj_curr_code_tbl(l_index);
14709       l_proj_func_curr_code := proj_func_curr_code_tbl(l_index);
14710       l_multi_curr_flag := PA_FIN_PLAN_UTILS.Get_Multi_Curr_Flag(l_plan_version_id); --Bug 13823145
14711         /* Begin: Fix for Bug # 4018249. */
14712 
14713         open cur_record_count(l_project_id);
14714         fetch cur_record_count into l_record_count;
14715         close cur_record_count;
14716 
14717         if (nvl(l_record_count,0) <> 0) then
14718 
14719         /* End: Fix for Bug # 4018249. */
14720 
14721       --- call api to get pa and gl period names for this date
14722 
14723             begin
14724 
14725                 l_pa_period_name := pa_utils2.get_pa_period_name(P_TXN_DATE => l_temp_as_of_date,
14726                                                           p_org_id => proj_org_ids_tbl(l_index));
14727                 l_gl_period_name := pa_utils2.get_gl_period_name(p_gl_date => l_temp_as_of_date,
14728                                                           p_org_id => proj_org_ids_tbl(l_index));
14729 
14730             exception when others then
14731                 pa_debug.log_message('GET_SUMM_ACT: Project Id:'||l_project_id||' Issue in finding periods.', 1);
14732                 /* Begin: Fix for Bug # 5526638. */
14733                 -- l_return_status := 'W';
14734                 -- l_project_id := -99999; --- so that the next loop won't get executed
14735 
14736 		/* Added If condition for Bug#5659575*/
14737 		if p_extraction_type = 'PUBLISH' then
14738 			fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
14739 			    p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14740 			    p_error_text     => SUBSTRB('Call of pa_utils2.get_gl_period_name failed: x_msg_data='||SQLERRM,1,120));
14741 			x_return_status := 'E';
14742 			RAISE;
14743                 else
14744 	                l_err_msg := 'Periods are not defined for the transaction date :'||l_temp_as_of_date;
14745 		        raise l_skip_exception;
14746    	        end if;
14747                 /* End: Fix for Bug # 5526638. */
14748             end;
14749 
14750         end if;
14751 
14752       IF g1_debug_mode  = 'Y' THEN
14753         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
14754                     x_Msg => 'project id:'||l_project_id||'structure_id:'||l_latest_wp_struct_ver_id||'as of date:'||to_char(l_temp_as_of_date),
14755                     x_Log_Level=> 3);
14756       END IF;
14757 
14758       /**** Commented for bug 5464875 and moved above for batch processing
14759       --- here call populate_workplan_data when plan_res_level is 'N'
14760       if (p_plan_res_level = 'N' and l_return_status = 'S') then
14761         l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_project_id);
14762         if (l_base_struct_ver_id = -1) then
14763            l_base_struct_ver_id := null;
14764         end if;
14765         begin
14766           PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data(p_project_id => l_project_id,
14767                                     p_struct_ver_id => l_latest_wp_struct_ver_id,
14768                                     p_base_struct_ver_id => l_base_struct_ver_id,
14769                                     p_as_of_date        => l_temp_as_of_date,
14770                                     p_program_rollup_flag  => 'Y',
14771                                     p_calling_context      => 'SUMMARIZE',
14772                                     x_return_status => x_return_status,
14773                                     x_msg_code => x_msg_code );
14774         exception when others then
14775           pa_debug.log_message('GET_SUMM_ACT: populate_workplan_data failed with exception', 1);
14776           fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
14777                                   p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14778                                   p_error_text     => SUBSTRB('PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data:'||SQLERRM,1,120));
14779           raise;
14780         end;
14781       end if;
14782       ****/
14783       --- here check if resource_list assigned to project is 'None' i.e. uncategorized
14784       --- ignore all RLMIds for such project other than 'PEOPLE' class RLMId.
14785       begin
14786          select uncategorized_flag
14787            into l_uncategorized_flag
14788            from pa_resource_lists_all_bg ---4355004
14789           where resource_list_id = res_list_ids_tbl(l_index);
14790 
14791           if (l_uncategorized_flag = 'Y') then
14792              select resource_list_member_id
14793                into l_ppl_res_list_mem_id
14794                from pa_resource_list_members
14795               where resource_class_code = 'PEOPLE'
14796                 and resource_class_flag = 'Y'
14797                 and resource_list_id = res_list_ids_tbl(l_index);
14798           end if;
14799        exception
14800           when others then
14801           l_uncategorized_flag := 'N';
14802        end;
14803 
14804       --- for all objects in summ temp table
14805       l_index2 := 0;
14806       l_index3 := 0;
14807       l_index4 := 0;
14808       l_temp_index2 := 0;
14809       l_db_case := '0';
14810 
14811       for all_objects_in_temp_rec in all_objects_in_temp loop  -- FOR each OBJECT
14812         pa_debug.log_message('Inside loop', 1);
14813         l_ignore_rec := 'N';
14814         l_latest_wp_struct_ver_id := all_objects_in_temp_rec.struct_version_id;
14815     l_period_flag := all_objects_in_temp_rec.period_flag;
14816         l_period_name := all_objects_in_temp_rec.period_name;
14817 
14818         if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id) then
14819            open task_info(all_objects_in_temp_rec.project_element_id);
14820            fetch task_info into l_object_version_id, l_base_pc_deriv_code, l_init_prog_stat_code, l_sch_start_date, l_sch_end_date;
14821            close task_info;
14822         end if;
14823         L_PPL_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14824         L_PPL_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14825         L_EQPMT_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14826         L_EQPMT_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14827         L_ACT_COST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_brdn_cost;
14828         L_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.act_txn_raw_cost;
14829         l_task_id := all_objects_in_temp_rec.project_element_id;
14830         l_txn_curr_code := all_objects_in_temp_rec.txn_currency_code;
14831         l_percent_comp := to_number(null);
14832         l_earned_val := to_number(null);
14833         l_planned_eff := 0;
14834         l_planned_cost := 0;
14835  --added for the Bug 13640836
14836 l_element_number:=null;
14837 open get_element_number(all_objects_in_temp_rec.project_element_id);
14838 fetch get_element_number into l_element_number;
14839 close get_element_number;
14840 --added for the Bug 13640836
14841 
14842         -- 4654495
14843         if (p_plan_res_level = 'N' and
14844            (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) = 0)) then
14845            --- check in pa_progress_rollup table if data already exists for this task
14846            open some_progress_exists;
14847            fetch some_progress_exists into l_some_progress_exists;
14848            if (some_progress_exists%notfound) then
14849               l_ignore_rec := 'Y';
14850            end if;
14851            close some_progress_exists;
14852         end if;
14853 
14854 
14855         if (all_objects_in_temp_rec.res_list_member_id is not null and
14856             l_uncategorized_flag = 'Y' and
14857             all_objects_in_temp_rec.res_list_member_id <> l_ppl_res_list_mem_id) then
14858            l_ignore_rec := 'Y';
14859         end if;
14860 
14861          pa_debug.log_message('Inside loop res_list_member_id '||all_objects_in_temp_rec.res_list_member_id, 1);
14862          pa_debug.log_message('Inside loop l_ignore_rec '||l_ignore_rec, 1);
14863         if (l_ignore_rec = 'N') then
14864            if (all_objects_in_temp_rec.res_list_member_id is not null) then --11
14865               l_res_list_member_id := all_objects_in_temp_rec.res_list_member_id;
14866               --CBS Change in Get_Summarized_Actuals
14867               l_cbs_element_id := all_objects_in_temp_rec.cbs_element_id;
14868               --End CBS Change in Get_Summarized_Actuals
14869 
14870               -- check if assignment exists
14871               open get_assignment_info;
14872               fetch get_assignment_info into l_get_assignment_info;
14873 
14874               if get_assignment_info%found then
14875                  l_object_type := 'PA_ASSIGNMENTS';
14876                  l_object_id := l_res_list_member_id;
14877                  l_res_assignment_id := l_get_assignment_info.resource_assignment_id;
14878                  l_txn_curr_code     := l_get_assignment_info.txn_currency_code;
14879                  l_new_res_list_member_id := l_res_list_member_id;
14880                  l_task_version_id   := l_object_version_id;
14881                  l_rate_based_flag   := l_get_assignment_info.rate_based_flag;
14882                  l_res_class_code := l_get_assignment_info.resource_class_code;
14883                  l_rbs_element_id := l_get_assignment_info.rbs_element_id;
14884                  l_asgn_sch_start_date := l_get_assignment_info.assignment_start_date;
14885                  l_asgn_sch_finish_date := l_get_assignment_info.assignment_end_date;
14886                  l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
14887                  l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
14888                  l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
14889                  l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
14890                  l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
14891                  l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
14892                  l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
14893                  close get_assignment_info; -- Bug 6595475
14894 
14895               else
14896                  close get_assignment_info; -- Bug 6595475
14897                  open get_resource_class_code;
14898                  fetch get_resource_class_code into l_res_class_code;
14899                  close get_resource_class_code;
14900 
14901                  begin
14902                     pa_task_assignments_pvt.Derive_Task_Assignments
14903                     ( p_project_id           => l_project_id
14904                      ,p_extraction_type      => l_extraction_type  /* Added for bug 13419867*/
14905 		     ,p_task_version_id      => l_object_version_id
14906                      ,p_scheduled_start      => l_sch_start_date
14907                      ,p_scheduled_end        => l_sch_end_date
14908                      ,p_resource_class_code  => l_res_class_code
14909                      ,p_resource_list_member_id => l_res_list_member_id
14910                      --CBS Change in Get_Summarized_Actuals
14911                      ,p_cbs_element_id       => l_cbs_element_id
14912                      --End CBS Change in Get_Summarized_Actuals
14913                      ,p_unplanned_flag          => 'Y'
14914                      ,x_resource_assignment_id  => l_res_assignment_id
14915                      ,x_task_version_id         => l_task_version_id
14916                      ,x_currency_code           => l_txn_curr_code
14917              ,x_resource_list_member_id => l_new_res_list_member_id -- Bug 3764224 RLM ID Changes
14918                      ,x_rate_based_flag         => l_rate_based_flag
14919                      ,x_rbs_element_id          => l_rbs_element_id
14920                      ,x_msg_count               => x_msg_count
14921                      ,x_msg_data                => x_msg_data
14922                      ,x_return_status           => x_return_status);
14923                  exception when others then
14924                       x_return_status := 'E';
14925                       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
14926                             p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
14927                             p_error_text     => SUBSTRB('pa_task_assignments_pvt.Derive_Task_Assignments:'||SQLERRM,1,120));
14928                             -- Added for Bug # 5526638
14929                             l_err_msg := substrb('Derive task assignment to track actuals failed:'||SQLERRM,1,240)    ;
14930                       raise;
14931                  end;
14932 
14933                  if (x_return_status = 'S' and l_res_assignment_id is not null) then
14934                     l_object_type := 'PA_ASSIGNMENTS';
14935                     l_object_id := l_new_res_list_member_id; ---l_res_assignment_id;
14936                     l_asgn_sch_start_date := l_sch_start_date;
14937                     l_asgn_sch_finish_date := l_sch_end_date;
14938                     l_asgn_plan_quantity := 0;
14939                     l_asgn_plan_bur_cost_tc := 0;
14940                     l_asgn_plan_bur_cost_fc := 0;
14941                     l_asgn_plan_bur_cost_pc := 0;
14942                     l_asgn_plan_raw_cost_tc := 0;
14943                     l_asgn_plan_raw_cost_fc := 0;
14944                     l_asgn_plan_raw_cost_pc := 0;
14945                  else
14946                     l_ignore_rec := 'Y';
14947                     --- l_return_status := 'W';  bug 5526638
14948        		    l_return_status := 'E'; -- Added for bug#5659575
14949                     pa_debug.log_message('GET_SUMM_ACT: Derive task assignment failed for Res Id: '||l_res_list_member_id||' Task version id: '||l_object_version_id, 1);
14950                     PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
14951                                  p_msg_name       => 'Derive Task Assignment failed for RLMId: '||l_res_list_member_id);
14952                     /* Begin: Fix for Bug # 5526638. */
14953       		    if p_extraction_type <> 'PUBLISH' then
14954 	                    l_err_msg := 'Derive task assignment to track actuals failed for resource list member id :'||l_res_list_member_id||' and Task version id :'||l_object_version_id;
14955 		            raise l_skip_exception;
14956 		    end if;
14957                     /* End: Fix for Bug # 5526638. */
14958                  end if;
14959 
14960                end if;
14961  --added for the Bug 13640836
14962  l_res_assignment_name:=null;
14963 open get_res_assignment_name(l_res_assignment_id);
14964 fetch get_res_assignment_name into l_res_assignment_name;
14965 close get_res_assignment_name;
14966 --added for the Bug 13640836
14967               -- close get_assignment_info; Commented for bug 6730979
14968                --- assignment is found but check if txn curr is same or not
14969                if l_txn_curr_code <> all_objects_in_temp_rec.txn_currency_code
14970                   and l_ignore_rec = 'N' then --33
14971 
14972                   if (l_txn_curr_code <> l_proj_curr_code) THEN   -- Added an extra check to stop the conversion if the transaction currency code is the same as project currency code. -- 7282850
14973 
14974                   l_conv_rate_date := l_temp_as_of_date;
14975                   --- find period_start_date to be used for currency conversion
14976                   if (l_plan_type = 'G' or l_plan_type = 'P') then
14977                      l_conv_rate_date := all_objects_in_temp_rec.min_start_date;
14978                   end if;
14979 
14980                   --- convert txn curr into planned txn curr and then process
14981                   if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
14982                       all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
14983                      l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
14984                      l_txn_raw_cost := all_objects_in_temp_rec.act_txn_labor_raw_cost;
14985                   else
14986                      l_txn_brdn_cost := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
14987                      l_txn_raw_cost := all_objects_in_temp_rec.act_txn_equip_raw_cost;
14988                   end if;
14989                   l_txn_brdn_cost_tot := all_objects_in_temp_rec.act_txn_brdn_cost;
14990                   l_txn_raw_cost_tot  := all_objects_in_temp_rec.act_txn_raw_cost;
14991                   -- convert both raw and burdened costs
14992                   begin
14993                      pa_progress_utils.convert_currency_amounts(
14994                      p_project_id         => l_project_id
14995                     ,p_task_id            => all_objects_in_temp_rec.project_element_id
14996                     ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
14997                     ,p_as_of_date         => l_conv_rate_date
14998                     ,P_txn_cost           => l_txn_brdn_cost
14999                     ,P_txn_curr_code      => all_objects_in_temp_rec.txn_currency_code
15000                     ,P_project_curr_code  => l_txn_curr_code
15001                     ,P_project_rate_type       => x_txn_rate_type
15002                     ,P_project_rate_date       => x_txn_rate_date
15003                     ,P_project_exch_rate       => x_txn_exch_rate
15004                     ,P_project_raw_cost        => x_txn_brdn_cost
15005                     ,P_projfunc_curr_code      => x_projfunc_curr_code
15006                     ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15007                     ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15008                     ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15009                     ,P_projfunc_raw_cost       => x_projfunc_raw_cost
15010                     ,x_return_status           => x_return_status
15011                     ,x_msg_count               => x_msg_count
15012                     ,x_msg_data                => x_msg_data) ;
15013 
15014                      pa_progress_utils.convert_currency_amounts(
15015                      p_project_id         => l_project_id
15016                     ,p_task_id            => all_objects_in_temp_rec.project_element_id
15017                     ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15018                     ,p_as_of_date         => l_conv_rate_date
15019                     ,P_txn_cost           => l_txn_raw_cost
15020                     ,P_txn_curr_code      => all_objects_in_temp_rec.txn_currency_code
15021                     ,P_project_curr_code  => l_txn_curr_code
15022                     ,P_project_rate_type       => x_txn_rate_type
15023                     ,P_project_rate_date       => x_txn_rate_date
15024                     ,P_project_exch_rate       => x_txn_exch_rate
15025                     ,P_project_raw_cost        => x_txn_raw_cost
15026                     ,P_projfunc_curr_code      => x_projfunc_curr_code
15027                     ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15028                     ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15029                     ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15030                     ,P_projfunc_raw_cost       => x_projfunc_raw_cost
15031                     ,x_return_status           => x_return_status
15032                     ,x_msg_count               => x_msg_count
15033                     ,x_msg_data                => x_msg_data) ;
15034 
15035                      pa_progress_utils.convert_currency_amounts(
15036                      p_project_id         => l_project_id
15037                     ,p_task_id            => all_objects_in_temp_rec.project_element_id
15038                     ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15039                     ,p_as_of_date         => l_conv_rate_date
15040                     ,P_txn_cost           => l_txn_raw_cost_tot
15041                     ,P_txn_curr_code      => all_objects_in_temp_rec.txn_currency_code
15042                     ,P_project_curr_code  => l_txn_curr_code
15043                     ,P_project_rate_type       => x_txn_rate_type
15044                     ,P_project_rate_date       => x_txn_rate_date
15045                     ,P_project_exch_rate       => x_txn_exch_rate
15046                     ,P_project_raw_cost        => x_txn_raw_cost_tot
15047                     ,P_projfunc_curr_code      => x_projfunc_curr_code
15048                     ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15049                     ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15050                     ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15051                     ,P_projfunc_raw_cost       => x_projfunc_raw_cost
15052                     ,x_return_status           => x_return_status
15053                     ,x_msg_count               => x_msg_count
15054                     ,x_msg_data                => x_msg_data) ;
15055 
15056                      pa_progress_utils.convert_currency_amounts(
15057                      p_project_id         => l_project_id
15058                     ,p_task_id            => all_objects_in_temp_rec.project_element_id
15059                     ,p_structure_version_id => all_objects_in_temp_rec.struct_version_id
15060                     ,p_as_of_date         => l_conv_rate_date
15061                     ,P_txn_cost           => l_txn_brdn_cost_tot
15062                     ,P_txn_curr_code      => all_objects_in_temp_rec.txn_currency_code
15063                     ,P_project_curr_code  => l_txn_curr_code
15064                     ,P_project_rate_type       => x_txn_rate_type
15065                     ,P_project_rate_date       => x_txn_rate_date
15066                     ,P_project_exch_rate       => x_txn_exch_rate
15067                     ,P_project_raw_cost        => x_txn_brdn_cost_tot
15068                     ,P_projfunc_curr_code      => x_projfunc_curr_code
15069                     ,P_projfunc_cost_rate_type => x_projfunc_cost_rate_type
15070                     ,P_projfunc_cost_rate_date => x_projfunc_cost_rate_date
15071                     ,P_projfunc_cost_exch_rate => x_projfunc_cost_exch_rate
15072                     ,P_projfunc_raw_cost       => x_projfunc_raw_cost
15073                     ,x_return_status           => x_return_status
15074                     ,x_msg_count               => x_msg_count
15075                     ,x_msg_data                => x_msg_data) ;
15076                  exception when others then
15077                     l_err_msg := substrb('Currency conversion failed '||sqlerrm,1,240);  -- Added for bug 5526638
15078                     raise;
15079                  end;
15080 
15081                  if (x_return_status <> 'S') then
15082                     ----l_return_status := 'W';   5526638
15083        		    l_return_status := 'E';  -- Added for Bug #5659575
15084                     pa_debug.log_message('GET_SUMM_ACT: Currency conversion failed for Project Id: '||l_project_id||' Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15085                     ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
15086                     pa_debug.log_message('GET_SUMM_ACT: Currency conversion failed for Project Id: '||l_project_id||' Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15087                     ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code, 1);
15088                     l_ignore_rec := 'Y';
15089                     /* Begin: Fix for Bug # 5526638. */
15090        		    /* Added for Bug #5659575 */
15091 	            if p_extraction_type <> 'PUBLISH' then
15092 			    l_err_msg := 'Currency conversion failed for Task Id: '||all_objects_in_temp_rec.project_element_id||', Res Id: '||l_res_list_member_id||
15093 			    ' Message code: '||x_msg_data||' From currency: '||all_objects_in_temp_rec.txn_currency_code||' To currency: '||l_txn_curr_code;
15094 			    raise l_skip_exception;
15095 		    end if;
15096                     /* End: Fix for Bug # 5526638. */
15097                  else
15098                     if (all_objects_in_temp_rec.act_txn_labor_brdn_cost <> 0 or
15099                         all_objects_in_temp_rec.act_txn_labor_raw_cost <> 0) then
15100                        L_PPL_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15101                        L_PPL_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
15102                     else
15103                        L_EQPMT_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15104                        L_EQPMT_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;
15105                     end if;
15106                     L_ACT_COST_TO_DATE_TC := x_txn_brdn_cost_tot;
15107                     L_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost_Tot;
15108                  end if;
15109                    else -- 7282850
15110 
15111                        if (all_objects_in_temp_rec.txn_labor_brdn_cost > 0 or
15112                            all_objects_in_temp_rec.txn_labor_raw_cost > 0) then
15113 
15114                           /*L_PPL_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15115                           L_PPL_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;*/
15116                           --Bug 13864209 Changes start here
15117 			  --If l_txn_curr_code is equal to l_proj_curr_code, then assign the project currency
15118 			  --related columns to L_PPL_ACT_COST_TO_DATE_TC & L_PPL_ACT_RAWCOST_TO_DATE_TC variable
15119 			  --instead of actuals transaction currency columns.
15120 
15121                           L_PPL_ACT_COST_TO_DATE_TC    := all_objects_in_temp_rec.prj_labor_brdn_cost;
15122                           L_PPL_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.prj_labor_raw_cost;
15123                           --Bug 13864209 Changes end here
15124                        else
15125                           /*L_EQPMT_ACT_COST_TO_DATE_TC := x_txn_brdn_cost;
15126                           L_EQPMT_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost;*/
15127                           --Bug 13864209 Changes start here
15128 			  --If l_txn_curr_code is equal to l_proj_curr_code, then assign the project currency
15129 			  --related columns to L_EQPMT_ACT_COST_TO_DATE_TC & L_EQPMT_ACT_RAWCOST_TO_DATE_TC variable
15130 			  --instead of actuals transaction currency columns.
15131 
15132                           L_EQPMT_ACT_COST_TO_DATE_TC    := all_objects_in_temp_rec.prj_equip_brdn_cost;
15133                           L_EQPMT_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.prj_equip_raw_cost;
15134 			  --Bug 13864209 Changes end here
15135 
15136 
15137                        end if;
15138                       /*  L_ACT_COST_TO_DATE_TC := x_txn_brdn_cost_tot;
15139                        L_ACT_RAWCOST_TO_DATE_TC := x_txn_raw_cost_Tot;*/
15140 
15141                        L_ACT_COST_TO_DATE_TC    := all_objects_in_temp_rec.PRJ_BRDN_COST;
15142                        L_ACT_RAWCOST_TO_DATE_TC := all_objects_in_temp_rec.PRJ_RAW_COST;
15143 
15144 
15145 
15146                    end if; --7282850
15147 
15148               end if;  --33
15149            else  --11 res_list_mem_id is null
15150               l_object_id := all_objects_in_temp_rec.project_element_id;
15151               l_object_type := 'PA_TASKS';
15152               --- here get the planned value if task is lowest level and PC deriv is EFFORT based and no assignments for the task
15153               if (l_base_pc_deriv_code = 'EFFORT' or l_base_pc_deriv_code = 'COST') and
15154                  (PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_object_version_id ) = 'Y') and
15155                  (PA_PROGRESS_UTILS.check_assignment_exists(l_project_id,l_object_version_id,'PA_TASKS') <> 'Y') then
15156                  open get_planned_val_for_task;
15157                  fetch get_planned_val_for_task into l_planned_eff, l_planned_cost;
15158                  close get_planned_val_for_task;
15159               end if;
15160            end if;  --11
15161 
15162            if (l_object_version_id = l_latest_wp_struct_ver_id) then
15163               l_object_type := 'PA_STRUCTURES';
15164            end if;
15165        end if;
15166 
15167        if (l_ignore_rec = 'N') then  --11
15168 
15169          if (l_last_projelemid <> all_objects_in_temp_rec.project_element_id or
15170           l_object_type <> l_last_object_Type or
15171           nvl(l_period_flag,'N') <> nvl(l_last_period_flag,'N') or
15172           (l_object_Type = 'PA_ASSIGNMENTS' and (nvl(l_last_res_list_mem_id,-99) <> nvl(l_new_res_list_member_id,-99))) or
15173           (l_object_Type = 'PA_ASSIGNMENTS' and (nvl(l_last_cbs_element_id,-99) <> nvl(l_cbs_element_id,-99)))) then  --22 -- CBS Check
15174 
15175            -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
15176 
15177        if (l_object_Type = 'PA_ASSIGNMENTS') then
15178 
15179               -- create a new record in the temp table:
15180               l_db_case := '0';
15181           l_t_index := l_t_index + 1;
15182 
15183               t_PROJECT_ID(l_t_index) := l_project_id;
15184               t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
15185               t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
15186               t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
15187               t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15188               t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
15189               if (l_rate_based_flag = 'N') then
15190                  t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15191                  (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15192               else
15193                  t_ACTUAL_EFFORT(l_t_index) := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15194                  (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15195               end if;
15196               t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15197               t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15198               t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
15199               t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
15200               t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
15201               t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
15202               t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
15203               t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15204               t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15205               t_CURRENT_FLAG(l_t_index) := 'Y';
15206               t_OBJECT_TYPE(l_t_index) :=   l_object_type;
15207               t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
15208               t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15209               t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
15210               t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
15211 
15212            end if;
15213 
15214            -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
15215 
15216            open w_rollup_rec_asofdate;
15217            fetch w_rollup_rec_asofdate into l_w_rollup_rec_asofdate;
15218            if w_rollup_rec_asofdate%notfound then
15219               l_working_rec_found := 'N';
15220            else
15221               l_working_rec_found := 'Y';
15222               l_index3 := l_index3 + 1;
15223               if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
15224                  u_ppl_act_effort_to_date(l_index3) :=0;
15225                  u_eqpmt_act_effort_to_date(l_index3) :=0;
15226                  u_oth_qty(l_index3) :=0;
15227                  u_oth_act_cost_to_date_tc(l_index3) :=0;
15228                  u_oth_act_rawcost_to_date_tc(l_index3) :=0;
15229                  u_oth_act_cost_to_date_pc(l_index3) :=0;
15230                  u_oth_act_rawcost_to_date_pc(l_index3) :=0;
15231                  u_oth_act_cost_to_date_fc(l_index3) :=0;
15232                  u_oth_act_rawcost_to_date_fc(l_index3) :=0;
15233                  u_ppl_act_cost_to_date_tc(l_index3) :=0;
15234                  u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
15235                  u_ppl_act_cost_to_date_pc(l_index3) :=0;
15236                  u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
15237                  u_ppl_act_cost_to_date_fc(l_index3) :=0;
15238                  u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
15239                  u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
15240                  u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
15241                  u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
15242                  u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
15243                  u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
15244                  u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
15245                  u_oth_etc_qty(l_index3) :=0;
15246                  u_oth_etc_cost_to_date_tc(l_index3) :=0;
15247                  u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
15248                  u_oth_etc_cost_to_date_pc(l_index3) :=0;
15249                  u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
15250                  u_oth_etc_cost_to_date_fc(l_index3) :=0;
15251                  u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
15252                  u_ppl_etc_cost_to_date_tc(l_index3) :=0;
15253                  u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
15254                  u_ppl_etc_cost_to_date_pc(l_index3) :=0;
15255                  u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
15256                  u_ppl_etc_cost_to_date_fc(l_index3) :=0;
15257                  u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
15258                  u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
15259                  u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
15260                  u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
15261                  u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
15262                  u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
15263                  u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
15264               else
15265                  u_ppl_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_effort_to_date;
15266                  u_eqpmt_act_effort_to_date(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15267                  u_oth_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_quantity_to_date;
15268                  u_oth_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15269                  u_oth_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15270                  u_oth_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15271                  u_oth_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15272                  u_oth_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15273                  u_oth_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15274                  u_ppl_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15275                  u_ppl_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15276                  u_ppl_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15277                  u_ppl_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15278                  u_ppl_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15279                  u_ppl_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15280                  u_eqpmt_act_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15281                  u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15282                  u_eqpmt_act_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15283                  u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15284                  u_eqpmt_act_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15285                  u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15286                  u_oth_etc_qty(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_quantity;
15287                  u_oth_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_tc;
15288                  u_oth_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
15289                  u_oth_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_pc;
15290                  u_oth_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
15291                  u_oth_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_cost_fc;
15292                  u_oth_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
15293                  u_ppl_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15294                  u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15295                  u_ppl_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15296                  u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15297                  u_ppl_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15298                  u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15299                  u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15300                  u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15301                  u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15302                  u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15303                  u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15304                  u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15305                   --Bug 13823145 changes start here
15306                   if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
15307                      u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_pc(l_index3);
15308                      u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_pc(l_index3);
15309                      u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_pc(l_index3);
15310 		  ELSIF (l_wp_prl_res_class_flag = 'N') then
15311 		     u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_tc(l_index3);
15312                      u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_tc(l_index3);
15313                      u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_tc(l_index3);
15314                   end if;
15315                   --Bug 13823145 changes end here
15316               end if;
15317            end if;
15318            close w_rollup_rec_asofdate;
15319 
15320            -- End fix for bug # 4041048.
15321 
15322            pa_debug.log_message('Before l_rollup_rec_asofdate '|| l_object_Type, 1);
15323            pa_debug.log_message('Before l_rollup_rec_asofdate l_cbs_element_id '|| l_cbs_element_id, 1);
15324            open rollup_rec_asofdate;
15325            fetch rollup_rec_asofdate into l_rollup_rec_asofdate;
15326            pa_debug.log_message('l_rollup_rec_asofdate '|| l_rollup_rec_asofdate.cbs_element_id , 1);
15327            if rollup_rec_asofdate%notfound then   --44
15328 
15329               --- if it is an assignment rec we should check if it is
15330               --- already processed or not. if it is then just update for that index
15331               --- and reset the index back
15332               l_temp_index2 := l_index2;
15333               l_init_vars := 'Y';
15334               if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
15335                  --- find the assignment
15336                  l_index2 := 1;
15337                  loop
15338                     if project_id(l_index2) = l_project_id and
15339                     object_id(l_index2) = l_object_id and
15340                     object_type(l_index2) = l_object_Type and
15341                     -- Add cbs_element_id
15342                     nvl(cbs_element_id(l_index2),-1) = nvl(l_cbs_element_id,-1) and
15343                     proj_element_id(l_index2) = l_task_id  then
15344                        l_init_vars := 'N';
15345                        exit;
15346                     end if;
15347                     if l_index2 >= l_temp_index2 then
15348                        exit;
15349                     end if;
15350                     l_index2 := l_index2 + 1;
15351                  end loop;
15352                 l_sri_index_etc := l_sri_index_etc + 1;  -- for bug 6266824
15353                 elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
15354                l_sri_index_etc := l_sri_index_etc + 1;  -- for bug 6266824
15355                end if;
15356               --- set l_index2 to index of found assignment
15357               if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
15358                  l_index2 := l_index2 + 1;
15359                  l_temp_index2 := l_index2;
15360                  l_db_case := '1';
15361                  if (l_init_vars = 'Y') then
15362                     ppl_act_effort_to_date(l_index2) :=0;
15363                     eqpmt_act_effort_to_date(l_index2) :=0;
15364                     oth_qty(l_index2) :=0;
15365                     oth_act_cost_to_date_tc(l_index2) :=0;
15366                     oth_act_rawcost_to_date_tc(l_index2) :=0;
15367                     oth_act_cost_to_date_pc(l_index2) :=0;
15368                     oth_act_rawcost_to_date_pc(l_index2) :=0;
15369                     oth_act_cost_to_date_fc(l_index2) :=0;
15370                     oth_act_rawcost_to_date_fc(l_index2) :=0;
15371                     ppl_act_cost_to_date_tc(l_index2) :=0;
15372                     ppl_act_rawcost_to_date_tc(l_index2) :=0;
15373                     ppl_act_cost_to_date_pc(l_index2) :=0;
15374                     ppl_act_rawcost_to_date_pc(l_index2) :=0;
15375                     ppl_act_cost_to_date_fc(l_index2) :=0;
15376                     ppl_act_rawcost_to_date_fc(l_index2) :=0;
15377                     eqpmt_act_cost_to_date_tc(l_index2) :=0;
15378                     eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
15379                     eqpmt_act_cost_to_date_pc(l_index2) :=0;
15380                     eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
15381                     eqpmt_act_cost_to_date_fc(l_index2) :=0;
15382                     eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
15383                  end if;
15384               end if;
15385            else   --44
15386               if trunc(l_rollup_rec_asofdate.as_of_Date) = trunc(l_temp_as_of_date) then --55
15387                  l_index3 := l_index3 + 1;
15388                  if (l_object_Type = 'PA_ASSIGNMENTS') then
15389                     l_sri_index_etc := l_sri_index_etc + 1;  -- for bug 6266824
15390                  end if;
15391                  l_db_case := '2';
15392                  if (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL') then
15393                     u_ppl_act_effort_to_date(l_index3) :=0;
15394                     u_eqpmt_act_effort_to_date(l_index3) :=0;
15395                     u_oth_qty(l_index3) :=0;
15396                     u_oth_act_cost_to_date_tc(l_index3) :=0;
15397                     u_oth_act_rawcost_to_date_tc(l_index3) :=0;
15398                     u_oth_act_cost_to_date_pc(l_index3) :=0;
15399                     u_oth_act_rawcost_to_date_pc(l_index3) :=0;
15400                     u_oth_act_cost_to_date_fc(l_index3) :=0;
15401                     u_oth_act_rawcost_to_date_fc(l_index3) :=0;
15402                     u_ppl_act_cost_to_date_tc(l_index3) :=0;
15403                     u_ppl_act_rawcost_to_date_tc(l_index3) :=0;
15404                     u_ppl_act_cost_to_date_pc(l_index3) :=0;
15405                     u_ppl_act_rawcost_to_date_pc(l_index3) :=0;
15406                     u_ppl_act_cost_to_date_fc(l_index3) :=0;
15407                     u_ppl_act_rawcost_to_date_fc(l_index3) :=0;
15408                     u_eqpmt_act_cost_to_date_tc(l_index3) :=0;
15409                     u_eqpmt_act_rawcost_to_date_tc(l_index3) :=0;
15410                     u_eqpmt_act_cost_to_date_pc(l_index3) :=0;
15411                     u_eqpmt_act_rawcost_to_date_pc(l_index3) :=0;
15412                     u_eqpmt_act_cost_to_date_fc(l_index3) :=0;
15413                     u_eqpmt_act_rawcost_to_date_fc(l_index3) :=0;
15414                     u_oth_etc_qty(l_index3) :=0;
15415                     u_oth_etc_cost_to_date_tc(l_index3) :=0;
15416                     u_oth_etc_rawcost_to_date_tc(l_index3) :=0;
15417                     u_oth_etc_cost_to_date_pc(l_index3) :=0;
15418                     u_oth_etc_rawcost_to_date_pc(l_index3) :=0;
15419                     u_oth_etc_cost_to_date_fc(l_index3) :=0;
15420                     u_oth_etc_rawcost_to_date_fc(l_index3) :=0;
15421                     u_ppl_etc_cost_to_date_tc(l_index3) :=0;
15422                     u_ppl_etc_rawcost_to_date_tc(l_index3) :=0;
15423                     u_ppl_etc_cost_to_date_pc(l_index3) :=0;
15424                     u_ppl_etc_rawcost_to_date_pc(l_index3) :=0;
15425                     u_ppl_etc_cost_to_date_fc(l_index3) :=0;
15426                     u_ppl_etc_rawcost_to_date_fc(l_index3) :=0;
15427                     u_eqpmt_etc_cost_to_date_tc(l_index3) :=0;
15428                     u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=0;
15429                     u_eqpmt_etc_cost_to_date_pc(l_index3) :=0;
15430                     u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=0;
15431                     u_eqpmt_etc_cost_to_date_fc(l_index3) :=0;
15432                     u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=0;
15433                  else
15434                       u_ppl_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
15435                       u_eqpmt_act_effort_to_date(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15436                       u_oth_qty(l_index3) :=l_rollup_rec_asofdate.oth_quantity_to_date;
15437                     u_oth_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15438                     u_oth_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15439                     u_oth_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15440                     u_oth_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15441                     u_oth_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15442                     u_oth_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15443                     u_ppl_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15444                     u_ppl_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15445                     u_ppl_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15446                     u_ppl_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15447                     u_ppl_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15448                     u_ppl_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15449                     u_eqpmt_act_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15450                     u_eqpmt_act_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15451                     u_eqpmt_act_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15452                     u_eqpmt_act_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15453                     u_eqpmt_act_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15454                     u_eqpmt_act_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15455                     u_oth_etc_qty(l_index3) :=l_rollup_rec_asofdate.oth_etc_quantity;
15456                     u_oth_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_tc;
15457                     u_oth_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_tc;
15458                     u_oth_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_pc;
15459                     u_oth_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_pc;
15460                     u_oth_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_cost_fc;
15461                     u_oth_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.oth_etc_rawcost_fc;
15462                     u_ppl_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_tc;
15463                     u_ppl_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15464                     u_ppl_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_pc;
15465                     u_ppl_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15466                     u_ppl_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_cost_fc;
15467                     u_ppl_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15468                     u_eqpmt_etc_cost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15469                     u_eqpmt_etc_rawcost_to_date_tc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15470                     u_eqpmt_etc_cost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15471                     u_eqpmt_etc_rawcost_to_date_pc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15472                     u_eqpmt_etc_cost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15473                     u_eqpmt_etc_rawcost_to_date_fc(l_index3) :=l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15474                      --Bug 13823145 changes start here
15475                      if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then   -- CBS changes:
15476                       u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_pc(l_index3);
15477                       u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_pc(l_index3);
15478                       u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_pc(l_index3);
15479 		     ELSif (l_wp_prl_res_class_flag = 'N') then
15480 		      u_ppl_act_effort_to_date(l_index3) :=u_ppl_act_rawcost_to_date_tc(l_index3);
15481                       u_eqpmt_act_effort_to_date(l_index3) :=u_eqpmt_act_rawcost_to_date_tc(l_index3);
15482                       u_oth_qty(l_index3) :=u_oth_act_rawcost_to_date_tc(l_index3);
15483                     end if;
15484                     --Bug 13823145 changes end here
15485 
15486                  end if;
15487               else  --55
15488                  --- if it is an assignment rec we should check if it is
15489                  --- already processed or not. if it is, just update for that index
15490                  --- and reset the index back
15491                  l_temp_index2 := l_index2;
15492                  l_init_vars := 'Y';
15493                  if l_object_Type = 'PA_ASSIGNMENTS' and l_index2 > 0 then
15494                     --- find the assignment
15495                     l_index2 := 1;
15496                     loop
15497                        if project_id(l_index2) = l_project_id and
15498                        object_id(l_index2) = l_object_id and
15499                        OBJECT_TYPE(l_index2) = l_object_Type and
15500                     -- Add cbs_element_id
15501                     nvl(cbs_element_id(l_index2),-1) = nvl(l_cbs_element_id,-1) and
15502                        proj_element_id(l_index2) = l_task_id  then
15503                           l_init_vars := 'N';
15504                           exit;
15505                        end if;
15506                        if l_index2 >= l_temp_index2 then
15507                           exit;
15508                        end if;
15509                        l_index2 := l_index2 + 1;
15510                     end loop;
15511                      l_sri_index_etc := l_sri_index_etc + 1;  -- for bug 6266824
15512                    elsif l_object_Type = 'PA_ASSIGNMENTS' and l_index2 = 0 then
15513                      l_sri_index_etc := l_sri_index_etc + 1;  -- for bug 6266824
15514                     end if;
15515                  --- set l_index2 to index of found assignment
15516                  if l_index2 >= l_temp_index2 or l_object_Type <> 'PA_ASSIGNMENTS' or l_index2 = 0 then
15517                     l_index2 := l_index2 + 1;
15518                     l_temp_index2 := l_index2;
15519                     l_db_case := '3';
15520                     if (l_init_vars = 'Y' and (p_extraction_type = 'FULL' or p_extraction_type = 'INITIAL')) then
15521                        ppl_act_effort_to_date(l_index2) :=0;
15522                        eqpmt_act_effort_to_date(l_index2) :=0;
15523                        oth_qty(l_index2) := 0;
15524                        oth_act_cost_to_date_tc(l_index2) :=0;
15525                        oth_act_rawcost_to_date_tc(l_index2) :=0;
15526                        oth_act_cost_to_date_pc(l_index2) := 0;
15527                        oth_act_rawcost_to_date_pc(l_index2) := 0;
15528                        oth_act_cost_to_date_fc(l_index2) := 0;
15529                        oth_act_rawcost_to_date_fc(l_index2) := 0;
15530                        ppl_act_cost_to_date_tc(l_index2) :=0;
15531                        ppl_act_rawcost_to_date_tc(l_index2) :=0;
15532                        ppl_act_cost_to_date_pc(l_index2) :=0;
15533                        ppl_act_rawcost_to_date_pc(l_index2) :=0;
15534                        ppl_act_cost_to_date_fc(l_index2) :=0;
15535                        ppl_act_rawcost_to_date_fc(l_index2) :=0;
15536                        eqpmt_act_cost_to_date_tc(l_index2) :=0;
15537                        eqpmt_act_rawcost_to_date_tc(l_index2) :=0;
15538                        eqpmt_act_cost_to_date_pc(l_index2) :=0;
15539                        eqpmt_act_rawcost_to_date_pc(l_index2) :=0;
15540                        eqpmt_act_cost_to_date_fc(l_index2) :=0;
15541                        eqpmt_act_rawcost_to_date_fc(l_index2) :=0;
15542                     elsif (l_init_vars = 'Y') then
15543                        ppl_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.ppl_act_effort_to_date;
15544                        eqpmt_act_effort_to_date(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_effort_to_date;
15545                        oth_qty(l_index2) := l_rollup_rec_asofdate.oth_quantity_to_date;
15546                        oth_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_cost_to_date_tc;
15547                        oth_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.oth_act_rawcost_to_date_tc;
15548                        oth_act_cost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_pc;
15549                        oth_act_rawcost_to_date_pc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_pc;
15550                        oth_act_cost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_cost_to_date_fc;
15551                        oth_act_rawcost_to_date_fc(l_index2) := l_rollup_rec_asofdate.oth_act_rawcost_to_date_fc;
15552                        ppl_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_tc;
15553                        ppl_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_tc;
15554                        ppl_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_pc;
15555                        ppl_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_pc;
15556                        ppl_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_cost_to_date_fc;
15557                        ppl_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.ppl_act_rawcost_to_date_fc;
15558                        eqpmt_act_cost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_tc;
15559                        eqpmt_act_rawcost_to_date_tc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_tc;
15560                        eqpmt_act_cost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_pc;
15561                        eqpmt_act_rawcost_to_date_pc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_pc;
15562                        eqpmt_act_cost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_cost_to_date_fc;
15563                        eqpmt_act_rawcost_to_date_fc(l_index2) :=l_rollup_rec_asofdate.eqpmt_act_rawcost_to_date_fc;
15564                        --Bug 13823145 changes start here
15565                        if  (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then  -- CBS Changes
15566                          ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
15567                          eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_pc(l_index2);
15568                          oth_qty(l_index2) :=  oth_act_rawcost_to_date_pc(l_index2);
15569 		       ELSif  (l_wp_prl_res_class_flag = 'N') then
15570 			 ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
15571                          eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_tc(l_index2);
15572                          oth_qty(l_index2) :=  oth_act_rawcost_to_date_tc(l_index2);
15573                        end if;
15574                        --Bug 13823145 changes end here
15575                     end if;
15576                  end if;   --55
15577               end if;  --44
15578            end if;  --33
15579            close rollup_rec_asofdate;
15580         else --22
15581            if (l_period_flag = 'Y') then
15582               -- or (l_plan_type = 'N' and l_object_Type = 'PA_ASSIGNMENTS')) then
15583               -- Check if the period name is the same as the current record.
15584               if (t_period_name(l_t_index) <> all_objects_in_temp_rec.period_name) then
15585              -- create a new record in the temp table:
15586                  l_t_index := l_t_index + 1;
15587                  t_PROJECT_ID(l_t_index) := l_project_id;
15588                  t_STRUCTURE_VERSION_ID(l_t_index) := l_latest_wp_struct_ver_id;
15589                  t_TASK_ID(l_t_index) := all_objects_in_temp_rec.project_element_id;
15590                  t_RESOURCE_ASSIGNMENT_ID(l_t_index) := l_res_assignment_id;
15591                  t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15592                  t_ACTUAL_COST(l_t_index) := L_ACT_COST_TO_DATE_TC;
15593                  if (l_rate_based_flag = 'N') then
15594                     t_ACTUAL_EFFORT(l_t_index) := (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15595                     (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15596                  else
15597                     t_ACTUAL_EFFORT(l_t_index) := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15598                     (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15599                  end if;
15600                  t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15601                  t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15602                  t_ACTUAL_COST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0);
15603                  t_ACTUAL_COST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0);
15604                  t_ACTUAL_RAWCOST(l_t_index) := L_ACT_RAWCOST_TO_DATE_TC;
15605                  t_ACTUAL_RAWCOST_PC(l_t_index) := nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0);
15606                  t_ACTUAL_RAWCOST_FC(l_t_index) := nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0);
15607                  t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15608                  t_RESOURCE_LIST_MEMBER_ID(l_t_index) := l_new_res_list_member_id;
15609                  t_CURRENT_FLAG(l_t_index) := 'Y';
15610                  t_OBJECT_TYPE(l_t_index) := l_object_type;
15611                  t_PERCENT_COMPLETE_ID(l_t_index) := to_number(null);
15612                  t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15613                  t_min_start_date(l_t_index) := all_objects_in_temp_rec.min_start_date;
15614                  t_max_end_date(l_t_index) := all_objects_in_temp_rec.max_end_date;
15615 
15616               else
15617 
15618                  -- Update the current record in the temp table.
15619 
15620                  t_AS_OF_DATE(l_t_index) := l_temp_as_of_date;
15621                  t_ACTUAL_COST(l_t_index) := (t_ACTUAL_COST(l_t_index) + L_ACT_COST_TO_DATE_TC);
15622                  if (l_rate_based_flag = 'N') then
15623                      t_ACTUAL_EFFORT(l_t_index) := t_ACTUAL_EFFORT(l_t_index) + (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)) +
15624                      (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15625                  else
15626                      t_ACTUAL_EFFORT(l_t_index) := t_ACTUAL_EFFORT(l_t_index) + (nvl(all_objects_in_temp_rec.act_labor_hrs,0)+nvl(all_objects_in_temp_rec.act_equip_hrs,0)+
15627                      (nvl(all_objects_in_temp_rec.quantity,0)-nvl(all_objects_in_temp_rec.act_labor_hrs,0)-nvl(all_objects_in_temp_rec.act_equip_hrs,0)));
15628                  end if;
15629                  t_PERIOD_NAME(l_t_index) := all_objects_in_temp_rec.period_name;
15630                  t_TXN_CURRENCY_CODE(l_t_index) := l_txn_curr_code;
15631                  t_ACTUAL_COST_PC(l_t_index) := (t_ACTUAL_COST_PC(l_t_index) + nvl(all_objects_in_temp_rec.act_PRJ_BRDN_COST,0));
15632                  t_ACTUAL_COST_FC(l_t_index) := (t_ACTUAL_COST_FC(l_t_index) + nvl(all_objects_in_temp_rec.act_POU_BRDN_COST,0));
15633                  t_ACTUAL_RAWCOST(l_t_index) := (t_ACTUAL_RAWCOST(l_t_index) + L_ACT_RAWCOST_TO_DATE_TC);
15634                  t_ACTUAL_RAWCOST_PC(l_t_index) := (t_ACTUAL_RAWCOST_PC(l_t_index) + nvl(all_objects_in_temp_rec.act_PRJ_RAW_COST,0));
15635                  t_ACTUAL_RAWCOST_FC(l_t_index) := (t_ACTUAL_RAWCOST_FC(l_t_index) + nvl(all_objects_in_temp_rec.act_POU_RAW_COST,0));
15636                  t_HIDDEN_RES_ASSGN_ID(l_t_index) := l_res_assignment_id;
15637                  t_RESOURCE_LIST_MEMBER_ID(l_t_index) :=    l_new_res_list_member_id;
15638                  t_CURRENT_FLAG(l_t_index) := 'Y';
15639                  t_track_wp_cost_flag(l_t_index) := l_track_wp_cost_flag;
15640               end if;
15641            end if;
15642         end if; -- 44
15643 
15644     -- Begin fix for bug # 4041048.
15645         if (l_working_rec_found = 'Y') then
15646           --- update working record on that date
15647           l_working_rec_found := 'N';
15648           if (l_db_case = '2') then
15649              l_index3 := l_index3 - 1;
15650           end if;
15651           u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15652           u_earned_val(l_index3) := l_earned_val;
15653           u_progress_rollup_id(l_index3) := l_w_rollup_rec_asofdate.progress_rollup_id;
15654           u_object_version_id(l_index3) := l_object_version_id;
15655           if (l_object_Type = 'PA_ASSIGNMENTS') then
15656              if ((l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N') ) then  -- CBS Changes
15657                 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15658              else
15659                 u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
15660              end if;
15661           end if;
15662           u_oth_act_cost_to_date_tc(l_index3) := nvl(u_oth_act_cost_to_date_tc(l_index3),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
15663           u_oth_act_rawcost_to_date_tc(l_index3) := nvl(u_oth_act_rawcost_to_date_tc(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
15664           u_oth_act_cost_to_date_pc(l_index3) := nvl(u_oth_act_cost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
15665                    + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
15666           u_oth_act_rawcost_to_date_pc(l_index3) := nvl(u_oth_act_rawcost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
15667                    + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
15668           u_oth_act_cost_to_date_fc(l_index3) := nvl(u_oth_act_cost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
15669                    + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
15670           u_oth_act_rawcost_to_date_fc(l_index3) := nvl(u_oth_act_rawcost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
15671                    + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
15672           u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15673           u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_TC;
15674           u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
15675           u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_FC;
15676           u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
15677           u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_COST_PC;
15678           u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
15679           if l_object_type = 'PA_ASSIGNMENTS' and
15680              l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
15681               ---5726773
15682 	      if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.oth_quantity_to_date,l_w_rollup_rec_asofdate.oth_etc_quantity) = 'N') then
15683                  u_oth_etc_qty(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_oth_qty(l_index3));
15684  	         if (u_oth_etc_qty(l_index3) <> 0) then
15685                     u_oth_etc_qty(l_index3) := l_asgn_plan_quantity - u_oth_qty(l_index3);
15686                     pa_progress_utils.get_plan_costs_for_qty
15687                     ( p_resource_list_mem_id  => l_object_id
15688                      ,p_project_id            => l_project_id
15689                      ,p_task_id               => all_objects_in_temp_rec.project_element_id
15690                      ,p_as_of_date            => l_temp_as_of_date
15691                      ,p_structure_version_id  => l_latest_wp_struct_ver_id
15692                      ,p_txn_currency_code     => l_txn_curr_code
15693                      ,p_rate_based_flag       => l_rate_based_flag
15694                      ,p_quantity              => u_oth_etc_qty(l_index3)
15695                      ,p_budget_version_id     => l_plan_version_id --4372462
15696                      ,p_res_assignment_id     => l_res_assignment_id
15697                      ,x_rawcost_tc            => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
15698                      ,x_brdncost_tc           => u_OTH_ETC_COST_to_date_TC(l_index3)
15699                      ,x_rawcost_pc            => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
15700                      ,x_brdncost_pc           => u_OTH_ETC_COST_to_date_PC(l_index3)
15701                      ,x_rawcost_fc            => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
15702                      ,x_brdncost_fc           => u_OTH_ETC_COST_to_date_FC(l_index3)
15703                      ,x_return_status         => x_return_status
15704                      ,x_msg_count             => x_msg_count
15705                      ,x_msg_data              => x_msg_data);
15706 		    if (x_return_status <> 'S') then -- bug 6712595
15707                         if (u_OTH_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15708                         --Modified the error message for the Bug 13640836
15709 		 /*  pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15710                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15711                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15712                            -- Added for bug 5526638
15713                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15714                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
15715 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15716 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15717 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15718 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15719 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15720                       --Bug 13640836 end
15721 			else
15722 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15723                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15724                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15725                            -- Added for bug 5526638
15726                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15727                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15728 			 end if;
15729                         raise l_no_rate_exception;
15730                     end if;
15731 		    u_actual_finish_date(l_index3) := to_date(null);
15732                  else
15733                     u_oth_etc_qty(l_index3) := 0;
15734                     u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
15735                     u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15736                     u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
15737                     u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15738                     u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
15739                     u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15740                     u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15741                  end if;
15742               else
15743                  u_oth_etc_qty(l_index3) := l_w_rollup_rec_asofdate.oth_etc_quantity;
15744                  u_OTH_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_tc;
15745                  u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_tc;
15746                  u_OTH_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_fc;
15747                  u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_fc;
15748                  u_OTH_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_cost_pc;
15749                  u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.oth_etc_rawcost_pc;
15750                  u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15751               end if;
15752           end if;
15753             u_ppl_act_effort_to_date(l_index3) := nvl(u_ppl_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
15754           u_ppl_act_cost_to_date_tc(l_index3) := nvl(u_ppl_act_cost_to_date_tc(l_index3),0) + nvl(l_ppl_act_cost_to_date_tc,0);
15755           u_ppl_act_rawcost_to_date_tc(l_index3) := nvl(u_ppl_act_rawcost_to_date_tc(l_index3),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
15756           u_ppl_act_cost_to_date_pc(l_index3) := nvl(u_ppl_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
15757           u_ppl_act_rawcost_to_date_pc(l_index3) := nvl(u_ppl_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
15758           u_ppl_act_cost_to_date_fc(l_index3) := nvl(u_ppl_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
15759           u_ppl_act_rawcost_to_date_fc(l_index3) := nvl(u_ppl_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
15760           u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15761           u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15762           u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15763           u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15764           u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15765           u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15766           u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15767           --Bug 13823145 changes start here
15768           if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS Changes
15769             u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_pc(l_index3);
15770 	  ELSif (l_wp_prl_res_class_flag = 'N') then
15771 	    u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_tc(l_index3);
15772           end if;
15773           --Bug 13823145 changes end here
15774           if l_object_type = 'PA_ASSIGNMENTS' and
15775              l_res_class_code = 'PEOPLE' then
15776               ---5726773
15777 	      if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.ppl_act_effort_to_date,l_w_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
15778                  u_ppl_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_ppl_act_effort_to_date(l_index3));
15779  	         if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
15780                     pa_progress_utils.get_plan_costs_for_qty
15781                     (p_resource_list_mem_id  => l_object_id
15782                     ,p_project_id            => l_project_id
15783                     ,p_task_id               => all_objects_in_temp_rec.project_element_id
15784                     ,p_as_of_date            => l_temp_as_of_date
15785                     ,p_structure_version_id  => l_latest_wp_struct_ver_id
15786                     ,p_txn_currency_code     => l_txn_curr_code
15787                     ,p_rate_based_flag       => l_rate_based_flag
15788                     ,p_quantity              => u_ppl_etc_effort_to_date(l_index3)
15789                     ,p_budget_version_id     => l_plan_version_id --4372462
15790                     ,p_res_assignment_id     => l_res_assignment_id
15791                     ,x_rawcost_tc            => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
15792                     ,x_brdncost_tc           => u_ppl_ETC_COST_to_date_TC(l_index3)
15793                     ,x_rawcost_pc            => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
15794                     ,x_brdncost_pc           => u_ppl_ETC_COST_to_date_PC(l_index3)
15795                     ,x_rawcost_fc            => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
15796                     ,x_brdncost_fc           => u_ppl_ETC_COST_to_date_FC(l_index3)
15797                     ,x_return_status         => x_return_status
15798                     ,x_msg_count             => x_msg_count
15799                     ,x_msg_data              => x_msg_data);
15800 		    if (x_return_status <> 'S') then  -- bug 6712595
15801                         if (u_ppl_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15802                         --Modified the error message for the Bug 13640836
15803 			/*  pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15804                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15805                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15806                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15807                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;  */
15808 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15809 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15810 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15811 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15812 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15813                                                            --Bug 13640836 end
15814 			else
15815 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15816                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15817                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15818                            -- Added for bug 5526638
15819                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15820                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15821 			 end if;
15822                         raise l_no_rate_exception;
15823                     end if;
15824                     u_actual_finish_date(l_index3) := to_date(null);
15825                  else
15826                     u_ppl_etc_effort_to_date(l_index3) := 0;
15827                     u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
15828                     u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15829                     u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
15830                     u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15831                     u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
15832                     u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15833                     u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15834                  end if;
15835               else
15836                  u_ppl_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.estimated_remaining_effort;
15837                  u_ppl_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_tc;
15838                  u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_tc;
15839                  u_ppl_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_fc;
15840                  u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_fc;
15841                  u_ppl_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_cost_pc;
15842                  u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.ppl_etc_rawcost_pc;
15843                  u_actual_finish_date(l_index3) := l_w_rollup_rec_asofdate.actual_finish_date;
15844               end if;
15845           end if;
15846           u_eqpmt_act_effort_to_date(l_index3) := nvl(u_eqpmt_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
15847           u_eqpmt_act_cost_to_date_tc(l_index3) := nvl(u_eqpmt_act_cost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
15848           u_eqpmt_act_rawcost_to_date_tc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
15849           u_eqpmt_act_cost_to_date_pc(l_index3) := nvl(u_eqpmt_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
15850           u_eqpmt_act_rawcost_to_date_pc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
15851           u_eqpmt_act_cost_to_date_fc(l_index3) := nvl(u_eqpmt_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
15852           u_eqpmt_act_rawcost_to_date_fc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
15853           u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15854           u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15855           u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15856           u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15857           u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15858           u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15859           u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15860           --Bug 13823145 changes start here
15861           if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then   -- CBS changes:
15862              u_eqpmt_act_effort_to_date(l_index3) :=  u_eqpmt_act_rawcost_to_date_pc(l_index3);
15863 	  ELSif (l_wp_prl_res_class_flag = 'N') then
15864 	     u_eqpmt_act_effort_to_date(l_index3) :=  u_eqpmt_act_rawcost_to_date_tc(l_index3);
15865           end if;
15866           --Bug 13823145 changes end here
15867           if l_object_type = 'PA_ASSIGNMENTS' and
15868              l_res_class_code = 'EQUIPMENT' then
15869               ---5726773
15870 	      if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_w_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_w_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
15871                  u_eqpmt_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_eqpmt_act_effort_to_date(l_index3));
15872  	         if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
15873                     pa_progress_utils.get_plan_costs_for_qty
15874                     (p_resource_list_mem_id  => l_object_id
15875                     ,p_project_id            => l_project_id
15876                     ,p_task_id               => all_objects_in_temp_rec.project_element_id
15877                     ,p_as_of_date            => l_temp_as_of_date
15878                     ,p_structure_version_id  => l_latest_wp_struct_ver_id
15879                     ,p_txn_currency_code     => l_txn_curr_code
15880                     ,p_rate_based_flag       => l_rate_based_flag
15881                     ,p_quantity              => u_eqpmt_etc_effort_to_date(l_index3)
15882                     ,p_budget_version_id     => l_plan_version_id --4372462
15883                     ,p_res_assignment_id     => l_res_assignment_id
15884                     ,x_rawcost_tc            => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
15885                     ,x_brdncost_tc           => u_eqpmt_ETC_COST_to_date_TC(l_index3)
15886                     ,x_rawcost_pc            => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
15887                     ,x_brdncost_pc           => u_eqpmt_ETC_COST_to_date_PC(l_index3)
15888                     ,x_rawcost_fc            => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
15889                     ,x_brdncost_fc           => u_eqpmt_ETC_COST_to_date_FC(l_index3)
15890                     ,x_return_status         => x_return_status
15891                     ,x_msg_count             => x_msg_count
15892                     ,x_msg_data              => x_msg_data);
15893 		    if (x_return_status <> 'S') then-- bug 6712595
15894                         if (u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) is null) then
15895                         --Modified the error message for the Bug 13640836
15896 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
15897                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15898                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15899                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
15900                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
15901 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15902 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
15903 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
15904 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
15905 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
15906                                         --Bug 13640836 end
15907 			else
15908 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
15909                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
15910                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
15911                            -- Added for bug 5526638
15912                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
15913                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
15914 			 end if;
15915                         raise l_no_rate_exception;
15916                     end if;
15917 		    u_actual_finish_date(l_index3) := to_date(null);
15918                  else
15919                     u_eqpmt_etc_effort_to_date(l_index3) := 0;
15920                     u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
15921                     u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
15922                     u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
15923                     u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
15924                     u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
15925                     u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
15926                     u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
15927                  end if;
15928               else
15929                  u_eqpmt_etc_effort_to_date(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_effort;
15930                  u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_tc;
15931                  u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
15932                  u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_fc;
15933                  u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
15934                  u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_cost_pc;
15935                  u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_w_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
15936                   u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
15937               end if;
15938           end if;
15939           --5726773
15940 	  --since ETC is already calculated we can calculate % complete as
15941 	  --(act / act + etc)
15942 	  if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
15943              l_percent_comp := (u_ppl_act_effort_to_date(l_index3)/(u_ppl_act_effort_to_date(l_index3) + u_ppl_etc_effort_to_date(l_index3)))*100;
15944              if (l_percent_comp > 100) then
15945                 l_percent_comp := 100;
15946              elsif (l_percent_comp < 0) then
15947                 l_percent_comp := 0;
15948              end if;
15949              l_earned_val := l_percent_comp * l_planned_eff;
15950              l_eff_rollup_pc := l_percent_comp;
15951           elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COSTbased
15952 	     l_percent_comp := (u_ppl_act_cost_to_date_pc(l_index3)/(u_ppl_act_cost_to_date_pc(l_index3) + u_ppl_etc_cost_to_date_pc(l_index3)))*100;
15953              if (l_percent_comp > 100) then
15954                 l_percent_comp := 100;
15955              elsif (l_percent_comp < 0) then
15956                 l_percent_comp := 0;
15957              end if;
15958              l_earned_val := l_percent_comp * l_planned_cost;
15959              l_eff_rollup_pc := l_percent_comp;
15960           else
15961              l_percent_comp := l_w_rollup_rec_asofdate.completed_percentage;
15962              l_eff_rollup_pc := l_w_rollup_rec_asofdate.eff_rollup_percent_comp;
15963              l_earned_val := l_w_rollup_rec_asofdate.earned_value;
15964           end if;
15965           u_completed_percentage(l_index3) := l_w_rollup_rec_asofdate.completed_percentage;
15966           u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
15967           u_earned_val(l_index3) := l_earned_val;
15968           if (l_db_case = '2') then
15969              l_index3 := l_index3 + 1;
15970           end if;
15971         end if;
15972 
15973     -- End fix for bug # 4041048.
15974 
15975         --- if rollup record exists on the as_of_date then populate the
15976         --- u_ tables else populate the insert tables, for bulk processing
15977         --- call an api to check if a record exists on that date
15978 
15979         if (l_db_case = '1') then
15980           --- insert with defaults
15981           select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
15982           percent_complete_id(l_index2) := to_number(null);
15983           project_id(l_index2) := l_project_id;
15984           object_id(l_index2) := l_object_id;
15985           pa_debug.log_message('Inside loop object_id '|| object_id(l_index2), 1);
15986           OBJECT_TYPE(l_index2) := l_object_Type;
15987           as_of_Date(l_index2) := l_temp_as_of_date;
15988           object_version_id(l_index2) := l_object_version_id;
15989           LAST_UPDATE_DATE(l_index2) := sysdate;
15990           LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
15991           CREATION_DATE(l_index2) := sysdate;
15992           CREATED_BY(l_index2) := fnd_global.user_id;
15993           PROGRESS_STATUS_CODE(l_index2) := null;
15994           LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
15995           INCREMENTAL_WORK_QUANTITY(l_index2) := to_number(null);
15996           CUMULATIVE_WORK_QUANTITY(l_index2) := to_number(null);
15997           base_percent_complete(l_index2) := to_number(null);
15998           ESTIMATED_START_DATE(l_index2) := to_date(null);
15999           ESTIMATED_FINISH_DATE(l_index2) := to_date(null);
16000           if (l_object_Type = 'PA_ASSIGNMENTS') then
16001              actual_start_date(l_index2) := l_asgn_sch_start_date;
16002           -- Add cbs_element_id
16003              pa_debug.log_message('Inside loop cbs_element_id '|| all_objects_in_temp_rec.cbs_element_id, 1);
16004              cbs_element_id(l_index2) := all_objects_in_temp_rec.cbs_element_id;
16005 
16006              -- Bug 6917961
16007              OPEN cur_prog_setup(all_objects_in_temp_rec.project_element_id,l_project_id);
16008              FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
16009              CLOSE cur_prog_setup;
16010              if (l_prog_enable_flag = 'Y') then
16011                  PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
16012              end if;
16013              -- Bug 6917961
16014           else
16015              actual_start_date(l_index2) := l_sch_start_date; -- set actual start
16016           end if;
16017           actual_finish_date(l_index2) := to_date(null);
16018           RECORD_VERSION_NUMBER(l_index2) := 1;
16019           base_percent_comp_deriv_code(l_index2) := l_base_pc_deriv_code;
16020           BASE_PROGRESS_STATUS_CODE(l_index2) := null;
16021           EFF_ROLLUP_PROG_STAT_CODE(l_index2) := null;
16022           STRUCTURE_TYPE(l_index2) := 'WORKPLAN';
16023           PROJ_ELEMENT_ID(l_index2) := all_objects_in_temp_rec.project_element_id;
16024           STRUCTURE_VERSION_ID(l_index2) := to_number(null);
16025           if (l_object_type = 'PA_ASSIGNMENTS') then
16026              if ( (l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N') ) then  -- CBS Changes
16027                oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16028              else
16029                oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0));
16030              end if;
16031           end if;
16032           oth_act_cost_to_date_tc(l_index2) := nvl(oth_act_cost_to_date_tc(l_index2),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
16033           oth_act_rawcost_to_date_tc(l_index2) := nvl(oth_act_rawcost_to_date_tc(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16034           oth_act_cost_to_date_pc(l_index2) := nvl(oth_act_cost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
16035               + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
16036           oth_act_rawcost_to_date_pc(l_index2) := nvl(oth_act_rawcost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
16037               + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
16038           oth_act_cost_to_date_fc(l_index2) := nvl(oth_act_cost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
16039               + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
16040           oth_act_rawcost_to_date_fc(l_index2) := nvl(oth_act_rawcost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
16041               + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
16042           oth_etc_qty(l_index2) := to_number(null);
16043           OTH_ETC_COST_TC(l_index2) := to_number(null);
16044           OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
16045           OTH_ETC_COST_FC(l_index2) := to_number(null);
16046           OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
16047           OTH_ETC_COST_PC(l_index2) := to_number(null);
16048           OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
16049           if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
16050              ---5726773
16051 	     oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
16052  	     if (oth_etc_qty(l_index2) <> 0) then
16053                 oth_etc_qty(l_index2) := l_asgn_plan_quantity - oth_qty(l_index2);
16054                 pa_progress_utils.get_plan_costs_for_qty
16055                 ( p_resource_list_mem_id  => l_object_id
16056                  ,p_project_id            => l_project_id
16057                  ,p_task_id               => all_objects_in_temp_rec.project_element_id
16058                  ,p_as_of_date            => l_temp_as_of_date
16059                  ,p_structure_version_id  => l_latest_wp_struct_ver_id
16060                  ,p_txn_currency_code     => l_txn_curr_code
16061                  ,p_rate_based_flag       => l_rate_based_flag
16062                  ,p_quantity              => oth_etc_qty(l_index2)
16063                  ,p_budget_version_id     => l_plan_version_id --4372462
16064                  ,p_res_assignment_id     => l_res_assignment_id
16065                  ,x_rawcost_tc            => OTH_ETC_RAWCOST_TC(l_index2)
16066                  ,x_brdncost_tc           => OTH_ETC_COST_TC(l_index2)
16067                  ,x_rawcost_pc            => OTH_ETC_RAWCOST_PC(l_index2)
16068                  ,x_brdncost_pc           => OTH_ETC_COST_PC(l_index2)
16069                  ,x_rawcost_fc            => OTH_ETC_RAWCOST_FC(l_index2)
16070                  ,x_brdncost_fc           => OTH_ETC_COST_FC(l_index2)
16071                  ,x_return_status         => x_return_status
16072                  ,x_msg_count             => x_msg_count
16073                  ,x_msg_data              => x_msg_data);
16074 		    if (x_return_status <> 'S') then  -- bug 6712595
16075                         if (OTH_ETC_RAWCOST_TC(l_index2) is null) then
16076                --Modified the error message for the Bug 13640836
16077 		/*	  pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16078                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16079                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16080                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16081                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;    */
16082 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16083 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16084 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16085 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16086 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16087                       --Bug 13640836 end
16088 			else
16089 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16090                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16091                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16092                            -- Added for bug 5526638
16093                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16094                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16095 			 end if;
16096                         raise l_no_rate_exception;
16097                     end if;
16098 		    actual_finish_date(l_index2) := to_date(null);
16099              else
16100                 oth_etc_qty(l_index2) := 0;
16101                 OTH_ETC_COST_TC(l_index2) := 0;
16102                 OTH_ETC_RAWCOST_TC(l_index2) := 0;
16103                 OTH_ETC_COST_FC(l_index2) := 0;
16104                 OTH_ETC_RAWCOST_FC(l_index2) := 0;
16105                 OTH_ETC_COST_PC(l_index2) := 0;
16106                 OTH_ETC_RAWCOST_PC(l_index2) := 0;
16107                 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16108              end if;
16109              -- here insert in PJI temp table for ETC
16110 
16111               IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16112               l_index_etc := l_index_etc + 1;  -- for bug 6266824
16113                 ELSE
16114               IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16115                 l_index_etc := l_index_etc + 1;
16116               ELSE
16117                 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16118                   l_index_etc := l_index_etc + 1;
16119                 END IF;
16120               END IF;
16121               END IF;
16122 
16123              ETC_PROJECT_ID(l_index_etc) := l_project_id;
16124              ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16125              ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16126              --CBS Change in Get_Summarized_Actuals
16127              ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16128              -- End CBS Change in Get_Summarized_Actuals
16129              ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16130              if (l_plan_type = 'P') then
16131                 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16132              elsif (l_plan_type = 'G') then
16133                 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16134              else
16135                 ETC_PERIOD_NAME(l_index_etc) := null;
16136              end if;
16137              ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16138              ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16139              ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16140              ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16141              ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16142              ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16143              ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16144              ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16145              ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
16146              ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16147              ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16148              ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16149              ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16150              ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
16151              ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
16152              ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16153              ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16154              ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16155              ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16156           end if;
16157           ppl_act_effort_to_date(l_index2) := nvl(ppl_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
16158           ppl_act_cost_to_date_tc(l_index2) := nvl(ppl_act_cost_to_date_tc(l_index2),0) + nvl(l_ppl_act_cost_to_date_tc,0);
16159           ppl_act_rawcost_to_date_tc(l_index2) := nvl(ppl_act_rawcost_to_date_tc(l_index2),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
16160           ppl_act_cost_to_date_pc(l_index2) := nvl(ppl_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
16161           ppl_act_rawcost_to_date_pc(l_index2) := nvl(ppl_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
16162           ppl_act_cost_to_date_fc(l_index2) := nvl(ppl_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
16163           ppl_act_rawcost_to_date_fc(l_index2) := nvl(ppl_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
16164           ESTIMATED_REMAINING_EFFORT(l_index2) := to_number(null);
16165           PPL_ETC_COST_TC(l_index2) := to_number(null);
16166           PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
16167           PPL_ETC_COST_PC(l_index2) := to_number(null);
16168           PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
16169           PPL_ETC_COST_FC(l_index2) := to_number(null);
16170           PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
16171           --Bug 13823145 changes start here
16172           if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then  -- CBS Changes
16173             ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
16174 	  ELSif (l_wp_prl_res_class_flag = 'N') then
16175 	    ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
16176           end if;
16177           --Bug 13823145 changes end here
16178           if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
16179              ---5726773
16180 	     ESTIMATED_REMAINING_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,ppl_act_effort_to_date(l_index2));
16181              if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
16182                 pa_progress_utils.get_plan_costs_for_qty
16183                 ( p_resource_list_mem_id  => l_object_id
16184                  ,p_project_id            => l_project_id
16185                  ,p_task_id               => all_objects_in_temp_rec.project_element_id
16186                  ,p_as_of_date            => l_temp_as_of_date
16187                  ,p_structure_version_id  => l_latest_wp_struct_ver_id
16188                  ,p_txn_currency_code     => l_txn_curr_code
16189                  ,p_rate_based_flag       => l_rate_based_flag
16190                  ,p_quantity              => ESTIMATED_REMAINING_EFFORT(l_index2)
16191                  ,p_budget_version_id     => l_plan_version_id --4372462
16192                  ,p_res_assignment_id     => l_res_assignment_id
16193                  ,x_rawcost_tc            => PPL_ETC_RAWCOST_TC(l_index2)
16194                  ,x_brdncost_tc           => PPL_ETC_COST_TC(l_index2)
16195                  ,x_rawcost_pc            => PPL_ETC_RAWCOST_PC(l_index2)
16196                  ,x_brdncost_pc           => PPL_ETC_COST_PC(l_index2)
16197                  ,x_rawcost_fc            => PPL_ETC_RAWCOST_FC(l_index2)
16198                  ,x_brdncost_fc           => PPL_ETC_COST_FC(l_index2)
16199                  ,x_return_status         => x_return_status
16200                  ,x_msg_count             => x_msg_count
16201                  ,x_msg_data              => x_msg_data);
16202 		    if (x_return_status <> 'S') then  -- bug 6712595
16203                         if (PPL_ETC_RAWCOST_TC(l_index2) is null) then
16204                       --Modified the error message for the Bug 13640836
16205 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16206                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16207                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16208                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16209                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code; */
16210 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16211 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16212 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16213 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16214 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16215                                                  --Bug 13640836 end
16216 			else
16217 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16218                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16219                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16220                            -- Added for bug 5526638
16221                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16222                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16223 			 end if;
16224                         raise l_no_rate_exception;
16225                     end if;
16226 		    actual_finish_date(l_index2) := to_date(null);
16227              else
16228                 ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
16229                 PPL_ETC_COST_TC(l_index2) := 0;
16230                 PPL_ETC_RAWCOST_TC(l_index2) := 0;
16231                 PPL_ETC_COST_PC(l_index2) := 0;
16232                 PPL_ETC_RAWCOST_PC(l_index2) := 0;
16233                 PPL_ETC_COST_FC(l_index2) := 0;
16234                 PPL_ETC_RAWCOST_FC(l_index2) := 0;
16235                 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16236              end if;
16237 
16238             IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16239                l_index_etc := l_index_etc + 1;  -- for bug 6266824
16240             ELSE
16241               IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16242                  l_index_etc := l_index_etc + 1;
16243               ELSE
16244                 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16245                   l_index_etc := l_index_etc + 1;
16246                 END IF;
16247 
16248               END IF;
16249             END IF;
16250 
16251              ETC_PROJECT_ID(l_index_etc) := l_project_id;
16252              ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16253              ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16254               --CBS Change in Get_Summarized_Actuals
16255              ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16256              -- End CBS Change in Get_Summarized_Actuals
16257              ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16258              if (l_plan_type = 'P') then
16259                 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16260              elsif (l_plan_type = 'G') then
16261                 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16262              else
16263                 ETC_PERIOD_NAME(l_index_etc) := null;
16264              end if;
16265              ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16266              ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16267              ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16268              ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16269              ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16270              ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16271              ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16272              ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16273              ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
16274              ETC_TXN_BURDENED_COST(l_index_etc) := PPL_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16275              ETC_PRJ_BURDENED_COST(l_index_etc) := PPL_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16276              ETC_PFC_BURDENED_COST(l_index_etc) := PPL_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16277              ETC_TXN_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16278              ETC_PRJ_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
16279              ETC_PFC_RAW_COST(l_index_etc) := PPL_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
16280              ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16281              ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16282              ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16283              ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16284           end if;
16285           eqpmt_act_effort_to_date(l_index2) := nvl(eqpmt_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16286           eqpmt_act_cost_to_date_tc(l_index2) := nvl(eqpmt_act_cost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
16287           eqpmt_act_rawcost_to_date_tc(l_index2) := nvl(eqpmt_act_rawcost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
16288           eqpmt_act_cost_to_date_pc(l_index2) := nvl(eqpmt_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
16289           eqpmt_act_rawcost_to_date_pc(l_index2) := nvl(eqpmt_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
16290           eqpmt_act_cost_to_date_fc(l_index2) := nvl(eqpmt_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
16291           eqpmt_act_rawcost_to_date_fc(l_index2) := nvl(eqpmt_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
16292           EQPMT_ETC_EFFORT(l_index2) := to_number(null);
16293           EQPMT_ETC_COST_TC(l_index2) := to_number(null);
16294           EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
16295           EQPMT_ETC_COST_PC(l_index2) := to_number(null);
16296           EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
16297           EQPMT_ETC_COST_FC(l_index2) := to_number(null);
16298           EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
16299 
16300             --Bug 13823145 changes start here
16301             if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
16302               eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_pc(l_index2);
16303 	    ELSif (l_wp_prl_res_class_flag = 'N') then
16304 	      eqpmt_act_effort_to_date(l_index2) := eqpmt_act_rawcost_to_date_tc(l_index2);
16305             end if;
16306             --Bug 13823145 changes end here
16307           if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
16308              ---5726773
16309 	     EQPMT_ETC_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,eqpmt_act_effort_to_date(l_index2));
16310  	     if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
16311                 pa_progress_utils.get_plan_costs_for_qty
16312                 ( p_resource_list_mem_id  => l_object_id
16313                  ,p_project_id            => l_project_id
16314                  ,p_task_id               => all_objects_in_temp_rec.project_element_id
16315                  ,p_as_of_date            => l_temp_as_of_date
16316                  ,p_structure_version_id  => l_latest_wp_struct_ver_id
16317                  ,p_txn_currency_code     => l_txn_curr_code
16318                  ,p_rate_based_flag       => l_rate_based_flag
16319                  ,p_quantity              => EQPMT_ETC_EFFORT(l_index2)
16320                  ,p_budget_version_id     => l_plan_version_id --4372462
16321                  ,p_res_assignment_id     => l_res_assignment_id
16322                  ,x_rawcost_tc            => EQPMT_ETC_RAWCOST_TC(l_index2)
16323                  ,x_brdncost_tc           => EQPMT_ETC_COST_TC(l_index2)
16324                  ,x_rawcost_pc            => EQPMT_ETC_RAWCOST_PC(l_index2)
16325                  ,x_brdncost_pc           => EQPMT_ETC_COST_PC(l_index2)
16326                  ,x_rawcost_fc            => EQPMT_ETC_RAWCOST_FC(l_index2)
16327                  ,x_brdncost_fc           => EQPMT_ETC_COST_FC(l_index2)
16328                  ,x_return_status         => x_return_status
16329                  ,x_msg_count             => x_msg_count
16330                  ,x_msg_data              => x_msg_data);
16331 		    if (x_return_status <> 'S') then
16332                         if (EQPMT_ETC_RAWCOST_TC(l_index2) is null) then
16333                --Modified the error message for the Bug 13640836
16334 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16335                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16336                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16337                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16338                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;   */
16339 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16340 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16341 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16342 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16343 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16344                                                     --Bug 13640836 end
16345 			else
16346 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16347                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16348                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16349                            -- Added for bug 5526638
16350                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16351                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16352 			 end if;
16353                         raise l_no_rate_exception;
16354                     end if;
16355 		    actual_finish_date(l_index2) := to_date(null);
16356              else
16357                 EQPMT_ETC_EFFORT(l_index2) := 0;
16358                 EQPMT_ETC_COST_TC(l_index2) := 0;
16359                 EQPMT_ETC_RAWCOST_TC(l_index2) := 0;
16360                 EQPMT_ETC_COST_PC(l_index2) := 0;
16361                 EQPMT_ETC_RAWCOST_PC(l_index2) := 0;
16362                 EQPMT_ETC_COST_FC(l_index2) := 0;
16363                 EQPMT_ETC_RAWCOST_FC(l_index2) := 0;
16364                 actual_finish_date(l_index2) := l_asgn_sch_finish_date;
16365              end if;
16366 
16367              IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16368                l_index_etc := l_index_etc + 1;  -- for bug 6266824
16369              ELSE
16370               IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16371                  l_index_etc := l_index_etc + 1;
16372                ELSE
16373                 IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16374                   l_index_etc := l_index_etc + 1;
16375                 END IF;
16376 
16377                END IF;
16378             END IF;
16379 
16380              ETC_PROJECT_ID(l_index_etc) := l_project_id;
16381              ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16382              ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16383               --CBS Change in Get_Summarized_Actuals
16384              ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16385              -- End CBS Change in Get_Summarized_Actuals
16386              ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16387              if (l_plan_type = 'P') then
16388                 ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16389              elsif (l_plan_type = 'G') then
16390                 ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16391              else
16392                 ETC_PERIOD_NAME(l_index_etc) := null;
16393              end if;
16394              ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16395              ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16396              ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16397              ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16398              ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16399              ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16400              ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16401              ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16402              ETC_QUANTITY(l_index_etc) := EQPMT_ETC_EFFORT(l_index2) - l_asgn_plan_quantity;
16403              ETC_TXN_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
16404              ETC_PRJ_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
16405              ETC_PFC_BURDENED_COST(l_index_etc) := EQPMT_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
16406              ETC_TXN_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
16407              ETC_PRJ_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_tc;
16408              ETC_PFC_RAW_COST(l_index_etc) := EQPMT_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_tc;
16409              ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16410              ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16411              ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16412              ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16413           end if;
16414            --- if task is lowest and flag for calc PC and EV is true then
16415           --- 5726773  changed > 0 condition to <> 0
16416  	  if (l_base_pc_deriv_code = 'EFFORT' and l_planned_eff <> 0) then
16417              -- Bug 3830673 : Calculate % Complete, multiplication with 100 was missing
16418             l_percent_comp := (ppl_act_effort_to_date(l_index2)/l_planned_eff)*100;
16419             if (l_percent_comp > 100) then
16420                l_percent_comp := 100;
16421             elsif (l_percent_comp < 0) then
16422                l_percent_comp := 0;
16423             end if;
16424             l_earned_val := l_percent_comp * l_planned_eff;
16425           elsif (l_base_pc_deriv_code = 'COST' and l_planned_cost <> 0) then
16426             l_percent_comp := (ppl_act_cost_to_date_pc(l_index2)/l_planned_cost)*100;
16427             if (l_percent_comp > 100) then
16428                l_percent_comp := 100;
16429             elsif (l_percent_comp < 0) then
16430                l_percent_comp := 0;
16431             end if;
16432             l_earned_val := l_percent_comp * l_planned_cost;
16433           else
16434             l_percent_comp := to_number(null);
16435             l_earned_val   := to_number(null);
16436           end if;
16437           completed_percentage(l_index2) := to_number(null);
16438           EFF_ROLLUP_PERCENT_COMP(l_index2) := l_percent_comp;
16439           earned_value(l_index2) := l_earned_val;
16440           TASK_WT_BASIS_CODE(l_index2) := null;
16441           SUBPRJ_PPL_ACT_EFFORT(l_index2) := to_number(null);
16442           SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := to_number(null);
16443           SUBPRJ_PPL_ETC_EFFORT(l_index2) := to_number(null);
16444           SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := to_number(null);
16445           SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := to_number(null);
16446           SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := to_number(null);
16447           SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := to_number(null);
16448           SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := to_number(null);
16449           SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := to_number(null);
16450           SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := to_number(null);
16451           SUBPRJ_PPL_ACT_COST_TC(l_index2) := to_number(null);
16452           SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := to_number(null);
16453           SUBPRJ_PPL_ACT_COST_FC(l_index2) := to_number(null);
16454           SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := to_number(null);
16455           SUBPRJ_PPL_ACT_COST_PC(l_index2) := to_number(null);
16456           SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := to_number(null);
16457           SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := to_number(null);
16458           SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := to_number(null);
16459           SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := to_number(null);
16460           SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := to_number(null);
16461           SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := to_number(null);
16462           SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := to_number(null);
16463           SUBPRJ_OTH_ETC_COST_TC(l_index2) := to_number(null);
16464           SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := to_number(null);
16465           SUBPRJ_OTH_ETC_COST_FC(l_index2) := to_number(null);
16466           SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := to_number(null);
16467           SUBPRJ_OTH_ETC_COST_PC(l_index2) := to_number(null);
16468           SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := to_number(null);
16469           SUBPRJ_PPL_ETC_COST_TC(l_index2) := to_number(null);
16470           SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := to_number(null);
16471           SUBPRJ_PPL_ETC_COST_FC(l_index2) := to_number(null);
16472           SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := to_number(null);
16473           SUBPRJ_PPL_ETC_COST_PC(l_index2) := to_number(null);
16474           SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := to_number(null);
16475           SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := to_number(null);
16476           SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := to_number(null);
16477           SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := to_number(null);
16478           SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := to_number(null);
16479           SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := to_number(null);
16480           SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := to_number(null);
16481           SUBPRJ_EARNED_VALUE(l_index2) := to_number(null);
16482           PROJFUNC_COST_RATE_TYPE(l_index2) := null;
16483           PROJFUNC_COST_EXCHANGE_RATE(l_index2) := to_number(null);
16484           PROJFUNC_COST_RATE_DATE(l_index2) := to_date(null);
16485           PROJ_COST_RATE_TYPE(l_index2) := null;
16486           PROJ_COST_EXCHANGE_RATE(l_index2) := to_number(null);
16487           PROJ_COST_RATE_DATE(l_index2) := to_date(null);
16488           TXN_CURRENCY_CODE(l_index2) := l_txn_curr_code;
16489           PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
16490           PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
16491           --- here we check if future rollup records exist. if they do current_flag
16492           --- should be 'N' else 'Y'
16493           open future_rollup_recs;
16494           fetch future_rollup_recs into l_future_rollup_recs;
16495           if future_rollup_recs%found then
16496              CURRENT_FLAG(l_index2) := 'N';
16497           else
16498              CURRENT_FLAG(l_index2) := 'Y';
16499           end if;
16500           close future_rollup_recs;
16501           l_index2 := l_temp_index2;
16502         else
16503           if (l_db_case = '2') then
16504             u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16505             u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
16506             u_object_version_id(l_index3) := l_object_version_id;
16507               u_ppl_act_effort_to_date(l_index3) := nvl(u_ppl_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
16508               u_eqpmt_act_effort_to_date(l_index3) := nvl(u_eqpmt_act_effort_to_date(l_index3),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16509 
16510             if (l_object_Type = 'PA_ASSIGNMENTS') then
16511                if ((l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N')) then -- CBS changes
16512                  u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16513                else
16514                  u_oth_qty(l_index3) := nvl(u_oth_qty(l_index3),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
16515                end if;
16516             end if;
16517             u_oth_act_cost_to_date_tc(l_index3) := nvl(u_oth_act_cost_to_date_tc(l_index3),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_COST_TO_DATE_TC,0)));
16518             u_oth_act_rawcost_to_date_tc(l_index3) := nvl(u_oth_act_rawcost_to_date_tc(l_index3),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(L_EQPMT_ACT_RAWCOST_TO_DATE_TC,0)));
16519             u_oth_act_cost_to_date_pc(l_index3) := nvl(u_oth_act_cost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
16520                + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
16521             u_oth_act_rawcost_to_date_pc(l_index3) := nvl(u_oth_act_rawcost_to_date_pc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
16522               + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
16523             u_oth_act_cost_to_date_fc(l_index3) := nvl(u_oth_act_cost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
16524              + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
16525             u_oth_act_rawcost_to_date_fc(l_index3) := nvl(u_oth_act_rawcost_to_date_fc(l_index3),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0) +
16526                nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
16527             u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
16528             u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
16529             u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16530             u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
16531             u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16532             u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
16533             u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16534             if (l_object_type = 'PA_ASSIGNMENTS' and
16535                 l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS')) then
16536                 ---5726773
16537 		if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.oth_quantity_to_date,l_rollup_rec_asofdate.oth_etc_quantity) = 'N') then
16538 		  u_oth_etc_qty(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_oth_qty(l_index3));
16539  	          if (u_oth_etc_qty(l_index3) <> 0) then
16540                      pa_progress_utils.get_plan_costs_for_qty
16541                      ( p_resource_list_mem_id  => l_object_id
16542                       ,p_project_id            => l_project_id
16543                       ,p_task_id               => all_objects_in_temp_rec.project_element_id
16544                       ,p_as_of_date            => l_temp_as_of_date
16545                       ,p_structure_version_id  => l_latest_wp_struct_ver_id
16546                       ,p_txn_currency_code     => l_txn_curr_code
16547                       ,p_rate_based_flag       => l_rate_based_flag
16548                       ,p_quantity              => u_oth_etc_qty(l_index3)
16549                       ,p_budget_version_id     => l_plan_version_id --4372462
16550                       ,p_res_assignment_id     => l_res_assignment_id
16551                       ,x_rawcost_tc            => u_OTH_ETC_RAWCOST_to_date_TC(l_index3)
16552                       ,x_brdncost_tc           => u_OTH_ETC_COST_to_date_TC(l_index3)
16553                       ,x_rawcost_pc            => u_OTH_ETC_RAWCOST_to_date_PC(l_index3)
16554                       ,x_brdncost_pc           => u_OTH_ETC_COST_to_date_PC(l_index3)
16555                       ,x_rawcost_fc            => u_OTH_ETC_RAWCOST_to_date_FC(l_index3)
16556                       ,x_brdncost_fc           => u_OTH_ETC_COST_to_date_FC(l_index3)
16557                       ,x_return_status         => x_return_status
16558                       ,x_msg_count             => x_msg_count
16559                       ,x_msg_data              => x_msg_data);
16560 		    if (x_return_status <> 'S') then -- bug 6712595
16561                         if (u_OTH_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16562                         --Modified the error message for the Bug 13640836
16563 			/*  pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16564                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16565                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16566                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16567                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;    */
16568 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16569 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16570 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16571 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16572 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16573                           --Bug 13640836 end
16574 			else
16575 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16576                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16577                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16578                            -- Added for bug 5526638
16579                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16580                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16581 			 end if;
16582                         raise l_no_rate_exception;
16583                     end if;
16584 		    u_actual_finish_date(l_index3) := to_date(null);
16585                   else
16586                      u_oth_etc_qty(l_index3) := 0;
16587                      u_OTH_ETC_COST_to_date_TC(l_index3) := 0;
16588                      u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := 0;
16589                      u_OTH_ETC_COST_to_date_FC(l_index3) := 0;
16590                      u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := 0;
16591                      u_OTH_ETC_COST_to_date_PC(l_index3) := 0;
16592                      u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := 0;
16593                      u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
16594                   end if;
16595 
16596                   IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16597                     l_index_etc := l_index_etc + 1;  -- for bug 6266824
16598                   ELSE
16599                   IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16600                      l_index_etc := l_index_etc + 1;
16601                   ELSE
16602                     IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16603                       l_index_etc := l_index_etc + 1;
16604                     END IF;
16605 
16606                   END IF;
16607                   END IF;
16608 
16609                   ETC_PROJECT_ID(l_index_etc) := l_project_id;
16610                   ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16611                   ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16612                    --CBS Change in Get_Summarized_Actuals
16613                   ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16614                   -- End CBS Change in Get_Summarized_Actuals
16615                   ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16616                   if (l_plan_type = 'P') then
16617                     ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16618                   elsif (l_plan_type = 'G') then
16619                     ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16620                   else
16621                     ETC_PERIOD_NAME(l_index_etc) := null;
16622                   end if;
16623                   ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16624                   ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16625                   ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16626                   ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16627                   ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16628                   ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16629                   ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16630                   ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16631                   ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16632                   ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16633                   ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16634                   ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16635                   -- here if extraction type is FULL we pass to_date values otherwise
16636                   -- incremental values only
16637                   if (p_extraction_type = 'FULL') then
16638                      ---5726773 ETC_QUANTITY(l_index_etc) := -u_oth_qty(l_index3);
16639  	             ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_asgn_plan_quantity;
16640                      ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
16641                      ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
16642                      ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
16643                      ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
16644                      ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
16645                      ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
16646                   else
16647                      if (u_oth_qty(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_oth_qty(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
16648                         ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
16649                         ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
16650                         ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
16651                         ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
16652                         ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16653                         ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16654                         ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16655                      else
16656                         ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_quantity_to_date - u_oth_qty(l_index3);
16657  	                ETC_QUANTITY(l_index_etc) := u_oth_etc_qty(l_index3) - l_rollup_rec_asofdate.oth_etc_quantity;
16658                         ETC_TXN_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_tc;
16659                         ETC_PRJ_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_pc;
16660                         ETC_PFC_BURDENED_COST(l_index_etc) := u_OTH_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_cost_fc;
16661                         ETC_TXN_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16662                         ETC_PRJ_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16663                         ETC_PFC_RAW_COST(l_index_etc) := u_OTH_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16664                      end if;
16665                   end if;
16666                 else
16667                   u_oth_etc_qty(l_index3) := l_rollup_rec_asofdate.oth_etc_quantity;
16668                   u_OTH_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_tc;
16669                   u_OTH_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_tc;
16670                   u_OTH_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_fc;
16671                   u_OTH_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_fc;
16672                   u_OTH_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_cost_pc;
16673                   u_OTH_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.oth_etc_rawcost_pc;
16674                   u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16675                   if (p_extraction_type = 'FULL') then
16676                    IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16677                         l_index_etc := l_index_etc + 1;  -- for bug 6266824
16678                    ELSE
16679                     IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16680                       l_index_etc := l_index_etc + 1;
16681                     ELSE
16682                       IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16683                         l_index_etc := l_index_etc + 1;
16684                       END IF;
16685 
16686                     END IF;
16687                    END IF;
16688 
16689 
16690                      ETC_PROJECT_ID(l_index_etc) := l_project_id;
16691                      ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16692                      ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16693                      --CBS Change in Get_Summarized_Actuals
16694                      ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16695                      -- End CBS Change in Get_Summarized_Actuals
16696                      ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16697                      if (l_plan_type = 'P') then
16698                        ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16699                      elsif (l_plan_type = 'G') then
16700                        ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16701                      else
16702                        ETC_PERIOD_NAME(l_index_etc) := null;
16703                      end if;
16704                      ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16705                      ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16706                      ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16707                      ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16708                      ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16709                      ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16710                      ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16711                      ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16712                      ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16713                      ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16714                      ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16715                      ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16716                      ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
16717                      ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16718                      ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16719                      ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16720                      ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16721                      ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16722                      ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16723                   else
16724                      l_sri_index_etc := l_sri_index_etc - 1;   -- for bug 6266824
16725                   end if;
16726                 end if;
16727             end if;
16728             u_ppl_act_cost_to_date_tc(l_index3) := nvl(u_ppl_act_cost_to_date_tc(l_index3),0) + nvl(l_ppl_act_cost_to_date_tc,0);
16729             u_ppl_act_rawcost_to_date_tc(l_index3) := nvl(u_ppl_act_rawcost_to_date_tc(l_index3),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
16730             u_ppl_act_cost_to_date_pc(l_index3) := nvl(u_ppl_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
16731             u_ppl_act_rawcost_to_date_pc(l_index3) := nvl(u_ppl_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
16732             u_ppl_act_cost_to_date_fc(l_index3) := nvl(u_ppl_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
16733             u_ppl_act_rawcost_to_date_fc(l_index3) := nvl(u_ppl_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
16734             u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
16735             u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
16736             u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16737             u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
16738             u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16739             u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
16740             u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16741             --Bug 13823145 changes start here
16742             if  (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes
16743               u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_pc(l_index3);
16744 	    ELSif  (l_wp_prl_res_class_flag = 'N') then
16745 	      u_ppl_act_effort_to_date(l_index3) := u_ppl_act_rawcost_to_date_tc(l_index3);
16746             end if;
16747             --Bug 13823145 changes end here
16748             if l_object_type = 'PA_ASSIGNMENTS' and
16749                l_res_class_code = 'PEOPLE' then
16750                 ---5726773
16751 		if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.ppl_act_effort_to_date,l_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
16752 		   u_ppl_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_ppl_act_effort_to_date(l_index3));
16753 		   if (u_ppl_etc_effort_to_date(l_index3) <> 0) then
16754                       pa_progress_utils.get_plan_costs_for_qty
16755                       (p_resource_list_mem_id  => l_object_id
16756                       ,p_project_id            => l_project_id
16757                       ,p_task_id               => all_objects_in_temp_rec.project_element_id
16758                       ,p_as_of_date            => l_temp_as_of_date
16759                       ,p_structure_version_id  => l_latest_wp_struct_ver_id
16760                       ,p_txn_currency_code     => l_txn_curr_code
16761                       ,p_rate_based_flag       => l_rate_based_flag
16762                       ,p_quantity              => u_ppl_etc_effort_to_date(l_index3)
16763                       ,p_budget_version_id     => l_plan_version_id --4372462
16764                       ,p_res_assignment_id     => l_res_assignment_id
16765                       ,x_rawcost_tc            => u_ppl_ETC_RAWCOST_to_date_TC(l_index3)
16766                       ,x_brdncost_tc           => u_ppl_ETC_COST_to_date_TC(l_index3)
16767                       ,x_rawcost_pc            => u_ppl_ETC_RAWCOST_to_date_PC(l_index3)
16768                       ,x_brdncost_pc           => u_ppl_ETC_COST_to_date_PC(l_index3)
16769                       ,x_rawcost_fc            => u_ppl_ETC_RAWCOST_to_date_FC(l_index3)
16770                       ,x_brdncost_fc           => u_ppl_ETC_COST_to_date_FC(l_index3)
16771                       ,x_return_status         => x_return_status
16772                       ,x_msg_count             => x_msg_count
16773                       ,x_msg_data              => x_msg_data);
16774 		    if (x_return_status <> 'S') then  -- bug 6712595
16775                         if (u_ppl_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16776                         --Modified the error message for the Bug 13640836
16777 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16778                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16779                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16780                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16781                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;      */
16782 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16783 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
16784 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
16785 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
16786 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
16787                           --Bug 13640836 end
16788 			else
16789 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
16790                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16791                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16792                            -- Added for bug 5526638
16793                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
16794                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
16795 			 end if;
16796                         raise l_no_rate_exception;
16797                     end if;
16798 		    u_actual_finish_date(l_index3) := to_date(null);
16799                    else
16800                       u_ppl_etc_effort_to_date(l_index3) := 0;
16801                       u_ppl_ETC_COST_to_date_TC(l_index3) := 0;
16802                       u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := 0;
16803                       u_ppl_ETC_COST_to_date_FC(l_index3) := 0;
16804                       u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := 0;
16805                       u_ppl_ETC_COST_to_date_PC(l_index3) := 0;
16806                       u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := 0;
16807                       u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
16808                    end if;
16809 
16810                    IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16811                      l_index_etc := l_index_etc + 1;  -- for bug 6266824
16812                    ELSE
16813                      IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16814                         l_index_etc := l_index_etc + 1;
16815                      ELSE
16816                        IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16817                          l_index_etc := l_index_etc + 1;
16818                        END IF;
16819 
16820                      END IF;
16821                    END IF;
16822 
16823 
16824 
16825                    ETC_PROJECT_ID(l_index_etc) := l_project_id;
16826                    ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16827                    ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16828                    --CBS Change in Get_Summarized_Actuals
16829                    ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16830                    -- End CBS Change in Get_Summarized_Actuals
16831                    ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16832                    if (l_plan_type = 'P') then
16833                      ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16834                    elsif (l_plan_type = 'G') then
16835                      ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16836                    else
16837                      ETC_PERIOD_NAME(l_index_etc) := null;
16838                    end if;
16839                    ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16840                    ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16841                    ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16842                    ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16843                    ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16844                    ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16845                    ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16846                    ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16847                    ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16848                    ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16849                    ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16850                    ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16851                    -- here if extraction type is FULL we pass to_date values otherwise
16852                    -- incremental values only
16853                    if (p_extraction_type = 'FULL') then
16854                       ---5726773 ETC_QUANTITY(l_index_etc) := -u_ppl_act_effort_to_date(l_index3);
16855  	              ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
16856                       ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
16857                       ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
16858                       ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
16859                       ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
16860                       ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
16861                       ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
16862                    else
16863                       if (u_ppl_act_effort_to_date(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_ppl_act_effort_to_date(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
16864                          ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
16865                          ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
16866                          ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
16867                          ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
16868                          ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16869                          ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16870                          ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16871                       else
16872                          ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - u_ppl_act_effort_to_date(l_index3);
16873  	                 ETC_QUANTITY(l_index_etc) := u_ppl_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.estimated_remaining_effort;
16874                          ETC_TXN_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
16875                          ETC_PRJ_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
16876                          ETC_PFC_BURDENED_COST(l_index_etc) := u_ppl_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
16877                          ETC_TXN_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16878                          ETC_PRJ_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16879                          ETC_PFC_RAW_COST(l_index_etc) := u_ppl_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16880                       end if;
16881                    end if;
16882                 else
16883                    u_ppl_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.estimated_remaining_effort;
16884                    u_ppl_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_tc;
16885                    u_ppl_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
16886                    u_ppl_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_fc;
16887                    u_ppl_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
16888                    u_ppl_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_cost_pc;
16889                    u_ppl_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
16890                    u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
16891                    if (p_extraction_type = 'FULL') then
16892 
16893                    IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
16894                        l_index_etc := l_index_etc + 1;  -- for bug 6266824
16895                    ELSE
16896                    IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
16897                       l_index_etc := l_index_etc + 1;
16898                    ELSE
16899                      IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
16900                        l_index_etc := l_index_etc + 1;
16901                      END IF;
16902 
16903                    END IF;
16904                    END IF;
16905 
16906 
16907                       ETC_PROJECT_ID(l_index_etc) := l_project_id;
16908                       ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
16909                       ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
16910                       --CBS Change in Get_Summarized_Actuals
16911                       ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
16912                       -- End CBS Change in Get_Summarized_Actuals
16913                       ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
16914                       if (l_plan_type = 'P') then
16915                         ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
16916                       elsif (l_plan_type = 'G') then
16917                         ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
16918                       else
16919                         ETC_PERIOD_NAME(l_index_etc) := null;
16920                       end if;
16921                       ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
16922                       ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
16923                       ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
16924                       ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
16925                       ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
16926                       ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
16927                       ETC_ROLLUP_TYPE(l_index_etc) := 'W';
16928                       ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
16929                       ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
16930                       ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
16931                       ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
16932                       ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
16933                       ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
16934                       ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
16935                       ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
16936                       ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
16937                       ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
16938                       ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
16939                       ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
16940                    else
16941                     l_sri_index_etc := l_sri_index_etc - 1;  -- for bug 6266824
16942                   end if;
16943                 end if;
16944             end if;
16945             u_eqpmt_act_cost_to_date_tc(l_index3) := nvl(u_eqpmt_act_cost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
16946             u_eqpmt_act_rawcost_to_date_tc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_tc(l_index3),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
16947             u_eqpmt_act_cost_to_date_pc(l_index3) := nvl(u_eqpmt_act_cost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
16948             u_eqpmt_act_rawcost_to_date_pc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_pc(l_index3),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
16949             u_eqpmt_act_cost_to_date_fc(l_index3) := nvl(u_eqpmt_act_cost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
16950             u_eqpmt_act_rawcost_to_date_fc(l_index3) := nvl(u_eqpmt_act_rawcost_to_date_fc(l_index3),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
16951             u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
16952             u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
16953             u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
16954             u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
16955             u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
16956             u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
16957             u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
16958             --Bug 13823145 changes start here
16959             if  (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') then -- CBS changes
16960               u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_pc(l_index3);
16961 	    ELSif  (l_wp_prl_res_class_flag = 'N') then
16962 	      u_eqpmt_act_effort_to_date(l_index3) := u_eqpmt_act_rawcost_to_date_tc(l_index3);
16963             end if;
16964             --Bug 13823145 changes end here
16965             if l_object_type = 'PA_ASSIGNMENTS' and
16966                l_res_class_code = 'EQUIPMENT' then
16967                 ---5726773
16968 		if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
16969 		   u_eqpmt_etc_effort_to_date(l_index3) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,u_eqpmt_act_effort_to_date(l_index3));
16970 		   if (u_eqpmt_etc_effort_to_date(l_index3) <> 0) then
16971                      pa_progress_utils.get_plan_costs_for_qty
16972                      (p_resource_list_mem_id  => l_object_id
16973                      ,p_project_id            => l_project_id
16974                      ,p_task_id               => all_objects_in_temp_rec.project_element_id
16975                      ,p_as_of_date            => l_temp_as_of_date
16976                      ,p_structure_version_id  => l_latest_wp_struct_ver_id
16977                      ,p_txn_currency_code     => l_txn_curr_code
16978                      ,p_rate_based_flag       => l_rate_based_flag
16979                      ,p_quantity              => u_eqpmt_etc_effort_to_date(l_index3)
16980                      ,p_budget_version_id     => l_plan_version_id --4372462
16981                      ,p_res_assignment_id     => l_res_assignment_id
16982                      ,x_rawcost_tc            => u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3)
16983                      ,x_brdncost_tc           => u_eqpmt_ETC_COST_to_date_TC(l_index3)
16984                      ,x_rawcost_pc            => u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3)
16985                      ,x_brdncost_pc           => u_eqpmt_ETC_COST_to_date_PC(l_index3)
16986                      ,x_rawcost_fc            => u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3)
16987                      ,x_brdncost_fc           => u_eqpmt_ETC_COST_to_date_FC(l_index3)
16988                      ,x_return_status         => x_return_status
16989                      ,x_msg_count             => x_msg_count
16990                      ,x_msg_data              => x_msg_data);
16991 		    if (x_return_status <> 'S') then  -- bug 6712595
16992                         if (u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) is null) then
16993                         --Modified the error message for the Bug 13640836
16994 			/*  pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
16995                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
16996                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
16997                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
16998                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;       */
16999 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17000 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17001 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17002 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17003 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17004                           --Bug 13640836 end
17005 			else
17006 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17007                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17008                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17009                            -- Added for bug 5526638
17010                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17011                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17012 			 end if;
17013                         raise l_no_rate_exception;
17014                     end if;
17015 		    u_actual_finish_date(l_index3) := to_date(null);
17016                   else
17017                      u_eqpmt_etc_effort_to_date(l_index3) := 0;
17018                      u_eqpmt_ETC_COST_to_date_TC(l_index3) := 0;
17019                      u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := 0;
17020                      u_eqpmt_ETC_COST_to_date_FC(l_index3) := 0;
17021                      u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := 0;
17022                      u_eqpmt_ETC_COST_to_date_PC(l_index3) := 0;
17023                      u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := 0;
17024                      u_actual_finish_date(l_index3) := l_asgn_sch_finish_date;
17025                   end if;
17026 
17027                      IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17028                              l_index_etc := l_index_etc + 1;  -- for bug 6266824
17029                      ELSE
17030                       IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17031                           l_index_etc := l_index_etc + 1;
17032                       ELSE
17033                         IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17034                           l_index_etc := l_index_etc + 1;
17035                         END IF;
17036 
17037                       END IF;
17038                      END IF;
17039 
17040                   ETC_PROJECT_ID(l_index_etc) := l_project_id;
17041                   ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17042                   ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17043                   --CBS Change in Get_Summarized_Actuals
17044                   ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17045                   -- End CBS Change in Get_Summarized_Actuals
17046                   ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17047                   if (l_plan_type = 'P') then
17048                     ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17049                   elsif (l_plan_type = 'G') then
17050                     ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17051                   else
17052                     ETC_PERIOD_NAME(l_index_etc) := null;
17053                   end if;
17054                   ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17055                   ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17056                   ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17057                   ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17058                   ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17059                   ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17060                   ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17061                   ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17062                   ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17063                   ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17064                   ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17065                   ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17066                   -- here if extraction type is FULL we pass to_date values otherwise
17067                   -- incremental values only
17068                   if (p_extraction_type = 'FULL') then
17069                       ---5726773 ETC_QUANTITY(l_index_etc) := -u_eqpmt_act_effort_to_date(l_index3);
17070  	              ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_asgn_plan_quantity;
17071                       ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_asgn_plan_bur_cost_tc;
17072                       ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_asgn_plan_bur_cost_pc;
17073                       ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_asgn_plan_bur_cost_fc;
17074                       ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_asgn_plan_raw_cost_tc;
17075                       ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_asgn_plan_raw_cost_pc;
17076                       ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_asgn_plan_raw_cost_fc;
17077                    else
17078                       if (u_eqpmt_act_effort_to_date(l_index3) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (u_eqpmt_act_effort_to_date(l_index3) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
17079                          ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
17080                          ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17081                          ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17082                          ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17083                          ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17084                          ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17085                          ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17086                       else
17087                          ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - u_eqpmt_act_effort_to_date(l_index3);
17088  	                 ETC_QUANTITY(l_index_etc) := u_eqpmt_etc_effort_to_date(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_effort;
17089                          ETC_TXN_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17090                          ETC_PRJ_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17091                          ETC_PFC_BURDENED_COST(l_index_etc) := u_eqpmt_ETC_COST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17092                          ETC_TXN_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17093                          ETC_PRJ_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17094                          ETC_PFC_RAW_COST(l_index_etc) := u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17095                       end if;
17096                    end if;
17097                else
17098                   u_eqpmt_etc_effort_to_date(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_effort;
17099                   u_eqpmt_ETC_COST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17100                   u_eqpmt_ETC_RAWCOST_to_date_TC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17101                   u_eqpmt_ETC_COST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17102                   u_eqpmt_ETC_RAWCOST_to_date_FC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17103                   u_eqpmt_ETC_COST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17104                   u_eqpmt_ETC_RAWCOST_to_date_PC(l_index3) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17105                   u_actual_finish_date(l_index3) := l_rollup_rec_asofdate.actual_finish_date;
17106                   if (p_extraction_type = 'FULL') then
17107 
17108                       IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17109                              l_index_etc := l_index_etc + 1;  -- for bug 6266824
17110                       ELSE
17111                       IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17112                           l_index_etc := l_index_etc + 1;
17113                        ELSE
17114                          IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17115                            l_index_etc := l_index_etc + 1;
17116                          END IF;
17117 
17118                        END IF;
17119                       END IF;
17120 
17121                      ETC_PROJECT_ID(l_index_etc) := l_project_id;
17122                      ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17123                      ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17124                      --CBS Change in Get_Summarized_Actuals
17125                       ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17126                       -- End CBS Change in Get_Summarized_Actuals
17127                      ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17128                      if (l_plan_type = 'P') then
17129                         ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17130                      elsif (l_plan_type = 'G') then
17131                         ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17132                      else
17133                         ETC_PERIOD_NAME(l_index_etc) := null;
17134                      end if;
17135                      ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17136                      ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17137                      ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17138                      ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17139                      ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17140                      ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17141                      ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17142                      ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17143                      ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17144                      ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17145                      ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17146                      ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17147                      ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
17148                      ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17149                      ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17150                      ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17151                      ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17152                      ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17153                      ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17154                   else
17155                      l_sri_index_etc := l_sri_index_etc - 1;  -- for bug 6266824
17156                  end if;
17157                end if;
17158             end if;
17159             --- here we need to calc PC and EV
17160             --- 5726773
17161 	    if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
17162 	      l_percent_comp := (u_ppl_act_effort_to_date(l_index3)/(u_ppl_act_effort_to_date(l_index3) + u_ppl_etc_effort_to_date(l_index3)))*100;
17163                if (l_percent_comp > 100) then
17164                   l_percent_comp := 100;
17165                elsif (l_percent_comp < 0) then
17166                   l_percent_comp := 0;
17167                end if;
17168                l_eff_rollup_pc := l_percent_comp;
17169                l_earned_val := l_percent_comp * l_planned_eff;
17170             elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then  -- COST based
17171 	       l_percent_comp := (u_ppl_act_cost_to_date_pc(l_index3)/(u_ppl_act_cost_to_date_pc(l_index3) + u_ppl_etc_cost_to_date_pc(l_index3)))*100;
17172                if (l_percent_comp > 100) then
17173                  l_percent_comp := 100;
17174                elsif (l_percent_comp < 0) then
17175                  l_percent_comp := 0;
17176                end if;
17177                l_eff_rollup_pc := l_percent_comp;
17178                l_earned_val := l_percent_comp * l_planned_cost;
17179             else
17180                l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
17181                l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
17182                l_earned_val := l_rollup_rec_asofdate.earned_value;
17183             end if;
17184             u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
17185             u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
17186             u_earned_val(l_index3) := l_earned_val;
17187 
17188           elsif (l_db_case = '3') then
17189             --- get progress attrs for the task/assignment
17190 
17191             select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
17192             percent_complete_id(l_index2) := to_number(null);
17193             project_id(l_index2) := l_project_id;
17194             object_id(l_index2) := l_object_id;
17195             OBJECT_TYPE(l_index2) := l_rollup_rec_asofdate.object_Type;
17196             as_of_Date(l_index2) := l_temp_as_of_date;
17197             object_version_id(l_index2) := l_object_version_id;
17198             LAST_UPDATE_DATE(l_index2) := sysdate;
17199             LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
17200             CREATION_DATE(l_index2) := sysdate;
17201             CREATED_BY(l_index2) := fnd_global.user_id;
17202             PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.progress_status_code;
17203             LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
17204             INCREMENTAL_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.INCREMENTAL_WORK_QUANTITY;
17205             CUMULATIVE_WORK_QUANTITY(l_index2) := l_rollup_rec_asofdate.CUMULATIVE_WORK_QUANTITY;
17206             base_percent_complete(l_index2) := l_rollup_rec_asofdate.base_percent_complete;
17207             ESTIMATED_START_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_START_DATE;
17208             ESTIMATED_FINISH_DATE(l_index2) := l_rollup_rec_asofdate.ESTIMATED_FINISH_DATE;
17209             actual_start_date(l_index2) := l_rollup_rec_asofdate.actual_start_date;
17210             actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17211             RECORD_VERSION_NUMBER(l_index2) := 1;
17212             base_percent_comp_deriv_code(l_index2) := l_rollup_rec_asofdate.base_percent_comp_deriv_code;
17213             BASE_PROGRESS_STATUS_CODE(l_index2) := l_rollup_rec_asofdate.BASE_PROGRESS_STATUS_CODE;
17214             EFF_ROLLUP_PROG_STAT_CODE(l_index2) := l_rollup_rec_asofdate.EFF_ROLLUP_PROG_STAT_CODE;
17215             STRUCTURE_TYPE(l_index2) := l_rollup_rec_asofdate.STRUCTURE_TYPE;
17216             PROJ_ELEMENT_ID(l_index2) := l_rollup_rec_asofdate.PROJ_ELEMENT_ID;
17217             STRUCTURE_VERSION_ID(l_index2) := l_rollup_rec_asofdate.STRUCTURE_VERSION_ID;
17218             if (l_object_Type = 'PA_ASSIGNMENTS') then
17219           -- Add cbs_element_id
17220                cbs_element_id(l_index2) := all_objects_in_temp_rec.cbs_element_id;
17221                if (l_rate_based_flag = 'N') OR (l_wp_prl_res_class_flag = 'N' ) then  -- CBS Changes
17222                   oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0)));
17223                else
17224                   oth_qty(l_index2) := nvl(oth_qty(l_index2),0) + nvl(all_objects_in_temp_rec.quantity,0) - nvl(all_objects_in_temp_rec.act_labor_hrs,0) - nvl(all_objects_in_temp_rec.act_equip_hrs,0);
17225                end if;
17226                --  Bug 6917961
17227                if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
17228                 and actual_finish_date(l_index2) is null) then
17229                   l_prog_enable_flag := 'N';
17230                   l_prog_stat_code := null;
17231                   OPEN cur_prog_setup(l_rollup_rec_asofdate.PROJ_ELEMENT_ID,l_project_id);
17232                   FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
17233                   CLOSE cur_prog_setup;
17234                   if (l_prog_enable_flag = 'Y') then
17235                      PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
17236                   end if;
17237                end if;
17238                -- Bug 6917961
17239             end if;
17240             oth_act_cost_to_date_tc(l_index2) := nvl(oth_act_cost_to_date_tc(l_index2),0) + (nvl(L_ACT_COST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_COST_TO_DATE_TC,0) + nvl(all_objects_in_temp_rec.act_txn_equip_brdn_cost,0)));
17241             oth_act_rawcost_to_date_tc(l_index2) := nvl(oth_act_rawcost_to_date_tc(l_index2),0) + (nvl(L_ACT_RAWCOST_TO_DATE_TC,0) - (nvl(L_PPL_ACT_RAWCOST_TO_DATE_TC,0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0)));
17242             oth_act_cost_to_date_pc(l_index2) := nvl(oth_act_cost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)
17243                 + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0)));
17244             oth_act_rawcost_to_date_pc(l_index2) := nvl(oth_act_rawcost_to_date_pc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_prj_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0)
17245                 + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0)));
17246             oth_act_cost_to_date_fc(l_index2) := nvl(oth_act_cost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_brdn_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0)
17247                 + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0)));
17248             oth_act_rawcost_to_date_fc(l_index2) := nvl(oth_act_rawcost_to_date_fc(l_index2),0) + (nvl(all_objects_in_temp_rec.act_pou_raw_cost,0) - (nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0)
17249                 + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0)));
17250             oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
17251             OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
17252             OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
17253             OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
17254             OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
17255             OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
17256             OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
17257             if l_object_type = 'PA_ASSIGNMENTS' and
17258                l_res_class_code in ('FINANCIAL_ELEMENTS', 'MATERIAL_ITEMS') then
17259                ---5726773
17260 	       if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.oth_quantity_to_date,l_rollup_rec_asofdate.OTH_ETC_QUANTITY) = 'N') then
17261 	          oth_etc_qty(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,oth_qty(l_index2));
17262 		  if (oth_etc_qty(l_index2) <> 0) then
17263                      pa_progress_utils.get_plan_costs_for_qty
17264                      ( p_resource_list_mem_id  => l_object_id
17265                      ,p_project_id            => l_project_id
17266                      ,p_task_id               => all_objects_in_temp_rec.project_element_id
17267                      ,p_as_of_date            => l_temp_as_of_date
17268                      ,p_structure_version_id  => l_latest_wp_struct_ver_id
17269                      ,p_txn_currency_code     => l_txn_curr_code
17270                      ,p_rate_based_flag       => l_rate_based_flag
17271                      ,p_quantity              => oth_etc_qty(l_index2)
17272                      ,p_budget_version_id     => l_plan_version_id --4372462
17273                      ,p_res_assignment_id     => l_res_assignment_id
17274                      ,x_rawcost_tc            => OTH_ETC_RAWCOST_TC(l_index2)
17275                      ,x_brdncost_tc           => OTH_ETC_COST_TC(l_index2)
17276                      ,x_rawcost_pc            => OTH_ETC_RAWCOST_PC(l_index2)
17277                      ,x_brdncost_pc           => OTH_ETC_COST_PC(l_index2)
17278                      ,x_rawcost_fc            => OTH_ETC_RAWCOST_FC(l_index2)
17279                      ,x_brdncost_fc           => OTH_ETC_COST_FC(l_index2)
17280                      ,x_return_status         => x_return_status
17281                      ,x_msg_count             => x_msg_count
17282                      ,x_msg_data              => x_msg_data);
17283 		    if (x_return_status <> 'S') then  -- bug 6712595
17284                         if (OTH_ETC_RAWCOST_TC(l_index2) is null) then
17285                         --Modified the error message for the Bug 13640836
17286 			  /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17287                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17288                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17289                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17290                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;    */
17291 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17292 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17293 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17294 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17295 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17296                          --Bug 13640836 end
17297 			else
17298 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17299                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17300                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17301                            -- Added for bug 5526638
17302                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17303                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17304 			 end if;
17305                         raise l_no_rate_exception;
17306                     end if;
17307 		    actual_finish_date(l_index2) := to_date(null);
17308                   else
17309                      oth_etc_qty(l_index2) := 0;
17310                      OTH_ETC_COST_TC(l_index2) := 0;
17311                      OTH_ETC_RAWCOST_TC(l_index2) := 0;
17312                      OTH_ETC_COST_FC(l_index2) := 0;
17313                      OTH_ETC_RAWCOST_FC(l_index2) := 0;
17314                      OTH_ETC_COST_PC(l_index2) := 0;
17315                      OTH_ETC_RAWCOST_PC(l_index2) := 0;
17316                      actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17317                   end if;
17318                      IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17319                              l_index_etc := l_index_etc + 1;  -- for bug 6266824
17320                      ELSE
17321                       IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17322                           l_index_etc := l_index_etc + 1;
17323                       ELSE
17324                         IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17325                           l_index_etc := l_index_etc + 1;
17326                         END IF;
17327 
17328                       END IF;
17329                      END IF;
17330 
17331                   ETC_PROJECT_ID(l_index_etc) := l_project_id;
17332                   ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17333                   ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17334                   --CBS Change in Get_Summarized_Actuals
17335                   ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17336                   -- End CBS Change in Get_Summarized_Actuals
17337                   ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17338                   if (l_plan_type = 'P') then
17339                     ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17340                   elsif (l_plan_type = 'G') then
17341                     ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17342                   else
17343                     ETC_PERIOD_NAME(l_index_etc) := null;
17344                   end if;
17345                   ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17346                   ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17347                   ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17348                   ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17349                   ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17350                   ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17351                   ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17352                   ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17353                   ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17354                   ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17355                   ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17356                   ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17357                   -- here if extraction type is FULL we pass to_date values otherwise
17358                   -- incremental values only
17359                   if (p_extraction_type = 'FULL') then
17360                      --- 5726773 ETC_QUANTITY(l_index_etc) := -oth_qty(l_index2);
17361  	             ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_asgn_plan_quantity;
17362                      ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17363                      ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17364                      ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17365                      ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17366                      ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17367                      ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17368                   else
17369                      if (oth_qty(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (oth_qty(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
17370                         ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_quantity;
17371                         ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_tc;
17372                         ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_pc;
17373                         ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_cost_fc;
17374                         ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_tc;
17375                         ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_pc;
17376                         ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.oth_etc_rawcost_fc;
17377                      else
17378                         ETC_QUANTITY(l_index_etc) := oth_etc_qty(l_index2) - l_rollup_rec_asofdate.oth_etc_quantity;
17379                         ETC_TXN_BURDENED_COST(l_index_etc) := OTH_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_tc;
17380                         ETC_PRJ_BURDENED_COST(l_index_etc) := OTH_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_pc;
17381                         ETC_PFC_BURDENED_COST(l_index_etc) := OTH_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_cost_fc;
17382                         ETC_TXN_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_tc;
17383                         ETC_PRJ_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_pc;
17384                         ETC_PFC_RAW_COST(l_index_etc) := OTH_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.oth_etc_rawcost_fc;
17385                      end if;
17386                   end if;
17387                else
17388                   oth_etc_qty(l_index2) := l_rollup_rec_asofdate.oth_etc_quantity;
17389                   OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_TC;
17390                   OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_TC;
17391                   OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_FC;
17392                   OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_FC;
17393                   OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_COST_PC;
17394                   OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.OTH_ETC_RAWCOST_PC;
17395                   actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17396                   if (p_extraction_type = 'FULL') then
17397 
17398                       IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17399                              l_index_etc := l_index_etc + 1;  -- for bug 6266824
17400                       ELSE
17401                       IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17402                           l_index_etc := l_index_etc + 1;
17403                       ELSE
17404                         IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17405                           l_index_etc := l_index_etc + 1;
17406                         END IF;
17407 
17408                        END IF;
17409                       END IF;
17410 
17411                      ETC_PROJECT_ID(l_index_etc) := l_project_id;
17412                      ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17413                      ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17414                      --CBS Change in Get_Summarized_Actuals
17415                      ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17416                      -- End CBS Change in Get_Summarized_Actuals
17417                      ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17418                      if (l_plan_type = 'P') then
17419                        ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17420                      elsif (l_plan_type = 'G') then
17421                        ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17422                      else
17423                        ETC_PERIOD_NAME(l_index_etc) := null;
17424                      end if;
17425                      ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17426                      ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17427                      ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17428                      ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17429                      ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17430                      ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17431                      ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17432                      ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17433                      ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17434                      ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17435                      ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17436                      ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17437                      ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.oth_etc_quantity - l_asgn_plan_quantity;
17438                      ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17439                      ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17440                      ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17441                      ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17442                      ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17443                      ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17444                   else
17445                      l_sri_index_etc := l_sri_index_etc - 1;   -- for bug 6266824
17446                   end if;
17447                end if;
17448             end if;
17449             ppl_act_effort_to_date(l_index2) := nvl(ppl_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_labor_hrs,0);
17450             ppl_act_cost_to_date_tc(l_index2) := nvl(ppl_act_cost_to_date_tc(l_index2),0) + nvl(l_ppl_act_cost_to_date_tc,0);
17451             ppl_act_rawcost_to_date_tc(l_index2) := nvl(ppl_act_rawcost_to_date_tc(l_index2),0) + nvl(l_ppl_act_rawcost_to_date_tc,0);
17452             ppl_act_cost_to_date_pc(l_index2) := nvl(ppl_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0);
17453             ppl_act_rawcost_to_date_pc(l_index2) := nvl(ppl_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_labor_raw_cost,0);
17454             ppl_act_cost_to_date_fc(l_index2) := nvl(ppl_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_brdn_cost,0);
17455             ppl_act_rawcost_to_date_fc(l_index2) := nvl(ppl_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_labor_raw_cost,0);
17456             ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
17457             PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
17458             PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
17459             PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
17460             PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
17461             PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
17462             PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
17463             --Bug 13823145 changes start here
17464             if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
17465                ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_pc(l_index2);
17466 	    ELSif (l_wp_prl_res_class_flag = 'N') then
17467 	       ppl_act_effort_to_date(l_index2) := ppl_act_rawcost_to_date_tc(l_index2);
17468             end if;
17469             --Bug 13823145 changes end here
17470             if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'PEOPLE' then
17471                ---5726773
17472 	       if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.ppl_act_effort_to_date,l_rollup_rec_asofdate.estimated_remaining_effort) = 'N') then
17473 	          ESTIMATED_REMAINING_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,ppl_act_effort_to_date(l_index2));
17474 		  if (ESTIMATED_REMAINING_EFFORT(l_index2) <> 0) then
17475                      pa_progress_utils.get_plan_costs_for_qty
17476                      ( p_resource_list_mem_id  => l_object_id
17477                      ,p_project_id            => l_project_id
17478                      ,p_task_id               => all_objects_in_temp_rec.project_element_id
17479                      ,p_as_of_date            => l_temp_as_of_date
17480                      ,p_structure_version_id  => l_latest_wp_struct_ver_id
17481                      ,p_txn_currency_code     => l_txn_curr_code
17482                      ,p_rate_based_flag       => l_rate_based_flag
17483                      ,p_quantity              => ESTIMATED_REMAINING_EFFORT(l_index2)
17484                      ,p_budget_version_id     => l_plan_version_id --4372462
17485                      ,p_res_assignment_id     => l_res_assignment_id
17486                      ,x_rawcost_tc            => PPL_ETC_RAWCOST_TC(l_index2)
17487                      ,x_brdncost_tc           => PPL_ETC_COST_TC(l_index2)
17488                      ,x_rawcost_pc            => PPL_ETC_RAWCOST_PC(l_index2)
17489                      ,x_brdncost_pc           => PPL_ETC_COST_PC(l_index2)
17490                      ,x_rawcost_fc            => PPL_ETC_RAWCOST_FC(l_index2)
17491                      ,x_brdncost_fc           => PPL_ETC_COST_FC(l_index2)
17492                      ,x_return_status         => x_return_status
17493                      ,x_msg_count             => x_msg_count
17494                      ,x_msg_data              => x_msg_data);
17495 		    if (x_return_status <> 'S') then  -- bug 6712595
17496                         if (PPL_ETC_RAWCOST_TC(l_index2) is null) then
17497                         --Modified the error message for the Bug 13640836
17498 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17499                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17500                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17501                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17502                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;    */
17503 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17504 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17505 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17506 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17507 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17508                           --Bug 13640836 end
17509 			else
17510 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17511                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17512                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17513                            -- Added for bug 5526638
17514                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17515                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17516 			 end if;
17517                         raise l_no_rate_exception;
17518                     end if;
17519 		    actual_finish_date(l_index2) := to_date(null);
17520                   else
17521                      ESTIMATED_REMAINING_EFFORT(l_index2) := 0;
17522                      PPL_ETC_COST_TC(l_index2) := 0;
17523                      PPL_ETC_RAWCOST_TC(l_index2) := 0;
17524                      PPL_ETC_COST_PC(l_index2) := 0;
17525                      PPL_ETC_RAWCOST_PC(l_index2) := 0;
17526                      PPL_ETC_COST_FC(l_index2) := 0;
17527                      PPL_ETC_RAWCOST_FC(l_index2) := 0;
17528                      actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17529                   end if;
17530                   IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17531                      l_index_etc := l_index_etc + 1;  -- for bug 6266824
17532                   ELSE
17533                     IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17534                        l_index_etc := l_index_etc + 1;
17535                     ELSE
17536                       IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17537                         l_index_etc := l_index_etc + 1;
17538                       END IF;
17539 
17540                   END IF;
17541                   END IF;
17542 
17543                   ETC_PROJECT_ID(l_index_etc) := l_project_id;
17544                   ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17545                   ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17546                   --CBS Change in Get_Summarized_Actuals
17547                   ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17548                   -- End CBS Change in Get_Summarized_Actuals
17549                   ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17550                   if (l_plan_type = 'P') then
17551                     ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17552                   elsif (l_plan_type = 'G') then
17553                     ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17554                   else
17555                     ETC_PERIOD_NAME(l_index_etc) := null;
17556                   end if;
17557                   ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17558                   ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17559                   ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17560                   ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17561                   ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17562                   ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17563                   ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17564                   ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17565                   ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17566                   ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17567                   ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17568                   ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17569                   -- here if extraction type is FULL we pass to_date values otherwise
17570                   -- incremental values only
17571                   if (p_extraction_type = 'FULL') then
17572                       ---5726773 ETC_QUANTITY(l_index_etc) := -ppl_act_effort_to_date(l_index2);
17573  	              ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_asgn_plan_quantity;
17574                       ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17575                       ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17576                       ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17577                       ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17578                       ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17579                       ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17580                   else
17581                       if (ppl_act_effort_to_date(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (ppl_act_effort_to_date(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
17582                          ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.estimated_remaining_effort;
17583                          ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_tc;
17584                          ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_pc;
17585                          ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_cost_fc;
17586                          ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
17587                          ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
17588                          ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
17589                       else
17590                          ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.ppl_act_effort_to_date - ppl_act_effort_to_date(l_index2);
17591  	                 ETC_QUANTITY(l_index_etc) := estimated_remaining_effort(l_index2) - l_rollup_rec_asofdate.estimated_remaining_effort;
17592                          ETC_TXN_BURDENED_COST(l_index_etc) := ppl_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_tc;
17593                          ETC_PRJ_BURDENED_COST(l_index_etc) := ppl_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_pc;
17594                          ETC_PFC_BURDENED_COST(l_index_etc) := ppl_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_cost_fc;
17595                          ETC_TXN_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_tc;
17596                          ETC_PRJ_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_pc;
17597                          ETC_PFC_RAW_COST(l_index_etc) := ppl_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.ppl_etc_rawcost_fc;
17598                       end if;
17599                   end if;
17600                else
17601                   ESTIMATED_REMAINING_EFFORT(l_index2) := l_rollup_rec_asofdate.ESTIMATED_REMAINING_EFFORT;
17602                   PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_TC;
17603                   PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_TC;
17604                   PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_PC;
17605                   PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_PC;
17606                   PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_COST_FC;
17607                   PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.PPL_ETC_RAWCOST_FC;
17608                   actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17609                   if (p_extraction_type = 'FULL') then
17610 
17611                   IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17612                      l_index_etc := l_index_etc + 1;  -- for bug 6266824
17613                   ELSE
17614                     IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17615                        l_index_etc := l_index_etc + 1;
17616                     ELSE
17617                       IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17618                         l_index_etc := l_index_etc + 1;
17619                       END IF;
17620 
17621                     END IF;
17622                   END IF;
17623 
17624                      ETC_PROJECT_ID(l_index_etc) := l_project_id;
17625                      ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17626                      ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17627                      --CBS Change in Get_Summarized_Actuals
17628                      ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17629                      -- End CBS Change in Get_Summarized_Actuals
17630                      ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17631                      if (l_plan_type = 'P') then
17632                        ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17633                      elsif (l_plan_type = 'G') then
17634                        ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17635                      else
17636                        ETC_PERIOD_NAME(l_index_etc) := null;
17637                      end if;
17638                      ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17639                      ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17640                      ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17641                      ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17642                      ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17643                      ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17644                      ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17645                      ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17646                      ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17647                      ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17648                      ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17649                      ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17650                      ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.estimated_remaining_effort - l_asgn_plan_quantity;
17651                      ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17652                      ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17653                      ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17654                      ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17655                      ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17656                      ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17657                   else
17658                    l_sri_index_etc := l_sri_index_etc - 1;  -- for bug 6266824
17659                   end if;
17660                end if;
17661             end if;
17662             eqpmt_act_effort_to_date(l_index2) := nvl(eqpmt_act_effort_to_date(l_index2),0) + nvl(all_objects_in_temp_rec.act_equip_hrs,0);
17663             eqpmt_act_cost_to_date_tc(l_index2) := nvl(eqpmt_act_cost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_cost_to_date_tc,0);
17664             eqpmt_act_rawcost_to_date_tc(l_index2) := nvl(eqpmt_act_rawcost_to_date_tc(l_index2),0) + nvl(l_eqpmt_act_rawcost_to_date_tc,0);
17665             eqpmt_act_cost_to_date_pc(l_index2) := nvl(eqpmt_act_cost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_brdn_cost,0);
17666             eqpmt_act_rawcost_to_date_pc(l_index2) := nvl(eqpmt_act_rawcost_to_date_pc(l_index2),0) + nvl(all_objects_in_temp_rec.act_prj_equip_raw_cost,0);
17667             eqpmt_act_cost_to_date_fc(l_index2) := nvl(eqpmt_act_cost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_brdn_cost,0);
17668             eqpmt_act_rawcost_to_date_fc(l_index2) := nvl(eqpmt_act_rawcost_to_date_fc(l_index2),0) + nvl(all_objects_in_temp_rec.act_pou_equip_raw_cost,0);
17669             EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
17670             EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
17671             EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
17672             EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
17673             EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
17674             EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
17675             EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
17676 
17677             --Bug 13823145 changes start here
17678             if (l_wp_prl_res_class_flag = 'N' AND l_multi_curr_flag = 'N') THEN -- CBS Changes
17679                eqpmt_act_effort_to_date(l_index2) :=  eqpmt_act_rawcost_to_date_pc(l_index2);
17680 	    ELSif (l_wp_prl_res_class_flag = 'N') then
17681 	       eqpmt_act_effort_to_date(l_index2) :=  eqpmt_act_rawcost_to_date_tc(l_index2);
17682             end if;
17683             --Bug 13823145 changes end here
17684             if l_object_type = 'PA_ASSIGNMENTS' and l_res_class_code = 'EQUIPMENT' then
17685                ---5726773
17686 	       if (pa_progress_utils.check_etc_overridden(l_asgn_plan_quantity,l_rollup_rec_asofdate.eqpmt_act_effort_to_date,l_rollup_rec_asofdate.eqpmt_etc_effort) = 'N') then
17687 	          EQPMT_ETC_EFFORT(l_index2) := PA_FP_FCST_GEN_AMT_UTILS.get_etc_from_plan_act(l_asgn_plan_quantity,eqpmt_act_effort_to_date(l_index2));
17688 		  if (EQPMT_ETC_EFFORT(l_index2) <> 0) then
17689                      pa_progress_utils.get_plan_costs_for_qty
17690                      ( p_resource_list_mem_id  => l_object_id
17691                      ,p_project_id            => l_project_id
17692                      ,p_task_id               => all_objects_in_temp_rec.project_element_id
17693                      ,p_as_of_date            => l_temp_as_of_date
17694                      ,p_structure_version_id  => l_latest_wp_struct_ver_id
17695                      ,p_txn_currency_code     => l_txn_curr_code
17696                      ,p_rate_based_flag       => l_rate_based_flag
17697                      ,p_quantity              => EQPMT_ETC_EFFORT(l_index2)
17698                      ,p_budget_version_id     => l_plan_version_id --4372462
17699                      ,p_res_assignment_id     => l_res_assignment_id
17700                      ,x_rawcost_tc            => EQPMT_ETC_RAWCOST_TC(l_index2)
17701                      ,x_brdncost_tc           => EQPMT_ETC_COST_TC(l_index2)
17702                      ,x_rawcost_pc            => EQPMT_ETC_RAWCOST_PC(l_index2)
17703                      ,x_brdncost_pc           => EQPMT_ETC_COST_PC(l_index2)
17704                      ,x_rawcost_fc            => EQPMT_ETC_RAWCOST_FC(l_index2)
17705                      ,x_brdncost_fc           => EQPMT_ETC_COST_FC(l_index2)
17706                      ,x_return_status         => x_return_status
17707                      ,x_msg_count             => x_msg_count
17708                      ,x_msg_data              => x_msg_data);
17709 		    if (x_return_status <> 'S') then  -- bug 6712595
17710                         if (EQPMT_ETC_RAWCOST_TC(l_index2) is null) then
17711                         --Modified the error message for the Bug 13640836
17712 			 /* pa_debug.log_message('The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||'
17713                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17714                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17715                           l_err_msg := 'The planned amount is missing a raw cost. Actualls will not map to the Planned amounts if Planned amounts have missing Cost amounts. Task:'||all_objects_in_temp_rec.project_element_id||
17716                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;   */
17717 pa_debug.log_message('The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17718 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.
17719 Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.',1,'PLAIN','OUT');
17720 l_err_msg :='The planned raw cost rate is not defined for the resource assignment <Workplan/Budget version name - '|| l_plan_version_name||'> <Task No - '|| l_element_number||
17721 '> <Planning Resource Name - '|| l_res_assignment_name||'> <Transaction Currency - '||l_txn_curr_code||'>.  Please enter the planned raw cost rate for the resource assignment to map the actual amount to the planned amount.';
17722                           --Bug 13640836 end
17723 			else
17724 			  pa_debug.log_message('ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||'
17725                           , Res Assign Id:'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||'
17726                           , Txn Curr:'||l_txn_curr_code,1,'PLAIN','OUT');
17727                            -- Added for bug 5526638
17728                           l_err_msg := 'ETC cost calculation failed. Task:'||all_objects_in_temp_rec.project_element_id||
17729                                   ' , Res Assign Id :'||l_res_assignment_id||' , Budget Ver Id:'||l_plan_version_id||' , Txn Curr:'||l_txn_curr_code;
17730 			 end if;
17731                         raise l_no_rate_exception;
17732                     end if;
17733 		    actual_finish_date(l_index2) := to_date(null);
17734                   else
17735                      EQPMT_ETC_EFFORT(l_index2) := 0;
17736                      eqpmt_ETC_COST_TC(l_index2) := 0;
17737                      eqpmt_ETC_RAWCOST_TC(l_index2) := 0;
17738                      eqpmt_ETC_COST_PC(l_index2) := 0;
17739                      eqpmt_ETC_RAWCOST_PC(l_index2) := 0;
17740                      eqpmt_ETC_COST_FC(l_index2) := 0;
17741                      eqpmt_ETC_RAWCOST_FC(l_index2) := 0;
17742                      actual_finish_date(l_index2) := l_asgn_sch_finish_date;
17743                   end if;
17744                  IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17745                      l_index_etc := l_index_etc + 1;  -- for bug 6266824
17746                   ELSE
17747                     IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17748                        l_index_etc := l_index_etc + 1;
17749                     ELSE
17750                       IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17751                         l_index_etc := l_index_etc + 1;
17752                       END IF;
17753 
17754                   END IF;
17755                   END IF;
17756 
17757 
17758                   ETC_PROJECT_ID(l_index_etc) := l_project_id;
17759                   ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17760                   ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17761                   --CBS Change in Get_Summarized_Actuals
17762                   ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17763                   -- End CBS Change in Get_Summarized_Actuals
17764                   ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17765                   if (l_plan_type = 'P') then
17766                     ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17767                   elsif (l_plan_type = 'G') then
17768                     ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17769                   else
17770                     ETC_PERIOD_NAME(l_index_etc) := null;
17771                   end if;
17772                   ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17773                   ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17774                   ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17775                   ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17776                   ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17777                   ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17778                   ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17779                   ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17780                   ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17781                   ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17782                   ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17783                   ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17784                   -- here if extraction type is FULL we pass to_date values otherwise
17785                   -- incremental values only
17786                   if (p_extraction_type = 'FULL') then
17787                       ---5726773 ETC_QUANTITY(l_index_etc) := -eqpmt_act_effort_to_date(l_index2);
17788  	              ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_asgn_plan_quantity;
17789                       ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_asgn_plan_bur_cost_tc;
17790                       ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_asgn_plan_bur_cost_pc;
17791                       ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_asgn_plan_bur_cost_fc;
17792                       ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_asgn_plan_raw_cost_tc;
17793                       ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_asgn_plan_raw_cost_pc;
17794                       ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_asgn_plan_raw_cost_fc;
17795                    else
17796                       if (eqpmt_act_effort_to_date(l_index2) >= l_asgn_plan_quantity and l_asgn_plan_quantity > 0) or (eqpmt_act_effort_to_date(l_index2) <= l_asgn_plan_quantity and l_asgn_plan_quantity < 0) then  ---5726773
17797                          ETC_QUANTITY(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_effort;
17798                          ETC_TXN_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17799                          ETC_PRJ_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17800                          ETC_PFC_BURDENED_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17801                          ETC_TXN_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17802                          ETC_PRJ_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17803                          ETC_PFC_RAW_COST(l_index_etc) := -l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17804                       else
17805                          ---5726773 ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_act_effort_to_date - eqpmt_act_effort_to_date(l_index2);
17806  	                 ETC_QUANTITY(l_index_etc) := eqpmt_etc_effort(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_effort;
17807                          ETC_TXN_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_tc;
17808                          ETC_PRJ_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_pc;
17809                          ETC_PFC_BURDENED_COST(l_index_etc) := eqpmt_ETC_COST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_cost_fc;
17810                          ETC_TXN_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_TC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc;
17811                          ETC_PRJ_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_PC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc;
17812                          ETC_PFC_RAW_COST(l_index_etc) := eqpmt_ETC_RAWCOST_FC(l_index2) - l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc;
17813                       end if;
17814                    end if;
17815                else
17816                   EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_EFFORT;
17817                   EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_TC;
17818                   EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_TC;
17819                   EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_PC;
17820                   EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_PC;
17821                   EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_COST_FC;
17822                   EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.EQPMT_ETC_RAWCOST_FC;
17823                   actual_finish_date(l_index2) := l_rollup_rec_asofdate.actual_finish_date;
17824                   if (p_extraction_type = 'FULL') then
17825                    IF l_last_projelemid <> all_objects_in_temp_rec.project_element_id THEN -- Bug 9882285
17826                      l_index_etc := l_index_etc + 1;  -- for bug 6266824
17827                   ELSE
17828                     IF l_last_res_list_mem_id <> l_new_res_list_member_id THEN
17829                        l_index_etc := l_index_etc + 1;
17830                     ELSE
17831                       IF l_last_cbs_element_id <> l_cbs_element_id THEN -- CBS Check
17832                         l_index_etc := l_index_etc + 1;
17833                       END IF;
17834 
17835                   END IF;
17836                   END IF;
17837 
17838                      ETC_PROJECT_ID(l_index_etc) := l_project_id;
17839                      ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
17840                      ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_objects_in_temp_rec.project_element_id;
17841                      --CBS Change in Get_Summarized_Actuals
17842                      ETC_CBS_ELEMENT_ID(l_index_etc) := l_CBS_ELEMENT_ID;
17843                      -- End CBS Change in Get_Summarized_Actuals
17844                      ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
17845                      if (l_plan_type = 'P') then
17846                        ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
17847                      elsif (l_plan_type = 'G') then
17848                        ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
17849                      else
17850                        ETC_PERIOD_NAME(l_index_etc) := null;
17851                      end if;
17852                      ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
17853                      ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
17854                      ETC_RBS_ELEMENT_ID(l_index_etc) := l_rbs_element_id;
17855                      ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
17856                      ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
17857                      ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
17858                      ETC_ROLLUP_TYPE(l_index_etc) := 'W';
17859                      ETC_TXN_CURRENCY_CODE(l_index_etc) := l_txn_curr_code;
17860                      ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_res_class_code;
17861                      ETC_RATE_BASED_FLAG(l_index_etc) := l_rate_based_flag;
17862                      ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
17863                      ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
17864                      ETC_QUANTITY(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_effort - l_asgn_plan_quantity;
17865                      ETC_TXN_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
17866                      ETC_PRJ_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
17867                      ETC_PFC_BURDENED_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
17868                      ETC_TXN_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
17869                      ETC_PRJ_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
17870                      ETC_PFC_RAW_COST(l_index_etc) := l_rollup_rec_asofdate.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
17871                   else
17872                   l_sri_index_etc := l_sri_index_etc - 1;  -- for bug 6266824
17873                   end if;
17874                end if;
17875             end if;
17876             --- here we need to calc PC and EV
17877             --- 5726773
17878 	    if (l_planned_eff <> 0 and l_base_pc_deriv_code = 'EFFORT') then
17879 	      l_percent_comp := (ppl_act_effort_to_date(l_index2)/(ppl_act_effort_to_date(l_index2) + estimated_remaining_effort(l_index2)))*100;
17880               if (l_percent_comp > 100) then
17881                  l_percent_comp := 100;
17882               elsif (l_percent_comp < 0) then
17883                  l_percent_comp := 0;
17884               end if;
17885               l_earned_val := l_percent_comp * l_planned_eff;
17886               l_eff_rollup_pc := l_percent_comp;
17887             elsif (l_planned_cost <> 0 and l_base_pc_deriv_code = 'COST') then -- COST based
17888 	      l_percent_comp := (ppl_act_cost_to_date_pc(l_index2)/(ppl_act_cost_to_date_pc(l_index2) + ppl_etc_cost_pc(l_index2)))*100;
17889               if (l_percent_comp > 100) then
17890                  l_percent_comp := 100;
17891               elsif (l_percent_comp < 0) then
17892                  l_percent_comp := 0;
17893               end if;
17894               l_earned_val := l_percent_comp * l_planned_cost;
17895               l_eff_rollup_pc := l_percent_comp;
17896             else
17897                l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
17898                l_earned_val := l_rollup_rec_asofdate.earned_value;
17899                l_eff_rollup_pc := l_rollup_rec_asofdate.EFF_ROLLUP_PERCENT_COMP;
17900             end if;
17901             completed_percentage(l_index2) := l_rollup_rec_asofdate.completed_percentage;
17902             EFF_ROLLUP_PERCENT_COMP(l_index2) := l_eff_rollup_pc;
17903             earned_value(l_index2) := l_earned_val;
17904             TASK_WT_BASIS_CODE(l_index2) := l_rollup_rec_asofdate.TASK_WT_BASIS_CODE;
17905             SUBPRJ_PPL_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_EFFORT;
17906             SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_EFFORT;
17907             SUBPRJ_PPL_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_EFFORT;
17908             SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_EFFORT;
17909             SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_TC;
17910             SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_TC;
17911             SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_FC;
17912             SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_FC;
17913             SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ACT_COST_TO_DT_PC;
17914             SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := l_rollup_rec_asofdate.SPJ_OTH_ACT_RAWCOST_TO_DT_PC;
17915             SUBPRJ_PPL_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_TC;
17916             SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_TC;
17917             SUBPRJ_PPL_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_FC;
17918             SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_FC;
17919             SUBPRJ_PPL_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_COST_PC;
17920             SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ACT_RAWCOST_PC;
17921             SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_TC;
17922             SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
17923             SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_FC;
17924             SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
17925             SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_COST_PC;
17926             SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
17927             SUBPRJ_OTH_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_TC;
17928             SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_TC;
17929             SUBPRJ_OTH_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_FC;
17930             SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_FC;
17931             SUBPRJ_OTH_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_COST_PC;
17932             SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_OTH_ETC_RAWCOST_PC;
17933             SUBPRJ_PPL_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_TC;
17934             SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_TC;
17935             SUBPRJ_PPL_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_FC;
17936             SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_FC;
17937             SUBPRJ_PPL_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_COST_PC;
17938             SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_PPL_ETC_RAWCOST_PC;
17939             SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_TC;
17940             SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
17941             SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_FC;
17942             SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
17943             SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_COST_PC;
17944             SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
17945             SUBPRJ_EARNED_VALUE(l_index2) := l_rollup_rec_asofdate.SUBPRJ_EARNED_VALUE;
17946             CURRENT_FLAG(l_index2) := l_rollup_rec_asofdate.CURRENT_FLAG; -- if last rec is 'Y' this should be 'Y' else it should be 'N'
17947             if (l_rollup_rec_asofdate.CURRENT_FLAG = 'Y') then
17948               l_index4 := l_index4 + 1;
17949               u1_progress_rollup_id(l_index4) := l_rollup_rec_asofdate.PROGRESS_ROLLUP_ID;
17950             end if;
17951             PROJFUNC_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_TYPE;
17952             PROJFUNC_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_EXCHANGE_RATE;
17953             PROJFUNC_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJFUNC_COST_RATE_DATE;
17954             PROJ_COST_RATE_TYPE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_TYPE;
17955             PROJ_COST_EXCHANGE_RATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_EXCHANGE_RATE;
17956             PROJ_COST_RATE_DATE(l_index2) := l_rollup_rec_asofdate.PROJ_COST_RATE_DATE;
17957             TXN_CURRENCY_CODE(l_index2) := l_rollup_rec_asofdate.TXN_CURRENCY_CODE;
17958             PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
17959             PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
17960             l_index2 := l_temp_index2;
17961           end if;
17962         end if;
17963         /*
17964         --- here just update the future rollup recs if exist.
17965         open future_rollup_recs;
17966         loop
17967            fetch future_rollup_recs into l_rollup_rec_asofdate;
17968            if future_rollup_recs%notfound then
17969               exit;
17970            else
17971               l_index3 := l_index3 + 1;
17972               if (l_planned_eff > 0 and l_base_pc_deriv_code = 'EFFORT') then
17973                 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
17974                     nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
17975                   l_percent_comp := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)/l_planned_eff)*100;
17976                 else
17977                   l_percent_comp := (nvl(all_objects_in_temp_rec.act_labor_hrs,0)/(nvl(all_objects_in_temp_rec.act_labor_hrs,0) + l_rollup_rec_asofdate.estimated_remaining_effort))*100;
17978                 end if;
17979                 if (l_percent_comp > 100) then
17980                    l_percent_comp := 100;
17981                 elsif (l_percent_comp < 0) then
17982                    l_percent_comp := 0;
17983                 end if;
17984                 l_earned_val := l_percent_comp * l_planned_eff;
17985                 l_eff_rollup_pc := l_percent_comp;
17986               elsif (l_planned_cost > 0 and l_base_pc_deriv_code = 'COST') then -- COST based
17987                 if (nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = 0 or
17988                     nvl(l_rollup_rec_asofdate.estimated_remaining_effort,0) = l_planned_eff - nvl(l_rollup_rec_asofdate.ppl_act_effort_to_date,0)) then
17989                    l_percent_comp := (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)/l_planned_cost)*100;
17990                 else
17991                    l_percent_comp := (nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0)/(nvl(all_objects_in_temp_rec.act_prj_labor_brdn_cost,0) + l_rollup_rec_asofdate.ppl_etc_cost_pc))*100;
17992                 end if;
17993                 if (l_percent_comp > 100) then
17994                    l_percent_comp := 100;
17995                 elsif (l_percent_comp < 0) then
17996                    l_percent_comp := 0;
17997                 end if;
17998                 l_earned_val := l_percent_comp * l_planned_cost;
17999                 l_eff_rollup_pc := l_percent_comp;
18000               else
18001                 l_percent_comp := l_rollup_rec_asofdate.completed_percentage;
18002                 l_earned_val := l_rollup_rec_asofdate.earned_value;
18003                 l_eff_rollup_pc := l_rollup_rec_asofdate.eff_rollup_percent_comp;
18004               end if;
18005               u_completed_percentage(l_index3) := l_rollup_rec_asofdate.completed_percentage;
18006               u_eff_rollup_percent_comp(l_index3) := l_eff_rollup_pc;
18007               u_earned_val(l_index3) := l_earned_val;
18008               u_progress_rollup_id(l_index3) := l_rollup_rec_asofdate.progress_rollup_id;
18009               u_object_version_id(l_index3) := l_object_version_id;
18010               u_ppl_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_labor_hrs;
18011               u_eqpmt_act_effort_to_date(l_index3) := all_objects_in_temp_rec.act_equip_hrs;
18012               if (l_object_Type = 'PA_ASSIGNMENTS') then
18013                  if (l_rate_based_flag = 'N') then
18014                     u_oth_qty(l_index3) := all_objects_in_temp_rec.act_txn_raw_cost - (all_objects_in_temp_rec.act_txn_labor_raw_cost + all_objects_in_temp_rec.act_txn_equip_raw_cost);
18015                  else
18016                     u_oth_qty(l_index3) := all_objects_in_temp_rec.quantity - all_objects_in_temp_rec.act_labor_hrs - all_objects_in_temp_rec.act_equip_hrs;
18017                  end if;
18018               end if;
18019               u_oth_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_brdn_cost - (all_objects_in_temp_rec.act_txn_labor_brdn_cost + all_objects_in_temp_rec.act_txn_equip_brdn_cost);
18020               u_oth_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_raw_cost - (all_objects_in_temp_rec.act_txn_labor_raw_cost + all_objects_in_temp_rec.act_txn_equip_raw_cost);
18021               u_oth_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_brdn_cost - (all_objects_in_temp_rec.act_prj_labor_brdn_cost + all_objects_in_temp_rec.act_prj_equip_brdn_cost);
18022               u_oth_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_raw_cost - (all_objects_in_temp_rec.act_prj_labor_raw_cost + all_objects_in_temp_rec.act_prj_equip_raw_cost);
18023               u_oth_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_brdn_cost - (all_objects_in_temp_rec.act_pou_labor_brdn_cost + all_objects_in_temp_rec.act_pou_equip_brdn_cost);
18024               u_oth_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_raw_cost - (all_objects_in_temp_rec.act_pou_labor_raw_cost + all_objects_in_temp_rec.act_pou_equip_raw_cost);
18025               u_ppl_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_brdn_cost;
18026               u_ppl_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_labor_raw_cost;
18027               u_ppl_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_brdn_cost;
18028               u_ppl_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_labor_raw_cost;
18029               u_ppl_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_brdn_cost;
18030               u_ppl_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_labor_raw_cost;
18031               u_eqpmt_act_cost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_brdn_cost;
18032               u_eqpmt_act_rawcost_to_date_tc(l_index3) := all_objects_in_temp_rec.act_txn_equip_raw_cost;
18033               u_eqpmt_act_cost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_brdn_cost;
18034               u_eqpmt_act_rawcost_to_date_pc(l_index3) := all_objects_in_temp_rec.act_prj_equip_raw_cost;
18035               u_eqpmt_act_cost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_brdn_cost;
18036               u_eqpmt_act_rawcost_to_date_fc(l_index3) := all_objects_in_temp_rec.act_pou_equip_raw_cost;
18037            end if;
18038         end loop;
18039         close future_rollup_recs;
18040         */
18041        l_last_projelemid := all_objects_in_temp_rec.project_element_id;
18042        l_last_res_list_mem_id := l_new_res_list_member_id; ---all_objects_in_temp_rec.res_list_member_id;
18043        l_last_cbs_element_id := l_cbs_element_id; -- CBS Check
18044        l_last_object_Type := l_object_Type;
18045        l_last_period_flag := l_period_flag;
18046      end if; --- 33 ignore rec
18047     end loop;
18048     pa_debug.log_message('GET_SUMM_ACT: Done looping thru all the records. Inserts = '||l_index2||' Updates = '||l_index3, 1);
18049 /* Bug 13419867 starts */
18050         select count(*) into l_asgmt_count from pa_asgmt_plan_change_t where project_id = l_project_id;
18051         IF l_asgmt_count > 0 then
18052 	     PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP
18053                 ( p_calling_context       => 'ASGMT_PLAN_CHANGE'
18054                  ,p_project_id              => l_project_id
18055                  ,p_structure_version_id   => pa_project_structure_utils.get_latest_wp_version(l_project_id)
18056                  ,p_pub_struc_ver_id      => pa_project_structure_utils.get_latest_wp_version(l_project_id)
18057                  ,x_return_status              =>   x_return_status
18058                  ,x_msg_count                  =>   x_msg_count
18059                  ,x_msg_data                   =>   x_msg_data);
18060 
18061                  pa_task_assignment_utils.g_require_progress_rollup := 'N';
18062         END IF;
18063 
18064         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
18065 	  pa_debug.log_message('PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS: Error in PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP', 1);
18066 	  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
18067                                p_msg_name       => x_msg_data);
18068                                x_msg_data := x_msg_data;
18069                                x_return_status := 'E';
18070 
18071           RAISE  FND_API.G_EXC_ERROR;
18072         END IF;
18073 /* Bug 13419867 ends */
18074 
18075     IF g1_debug_mode  = 'Y' THEN
18076       pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
18077                     x_Msg => 'Done with updating pl/sql tables for summarized actuals',
18078                     x_Log_Level=> 3);
18079     END IF;
18080     --- here we check if any actuals are mapped to a different assignment
18081     --- from last time.
18082     if (p_plan_res_level = 'Y' and p_extraction_type = 'FULL') then
18083       for all_assignments_asofdate_rec in all_assignments_asofdate loop
18084         l_match_found := 'N';
18085         for l_index1 in 1..l_index3 loop
18086             if all_assignments_asofdate_rec.progress_rollup_id = u_progress_rollup_id(l_index1) then
18087                 l_match_found := 'Y';
18088                 exit;
18089             end if;
18090         end loop;
18091         if (l_match_found = 'N') then
18092           if (nvl(all_assignments_asofdate_rec.ppl_act_effort_to_date,0) + nvl(all_assignments_asofdate_rec.eqpmt_act_effort_to_date,0) + nvl(all_assignments_asofdate_rec.oth_quantity_to_date,0)
18093              + nvl(all_assignments_asofdate_rec.ppl_act_cost_to_date_tc,0) + nvl(all_assignments_asofdate_rec.eqpmt_act_cost_to_date_tc,0) + nvl(all_assignments_asofdate_rec.oth_act_cost_to_date_tc,0) <> 0) then  ---4461052
18094             l_index3 := l_index3 + 1;
18095             u_completed_percentage(l_index3) := to_number(null);
18096             u_eff_rollup_percent_comp(l_index3) := to_number(null);
18097             u_earned_val(l_index3) := to_number(null);
18098             u_actual_finish_date(l_index3) := to_date(null);
18099             u_progress_rollup_id(l_index3) := all_assignments_asofdate_rec.progress_rollup_id;
18100             u_object_version_id(l_index3) := all_assignments_asofdate_rec.object_version_id;
18101             u_ppl_act_effort_to_date(l_index3) := 0;
18102             u_eqpmt_act_effort_to_date(l_index3) := 0;
18103             u_oth_qty(l_index3) := 0;
18104             u_oth_act_cost_to_date_tc(l_index3) := 0;
18105             u_oth_act_rawcost_to_date_tc(l_index3) := 0;
18106             u_oth_act_cost_to_date_pc(l_index3) := 0;
18107             u_oth_act_rawcost_to_date_pc(l_index3) := 0;
18108             u_oth_act_cost_to_date_fc(l_index3) := 0;
18109             u_oth_act_rawcost_to_date_fc(l_index3) := 0;
18110             u_ppl_act_cost_to_date_tc(l_index3) := 0;
18111             u_ppl_act_rawcost_to_date_tc(l_index3) := 0;
18112             u_ppl_act_cost_to_date_pc(l_index3) := 0;
18113             u_ppl_act_rawcost_to_date_pc(l_index3) := 0;
18114             u_ppl_act_cost_to_date_fc(l_index3) := 0;
18115             u_ppl_act_rawcost_to_date_fc(l_index3) := 0;
18116             u_eqpmt_act_cost_to_date_tc(l_index3) := 0;
18117             u_eqpmt_act_rawcost_to_date_tc(l_index3) := 0;
18118             u_eqpmt_act_cost_to_date_pc(l_index3) := 0;
18119             u_eqpmt_act_rawcost_to_date_pc(l_index3) := 0;
18120             u_eqpmt_act_cost_to_date_fc(l_index3) := 0;
18121             u_eqpmt_act_rawcost_to_date_fc(l_index3) := 0;
18122             u_oth_etc_cost_to_date_tc(l_index3) := null;
18123             u_oth_etc_rawcost_to_date_tc(l_index3) := null;
18124             u_oth_etc_cost_to_date_pc(l_index3) := null;
18125             u_oth_etc_rawcost_to_date_pc(l_index3) := null;
18126             u_oth_etc_cost_to_date_fc(l_index3) := null;
18127             u_oth_etc_rawcost_to_date_fc(l_index3) := null;
18128             u_ppl_etc_cost_to_date_tc(l_index3) := null;
18129             u_ppl_etc_rawcost_to_date_tc(l_index3) := null;
18130             u_ppl_etc_cost_to_date_pc(l_index3) := null;
18131             u_ppl_etc_rawcost_to_date_pc(l_index3) := null;
18132             u_ppl_etc_cost_to_date_fc(l_index3) := null;
18133             u_ppl_etc_rawcost_to_date_fc(l_index3) := null;
18134             u_eqpmt_etc_cost_to_date_tc(l_index3) := null;
18135             u_eqpmt_etc_rawcost_to_date_tc(l_index3) := null;
18136             u_eqpmt_etc_cost_to_date_pc(l_index3) := null;
18137             u_eqpmt_etc_rawcost_to_date_pc(l_index3) := null;
18138             u_eqpmt_etc_cost_to_date_fc(l_index3) := null;
18139             u_eqpmt_etc_rawcost_to_date_fc(l_index3) := null;
18140             u_ppl_etc_effort_to_date(l_index3) := null;
18141             u_eqpmt_etc_effort_to_date(l_index3) := null;
18142             u_oth_etc_qty(l_index3) := null;
18143           else
18144 
18145             --- if a progress record is there and no actuals exist then this means maybe            --- ETC is overridden. We will pass ETC to PJI if this is FULL mode.
18146             if (p_extraction_type = 'FULL') then
18147               l_index_etc := l_index_etc + 1;
18148               ETC_PROJECT_ID(l_index_etc) := l_project_id;
18149               ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
18150               ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assignments_asofdate_rec.proj_element_id;
18151               ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
18152               if (l_plan_type = 'P') then
18153                  ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
18154               elsif (l_plan_type = 'G') then
18155                  ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
18156               else
18157                  ETC_PERIOD_NAME(l_index_etc) := null;
18158               end if;
18159               ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
18160               ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
18161               ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
18162               ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
18163               ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
18164               ETC_ROLLUP_TYPE(l_index_etc) := 'W';
18165               l_task_id := all_assignments_asofdate_rec.proj_element_id;
18166               l_res_list_member_id := all_assignments_asofdate_rec.object_id;
18167               open get_assignment_info;
18168               fetch get_assignment_info into l_get_assignment_info;
18169               close get_assignment_info;
18170               l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
18171               l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
18172               l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
18173               l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
18174               l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
18175               l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
18176               l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
18177               ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
18178               --CBS Change in Get_Summarized_Actuals
18179               ETC_CBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.cbs_element_id;
18180               -- End CBS Change in Get_Summarized_Actuals
18181               ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
18182               ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
18183 
18184               ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
18185               ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
18186               ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
18187               if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
18188                 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
18189                 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18190                 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18191                 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18192                 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18193                 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18194                 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18195               elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
18196                 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
18197                 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18198                 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18199                 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18200                 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18201                 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18202                 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18203               else
18204                 ETC_QUANTITY(l_index_etc) := all_assignments_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
18205                 ETC_TXN_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18206                 ETC_PRJ_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18207                 ETC_PFC_BURDENED_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18208                 ETC_TXN_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18209                 ETC_PRJ_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18210                 ETC_PFC_RAW_COST(l_index_etc) := all_assignments_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18211               end if;
18212             end if;
18213           end if;
18214         end if;
18215       end loop;
18216 
18217 
18218       for all_assign_prev_asofdate_rec in all_assign_prev_asofdate loop
18219         l_match_found := 'N';
18220         for l_index1 in 1..l_index2 loop
18221           if all_assign_prev_asofdate_rec.object_id = object_id(l_index1) and
18222              -- Add cbs_element_id
18223              nvl(all_assign_prev_asofdate_rec.cbs_element_id,-1) = nvl(cbs_element_id(l_index1),-1) and
18224              all_assign_prev_asofdate_rec.proj_element_id = proj_element_id(l_index1) and
18225              all_assign_prev_asofdate_rec.object_type = object_type(l_index1) then
18226              l_match_found := 'Y';
18227              exit;
18228           end if;
18229         end loop;
18230         if (l_match_found = 'N') then
18231           if (nvl(all_assign_prev_asofdate_rec.ppl_act_effort_to_date,0) + nvl(all_assign_prev_asofdate_rec.eqpmt_act_effort_to_date,0) + nvl(all_assign_prev_asofdate_rec.oth_quantity_to_date,0)
18232              + nvl(all_assign_prev_asofdate_rec.ppl_act_cost_to_date_tc,0) + nvl(all_assign_prev_asofdate_rec.eqpmt_act_cost_to_date_tc,0) + nvl(all_assign_prev_asofdate_rec.oth_act_cost_to_date_tc,0) <> 0) then  ---4461052
18233             l_index2 := l_index2 + 1;
18234             select pa_progress_rollup_s.nextval into progress_rollup_id(l_index2) from dual;
18235             percent_complete_id(l_index2) := to_number(null);
18236             project_id(l_index2) := l_project_id;
18237             object_id(l_index2) := all_assign_prev_asofdate_rec.object_id;
18238             OBJECT_TYPE(l_index2) := all_assign_prev_asofdate_rec.object_Type;
18239             as_of_Date(l_index2) := l_temp_as_of_date;
18240             object_version_id(l_index2) := all_assign_prev_asofdate_rec.object_version_id;
18241             LAST_UPDATE_DATE(l_index2) := sysdate;
18242             LAST_UPDATED_BY(l_index2) := fnd_global.user_id;
18243             CREATION_DATE(l_index2) := sysdate;
18244             CREATED_BY(l_index2) := fnd_global.user_id;
18245             PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.progress_status_code;
18246             LAST_UPDATE_LOGIN(l_index2) := fnd_global.login_id ;
18247             INCREMENTAL_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.INCREMENTAL_WORK_QUANTITY;
18248             CUMULATIVE_WORK_QUANTITY(l_index2) := all_assign_prev_asofdate_rec.CUMULATIVE_WORK_QUANTITY;
18249             base_percent_complete(l_index2) := all_assign_prev_asofdate_rec.base_percent_complete;
18250             EFF_ROLLUP_PERCENT_COMP(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PERCENT_COMP;
18251             completed_percentage(l_index2) := 0;
18252             ESTIMATED_START_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_START_DATE;
18253             ESTIMATED_FINISH_DATE(l_index2) := all_assign_prev_asofdate_rec.ESTIMATED_FINISH_DATE;
18254             actual_start_date(l_index2) := all_assign_prev_asofdate_rec.actual_start_date;
18255             actual_finish_date(l_index2) := all_assign_prev_asofdate_rec.actual_finish_date;
18256             ESTIMATED_REMAINING_EFFORT(l_index2) := null;
18257             RECORD_VERSION_NUMBER(l_index2) := 1;
18258             base_percent_comp_deriv_code(l_index2) := all_assign_prev_asofdate_rec.base_percent_comp_deriv_code;
18259             BASE_PROGRESS_STATUS_CODE(l_index2) := all_assign_prev_asofdate_rec.BASE_PROGRESS_STATUS_CODE;
18260             EFF_ROLLUP_PROG_STAT_CODE(l_index2) := all_assign_prev_asofdate_rec.EFF_ROLLUP_PROG_STAT_CODE;
18261             STRUCTURE_TYPE(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_TYPE;
18262             PROJ_ELEMENT_ID(l_index2) := all_assign_prev_asofdate_rec.PROJ_ELEMENT_ID;
18263             STRUCTURE_VERSION_ID(l_index2) := all_assign_prev_asofdate_rec.STRUCTURE_VERSION_ID;
18264 
18265 	    -- Bug 6917961
18266             if (OBJECT_TYPE(l_index2) = 'PA_ASSIGNMENTS') then
18267           -- Add cbs_element_id
18268                cbs_element_id(l_index2) := all_assign_prev_asofdate_rec.cbs_element_id;
18269                if (PROGRESS_STATUS_CODE(l_index2) is null and actual_start_date(l_index2) is not null
18270                 and actual_finish_date(l_index2) is null) then
18271                   l_prog_enable_flag := 'N';
18272                   l_prog_stat_code := null;
18273                   OPEN cur_prog_setup(PROJ_ELEMENT_ID(l_index2),l_project_id);
18274                   FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
18275                   CLOSE cur_prog_setup;
18276                   if (l_prog_enable_flag = 'Y') then
18277                      PROGRESS_STATUS_CODE(l_index2) := l_prog_stat_code;
18278                   end if;
18279                end if;
18280             end if;
18281             -- Bug 6917961
18282 
18283             ppl_act_effort_to_date(l_index2) := 0;
18284             eqpmt_act_effort_to_date(l_index2) := 0;
18285             oth_qty(l_index2) := 0;
18286             EQPMT_ETC_EFFORT(l_index2) := null;
18287             oth_etc_qty(l_index2) := null;
18288             oth_act_cost_to_date_tc(l_index2) := 0;
18289             oth_act_rawcost_to_date_tc(l_index2) := 0;
18290             oth_act_cost_to_date_pc(l_index2) := 0;
18291             oth_act_rawcost_to_date_pc(l_index2) := 0;
18292             oth_act_cost_to_date_fc(l_index2) := 0;
18293             oth_act_rawcost_to_date_fc(l_index2) := 0;
18294             OTH_ETC_COST_TC(l_index2) := null;
18295             OTH_ETC_RAWCOST_TC(l_index2) := null;
18296             OTH_ETC_COST_FC(l_index2) := null;
18297             OTH_ETC_RAWCOST_FC(l_index2) := null;
18298             OTH_ETC_COST_PC(l_index2) := null;
18299             OTH_ETC_RAWCOST_PC(l_index2) := null;
18300             ppl_act_cost_to_date_tc(l_index2) := 0;
18301             ppl_act_rawcost_to_date_tc(l_index2) := 0;
18302             ppl_act_cost_to_date_pc(l_index2) := 0;
18303             ppl_act_rawcost_to_date_pc(l_index2) := 0;
18304             ppl_act_cost_to_date_fc(l_index2) := 0;
18305             ppl_act_rawcost_to_date_fc(l_index2) := 0;
18306             PPL_ETC_COST_TC(l_index2) := null;
18307             PPL_ETC_RAWCOST_TC(l_index2) := null;
18308             PPL_ETC_COST_PC(l_index2) := null;
18309             PPL_ETC_RAWCOST_PC(l_index2) := null;
18310             PPL_ETC_COST_FC(l_index2) := null;
18311             PPL_ETC_RAWCOST_FC(l_index2) := null;
18312             eqpmt_act_cost_to_date_tc(l_index2) := 0;
18313             eqpmt_act_rawcost_to_date_tc(l_index2) := 0;
18314             eqpmt_act_cost_to_date_pc(l_index2) := 0;
18315             eqpmt_act_rawcost_to_date_pc(l_index2) := 0;
18316             eqpmt_act_cost_to_date_fc(l_index2) := 0;
18317             eqpmt_act_rawcost_to_date_fc(l_index2) := 0;
18318             EQPMT_ETC_COST_TC(l_index2) := null;
18319             EQPMT_ETC_RAWCOST_TC(l_index2) := null;
18320             EQPMT_ETC_COST_PC(l_index2) := null;
18321             EQPMT_ETC_RAWCOST_PC(l_index2) := null;
18322             EQPMT_ETC_COST_FC(l_index2) := null;
18323             EQPMT_ETC_RAWCOST_FC(l_index2) := null;
18324             earned_value(l_index2) := 0;
18325             TASK_WT_BASIS_CODE(l_index2) := all_assign_prev_asofdate_rec.TASK_WT_BASIS_CODE;
18326             SUBPRJ_PPL_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_EFFORT;
18327             SUBPRJ_EQPMT_ACT_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_EFFORT;
18328             SUBPRJ_PPL_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_EFFORT;
18329             SUBPRJ_EQPMT_ETC_EFFORT(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_EFFORT;
18330             SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC;
18331             SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC;
18332             SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC;
18333             SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC;
18334             SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC;
18335             SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index2) := all_assign_prev_asofdate_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC;
18336             SUBPRJ_PPL_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_TC;
18337             SUBPRJ_PPL_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_TC;
18338             SUBPRJ_PPL_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_FC;
18339             SUBPRJ_PPL_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_FC;
18340             SUBPRJ_PPL_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_COST_PC;
18341             SUBPRJ_PPL_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ACT_RAWCOST_PC;
18342             SUBPRJ_EQPMT_ACT_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_TC;
18343             SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC;
18344             SUBPRJ_EQPMT_ACT_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_FC;
18345             SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC;
18346             SUBPRJ_EQPMT_ACT_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_COST_PC;
18347             SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC;
18348             SUBPRJ_OTH_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_TC;
18349             SUBPRJ_OTH_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_TC;
18350             SUBPRJ_OTH_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_FC;
18351             SUBPRJ_OTH_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_FC;
18352             SUBPRJ_OTH_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_COST_PC;
18353             SUBPRJ_OTH_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_OTH_ETC_RAWCOST_PC;
18354             SUBPRJ_PPL_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_TC;
18355             SUBPRJ_PPL_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_TC;
18356             SUBPRJ_PPL_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_FC;
18357             SUBPRJ_PPL_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_FC;
18358             SUBPRJ_PPL_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_COST_PC;
18359             SUBPRJ_PPL_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_PPL_ETC_RAWCOST_PC;
18360             SUBPRJ_EQPMT_ETC_COST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_TC;
18361             SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC;
18362             SUBPRJ_EQPMT_ETC_COST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_FC;
18363             SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC;
18364             SUBPRJ_EQPMT_ETC_COST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_COST_PC;
18365             SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC;
18366             SUBPRJ_EARNED_VALUE(l_index2) := all_assign_prev_asofdate_rec.SUBPRJ_EARNED_VALUE;
18367             CURRENT_FLAG(l_index2) := all_assign_prev_asofdate_rec.CURRENT_FLAG; -- if last rec is 'Y' this should be 'Y' else it should be 'N'
18368             if (all_assign_prev_asofdate_rec.CURRENT_FLAG = 'Y') then
18369               l_index4 := l_index4 + 1;
18370               u1_progress_rollup_id(l_index4) := all_assign_prev_asofdate_rec.PROGRESS_ROLLUP_ID;
18371             end if;
18372             PROJFUNC_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_TYPE;
18373             PROJFUNC_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_EXCHANGE_RATE;
18374             PROJFUNC_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJFUNC_COST_RATE_DATE;
18375             PROJ_COST_RATE_TYPE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_TYPE;
18376             PROJ_COST_EXCHANGE_RATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_EXCHANGE_RATE;
18377             PROJ_COST_RATE_DATE(l_index2) := all_assign_prev_asofdate_rec.PROJ_COST_RATE_DATE;
18378             TXN_CURRENCY_CODE(l_index2) := all_assign_prev_asofdate_rec.TXN_CURRENCY_CODE;
18379             PROG_PA_PERIOD_NAME(l_index2) := l_pa_period_name;
18380             PROG_GL_PERIOD_NAME(l_index2) := l_gl_period_name;
18381           else
18382             --- if a progress record is there and no actuals exist then this means maybe            --- ETC is overridden. We will pass ETC to PJI if this is FULL mode.
18383             if (p_extraction_type = 'FULL') then
18384 
18385               l_index_etc := l_index_etc + 1;
18386               ETC_PROJECT_ID(l_index_etc) := l_project_id;
18387               ETC_PROJECT_ORG_ID(l_index_etc) := proj_org_ids_tbl(l_index);
18388               ETC_PROJECT_ELEMENT_ID(l_index_etc) := all_assign_prev_asofdate_rec.proj_element_id;
18389               ETC_STRUCT_VER_ID(l_index_etc) := l_latest_wp_struct_ver_id;
18390               if (l_plan_type = 'P') then
18391                  ETC_PERIOD_NAME(l_index_etc) := l_pa_period_name;
18392               elsif (l_plan_type = 'G') then
18393                  ETC_PERIOD_NAME(l_index_etc) := l_gl_period_name;
18394               else
18395                  ETC_PERIOD_NAME(l_index_etc) := null;
18396               end if;
18397               ETC_CALENDAR_TYPE(l_index_etc) := l_plan_type;
18398               ETC_END_DATE(l_index_etc) := l_temp_as_of_date;
18399               ETC_PLAN_VERSION_ID(l_index_etc) := l_plan_version_id;
18400               ETC_PLAN_TYPE_ID(l_index_etc) := l_plan_type_id;
18401               ETC_WP_VERSION_FLAG(l_index_etc) := 'Y';
18402               ETC_ROLLUP_TYPE(l_index_etc) := 'W';
18403               l_task_id := all_assign_prev_asofdate_rec.proj_element_id;
18404               l_res_list_member_id := all_assign_prev_asofdate_rec.object_id;
18405               open get_assignment_info;
18406               fetch get_assignment_info into l_get_assignment_info;
18407               close get_assignment_info;
18408               l_asgn_plan_quantity := nvl(l_get_assignment_info.planned_quantity,0);
18409               l_asgn_plan_bur_cost_tc := nvl(l_get_assignment_info.planned_bur_cost_txn_cur,0);
18410               l_asgn_plan_bur_cost_fc := nvl(l_get_assignment_info.planned_bur_cost_projfunc,0);
18411               l_asgn_plan_bur_cost_pc := nvl(l_get_assignment_info.planned_bur_cost_proj_cur,0);
18412               l_asgn_plan_raw_cost_tc := nvl(l_get_assignment_info.planned_raw_cost_txn_cur,0);
18413               l_asgn_plan_raw_cost_fc := nvl(l_get_assignment_info.planned_raw_cost_projfunc,0);
18414               l_asgn_plan_raw_cost_pc := nvl(l_get_assignment_info.planned_raw_cost_proj_cur,0);
18415               ETC_RBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.rbs_element_id;
18416                --CBS Change in Get_Summarized_Actuals
18417               ETC_CBS_ELEMENT_ID(l_index_etc) := l_get_assignment_info.cbs_element_id;
18418               -- End CBS Change in Get_Summarized_Actuals
18419               ETC_TXN_CURRENCY_CODE(l_index_etc) := l_get_assignment_info.txn_currency_code;
18420               ETC_RESOURCE_CLASS_CODE(l_index_etc) := l_get_assignment_info.resource_class_code;
18421 
18422               ETC_RATE_BASED_FLAG(l_index_etc) := l_get_assignment_info.rate_based_flag;
18423               ETC_PRJ_CURRENCY_CODE(l_index_etc) := l_proj_curr_code;
18424               ETC_PFC_CURRENCY_CODE(l_index_etc) := l_proj_func_curr_code;
18425                if (l_get_assignment_info.resource_class_code = 'EQUIPMENT') then
18426                  ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_effort - l_asgn_plan_quantity;
18427                  ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18428                  ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18429                  ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18430                  ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18431                  ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18432                  ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.eqpmt_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18433                elsif (l_get_assignment_info.resource_class_code = 'PEOPLE') then
18434                  ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.estimated_remaining_effort - l_asgn_plan_quantity;
18435                  ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18436                  ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18437                  ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18438                  ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18439                  ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18440                  ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.ppl_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18441                else
18442                  ETC_QUANTITY(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_quantity - l_asgn_plan_quantity;
18443                  ETC_TXN_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_tc - l_asgn_plan_bur_cost_tc;
18444                  ETC_PRJ_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_pc - l_asgn_plan_bur_cost_pc;
18445                  ETC_PFC_BURDENED_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_cost_fc - l_asgn_plan_bur_cost_fc;
18446                  ETC_TXN_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_tc - l_asgn_plan_raw_cost_tc;
18447                  ETC_PRJ_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_pc - l_asgn_plan_raw_cost_pc;
18448                  ETC_PFC_RAW_COST(l_index_etc) := all_assign_prev_asofdate_rec.oth_etc_rawcost_fc - l_asgn_plan_raw_cost_fc;
18449                end if;
18450              end if;
18451           end if;
18452         end if;
18453       end loop;
18454     end if;
18455 
18456     pa_debug.log_message('GET_SUMM_ACT: Done looping thru all assignments which are now re-mapped.', 1);
18457 
18458     -- Bug 4533112 Begin
18459         pa_debug.log_message('GET_SUMM_ACT: Calling Progress Client Extension.', 1);
18460         FOR l_index1 IN 1..l_index2 LOOP
18461 
18462                 IF OBJECT_TYPE(l_index1) = 'PA_ASSIGNMENTS' OR (OBJECT_TYPE(l_index1) = 'PA_TASKS' AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(OBJECT_VERSION_ID(l_index1))= 'N')
18463                 THEN
18464 
18465                         l_db_date_override_flag := 'N';
18466                         l_db_estimated_start_date := null;
18467                         l_db_estimated_finish_date := null;
18468                         l_db_actual_start_date := null;
18469                         l_db_actual_finish_date := null;
18470                         l_clex_estimated_start_date := null;
18471                         l_clex_estimated_finish_date := null;
18472                         l_clex_actual_start_date := null;
18473                         l_clex_actual_finish_date := null;
18474                         l_task_status_code := null;
18475                         l_clex_pc := null;
18476 
18477                         OPEN c_get_dates_overrides(PROJECT_ID(l_index1),OBJECT_ID(l_index1),OBJECT_TYPE(l_index1),AS_OF_DATE(l_index1), proj_element_id(l_index1)); --bug 9778012
18478                         FETCH c_get_dates_overrides INTO
18479                         l_db_date_override_flag
18480                         , l_db_estimated_start_date
18481                         , l_db_estimated_finish_date
18482                         , l_db_actual_start_date
18483                         , l_db_actual_finish_date
18484                         , l_task_status_code;
18485                         CLOSE c_get_dates_overrides;
18486 
18487                         IF g1_debug_mode  = 'Y' THEN
18488                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Insert Case : Client Extension Logic starts here', x_Log_Level=> 3);
18489                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18490                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
18491                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
18492                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
18493                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
18494                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
18495                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ESTIMATED_START_DATE(l_index1)='||ESTIMATED_START_DATE(l_index1), x_Log_Level=> 3);
18496                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ESTIMATED_FINISH_DATE(l_index1)='||ESTIMATED_FINISH_DATE(l_index1), x_Log_Level=> 3);
18497                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ACTUAL_START_DATE(l_index1)='||ACTUAL_START_DATE(l_index1), x_Log_Level=> 3);
18498                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'ACTUAL_FINISH_DATE(l_index1)='||ACTUAL_FINISH_DATE(l_index1), x_Log_Level=> 3);
18499                         END IF;
18500 
18501 
18502                         l_date_override_flag := 'N';
18503                         l_clex_pc := null;
18504                         IF OBJECT_TYPE(l_index1) = 'PA_TASKS' THEN
18505                                 l_clex_pc := nvl(COMPLETED_PERCENTAGE(l_index1), EFF_ROLLUP_PERCENT_COMP(l_index1));
18506                         END IF;
18507 
18508                         IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
18509                                 l_date_override_flag := 'Y';
18510                                 ESTIMATED_START_DATE(l_index1) := l_db_estimated_start_date;
18511                                 ESTIMATED_FINISH_DATE(l_index1) := l_db_estimated_finish_date;
18512                                 ACTUAL_START_DATE(l_index1) := l_db_actual_start_date;
18513                                 ACTUAL_FINISH_DATE(l_index1) := l_db_actual_finish_date;
18514                         END IF;
18515 
18516                         IF g1_debug_mode  = 'Y' THEN
18517                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
18518                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18519                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'PROJECT_ID(l_index1)='||PROJECT_ID(l_index1), x_Log_Level=> 3);
18520                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'latest_wp_struct_ver_ids_tbl(l_index)='||latest_wp_struct_ver_ids_tbl(l_index), x_Log_Level=> 3);
18521                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_TYPE(l_index1)='||OBJECT_TYPE(l_index1), x_Log_Level=> 3);
18522                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_ID(l_index1)='||OBJECT_ID(l_index1), x_Log_Level=> 3);
18523                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'OBJECT_VERSION_ID(l_index1)='||OBJECT_VERSION_ID(l_index1), x_Log_Level=> 3);
18524                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'PROJ_ELEMENT_ID(l_index1)='||PROJ_ELEMENT_ID(l_index1), x_Log_Level=> 3);
18525                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
18526                         END IF;
18527 
18528 
18529                         PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
18530                                 p_project_id            => PROJECT_ID(l_index1),
18531                                 p_structure_type        => 'WORKPLAN',
18532                                 p_structure_version_id  => latest_wp_struct_ver_ids_tbl(l_index),
18533                                 p_object_type           => OBJECT_TYPE(l_index1),
18534                                 p_object_id             => OBJECT_ID(l_index1),
18535                                 p_object_version_id     => OBJECT_VERSION_ID(l_index1),
18536                                 p_proj_element_id       => PROJ_ELEMENT_ID(l_index1),
18537                                 p_task_status           => l_task_status_code,
18538                                 p_percent_complete      => l_clex_pc,
18539                                 p_estimated_start_date  => ESTIMATED_START_DATE(l_index1),
18540                                 p_estimated_finish_date => ESTIMATED_FINISH_DATE(l_index1),
18541                                 p_actual_start_date     => ACTUAL_START_DATE(l_index1),
18542                                 p_actual_finish_date    => ACTUAL_FINISH_DATE(l_index1),
18543                                 x_estimated_start_date  => l_clex_estimated_start_date,
18544                                 x_estimated_finish_date => l_clex_estimated_finish_date,
18545                                 x_actual_start_date     => l_clex_actual_start_date,
18546                                 x_actual_finish_date    => l_clex_actual_finish_date,
18547                                 x_return_status         => x_return_status,
18548                                 x_msg_count             => x_msg_count,
18549                                 x_msg_data              => x_msg_data
18550                                 );
18551 
18552                         IF g1_debug_mode  = 'Y' THEN
18553                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
18554                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
18555                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
18556                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
18557                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
18558                         END IF;
18559 
18560                         IF x_return_status <> 'S' THEN
18561                                 pa_debug.log_message('GET_SUMM_ACT: For Insert GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
18562                                 -- Added for bug 5526638
18563                                 l_err_msg := 'Progress Client extension returned error for object_id='||OBJECT_ID(l_index1);
18564                                 raise FND_API.G_EXC_ERROR;
18565                         END IF;
18566 
18567                         IF nvl(ESTIMATED_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
18568                         OR nvl(ESTIMATED_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
18569                         OR nvl(ACTUAL_START_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
18570                         OR nvl(ACTUAL_FINISH_DATE(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
18571                         THEN
18572                                 l_date_override_flag := 'Y';
18573                                 ESTIMATED_START_DATE(l_index1) := l_clex_estimated_start_date;
18574                                 ESTIMATED_FINISH_DATE(l_index1) := l_clex_estimated_finish_date;
18575                                 ACTUAL_START_DATE(l_index1) := l_clex_actual_start_date;
18576                                 ACTUAL_FINISH_DATE(l_index1) := l_clex_actual_finish_date;
18577                                 IF ESTIMATED_REMAINING_EFFORT(l_index1) > 0 OR EQPMT_ETC_EFFORT(l_index1) > 0 OR oth_etc_qty(l_index1) > 0 THEN
18578                                         ACTUAL_FINISH_DATE(l_index1) := null;
18579                                 END IF;
18580                         END IF;
18581 
18582                         BASE_PROGRESS_STATUS_CODE(l_index1)  := l_date_override_flag;
18583                         IF g1_debug_mode  = 'Y' THEN
18584                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
18585                         END IF;
18586                 END IF;
18587         END LOOP;
18588 
18589         FOR l_index1 IN 1..l_index3 LOOP
18590 
18591                 l_db_date_override_flag := 'N';
18592                 l_db_estimated_start_date := null;
18593                 l_db_estimated_finish_date := null;
18594                 l_db_actual_start_date := null;
18595                 l_db_actual_finish_date := null;
18596                 l_clex_estimated_start_date := null;
18597                 l_clex_estimated_finish_date := null;
18598                 l_clex_actual_start_date := null;
18599                 l_clex_actual_finish_date := null;
18600                 l_task_status_code := null;
18601                 l_date_override_flag := 'N';
18602                 l_db_object_id := null;
18603                 l_db_object_version_id := null;
18604                 l_db_proj_element_id := null;
18605                 l_db_object_type := null;
18606                 l_db_as_of_date := null;
18607                 l_db_project_id := null;
18608                 l_db_current_flag := null;
18609                 l_clex_pc := null;
18610 
18611                 OPEN c_get_rec_overrides(u_progress_rollup_id(l_index1));
18612                 FETCH c_get_rec_overrides INTO
18613                 l_db_date_override_flag
18614                 , l_db_estimated_start_date
18615                 , l_db_estimated_finish_date
18616                 , l_db_actual_start_date
18617                 , l_db_actual_finish_date
18618                 , l_task_status_code
18619                 , l_db_object_id
18620                 , l_db_object_version_id
18621                 , l_db_proj_element_id
18622                 , l_db_object_type
18623                 , l_db_as_of_date
18624                 , l_db_project_id
18625                 , l_db_current_flag;
18626                 CLOSE c_get_rec_overrides;
18627 
18628                         IF g1_debug_mode  = 'Y' THEN
18629                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Update Case : Client Extension Logic starts here', x_Log_Level=> 3);
18630                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_progress_rollup_id(l_index1)='||u_progress_rollup_id(l_index1), x_Log_Level=> 3);
18631                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18632                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_start_date='||l_db_estimated_start_date, x_Log_Level=> 3);
18633                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_estimated_finish_date='||l_db_estimated_finish_date, x_Log_Level=> 3);
18634                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_start_date='||l_db_actual_start_date, x_Log_Level=> 3);
18635                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_actual_finish_date='||l_db_actual_finish_date, x_Log_Level=> 3);
18636                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
18637                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_id='||l_db_object_id, x_Log_Level=> 3);
18638                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_version_id='||l_db_object_version_id, x_Log_Level=> 3);
18639                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_proj_element_id='||l_db_proj_element_id, x_Log_Level=> 3);
18640                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_object_type='||l_db_object_type, x_Log_Level=> 3);
18641                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_as_of_date='||l_db_as_of_date, x_Log_Level=> 3);
18642                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_project_id='||l_db_project_id, x_Log_Level=> 3);
18643                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_current_flag='||l_db_current_flag, x_Log_Level=> 3);
18644                         END IF;
18645 
18646 
18647                 u_estimated_start_date(l_index1) := l_db_estimated_start_date;
18648                 u_estimated_finish_date(l_index1) := l_db_estimated_finish_date;
18649                 u_actual_start_date(l_index1) := l_db_actual_start_date;
18650                 u_base_progress_status_code(l_index1) := l_db_date_override_flag;
18651 
18652 
18653                 IF (l_db_object_type = 'PA_ASSIGNMENTS' OR (l_db_object_type = 'PA_TASKS' AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_db_object_version_id)= 'N'))
18654                 AND l_db_current_flag IN ('Y','N')
18655                 THEN
18656 
18657                         IF nvl(l_db_date_override_flag, 'N') = 'Y' THEN
18658                                 l_date_override_flag := 'Y';
18659                                 u_actual_finish_date(l_index1) := l_db_actual_finish_date;
18660                         END IF;
18661 
18662                         IF l_db_object_type = 'PA_TASKS' THEN
18663                                 l_clex_pc := nvl(u_completed_percentage(l_index1), u_eff_rollup_percent_comp(l_index1));
18664                         END IF;
18665 
18666                         IF g1_debug_mode  = 'Y' THEN
18667                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'Calling PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO with following params', x_Log_Level=> 3);
18668                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_db_date_override_flag='||l_db_date_override_flag, x_Log_Level=> 3);
18669                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'latest_wp_struct_ver_ids_tbl(l_index)='||latest_wp_struct_ver_ids_tbl(l_index), x_Log_Level=> 3);
18670                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_pc='||l_clex_pc, x_Log_Level=> 3);
18671                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_estimated_start_date(l_index1)='||u_estimated_start_date(l_index1), x_Log_Level=> 3);
18672                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_estimated_finish_date(l_index1)='||u_estimated_finish_date(l_index1), x_Log_Level=> 3);
18673                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'u_actual_start_date(l_index1)='||u_actual_start_date(l_index1), x_Log_Level=> 3);
18674                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => ' u_actual_finish_date(l_index1)='|| u_actual_finish_date(l_index1), x_Log_Level=> 3);
18675                         END IF;
18676 
18677                         PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO(
18678                                 p_project_id            => l_db_project_id,
18679                                 p_structure_type        => 'WORKPLAN',
18680                                 p_structure_version_id  => latest_wp_struct_ver_ids_tbl(l_index),
18681                                 p_object_type           => l_db_object_type,
18682                                 p_object_id             => l_db_object_id,
18683                                 p_object_version_id     => l_db_object_version_id,
18684                                 p_proj_element_id       => l_db_proj_element_id,
18685                                 p_task_status           => l_task_status_code,
18686                                 p_percent_complete      => l_clex_pc,
18687                                 p_estimated_start_date  => u_estimated_start_date(l_index1),
18688                                 p_estimated_finish_date => u_estimated_finish_date(l_index1),
18689                                 p_actual_start_date     => u_actual_start_date(l_index1),
18690                                 p_actual_finish_date    => u_actual_finish_date(l_index1),
18691                                 x_estimated_start_date  => l_clex_estimated_start_date,
18692                                 x_estimated_finish_date => l_clex_estimated_finish_date,
18693                                 x_actual_start_date     => l_clex_actual_start_date,
18694                                 x_actual_finish_date    => l_clex_actual_finish_date,
18695                                 x_return_status         => x_return_status,
18696                                 x_msg_count             => x_msg_count,
18697                                 x_msg_data              => x_msg_data
18698                                 );
18699 
18700                         IF g1_debug_mode  = 'Y' THEN
18701                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'After Call PA_PROGRESS_CLIENT_EXTN.GET_TASK_RES_OVERRIDE_INFO x_return_status='||x_return_status, x_Log_Level=> 3);
18702                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_start_date='||l_clex_estimated_start_date, x_Log_Level=> 3);
18703                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_estimated_finish_date='||l_clex_estimated_finish_date, x_Log_Level=> 3);
18704                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_start_date='||l_clex_actual_start_date, x_Log_Level=> 3);
18705                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_clex_actual_finish_date='||l_clex_actual_finish_date, x_Log_Level=> 3);
18706                         END IF;
18707 
18708                         IF x_return_status <> 'S' THEN
18709                                 pa_debug.log_message('GET_SUMM_ACT: For Update GET_TASK_RES_OVERRIDE_INFO returned error for object_id='||OBJECT_ID(l_index1), 1);
18710                                 -- Added for bug 5526638
18711                                 l_err_msg := 'Progress client extension returned error for object_id='||OBJECT_ID(l_index1);
18712                                 raise FND_API.G_EXC_ERROR;
18713                         END IF;
18714 
18715                         IF nvl(u_estimated_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_start_date,FND_API.g_miss_date)
18716                         OR nvl(u_estimated_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_estimated_finish_date,FND_API.g_miss_date)
18717                         OR nvl(u_actual_start_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_start_date,FND_API.g_miss_date)
18718                         OR nvl(u_actual_finish_date(l_index1),FND_API.g_miss_date) <> nvl(l_clex_actual_finish_date,FND_API.g_miss_date)
18719                         THEN
18720                                 l_date_override_flag := 'Y';
18721                                 u_estimated_start_date(l_index1) := l_clex_estimated_start_date;
18722                                 u_estimated_finish_date(l_index1) := l_clex_estimated_finish_date;
18723                                 u_actual_start_date(l_index1) := l_clex_actual_start_date;
18724                                 u_actual_finish_date(l_index1) := l_clex_actual_finish_date;
18725                                 IF u_ppl_etc_effort_to_date(l_index1) > 0 OR u_eqpmt_etc_effort_to_date(l_index1) > 0 OR u_oth_etc_qty(l_index1) > 0 THEN
18726                                         u_actual_finish_date(l_index1) := null;
18727                                 END IF;
18728                         END IF;
18729 
18730                         u_base_progress_status_code(l_index1)  := l_date_override_flag;
18731                         IF g1_debug_mode  = 'Y' THEN
18732                                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals', x_Msg => 'l_date_override_flag='||l_date_override_flag, x_Log_Level=> 3);
18733                         END IF;
18734                 END IF;
18735         END LOOP;
18736 
18737         pa_debug.log_message('GET_SUMM_ACT: End Progress Client Extension.', 1);
18738     -- Bug 4533112 End
18739 
18740 
18741    if p_plan_res_level = 'Y' then
18742     --- do bulk insert
18743     forall l_index1 in 1..l_index2
18744       insert into pa_progress_rollup(
18745                     PROGRESS_ROLLUP_ID
18746                    ,PROJECT_ID
18747                    ,OBJECT_ID
18748                    ,OBJECT_TYPE
18749                    ,AS_OF_DATE
18750                    ,OBJECT_VERSION_ID
18751                    ,LAST_UPDATE_DATE
18752                    ,LAST_UPDATED_BY
18753                    ,CREATION_DATE
18754                    ,CREATED_BY
18755                    ,PROGRESS_STATUS_CODE
18756                    ,LAST_UPDATE_LOGIN
18757                    ,INCREMENTAL_WORK_QUANTITY
18758                    ,CUMULATIVE_WORK_QUANTITY
18759                    ,BASE_PERCENT_COMPLETE
18760                    ,EFF_ROLLUP_PERCENT_COMP
18761                    ,COMPLETED_PERCENTAGE
18762                    ,ESTIMATED_START_DATE
18763                    ,ESTIMATED_FINISH_DATE
18764                    ,ACTUAL_START_DATE
18765                    ,ACTUAL_FINISH_DATE
18766                    ,ESTIMATED_REMAINING_EFFORT
18767                    ,RECORD_VERSION_NUMBER
18768                    ,BASE_PERCENT_COMP_DERIV_CODE
18769                    ,BASE_PROGRESS_STATUS_CODE
18770                    ,EFF_ROLLUP_PROG_STAT_CODE
18771                    ,PERCENT_COMPLETE_ID
18772                    ,STRUCTURE_TYPE
18773                    ,PROJ_ELEMENT_ID
18774                    ,STRUCTURE_VERSION_ID
18775                    ,PPL_ACT_EFFORT_TO_DATE
18776                    ,EQPMT_ACT_EFFORT_TO_DATE
18777                    ,EQPMT_ETC_EFFORT
18778                    ,OTH_ACT_COST_TO_DATE_TC
18779                    ,OTH_ACT_RAWCOST_TO_DATE_TC
18780                    ,OTH_ACT_COST_TO_DATE_FC
18781                    ,OTH_ACT_RAWCOST_TO_DATE_FC
18782                    ,OTH_ACT_COST_TO_DATE_PC
18783                    ,OTH_ACT_RAWCOST_TO_DATE_PC
18784                    ,OTH_ETC_COST_TC
18785                    ,OTH_ETC_RAWCOST_TC
18786                    ,OTH_ETC_COST_FC
18787                    ,OTH_ETC_RAWCOST_FC
18788                    ,OTH_ETC_COST_PC
18789                    ,OTH_ETC_RAWCOST_PC
18790                    ,PPL_ACT_COST_TO_DATE_TC
18791                    ,PPL_ACT_RAWCOST_TO_DATE_TC
18792                    ,PPL_ACT_COST_TO_DATE_FC
18793                    ,PPL_ACT_RAWCOST_TO_DATE_FC
18794                    ,PPL_ACT_COST_TO_DATE_PC
18795                    ,PPL_ACT_RAWCOST_TO_DATE_PC
18796                    ,PPL_ETC_COST_TC
18797                    ,PPL_ETC_RAWCOST_TC
18798                    ,PPL_ETC_COST_FC
18799                    ,PPL_ETC_RAWCOST_FC
18800                    ,PPL_ETC_COST_PC
18801                    ,PPL_ETC_RAWCOST_PC
18802                    ,EQPMT_ACT_COST_TO_DATE_TC
18803                    ,EQPMT_ACT_RAWCOST_TO_DATE_TC
18804                    ,EQPMT_ACT_COST_TO_DATE_FC
18805                    ,EQPMT_ACT_RAWCOST_TO_DATE_FC
18806                    ,EQPMT_ACT_COST_TO_DATE_PC
18807                    ,EQPMT_ACT_RAWCOST_TO_DATE_PC
18808                    ,EQPMT_ETC_COST_TC
18809                    ,EQPMT_ETC_RAWCOST_TC
18810                    ,EQPMT_ETC_COST_FC
18811                    ,EQPMT_ETC_RAWCOST_FC
18812                    ,EQPMT_ETC_COST_PC
18813                    ,EQPMT_ETC_RAWCOST_PC
18814                    ,EARNED_VALUE
18815                    ,TASK_WT_BASIS_CODE
18816                    ,SUBPRJ_PPL_ACT_EFFORT
18817                    ,SUBPRJ_EQPMT_ACT_EFFORT
18818                    ,SUBPRJ_PPL_ETC_EFFORT
18819                    ,SUBPRJ_EQPMT_ETC_EFFORT
18820                    ,SUBPRJ_OTH_ACT_COST_TO_DT_TC
18821                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC
18822                    ,SUBPRJ_OTH_ACT_COST_TO_DT_FC
18823                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC
18824                    ,SUBPRJ_OTH_ACT_COST_TO_DT_PC
18825                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC
18826                    ,SUBPRJ_PPL_ACT_COST_TC
18827                    ,SUBPRJ_PPL_ACT_RAWCOST_TC
18828                    ,SUBPRJ_PPL_ACT_COST_FC
18829                    ,SUBPRJ_PPL_ACT_RAWCOST_FC
18830                    ,SUBPRJ_PPL_ACT_COST_PC
18831                    ,SUBPRJ_PPL_ACT_RAWCOST_PC
18832                    ,SUBPRJ_EQPMT_ACT_COST_TC
18833                    ,SUBPRJ_EQPMT_ACT_RAWCOST_TC
18834                    ,SUBPRJ_EQPMT_ACT_COST_FC
18835                    ,SUBPRJ_EQPMT_ACT_RAWCOST_FC
18836                    ,SUBPRJ_EQPMT_ACT_COST_PC
18837                    ,SUBPRJ_EQPMT_ACT_RAWCOST_PC
18838                    ,SUBPRJ_OTH_ETC_COST_TC
18839                    ,SUBPRJ_OTH_ETC_RAWCOST_TC
18840                    ,SUBPRJ_OTH_ETC_COST_FC
18841                    ,SUBPRJ_OTH_ETC_RAWCOST_FC
18842                    ,SUBPRJ_OTH_ETC_COST_PC
18843                    ,SUBPRJ_OTH_ETC_RAWCOST_PC
18844                    ,SUBPRJ_PPL_ETC_COST_TC
18845                    ,SUBPRJ_PPL_ETC_RAWCOST_TC
18846                    ,SUBPRJ_PPL_ETC_COST_FC
18847                    ,SUBPRJ_PPL_ETC_RAWCOST_FC
18848                    ,SUBPRJ_PPL_ETC_COST_PC
18849                    ,SUBPRJ_PPL_ETC_RAWCOST_PC
18850                    ,SUBPRJ_EQPMT_ETC_COST_TC
18851                    ,SUBPRJ_EQPMT_ETC_RAWCOST_TC
18852                    ,SUBPRJ_EQPMT_ETC_COST_FC
18853                    ,SUBPRJ_EQPMT_ETC_RAWCOST_FC
18854                    ,SUBPRJ_EQPMT_ETC_COST_PC
18855                    ,SUBPRJ_EQPMT_ETC_RAWCOST_PC
18856                    ,SUBPRJ_EARNED_VALUE
18857                    ,CURRENT_FLAG
18858                    ,PROJFUNC_COST_RATE_TYPE
18859                    ,PROJFUNC_COST_EXCHANGE_RATE
18860                    ,PROJFUNC_COST_RATE_DATE
18861                    ,PROJ_COST_RATE_TYPE
18862                    ,PROJ_COST_EXCHANGE_RATE
18863                    ,PROJ_COST_RATE_DATE
18864                    ,TXN_CURRENCY_CODE
18865                    ,PROG_PA_PERIOD_NAME
18866                    ,PROG_GL_PERIOD_NAME
18867                    ,OTH_QUANTITY_TO_DATE
18868                    ,OTH_ETC_QUANTITY
18869           -- Add cbs_element_id
18870                    ,CBS_ELEMENT_ID
18871              ) VALUES (PROGRESS_ROLLUP_ID(l_index1)
18872                    ,PROJECT_ID(l_index1)
18873                    ,OBJECT_ID(l_index1)
18874                    ,OBJECT_TYPE(l_index1)
18875                    ,AS_OF_DATE(l_index1)
18876                    ,OBJECT_VERSION_ID(l_index1)
18877                    ,LAST_UPDATE_DATE(l_index1)
18878                    ,LAST_UPDATED_BY(l_index1)
18879                    ,CREATION_DATE(l_index1)
18880                    ,CREATED_BY(l_index1)
18881                    ,PROGRESS_STATUS_CODE(l_index1)
18882                    ,LAST_UPDATE_LOGIN(l_index1)
18883                    ,INCREMENTAL_WORK_QUANTITY(l_index1)
18884                    ,CUMULATIVE_WORK_QUANTITY(l_index1)
18885                    ,BASE_PERCENT_COMPLETE(l_index1)
18886                    ,EFF_ROLLUP_PERCENT_COMP(l_index1)
18887                    ,COMPLETED_PERCENTAGE(l_index1)
18888                    ,ESTIMATED_START_DATE(l_index1)
18889                    ,ESTIMATED_FINISH_DATE(l_index1)
18890                    ,ACTUAL_START_DATE(l_index1)
18891                    ,ACTUAL_FINISH_DATE(l_index1)
18892                    ,ESTIMATED_REMAINING_EFFORT(l_index1)
18893                    ,record_version_number(l_index1)
18894                    ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
18895                    ,BASE_PROGRESS_STATUS_CODE(l_index1)
18896                    ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
18897                    ,PERCENT_COMPLETE_ID(l_index1)
18898                    ,STRUCTURE_TYPE(l_index1)
18899                    ,PROJ_ELEMENT_ID(l_index1)
18900                    ,STRUCTURE_VERSION_ID(l_index1)
18901                    ,PPL_ACT_EFFORT_TO_DATE(l_index1)
18902                    ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
18903                    ,EQPMT_ETC_EFFORT(l_index1)
18904                    --Bug 3801745 Begin
18905                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_TC(l_index1), null)
18906                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18907                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_FC(l_index1), null)
18908                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18909                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_PC(l_index1), null)
18910                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18911                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_TC(l_index1), null)
18912                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_TC(l_index1), null)
18913                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_FC(l_index1), null)
18914                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_FC(l_index1), null)
18915                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_PC(l_index1), null)
18916                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_PC(l_index1), null)
18917                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_TC(l_index1), null)
18918                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18919                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_FC(l_index1), null)
18920                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18921                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_PC(l_index1), null)
18922                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18923                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_TC(l_index1), null)
18924                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_TC(l_index1), null)
18925                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_FC(l_index1), null)
18926                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_FC(l_index1), null)
18927                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_PC(l_index1), null)
18928                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_PC(l_index1), null)
18929                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
18930                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
18931                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
18932                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
18933                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
18934                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
18935                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_TC(l_index1), null)
18936                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_TC(l_index1), null)
18937                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_FC(l_index1), null)
18938                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_FC(l_index1), null)
18939                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_PC(l_index1), null)
18940                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_PC(l_index1), null)
18941                    --Bug 3801745 End
18942                    ,EARNED_VALUE(l_index1)
18943                    ,TASK_WT_BASIS_CODE(l_index1)
18944                    ,SUBPRJ_PPL_ACT_EFFORT(l_index1)
18945                    ,SUBPRJ_EQPMT_ACT_EFFORT(l_index1)
18946                    ,SUBPRJ_PPL_ETC_EFFORT(l_index1)
18947                    ,SUBPRJ_EQPMT_ETC_EFFORT(l_index1)
18948                    ,SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index1)
18949                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index1)
18950                    ,SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index1)
18951                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index1)
18952                    ,SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index1)
18953                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index1)
18954                    ,SUBPRJ_PPL_ACT_COST_TC(l_index1)
18955                    ,SUBPRJ_PPL_ACT_RAWCOST_TC(l_index1)
18956                    ,SUBPRJ_PPL_ACT_COST_FC(l_index1)
18957                    ,SUBPRJ_PPL_ACT_RAWCOST_FC(l_index1)
18958                    ,SUBPRJ_PPL_ACT_COST_PC(l_index1)
18959                    ,SUBPRJ_PPL_ACT_RAWCOST_PC(l_index1)
18960                    ,SUBPRJ_EQPMT_ACT_COST_TC(l_index1)
18961                    ,SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index1)
18962                    ,SUBPRJ_EQPMT_ACT_COST_FC(l_index1)
18963                    ,SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index1)
18964                    ,SUBPRJ_EQPMT_ACT_COST_PC(l_index1)
18965                    ,SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index1)
18966                    ,SUBPRJ_OTH_ETC_COST_TC(l_index1)
18967                    ,SUBPRJ_OTH_ETC_RAWCOST_TC(l_index1)
18968                    ,SUBPRJ_OTH_ETC_COST_FC(l_index1)
18969                    ,SUBPRJ_OTH_ETC_RAWCOST_FC(l_index1)
18970                    ,SUBPRJ_OTH_ETC_COST_PC(l_index1)
18971                    ,SUBPRJ_OTH_ETC_RAWCOST_PC(l_index1)
18972                    ,SUBPRJ_PPL_ETC_COST_TC(l_index1)
18973                    ,SUBPRJ_PPL_ETC_RAWCOST_TC(l_index1)
18974                    ,SUBPRJ_PPL_ETC_COST_FC(l_index1)
18975                    ,SUBPRJ_PPL_ETC_RAWCOST_FC(l_index1)
18976                    ,SUBPRJ_PPL_ETC_COST_PC(l_index1)
18977                    ,SUBPRJ_PPL_ETC_RAWCOST_PC(l_index1)
18978                    ,SUBPRJ_EQPMT_ETC_COST_TC(l_index1)
18979                    ,SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index1)
18980                    ,SUBPRJ_EQPMT_ETC_COST_FC(l_index1)
18981                    ,SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index1)
18982                    ,SUBPRJ_EQPMT_ETC_COST_PC(l_index1)
18983                    ,SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index1)
18984                    ,SUBPRJ_EARNED_VALUE(l_index1)
18985                    ,CURRENT_FLAG(l_index1)
18986                    ,PROJFUNC_COST_RATE_TYPE(l_index1)
18987                    ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
18988                    ,PROJFUNC_COST_RATE_DATE(l_index1)
18989                    ,PROJ_COST_RATE_TYPE(l_index1)
18990                    ,PROJ_COST_EXCHANGE_RATE(l_index1)
18991                    ,PROJ_COST_RATE_DATE(l_index1)
18992                    ,TXN_CURRENCY_CODE(l_index1)
18993                    ,PROG_PA_PERIOD_NAME(l_index1)
18994                    ,PROG_GL_PERIOD_NAME(l_index1)
18995                    ,oth_qty(l_index1)
18996                    ,oth_etc_qty(l_index1)
18997           -- Add cbs_element_id
18998                    ,CBS_ELEMENT_ID(l_index1)
18999                  );
19000         else
19001 
19002     forall l_index1 in 1..l_index2
19003       insert into pa_progress_rollup(
19004                     PROGRESS_ROLLUP_ID
19005                    ,PROJECT_ID
19006                    ,OBJECT_ID
19007                    ,OBJECT_TYPE
19008                    ,AS_OF_DATE
19009                    ,OBJECT_VERSION_ID
19010                    ,LAST_UPDATE_DATE
19011                    ,LAST_UPDATED_BY
19012                    ,CREATION_DATE
19013                    ,CREATED_BY
19014                    ,PROGRESS_STATUS_CODE
19015                    ,LAST_UPDATE_LOGIN
19016                    ,INCREMENTAL_WORK_QUANTITY
19017                    ,CUMULATIVE_WORK_QUANTITY
19018                    ,BASE_PERCENT_COMPLETE
19019                    ,EFF_ROLLUP_PERCENT_COMP
19020                    ,COMPLETED_PERCENTAGE
19021                    ,ESTIMATED_START_DATE
19022                    ,ESTIMATED_FINISH_DATE
19023                    ,ACTUAL_START_DATE
19024                    ,ACTUAL_FINISH_DATE
19025                    ,ESTIMATED_REMAINING_EFFORT
19026                    ,RECORD_VERSION_NUMBER
19027                    ,BASE_PERCENT_COMP_DERIV_CODE
19028                    ,BASE_PROGRESS_STATUS_CODE
19029                    ,EFF_ROLLUP_PROG_STAT_CODE
19030                    ,PERCENT_COMPLETE_ID
19031                    ,STRUCTURE_TYPE
19032                    ,PROJ_ELEMENT_ID
19033                    ,STRUCTURE_VERSION_ID
19034                    ,PPL_ACT_EFFORT_TO_DATE
19035                    ,EQPMT_ACT_EFFORT_TO_DATE
19036                    ,EQPMT_ETC_EFFORT
19037                    ,OTH_ACT_COST_TO_DATE_TC
19038                    ,OTH_ACT_RAWCOST_TO_DATE_TC
19039                    ,OTH_ACT_COST_TO_DATE_FC
19040                    ,OTH_ACT_RAWCOST_TO_DATE_FC
19041                    ,OTH_ACT_COST_TO_DATE_PC
19042                    ,OTH_ACT_RAWCOST_TO_DATE_PC
19043                    ,OTH_ETC_COST_TC
19044                    ,OTH_ETC_RAWCOST_TC
19045                    ,OTH_ETC_COST_FC
19046                    ,OTH_ETC_RAWCOST_FC
19047                    ,OTH_ETC_COST_PC
19048                    ,OTH_ETC_RAWCOST_PC
19049                    ,PPL_ACT_COST_TO_DATE_TC
19050                    ,PPL_ACT_RAWCOST_TO_DATE_TC
19051                    ,PPL_ACT_COST_TO_DATE_FC
19052                    ,PPL_ACT_RAWCOST_TO_DATE_FC
19053                    ,PPL_ACT_COST_TO_DATE_PC
19054                    ,PPL_ACT_RAWCOST_TO_DATE_PC
19055                    ,PPL_ETC_COST_TC
19056                    ,PPL_ETC_RAWCOST_TC
19057                    ,PPL_ETC_COST_FC
19058                    ,PPL_ETC_RAWCOST_FC
19059                    ,PPL_ETC_COST_PC
19060                    ,PPL_ETC_RAWCOST_PC
19061                    ,EQPMT_ACT_COST_TO_DATE_TC
19062                    ,EQPMT_ACT_RAWCOST_TO_DATE_TC
19063                    ,EQPMT_ACT_COST_TO_DATE_FC
19064                    ,EQPMT_ACT_RAWCOST_TO_DATE_FC
19065                    ,EQPMT_ACT_COST_TO_DATE_PC
19066                    ,EQPMT_ACT_RAWCOST_TO_DATE_PC
19067                    ,EQPMT_ETC_COST_TC
19068                    ,EQPMT_ETC_RAWCOST_TC
19069                    ,EQPMT_ETC_COST_FC
19070                    ,EQPMT_ETC_RAWCOST_FC
19071                    ,EQPMT_ETC_COST_PC
19072                    ,EQPMT_ETC_RAWCOST_PC
19073                    ,EARNED_VALUE
19074                    ,TASK_WT_BASIS_CODE
19075                    ,SUBPRJ_PPL_ACT_EFFORT
19076                    ,SUBPRJ_EQPMT_ACT_EFFORT
19077                    ,SUBPRJ_PPL_ETC_EFFORT
19078                    ,SUBPRJ_EQPMT_ETC_EFFORT
19079                    ,SUBPRJ_OTH_ACT_COST_TO_DT_TC
19080                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC
19081                    ,SUBPRJ_OTH_ACT_COST_TO_DT_FC
19082                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC
19083                    ,SUBPRJ_OTH_ACT_COST_TO_DT_PC
19084                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC
19085                    ,SUBPRJ_PPL_ACT_COST_TC
19086                    ,SUBPRJ_PPL_ACT_RAWCOST_TC
19087                    ,SUBPRJ_PPL_ACT_COST_FC
19088                    ,SUBPRJ_PPL_ACT_RAWCOST_FC
19089                    ,SUBPRJ_PPL_ACT_COST_PC
19090                    ,SUBPRJ_PPL_ACT_RAWCOST_PC
19091                    ,SUBPRJ_EQPMT_ACT_COST_TC
19092                    ,SUBPRJ_EQPMT_ACT_RAWCOST_TC
19093                    ,SUBPRJ_EQPMT_ACT_COST_FC
19094                    ,SUBPRJ_EQPMT_ACT_RAWCOST_FC
19095                    ,SUBPRJ_EQPMT_ACT_COST_PC
19096                    ,SUBPRJ_EQPMT_ACT_RAWCOST_PC
19097                    ,SUBPRJ_OTH_ETC_COST_TC
19098                    ,SUBPRJ_OTH_ETC_RAWCOST_TC
19099                    ,SUBPRJ_OTH_ETC_COST_FC
19100                    ,SUBPRJ_OTH_ETC_RAWCOST_FC
19101                    ,SUBPRJ_OTH_ETC_COST_PC
19102                    ,SUBPRJ_OTH_ETC_RAWCOST_PC
19103                    ,SUBPRJ_PPL_ETC_COST_TC
19104                    ,SUBPRJ_PPL_ETC_RAWCOST_TC
19105                    ,SUBPRJ_PPL_ETC_COST_FC
19106                    ,SUBPRJ_PPL_ETC_RAWCOST_FC
19107                    ,SUBPRJ_PPL_ETC_COST_PC
19108                    ,SUBPRJ_PPL_ETC_RAWCOST_PC
19109                    ,SUBPRJ_EQPMT_ETC_COST_TC
19110                    ,SUBPRJ_EQPMT_ETC_RAWCOST_TC
19111                    ,SUBPRJ_EQPMT_ETC_COST_FC
19112                    ,SUBPRJ_EQPMT_ETC_RAWCOST_FC
19113                    ,SUBPRJ_EQPMT_ETC_COST_PC
19114                    ,SUBPRJ_EQPMT_ETC_RAWCOST_PC
19115                    ,SUBPRJ_EARNED_VALUE
19116                    ,CURRENT_FLAG
19117                    ,PROJFUNC_COST_RATE_TYPE
19118                    ,PROJFUNC_COST_EXCHANGE_RATE
19119                    ,PROJFUNC_COST_RATE_DATE
19120                    ,PROJ_COST_RATE_TYPE
19121                    ,PROJ_COST_EXCHANGE_RATE
19122                    ,PROJ_COST_RATE_DATE
19123                    ,TXN_CURRENCY_CODE
19124                    ,PROG_PA_PERIOD_NAME
19125                    ,PROG_GL_PERIOD_NAME
19126                    ,OTH_QUANTITY_TO_DATE
19127                    ,OTH_ETC_QUANTITY
19128              ) VALUES (PROGRESS_ROLLUP_ID(l_index1)
19129                    ,PROJECT_ID(l_index1)
19130                    ,OBJECT_ID(l_index1)
19131                    ,OBJECT_TYPE(l_index1)
19132                    ,AS_OF_DATE(l_index1)
19133                    ,OBJECT_VERSION_ID(l_index1)
19134                    ,LAST_UPDATE_DATE(l_index1)
19135                    ,LAST_UPDATED_BY(l_index1)
19136                    ,CREATION_DATE(l_index1)
19137                    ,CREATED_BY(l_index1)
19138                    ,PROGRESS_STATUS_CODE(l_index1)
19139                    ,LAST_UPDATE_LOGIN(l_index1)
19140                    ,INCREMENTAL_WORK_QUANTITY(l_index1)
19141                    ,CUMULATIVE_WORK_QUANTITY(l_index1)
19142                    ,BASE_PERCENT_COMPLETE(l_index1)
19143                    ,EFF_ROLLUP_PERCENT_COMP(l_index1)
19144                    ,COMPLETED_PERCENTAGE(l_index1)
19145                    ,ESTIMATED_START_DATE(l_index1)
19146                    ,ESTIMATED_FINISH_DATE(l_index1)
19147                    ,ACTUAL_START_DATE(l_index1)
19148                    ,ACTUAL_FINISH_DATE(l_index1)
19149                    ,ESTIMATED_REMAINING_EFFORT(l_index1)
19150                    ,record_version_number(l_index1)
19151                    ,BASE_PERCENT_COMP_DERIV_CODE(l_index1)
19152                    ,BASE_PROGRESS_STATUS_CODE(l_index1)
19153                    ,EFF_ROLLUP_PROG_STAT_CODE(l_index1)
19154                    ,PERCENT_COMPLETE_ID(l_index1)
19155                    ,STRUCTURE_TYPE(l_index1)
19156                    ,PROJ_ELEMENT_ID(l_index1)
19157                    ,STRUCTURE_VERSION_ID(l_index1)
19158                    ,PPL_ACT_EFFORT_TO_DATE(l_index1)
19159                    ,EQPMT_ACT_EFFORT_TO_DATE(l_index1)
19160                    ,EQPMT_ETC_EFFORT(l_index1)
19161                    --Bug 3801745 Begin
19162                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_TC(l_index1), null)
19163                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19164                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_FC(l_index1), null)
19165                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19166                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_COST_TO_DATE_PC(l_index1), null)
19167                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19168                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_TC(l_index1), null)
19169                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_TC(l_index1), null)
19170                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_FC(l_index1), null)
19171                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_FC(l_index1), null)
19172                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_COST_PC(l_index1), null)
19173                    ,decode(l_track_wp_cost_flag, 'Y', OTH_ETC_RAWCOST_PC(l_index1), null)
19174                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_TC(l_index1), null)
19175                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19176                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_FC(l_index1), null)
19177                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19178                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_COST_TO_DATE_PC(l_index1), null)
19179                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19180                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_TC(l_index1), null)
19181                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_TC(l_index1), null)
19182                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_FC(l_index1), null)
19183                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_FC(l_index1), null)
19184                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_COST_PC(l_index1), null)
19185                    ,decode(l_track_wp_cost_flag, 'Y', PPL_ETC_RAWCOST_PC(l_index1), null)
19186                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
19187                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19188                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
19189                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19190                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
19191                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19192                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_TC(l_index1), null)
19193                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_TC(l_index1), null)
19194                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_FC(l_index1), null)
19195                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_FC(l_index1), null)
19196                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_COST_PC(l_index1), null)
19197                    ,decode(l_track_wp_cost_flag, 'Y', EQPMT_ETC_RAWCOST_PC(l_index1), null)
19198                    --Bug 3801745 End
19199                    ,EARNED_VALUE(l_index1)
19200                    ,TASK_WT_BASIS_CODE(l_index1)
19201                    ,SUBPRJ_PPL_ACT_EFFORT(l_index1)
19202                    ,SUBPRJ_EQPMT_ACT_EFFORT(l_index1)
19203                    ,SUBPRJ_PPL_ETC_EFFORT(l_index1)
19204                    ,SUBPRJ_EQPMT_ETC_EFFORT(l_index1)
19205                    ,SUBPRJ_OTH_ACT_COST_TO_DT_TC(l_index1)
19206                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_TC(l_index1)
19207                    ,SUBPRJ_OTH_ACT_COST_TO_DT_FC(l_index1)
19208                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_FC(l_index1)
19209                    ,SUBPRJ_OTH_ACT_COST_TO_DT_PC(l_index1)
19210                    ,SPJ_OTH_ACT_RAWCOST_TO_DT_PC(l_index1)
19211                    ,SUBPRJ_PPL_ACT_COST_TC(l_index1)
19212                    ,SUBPRJ_PPL_ACT_RAWCOST_TC(l_index1)
19213                    ,SUBPRJ_PPL_ACT_COST_FC(l_index1)
19214                    ,SUBPRJ_PPL_ACT_RAWCOST_FC(l_index1)
19215                    ,SUBPRJ_PPL_ACT_COST_PC(l_index1)
19216                    ,SUBPRJ_PPL_ACT_RAWCOST_PC(l_index1)
19217                    ,SUBPRJ_EQPMT_ACT_COST_TC(l_index1)
19218                    ,SUBPRJ_EQPMT_ACT_RAWCOST_TC(l_index1)
19219                    ,SUBPRJ_EQPMT_ACT_COST_FC(l_index1)
19220                    ,SUBPRJ_EQPMT_ACT_RAWCOST_FC(l_index1)
19221                    ,SUBPRJ_EQPMT_ACT_COST_PC(l_index1)
19222                    ,SUBPRJ_EQPMT_ACT_RAWCOST_PC(l_index1)
19223                    ,SUBPRJ_OTH_ETC_COST_TC(l_index1)
19224                    ,SUBPRJ_OTH_ETC_RAWCOST_TC(l_index1)
19225                    ,SUBPRJ_OTH_ETC_COST_FC(l_index1)
19226                    ,SUBPRJ_OTH_ETC_RAWCOST_FC(l_index1)
19227                    ,SUBPRJ_OTH_ETC_COST_PC(l_index1)
19228                    ,SUBPRJ_OTH_ETC_RAWCOST_PC(l_index1)
19229                    ,SUBPRJ_PPL_ETC_COST_TC(l_index1)
19230                    ,SUBPRJ_PPL_ETC_RAWCOST_TC(l_index1)
19231                    ,SUBPRJ_PPL_ETC_COST_FC(l_index1)
19232                    ,SUBPRJ_PPL_ETC_RAWCOST_FC(l_index1)
19233                    ,SUBPRJ_PPL_ETC_COST_PC(l_index1)
19234                    ,SUBPRJ_PPL_ETC_RAWCOST_PC(l_index1)
19235                    ,SUBPRJ_EQPMT_ETC_COST_TC(l_index1)
19236                    ,SUBPRJ_EQPMT_ETC_RAWCOST_TC(l_index1)
19237                    ,SUBPRJ_EQPMT_ETC_COST_FC(l_index1)
19238                    ,SUBPRJ_EQPMT_ETC_RAWCOST_FC(l_index1)
19239                    ,SUBPRJ_EQPMT_ETC_COST_PC(l_index1)
19240                    ,SUBPRJ_EQPMT_ETC_RAWCOST_PC(l_index1)
19241                    ,SUBPRJ_EARNED_VALUE(l_index1)
19242                    ,CURRENT_FLAG(l_index1)
19243                    ,PROJFUNC_COST_RATE_TYPE(l_index1)
19244                    ,PROJFUNC_COST_EXCHANGE_RATE(l_index1)
19245                    ,PROJFUNC_COST_RATE_DATE(l_index1)
19246                    ,PROJ_COST_RATE_TYPE(l_index1)
19247                    ,PROJ_COST_EXCHANGE_RATE(l_index1)
19248                    ,PROJ_COST_RATE_DATE(l_index1)
19249                    ,TXN_CURRENCY_CODE(l_index1)
19250                    ,PROG_PA_PERIOD_NAME(l_index1)
19251                    ,PROG_GL_PERIOD_NAME(l_index1)
19252                    ,oth_qty(l_index1)
19253                    ,oth_etc_qty(l_index1)
19254                  );
19255           end if;
19256 
19257      IF g1_debug_mode  = 'Y' THEN
19258      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19259                     x_Msg => 'Done with bulk insert into pa_progress_rollup',
19260                     x_Log_Level=> 3);
19261      END IF;
19262 
19263      -- Bug 6917961
19264      FOR l_index1 IN 1..l_index3 LOOP
19265          l_t_progress_status_code := null;
19266          l_t_actual_start_date := null;
19267          l_t_actual_finish_date := null;
19268          l_t_proj_element_id := null;
19269          l_t_object_type := null;
19270          l_t_project_id := null;
19271 
19272      OPEN c_get_prog_roll(u_progress_rollup_id(l_index1));
19273      FETCH c_get_prog_roll INTO
19274            l_t_progress_status_code
19275            , l_t_actual_start_date
19276            , l_t_actual_finish_date
19277            , l_t_proj_element_id
19278            , l_t_object_type
19279            , l_t_project_id;
19280      CLOSE c_get_prog_roll;
19281      u_progress_status_code(l_index1) := l_t_progress_status_code;
19282 
19283      if (l_t_object_type = 'PA_ASSIGNMENTS') then
19284        if (l_t_progress_status_code is null and l_t_actual_start_date is not null
19285         and l_t_actual_finish_date is null) then
19286            l_prog_enable_flag := 'N';
19287            l_prog_stat_code := null;
19288            OPEN cur_prog_setup(l_t_proj_element_id,l_t_project_id);
19289            FETCH cur_prog_setup INTO l_prog_enable_flag, l_prog_stat_code;
19290            CLOSE cur_prog_setup;
19291            if (l_prog_enable_flag = 'Y') then
19292               u_progress_status_code(l_index1) := l_prog_stat_code;
19293            end if;
19294        end if;
19295      end if;
19296 
19297      end loop;
19298      -- Bug 6917961
19299 
19300      --- do bulk update
19301      forall l_index1 in 1..l_index3
19302         update pa_progress_rollup set
19303                     OBJECT_VERSION_ID = u_object_version_id(l_index1)
19304                    ,LAST_UPDATE_DATE = sysdate
19305                    ,LAST_UPDATED_BY = fnd_global.user_id
19306                    ,LAST_UPDATE_LOGIN = fnd_global.login_id
19307                    ,record_version_number = record_version_number + 1
19308                    ,completed_percentage = u_completed_percentage(l_index1)
19309                    ,progress_status_code = u_progress_status_code(l_index1)  -- Bug 6917961
19310                    ,eff_rollup_percent_comp = u_eff_rollup_percent_comp(l_index1)
19311                    ,earned_value = u_earned_val(l_index1)
19312                         --4533112
19313                    ,actual_start_date = u_actual_start_date(l_index1)
19314                    ,estimated_start_date = u_estimated_start_date(l_index1)
19315                    ,estimated_finish_date = u_estimated_finish_date(l_index1)
19316                    ,base_progress_status_code = u_base_progress_status_code(l_index1)
19317                         --4533112
19318                    ,actual_finish_date = u_actual_finish_date(l_index1)
19319                    ,PPL_ACT_EFFORT_TO_DATE = u_PPL_ACT_EFFORT_TO_DATE(l_index1)
19320                    ,EQPMT_ACT_EFFORT_TO_DATE = u_EQPMT_ACT_EFFORT_TO_DATE(l_index1)
19321                    --Bug 3801745 Begin
19322                    ,OTH_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_TC(l_index1), null)
19323                    ,OTH_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19324                    ,OTH_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_FC(l_index1), null)
19325                    ,OTH_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19326                    ,OTH_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_COST_TO_DATE_PC(l_index1), null)
19327                    ,OTH_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_OTH_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19328                    ,PPL_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_TC(l_index1), null)
19329                    ,PPL_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19330                    ,PPL_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_FC(l_index1), null)
19331                    ,PPL_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19332                    ,PPL_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_COST_TO_DATE_PC(l_index1), null)
19333                    ,PPL_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_PPL_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19334                    ,EQPMT_ACT_COST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_TC(l_index1), null)
19335                    ,EQPMT_ACT_RAWCOST_TO_DATE_TC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_TC(l_index1), null)
19336                    ,EQPMT_ACT_COST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_FC(l_index1), null)
19337                    ,EQPMT_ACT_RAWCOST_TO_DATE_FC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_FC(l_index1), null)
19338                    ,EQPMT_ACT_COST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_COST_TO_DATE_PC(l_index1), null)
19339                    ,EQPMT_ACT_RAWCOST_TO_DATE_PC = decode(l_track_wp_cost_flag, 'Y', u_EQPMT_ACT_RAWCOST_TO_DATE_PC(l_index1), null)
19340                    --Bug 3801745 End
19341                    ,OTH_QUANTITY_TO_DATE = u_oth_qty(l_index1)
19342                    ,oth_etc_cost_tc = u_oth_etc_cost_to_date_tc(l_index1)
19343                    ,oth_etc_rawcost_tc = u_oth_etc_rawcost_to_date_tc(l_index1)
19344                    ,oth_etc_cost_pc = u_oth_etc_cost_to_date_pc(l_index1)
19345                    ,oth_etc_rawcost_pc = u_oth_etc_rawcost_to_date_pc(l_index1)
19346                    ,oth_etc_cost_fc = u_oth_etc_cost_to_date_fc(l_index1)
19347                    ,oth_etc_rawcost_fc = u_oth_etc_rawcost_to_date_fc(l_index1)
19348                    ,ppl_etc_cost_tc = u_ppl_etc_cost_to_date_tc(l_index1)
19349                    ,ppl_etc_rawcost_tc = u_ppl_etc_rawcost_to_date_tc(l_index1)
19350                    ,ppl_etc_cost_pc = u_ppl_etc_cost_to_date_pc(l_index1)
19351                    ,ppl_etc_rawcost_pc = u_ppl_etc_rawcost_to_date_pc(l_index1)
19352                    ,ppl_etc_cost_fc = u_ppl_etc_cost_to_date_fc(l_index1)
19353                    ,ppl_etc_rawcost_fc = u_ppl_etc_rawcost_to_date_fc(l_index1)
19354                    ,eqpmt_etc_cost_tc = u_eqpmt_etc_cost_to_date_tc(l_index1)
19355                    ,eqpmt_etc_rawcost_tc = u_eqpmt_etc_rawcost_to_date_tc(l_index1)
19356                    ,eqpmt_etc_cost_pc = u_eqpmt_etc_cost_to_date_pc(l_index1)
19357                    ,eqpmt_etc_rawcost_pc = u_eqpmt_etc_rawcost_to_date_pc(l_index1)
19358                    ,eqpmt_etc_cost_fc = u_eqpmt_etc_cost_to_date_fc(l_index1)
19359                    ,eqpmt_etc_rawcost_fc = u_eqpmt_etc_rawcost_to_date_fc(l_index1)
19360                    ,estimated_remaining_effort = u_ppl_etc_effort_to_date(l_index1)
19361                    ,eqpmt_etc_effort = u_eqpmt_etc_effort_to_date(l_index1)
19362                    ,oth_etc_quantity = u_oth_etc_qty(l_index1)
19363             where progress_rollup_id = u_progress_rollup_id(l_index1);
19364 
19365      IF g1_debug_mode  = 'Y' THEN
19366      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19367                     x_Msg => 'Done with bulk update into pa_progress_rollup',
19368                     x_Log_Level=> 3);
19369      END IF;
19370 
19371      forall l_index1 in 1..l_index4
19372         update pa_progress_rollup set
19373                     CURRENT_FLAG = 'N'
19374             where progress_rollup_id = u1_progress_rollup_id(l_index1);
19375 
19376      IF g1_debug_mode  = 'Y' THEN
19377      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19378                     x_Msg => 'Done with bulk update of current flag in pa_progress_rollup',
19379                     x_Log_Level=> 3);
19380      END IF;
19381 
19382      pa_debug.log_message('GET_SUMM_ACT: Done insert/update of pa_progress_rollup.', 1);
19383 
19384      if ((l_index2 > 0 or l_index3 > 0) and p_plan_res_level = 'N') then
19385         --- now we are done with updating all actuals
19386         --- we need to rollup data for the l_temp_as_of_date
19387         open rollup_method;
19388         fetch rollup_method into l_task_wt_basis_code;
19389         close rollup_method;
19390 
19391         begin
19392              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19393                     x_Msg => 'Calling rollup_progress_pvt l_project_id='||l_project_id||', str ver id='||latest_wp_struct_ver_ids_tbl(l_index)||',l_temp_as_of_date='||l_temp_as_of_date ,
19394                     x_Log_Level=> 3);
19395 
19396           pa_progress_pub.rollup_progress_pvt(P_INIT_MSG_LIST  => FND_API.G_FALSE,
19397                                          P_VALIDATE_ONLY  => FND_API.G_FALSE,
19398                                          P_PROGRESS_MODE  => 'FUTURE',
19399                                          P_PROJECT_ID     => l_project_id,
19400                                          P_OBJECT_TYPE    => 'PA_STRUCTURES',
19401                                          P_AS_OF_DATE     => l_temp_as_of_date,
19402                                          P_PROCESS_WHOLE_TREE  => 'Y',
19403                                          P_STRUCTURE_VERSION_ID => latest_wp_struct_ver_ids_tbl(l_index),
19404                                          P_STRUCTURE_TYPE    => 'WORKPLAN',
19405                                          P_WP_ROLLUP_METHOD  => l_task_wt_basis_code,
19406                                          P_ROLLUP_ENTIRE_WBS => 'Y',
19407                                          X_RETURN_STATUS  => x_return_status,
19408                                          X_MSG_COUNT     => x_msg_count,
19409                                          X_MSG_DATA => x_msg_data);
19410              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19411                     x_Msg => 'After call x_return_status='||x_return_status ,
19412                     x_Log_Level=> 3);
19413 
19414 
19415          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19416               pa_debug.log_message('GET_SUMM_ACT: Rollup_Progress_Pvt returned error.', 1);
19417               -- Added for bug 5526638
19418               l_err_msg := 'Error in rollup of progress attributes';
19419               RAISE  FND_API.G_EXC_ERROR;
19420            END IF;
19421 
19422          IF g1_debug_mode  = 'Y' THEN
19423            pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19424                     x_Msg => 'Done with rollup for this project.',
19425                     x_Log_Level=> 3);
19426          END IF;
19427        EXCEPTION when others then
19428          x_return_status := 'E';
19429          pa_debug.log_message('GET_SUMM_ACT: Exception in rollup of progress attributes.', 1);
19430          fnd_msg_pub.add_exc_msg(p_pkg_name    => 'PA_PROGRESS_PUB',
19431                             p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19432                             p_error_text     => SUBSTRB('pa_progress_pub.rollup_progress_pvt:'||SQLERRM,1,120));
19433          -- Added for bug 5526638
19434          l_err_msg := substrb('Exception in rollup of progress attributes :'||SQLERRM,1,240);
19435          raise;
19436        end;
19437        if (proj_pgm_level_tbl(l_index) > 1) then
19438          begin
19439            --- call program rollup api only when project level is > 1
19440              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19441                     x_Msg => 'Calling program_rollup_pvt l_project_id='||l_project_id||', str ver id='||latest_wp_struct_ver_ids_tbl(l_index)||',l_temp_as_of_date='||l_temp_as_of_date ,
19442                     x_Log_Level=> 3);
19443 
19444            pa_progress_pvt.program_rollup_pvt(p_init_msg_list    => 'F'
19445                                   ,p_validate_only        => 'F'
19446                                   ,p_project_id           => l_project_id
19447                                   ,p_as_of_date           => l_temp_as_of_date
19448                                   ,p_structure_type       => 'WORKPLAN'
19449                                   ,p_structure_ver_id     => latest_wp_struct_ver_ids_tbl(l_index)
19450                                   ,x_return_status        => x_return_status
19451                                   ,x_msg_count            => x_msg_count
19452                                   ,x_msg_data             => x_msg_data);
19453              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19454                     x_Msg => 'After call x_return_status='||x_return_status ,
19455                     x_Log_Level=> 3);
19456 
19457 
19458            IF g1_debug_mode  = 'Y' THEN
19459               pa_debug.write(x_Module=>'PA_PROGRESS_PUB.GET_SUMMMARIZED_ACTUALS',
19460               x_Msg => 'After Calling program_rollup_pvt return_status='||x_return_status,            x_Log_Level=> 3);
19461            END IF;
19462            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19463               pa_debug.log_message('GET_SUMM_ACT: Program_Rollup_Pvt returned error.', 1);
19464               -- Added for bug 5526638
19465               l_err_msg := 'Error in program rollup';
19466               RAISE  FND_API.G_EXC_ERROR;
19467            END IF;
19468          EXCEPTION when others then
19469            x_return_status := 'E';
19470            pa_debug.log_message('GET_SUMM_ACT: Exception in program rollup.', 1);
19471            fnd_msg_pub.add_exc_msg(p_pkg_name  => 'PA_PROGRESS_PUB',
19472                               p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19473                               p_error_text     => SUBSTRB('pa_progress_pub.program_rollup_pvt:'||SQLERRM,1,120));
19474            -- Added for bug 5526638
19475            l_err_msg := substrb('Exception in program rollup :'||SQLERRM,1,240);
19476            raise;
19477          end;
19478        end if;
19479      end if;
19480     --- and also for future as of dates, call future rollup api ??
19481     --- we insert ETC in plan lines table for those assignments which have progress records but no actuals
19482 
19483        /* Begin: Fix for Bug # 5526638. */
19484      EXCEPTION when others then
19485      /* Added for Bug #5659575 */
19486       if p_extraction_type = 'PUBLISH' then
19487         raise;
19488       else
19489         l_act_err_flag(l_index) := 1;
19490         /* Commented and Modified for Bug #6156129
19491         l_act_err_msg(l_index)  := l_err_msg; */
19492         l_act_err_msg(l_index)  := nvl(l_err_msg, SUBSTRB('PA_PROGRESS_PUB.GET_SUMMARIZED_ACTUALS: '|| SQLERRM,1,240));
19493         l_act_out_report        := 'Y';
19494         Rollback to ACT_PROJECT;
19495       end if;
19496      END; --- Skipping Begin
19497     /* End: Fix for Bug # 5526638. */
19498 
19499     end loop;  --- for each project
19500 
19501   else
19502     pa_debug.log_message('GET_SUMM_ACT: Get_summarized_data returned error.', 1);
19503     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19504                     x_Msg => 'pji_fm_xbs_accum_utils.get_summarized_data returned error',
19505                     x_Log_Level=> 3);
19506   end if; -- if status is not success
19507 
19508    ---here call the budget lines api
19509    IF g1_debug_mode  = 'Y' THEN
19510      pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19511                     x_Msg => 'Calling PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
19512                     x_Log_Level=> 3);
19513    END IF;
19514 
19515 	 --   FORALL i IN 1..l_index_etc
19516  	 -- 6266824 change : changed the source of i for the for loop
19517  	 -- as i was not getting set properly
19518 
19519     if ( etc_project_id.count > 0 )  then
19520     FORALL i IN ETC_PROJECT_ID.first..ETC_PROJECT_ID.last
19521        INSERT INTO PJI_FM_EXTR_PLAN_LINES(
19522             PROJECT_ID
19523            ,PROJECT_ORG_ID
19524            ,PROJECT_ELEMENT_ID
19525            ,STRUCT_VER_ID
19526            ,PERIOD_NAME
19527            ,CALENDAR_TYPE
19528            ,END_DATE
19529            ,RBS_ELEMENT_ID
19530            ,PLAN_VERSION_ID
19531            ,PLAN_TYPE_ID
19532            ,WP_VERSION_FLAG
19533            ,ROLLUP_TYPE
19534            ,TXN_CURRENCY_CODE
19535            ,ETC_QUANTITY
19536            ,ETC_TXN_BURDENED_COST
19537            ,ETC_PRJ_BURDENED_COST
19538            ,ETC_PFC_BURDENED_COST
19539            ,ETC_TXN_RAW_COST
19540            ,ETC_PRJ_RAW_COST
19541            ,ETC_PFC_RAW_COST
19542            ,RESOURCE_CLASS_CODE
19543            ,RATE_BASED_FLAG
19544            ,PRJ_CURRENCY_CODE
19545            ,PFC_CURRENCY_CODE
19546            ,CBS_ELEMENT_ID)
19547        VALUES( ETC_PROJECT_ID(i)
19548               ,ETC_PROJECT_ORG_ID(i)
19549               ,ETC_PROJECT_ELEMENT_ID(i)
19550               ,ETC_STRUCT_VER_ID(i)
19551               ,ETC_PERIOD_NAME(i)
19552               ,ETC_CALENDAR_TYPE(i)
19553               ,ETC_END_DATE(i)
19554               ,ETC_RBS_ELEMENT_ID(i)
19555               ,ETC_PLAN_VERSION_ID(i)
19556               ,ETC_PLAN_TYPE_ID(i)
19557               ,ETC_WP_VERSION_FLAG(i)
19558               ,ETC_ROLLUP_TYPE(i)
19559               ,ETC_TXN_CURRENCY_CODE(i)
19560               ,ETC_QUANTITY(i)
19561               ,ETC_TXN_BURDENED_COST(i)
19562               ,ETC_PRJ_BURDENED_COST(i)
19563               ,ETC_PFC_BURDENED_COST(i)
19564               ,ETC_TXN_RAW_COST(i)
19565               ,ETC_PRJ_RAW_COST(i)
19566               ,ETC_PFC_RAW_COST(i)
19567               ,ETC_RESOURCE_CLASS_CODE(i)
19568               ,ETC_RATE_BASED_FLAG(i)
19569               ,ETC_PRJ_CURRENCY_CODE(i)
19570               ,ETC_PFC_CURRENCY_CODE(i)
19571               ,ETC_CBS_ELEMENT_ID(i));
19572     end if;
19573 
19574 
19575    -- BEGIN: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
19576 
19577    -- Bulk insert into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
19578    pa_debug.log_message('GET_SUMM_ACT: Before inserting records in PA_PROG_ACT_BY_PERIOD_TEMP. Record Count = '||l_t_index, 1);
19579 
19580    delete from PA_PROG_ACT_BY_PERIOD_TEMP;
19581 
19582    FORALL i IN 1..l_t_index
19583       INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP(
19584              project_id
19585             ,structure_version_id
19586             ,task_id
19587             ,resource_assignment_id
19588             ,as_of_date
19589             ,actual_cost
19590             ,actual_effort
19591             ,period_name
19592             ,txn_currency_code
19593             ,actual_cost_pc
19594             ,actual_cost_fc
19595             ,actual_rawcost
19596             ,actual_rawcost_pc
19597             ,actual_rawcost_fc
19598             ,hidden_res_assgn_id
19599             ,resource_list_member_id
19600             ,current_flag
19601             ,object_type
19602             ,percent_complete_id
19603             ,attribute1
19604             ,attribute2
19605             ,attribute3
19606             ,attribute4
19607             ,attribute5
19608             ,attribute6
19609             ,start_date
19610             ,finish_date)
19611       VALUES (
19612              t_PROJECT_ID(i)
19613             ,t_STRUCTURE_VERSION_ID(i)
19614             ,t_TASK_ID(i)
19615             ,t_RESOURCE_ASSIGNMENT_ID(i)
19616             ,t_AS_OF_DATE(i)
19617             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST(i), null)
19618             ,t_ACTUAL_EFFORT(i)
19619             ,t_PERIOD_NAME(i)
19620             ,t_TXN_CURRENCY_CODE(i)
19621             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_PC(i), null)
19622             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_COST_FC(i), null)
19623             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST(i), null)
19624             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_PC(i), null)
19625             ,decode(t_track_wp_cost_flag(i), 'Y', t_ACTUAL_RAWCOST_FC(i), null)
19626             ,t_HIDDEN_RES_ASSGN_ID(i)
19627             ,t_RESOURCE_LIST_MEMBER_ID(i)
19628             ,t_CURRENT_FLAG(i)
19629             ,t_OBJECT_TYPE(i)
19630             ,t_PERCENT_COMPLETE_ID(i)
19631             ,to_char(null)
19632             ,to_char(null)
19633             ,to_char(null)
19634             ,to_number(null)
19635             ,to_number(null)
19636             ,to_number(null)
19637             ,t_min_start_date(i)
19638             ,t_max_end_date(i));
19639 
19640    -- END: Changes to take care of period flagged rows from the pji temporary table: pji_fm_xbs_accum_tmp1.
19641 
19642    /* Begin: Fix for Bug # 5526638. */
19643     /* Added If for Bug # 5659575*/
19644    if p_extraction_type <> 'PUBLISH' then
19645     FOR i IN 1..proj_ids_tbl.COUNT loop
19646        if l_act_err_flag(i) = 0 and (l_t_index <> 0) then   /* Added (l_t_index <> 0) for bug 6163049 */
19647        BEGIN
19648        SAVEPOINT   ACT_FP_PROJECT;
19649 
19650          skip_proj_ids_tbl.delete;
19651          skip_latest_wp_str_ver_id_tbl.delete;
19652          skip_proj_thru_dates_tbl.delete;
19653 
19654          skip_proj_ids_tbl.extend;
19655          skip_latest_wp_str_ver_id_tbl.extend;
19656          skip_proj_thru_dates_tbl.extend;
19657 
19658          skip_proj_ids_tbl(1)             := proj_ids_tbl(i);
19659          skip_latest_wp_str_ver_id_tbl(1) := latest_wp_struct_ver_ids_tbl(i);
19660          skip_proj_thru_dates_tbl(1)      := proj_thru_dates_tbl(i);
19661         /* Call this Api in single project mode */
19662         PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
19663             (P_PROJECT_ID_TAB        => skip_proj_ids_tbl,
19664              P_WP_STR_VERSION_ID_TAB => skip_latest_wp_str_ver_id_tbl,
19665              P_ACTUALS_THRU_DATE     => skip_proj_thru_dates_tbl,
19666              P_CALLING_CONTEXT       => 'WP_SUMMARIZED_ACTUAL',
19667              P_extraction_type       => l_extraction_type,
19668              P_COMMIT_FLAG           => 'N',
19669              P_INIT_MSG_FLAG         => 'N',
19670              x_RETURN_STATUS         => x_return_status,
19671              x_MSG_COUNT             => x_msg_count,
19672              x_MSG_DATA              => x_msg_data);
19673          if (x_return_status <> 'S') then
19674               l_err_msg := x_msg_data ;
19675               l_act_err_flag(i)   := 1;
19676               l_act_err_msg(i)    := l_err_msg;
19677               l_act_out_report    := 'Y';
19678               Rollback to ACT_FP_PROJECT;
19679          end if;
19680 
19681 	EXCEPTION WHEN OTHERS THEN
19682              l_err_msg := SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP: '||SQLERRM,1,120);
19683              l_act_err_flag(i)   := 1;
19684              l_act_err_msg(i)    := l_err_msg;
19685              l_act_out_report    := 'Y';
19686              Rollback to ACT_FP_PROJECT;
19687         END;
19688 
19689       end if;
19690 
19691     END LOOP;
19692     x_return_status := 'S';
19693     /* Commented an moved out of if block for bug#5659575
19694     if NVL(l_act_out_report,'N') = 'Y' then
19695        For l_index in 1..proj_ids_tbl.COUNT loop  --- FOR each PROJECT
19696          if l_act_err_flag(l_index) = 1 then
19697            PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id   => proj_ids_tbl(l_index),
19698            p_err_flag     => l_act_err_flag(l_index),
19699            p_err_msg      => l_act_err_msg(l_index));
19700            DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
19701            DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
19702          else
19703            if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
19704            PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id    => proj_ids_tbl(l_index),
19705                         p_calendar_type => calendar_type_tbl(l_index),
19706                         p_end_Date      => proj_thru_dates_tbl(l_index));
19707            end if;
19708          end if;
19709        End Loop;
19710     else
19711       if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
19712          For l_index in 1..proj_ids_tbl.COUNT loop
19713          PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id    => proj_ids_tbl(l_index),
19714                            p_calendar_type => calendar_type_tbl(l_index),
19715                            p_end_Date      => proj_thru_dates_tbl(l_index));
19716          End Loop;
19717       end if;
19718 
19719     end if;*/
19720     /* End: Fix for Bug # 5526638. */
19721    else /* Uncommented for Bug #5659575*/
19722     /* Commented for bug 5526638
19723          Begin: Fix for Bug # 4018249. */
19724 
19725     if (l_t_index <> 0) then
19726 
19727          -- End: Fix for Bug # 4018249.
19728 
19729         begin
19730                 PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
19731                 (P_PROJECT_ID_TAB        => proj_ids_tbl,
19732                 P_WP_STR_VERSION_ID_TAB => latest_wp_struct_ver_ids_tbl,
19733                 P_ACTUALS_THRU_DATE     => proj_thru_dates_tbl,
19734                 P_CALLING_CONTEXT       => 'WP_SUMMARIZED_ACTUAL',
19735                 P_extraction_type       => l_extraction_type,
19736                 P_COMMIT_FLAG           => 'N',
19737                 P_INIT_MSG_FLAG         => 'N',
19738                 x_RETURN_STATUS         => x_return_status,
19739                 x_MSG_COUNT             => x_msg_count,
19740                 x_MSG_DATA              => x_msg_data);
19741 
19742                 if (x_return_status <> 'S') then
19743                     pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned error.', 1);
19744                 end if;
19745 
19746                 IF g1_debug_mode  = 'Y' THEN
19747                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.get_summarized_actuals',
19748                             x_Msg => 'Done PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP',
19749                             x_Log_Level=> 3);
19750                 END IF;
19751 
19752         EXCEPTION when others then
19753                 pa_debug.log_message('GET_SUMM_ACT: PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP returned exception.', 1);
19754                 x_return_status := 'E';
19755                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
19756                             p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19757                             p_error_text     => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
19758                 raise;
19759         end;
19760 
19761         -- Begin: Fix for Bug # 4018249.
19762 
19763     end if;
19764 
19765 	  /* Added for Bug #5659575 */
19766 	  if l_return_status = 'E' then
19767 	   x_return_status := 'E';
19768 	  end if;
19769 
19770          --End: Fix for Bug # 4018249.
19771     end if;
19772 
19773     if p_extraction_type <> 'PUBLISH' then
19774 	l_conc_request_id := FND_GLOBAL.CONC_REQUEST_ID;
19775     end if;
19776      /* Added for bug #5659575 If block executes only in PJI flow*/
19777     if NVL(l_act_out_report,'N') = 'Y' then
19778        For l_index in 1..proj_ids_tbl.COUNT loop  --- FOR each PROJECT
19779          if l_act_err_flag(l_index) = 1 then
19780            PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id   => proj_ids_tbl(l_index),
19781 						p_err_flag     => l_act_err_flag(l_index),
19782 						p_err_msg      => l_act_err_msg(l_index));
19783            DELETE PJI_FM_EXTR_PLAN_LINES where PROJECT_ID = proj_ids_tbl(l_index);
19784            DELETE PA_PROG_ACT_BY_PERIOD_TEMP where PROJECT_ID = proj_ids_tbl(l_index);
19785 	   PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19786 	                                               latest_wp_struct_ver_ids_tbl(l_index),
19787 						       'PRE',
19788 						       l_conc_request_id,
19789 						       l_return_status);
19790 
19791          else
19792            if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W')then
19793            PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id    => proj_ids_tbl(l_index),
19794                                                p_calendar_type => calendar_type_tbl(l_index),
19795                                                p_end_Date      => proj_thru_dates_tbl(l_index));
19796            end if;
19797    	   PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19798                                                latest_wp_struct_ver_ids_tbl(l_index),
19799 					       NULL,
19800 					       l_conc_request_id,
19801 					       l_return_status);
19802 
19803          end if;
19804        End Loop;
19805     else
19806       if (p_plan_res_level = 'Y') and l_get_summ_call_contxt in ('P', 'W') then
19807          For l_index in 1..proj_ids_tbl.COUNT loop
19808          PJI_FM_XBS_ACCUM_UTILS.DELETE_FIN8 (p_project_id    => proj_ids_tbl(l_index),
19809                                              p_calendar_type => calendar_type_tbl(l_index),
19810                                              p_end_Date      => proj_thru_dates_tbl(l_index));
19811  	 if p_extraction_type <> 'PUBLISH' then
19812    	   PA_PROJECT_STRUCTURE_UTILS.SET_PROCESS_CODE(proj_ids_tbl(l_index),
19813                                                latest_wp_struct_ver_ids_tbl(l_index),
19814 					       NULL,
19815 					       l_conc_request_id,
19816 					       l_return_status);
19817 	 end if;
19818 
19819          End Loop;
19820       end if;
19821     end if;
19822 
19823      pa_debug.log_message('GET_SUMM_ACT: Done with Get_Summarized_Actuals.', 1);
19824      --- assigning l_return_status so that if any of the project had issues the program
19825      --- should finish with a warning
19826      /* Commented and moved above for bug#5659575
19827       x_return_status := l_return_status; */
19828      pa_debug.set_process('IGNORE');
19829 EXCEPTION
19830     when l_pji_wp_exception then /* Bug 5526638*/
19831     pa_debug.log_message('GET_SUMM_ACT: Error while calling PJI api', 1);
19832     x_return_status :='E' ;
19833     when others then
19834     x_return_status := 'E';
19835     fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
19836                             p_procedure_name => 'GET_SUMMARIZED_ACTUALS',
19837                             p_error_text     => SUBSTRB('pa_progress_pub.get_summarized_actuals:'||SQLERRM,1,120));
19838     -- 4746476 : Priniting stack
19839     FOR i in 1..fnd_msg_pub.count_msg LOOP
19840 	pa_interface_utils_pub.get_messages (
19841 		        p_encoded        => Fnd_Api.G_FALSE
19842                        ,p_data           => l_data
19843                        ,p_msg_index      => i
19844                        ,p_msg_index_out  => l_msg_index_out );
19845         pa_debug.log_message('GET_SUMM_ACT: Error '||i||' ='||substr(l_data,1,200), 1);
19846     END LOOP;
19847     pa_debug.set_process('IGNORE');
19848     /* Added if condition for bug#5659575 */
19849     if p_extraction_type = 'PUBLISH' then
19850 	RAISE;
19851     end if;
19852 
19853 END GET_SUMMARIZED_ACTUALS;
19854 -- Start of comments
19855 --      API name        : UPDATE_FINANCIAL_TASK_PROGRESS
19856 --      Type            : Public
19857 --      Purpose         : Updates Financial Percent Complete
19858 --      Parameters Desc :
19859 --      p_object_type                   PA_TASKS
19860 --      p_as_of_date                    The as_of_date for which progress to be entered
19861 --      p_object_version_id             The task version id
19862 --      p_structure_version_id          Structure version id of the publsihed or working structure version
19863 --      p_progress_comment              Progress comment
19864 --      p_brief_overview                Brief Overview
19865 --      p_structure_type                FINANCIAL
19866 --      p_rollup_entire_wbs             To indicate if it requires the whole structure rollup, in this
19867 --                                      case it will ignore the passed object and starts with the lowest
19868 --                                      task
19869 --      History         : 29-MAR-04  sdnambia   Written For FPM Development Tracking Bug 3420093
19870 -- End of comments
19871 
19872 --FPM Dev CR 1 : Added following procedure
19873 
19874 PROCEDURE UPDATE_FINANCIAL_TASK_PROGRESS(
19875   p_api_version                 IN      NUMBER          :=1.0
19876  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
19877  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
19878  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
19879  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
19880  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
19881  ,p_debug_mode                  IN      VARCHAR2        :='N'
19882  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19883  ,p_action                      IN      VARCHAR2        :='SAVE'
19884  ,P_rollup_entire_wbs_flag      IN      VARCHAR2        :='N'
19885  ,p_progress_mode               IN      VARCHAR2        :='FUTURE'
19886  ,p_percent_complete_id         IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19887  ,p_project_id                  IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19888  ,p_object_id                   IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19889  ,p_object_version_id           IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19890  ,p_object_type                 IN      VARCHAR2        :='PA_TASKS'
19891  ,p_as_of_date                  IN      DATE            :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
19892  ,p_percent_complete            IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19893  ,p_progress_status_code        IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19894  ,p_progress_comment            IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19895  ,p_brief_overview              IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19896  ,p_record_version_number       IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19897  ,p_pm_product_code             IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
19898  ,p_structure_type              IN      VARCHAR2        :='FINANCIAL'
19899  ,p_task_id                     IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19900  ,p_structure_version_id        IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
19901  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
19902  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
19903  ,x_msg_data                    OUT     NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
19904 IS
19905 
19906    l_api_name                      CONSTANT VARCHAR(30) := 'UPDATE_FINANCIAL_TASK_PROGRESS'             ;
19907    l_api_version                   CONSTANT NUMBER      := 1.0                                          ;
19908    l_return_status                 VARCHAR2(1)                                                          ;
19909    l_msg_count                     NUMBER                                                               ;
19910    l_msg_data                      VARCHAR2(250)                                                        ;
19911    l_data                          VARCHAR2(250)                                                        ;
19912    l_msg_index_out                 NUMBER                                                               ;
19913    l_error_msg_code                VARCHAR2(250)                                                        ;
19914    l_user_id                       NUMBER               := FND_GLOBAL.USER_ID                           ;
19915    l_login_id                      NUMBER               := FND_GLOBAL.LOGIN_ID                          ;
19916    l_task_id                       NUMBER                                                               ;
19917    l_object_id                     NUMBER                                                               ;
19918    l_project_id                    NUMBER                                                               ;
19919    l_percent_complete_id           NUMBER                                                               ;
19920    l_PROGRESS_ROLLUP_ID            NUMBER                                                               ;
19921    l_last_progress_date            DATE                                                                 ;
19922    l_progress_exists_on_aod        VARCHAR2(15)                                                         ;
19923    l_db_action                     VARCHAR2(10)                                                         ;
19924    l_published_flag                VARCHAR2(1)                                                          ;
19925    l_current_flag                  VARCHAR2(1)                                                          ;
19926    l_actual_start_date             DATE                                                                 ;
19927    l_actual_finish_date            DATE                                                                 ;
19928    l_estimated_start_date          DATE                                                                 ;
19929    l_estimated_finish_date         DATE                                                                 ;
19930    l_rollup_rec_ver_number         NUMBER                                                               ;
19931    l_published_by_party_id         NUMBER               := PA_UTILS.get_party_id( l_user_id )           ;
19932    l_object_type                   VARCHAR2(15)         := p_object_type                                ;
19933         -- Bug 3595585 : Initialized l_object_type to p_object_type instead of PA_TASKS
19934    l_structure_version_id          NUMBER                                                               ;
19935    l_published_structure           VARCHAR2(1)                                                          ;
19936    l_object_version_id             NUMBER                                                               ;
19937    g1_debug_mode                   VARCHAR2(1)                                                          ;
19938    l_structure_shared              VARCHAR2(1)                                                          ;
19939    l_brief_overview                VARCHAR2(250)                                                        ;
19940    l_progress_comment              VARCHAR2(4000)                                                       ;
19941    l_pm_product_code               VARCHAR2(30)                                                         ;
19942    l_rollup_method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                    ;
19943    l_lowest_level_task             VARCHAR2(1)                                                          ;
19944 
19945 
19946    l_prog_pa_period_name           VARCHAR2(30)                                                         ;
19947    l_prog_gl_period_name           VARCHAR2(30)                                                         ;
19948 
19949    -- required for compilation
19950    l_percent_complete              NUMBER                                                               ;
19951    l_progress_status_code          VARCHAR2(30)                                                         ;
19952    l_task_status                   VARCHAR2(150)                                                        ;
19953    l_rollup_progress_status        VARCHAR2(150)                                                        ;
19954    l_INCREMENTAL_WORK_QTY          NUMBER                                                               ;
19955    l_CUMULATIVE_WORK_QTY           NUMBER                                                               ;
19956    l_BASE_PERCENT_COMPLETE         NUMBER                                                               ;
19957    l_EFF_ROLLUP_PERCENT_COMP       NUMBER                                                               ;
19958    l_rollup_completed_percentage   NUMBER                                                               ;
19959    l_BASE_PERCENT_COMP_DERIV_CODE  VARCHAR2(30)                                                         ;
19960    l_BASE_PROGRESS_STATUS_CODE     VARCHAR2(30)                                                         ;
19961    l_EFF_ROLLUP_PROG_STAT_CODE     VARCHAR2(150)                                                        ;
19962    l_ACTUAL_WQ_ENTRY_CODE          VARCHAR2(30)                                                         ;
19963    l_wq_enabled_flag               VARCHAR2(1)                                                          ;
19964    l_percent_complete_flag         VARCHAR2(1)                                                          ;
19965    l_allow_collab_prog_entry       VARCHAR2(1)                                                          ;
19966    l_allw_phy_prcnt_cmp_overrides  VARCHAR2(1)                                                          ;
19967    l_task_weight_basis_code        VARCHAR2(30)                                                         ;
19968 
19969 
19970    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
19971    IS
19972    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
19973    FROM pa_proj_elem_ver_structure str, pa_project_statuses status
19974    where str.element_version_id = c_structure_version_id
19975    AND str.project_id = c_project_id
19976    AND str.status_code = status.project_status_code;
19977 
19978    CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
19979    IS
19980    SELECT task_weight_basis_code
19981    FROM pa_proj_progress_attr
19982    WHERE project_id = c_project_id
19983    AND structure_type = c_structure_type;
19984 
19985 
19986    l_record_version_number  NUMBER                                         ; -- FPM Dev CR 6
19987 BEGIN
19988 
19989     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
19990     IF g1_debug_mode  = 'Y' THEN
19991        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'ENTERED', x_Log_Level=> 3);
19992     END IF;
19993 
19994     IF g1_debug_mode  = 'Y' THEN
19995        pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS');
19996     END IF;
19997 
19998     IF (p_commit = FND_API.G_TRUE) THEN
19999       savepoint UPDATE_FINANCIAL_TASK_PROGRESS;
20000     END IF;
20001 
20002     IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
20003       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20004     END IF;
20005 
20006     IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
20007       FND_MSG_PUB.initialize;
20008     END IF;
20009 
20010     IF g1_debug_mode  = 'Y' THEN
20011        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_task_id: '||p_task_id, x_Log_Level=> 3);
20012        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_object_version_id: '||p_object_version_id, x_Log_Level=> 3);
20013        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_project_id: '||p_project_id, x_Log_Level=> 3);
20014        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_object_id: '||p_object_id, x_Log_Level=> 3);
20015        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_as_of_date: '||p_as_of_date, x_Log_Level=> 3);
20016        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_percent_complete_id: '||p_percent_complete_id, x_Log_Level=> 3);
20017        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_percent_complete: '||p_percent_complete, x_Log_Level=> 3);
20018        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_record_version_number: '||p_record_version_number, x_Log_Level=> 3);
20019        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_structure_type: '||p_structure_type, x_Log_Level=> 3);
20020        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'p_structure_version_id: '||p_structure_version_id, x_Log_Level=> 3);
20021     END IF;
20022 
20023 
20024     x_return_status := FND_API.G_RET_STS_SUCCESS;
20025 
20026 
20027     IF p_task_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20028     THEN
20029        l_task_id := 0;
20030     ELSE
20031         -- Bug 3876091 : Added IF for STRUCTURES
20032     IF p_object_type = 'PA_STRUCTURES' THEN
20033         l_task_id := 0;
20034     ELSE
20035         l_task_id := nvl(p_task_id, 0);
20036     END IF;
20037     END IF;
20038 
20039     -- Bug 3919211
20040     IF p_object_type = 'PA_STRUCTURES' THEN
20041     l_task_id := 0;
20042     END IF;
20043 
20044 
20045     IF p_object_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20046     THEN
20047        l_object_id := 0;
20048     ELSE
20049        l_object_id := nvl(p_object_id, 0);
20050     END IF;
20051 
20052     IF p_object_version_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20053     THEN
20054        l_object_version_id := 0;
20055     ELSE
20056        l_object_version_id := nvl(p_object_version_id, 0);
20057     END IF;
20058 
20059     IF p_brief_overview = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20060     THEN
20061        l_brief_overview := null;
20062     ELSE
20063        l_brief_overview := p_brief_overview;
20064     END IF;
20065 
20066     IF p_progress_comment = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20067     THEN
20068        l_progress_comment := null;
20069     ELSE
20070        l_progress_comment := p_progress_comment;
20071     END IF;
20072 
20073     IF p_pm_product_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
20074     THEN
20075        l_pm_product_code := null;
20076     ELSE
20077        l_pm_product_code := p_pm_product_code;
20078     END IF;
20079 
20080     -- Bug 4938333 Begin
20081     -- In case of financial struture, no need to check for published version
20082     -- populate structure_version_id always null.
20083     /*
20084     OPEN cur_check_published_version(p_structure_version_id, p_project_id);
20085     FETCH cur_check_published_version INTO l_published_structure;
20086     CLOSE cur_check_published_version;
20087 
20088     IF l_published_structure = 'Y'
20089     THEN
20090         l_structure_version_id := null;
20091     ELSE
20092         l_structure_version_id := p_structure_version_id;
20093     END IF;
20094     */
20095     l_published_structure := 'Y';
20096     l_structure_version_id := null;
20097     -- Bug 4938333 End
20098     IF p_percent_complete = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20099     THEN
20100        l_percent_complete := 0;
20101     ELSE
20102        l_percent_complete := nvl(p_percent_complete,0);
20103        --Changed for BIG 3950574, rtarway
20104        --l_percent_complete := round ( nvl(p_percent_complete,0),2 );
20105     END IF;
20106 
20107     --bug 3850475, Percent complete should be between 0 and 100
20108     IF l_percent_complete < 0 OR l_percent_complete > 100
20109     THEN
20110        PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20111                             ,p_msg_name       => 'PA_FIN_PERCENT_INVALID');
20112        x_msg_data := 'PA_FIN_PERCENT_INVALID';
20113        x_return_status := 'E';
20114        RAISE  FND_API.G_EXC_ERROR;
20115     END IF;
20116 
20117 
20118     ---- if status is CANCELLED
20119     IF PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, p_task_id)) = 'CANCELLED'
20120     THEN
20121       IF p_pm_product_code = 'MSPROJECT' OR p_calling_module <> 'AMG'	--Bug:14537482
20122       THEN
20123         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20124                              ,p_msg_name       => 'PA_TP_CANT_NTER_PRG_CANCEL_MSP'
20125                              ,p_token1 => 'TASK_NAME'
20126                              ,p_value1 => PA_TASK_UTILS.get_task_name(l_task_id)
20127                              ,p_token2 => 'TASK_NUMBER'
20128                              ,p_value2 => PA_TASK_UTILS.get_task_number(l_task_id));
20129         x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
20130         x_return_status := 'E';
20131         RAISE  FND_API.G_EXC_ERROR;
20132       ELSE
20133         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20134                              ,p_msg_name       => 'PA_TP_CANT_NTER_PRG_CANCEL_AMG'
20135                              ,p_token1 => 'TASK_ID'
20136                              ,p_value1 => p_object_id
20137                             );
20138         x_msg_data := 'PA_TP_CANT_NTER_PRG_CANCEL';
20139         x_return_status := 'E';
20140         RAISE  FND_API.G_EXC_ERROR;
20141       END IF;
20142     END IF;
20143     ---- if status is CANCELLED
20144 
20145     ----- Invalid DATE
20146     IF p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE OR p_as_of_date IS NULL
20147     THEN
20148         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
20149                              ,p_msg_name       => 'PA_TP_INV_AOD'
20150                              ,p_token1 => 'AS_OF_DATE'
20151                              ,p_value1 => p_as_of_date);
20152        x_msg_data := 'PA_TP_INV_AOD';
20153        x_return_status := 'E';
20154        RAISE  FND_API.G_EXC_ERROR;
20155     END IF;
20156     ----- Wrong DATE
20157 
20158 
20159     l_last_progress_date := PA_PROGRESS_UTILS.GET_LATEST_AS_OF_DATE(
20160                                      p_task_id        => l_task_id--p_task_id Bug 3876091
20161                                     ,p_project_id     => p_project_id
20162                                     ,p_object_id      => l_object_id
20163                                     ,p_object_type    => l_object_type
20164                                     ,p_structure_type => p_structure_type
20165                             );
20166 
20167 
20168     IF g1_debug_mode  = 'Y' THEN
20169        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_last_progress_date: '||l_last_progress_date, x_Log_Level=> 3);
20170     END IF;
20171 
20172     l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
20173                                       p_project_id         => p_project_id
20174                                      ,p_object_type        => l_object_type
20175                                      ,p_object_version_id  => l_object_version_id
20176                                      ,p_task_id            => l_task_id -- l_object_id Bug 3876091
20177                                      ,p_as_of_date         => p_as_of_date
20178                                      ,p_structure_type     => p_structure_type
20179                      ,p_object_id          => l_object_id -- Bug 3764224
20180                                     );
20181 
20182     IF g1_debug_mode  = 'Y' THEN
20183        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_progress_exists_on_aod: '||l_progress_exists_on_aod, x_Log_Level=> 3);
20184     END IF;
20185 
20186     -- Bug 3603636 : IF record is already published then we maintain the history of changes.
20187     -- So percent complete will have data inserted and roll up table will be updated.
20188     --??? One issue here is tregaring the history_flag in ppc table. I think it shoul dbe updated with Y for the existing
20189     -- record on that as_of_date
20190 --    IF l_progress_exists_on_aod = 'PUBLISHED'
20191 --    THEN
20192 --        l_db_action := 'UPDATE';
20193 --    ELSE
20194         l_db_action := 'CREATE';
20195 --    END IF;
20196 
20197     IF p_as_of_date >= NVL( l_last_progress_date, p_as_of_date ) -- FPM Dev CR 5 : Equal to was missing
20198     THEN
20199         l_current_flag     := 'Y';
20200         UPDATE /*+ INDEX(pa_percent_completes PA_PERCENT_COMPLETES_N3)*/ pa_percent_completes --Added hint for 15876400
20201         SET current_flag = 'N'
20202         WHERE project_id = p_project_id
20203         AND object_id = l_object_id
20204         AND current_flag = 'Y'
20205         AND object_type = l_object_type
20206         AND structure_type = p_structure_type;
20207 
20208         UPDATE pa_progress_rollup
20209         SET current_flag = 'N'
20210         WHERE project_id = p_project_id
20211         AND   object_id = p_object_id
20212         AND   object_type = p_object_type
20213         --AND   as_of_date = p_as_of_date
20214         AND current_flag = 'Y'
20215         --AND   object_version_id = p_object_version_id Bug 3603636, We shd not rely on object_version_id
20216         AND structure_version_id IS NULL
20217         AND structure_type = p_structure_type;
20218 
20219     ELSIF p_as_of_date < NVL( l_last_progress_date, p_as_of_date )
20220     THEN
20221         l_current_flag     := 'N';
20222     END IF;
20223 
20224 
20225 
20226     l_published_flag := 'Y';
20227 
20228     IF g1_debug_mode  = 'Y' THEN
20229        pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_db_action: '||l_db_action, x_Log_Level=> 3);
20230     END IF;
20231 
20232     l_prog_pa_period_name := PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date);
20233     l_prog_gl_period_name := PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date);
20234 
20235 
20236     IF l_db_action = 'CREATE'
20237     THEN
20238             /* Bug 3603636 : Putiing the following code. After confirmation we will uncomment
20239             UPDATE pa_percent_completes
20240             SET history_flag = 'Y'
20241             WHERE project_id = p_project_id
20242             AND object_id = l_object_id
20243             AND trunc(date_computed) = trunc(p_as_of_date)
20244             AND object_type = l_object_type
20245             AND structure_type = p_structure_type;
20246             */
20247 
20248         PA_PERCENT_COMPLETES_PKG.INSERT_ROW(
20249                       p_TASK_ID                  => l_task_id
20250                       ,p_DATE_COMPUTED           => p_as_of_date
20251                       ,p_LAST_UPDATE_DATE        => SYSDATE
20252                       ,p_LAST_UPDATED_BY         => l_user_id
20253                       ,p_CREATION_DATE           => SYSDATE
20254                       ,p_CREATED_BY              => l_user_id
20255                       ,p_LAST_UPDATE_LOGIN       => l_login_id
20256                       ,p_COMPLETED_PERCENTAGE    => l_percent_complete
20257                       ,p_DESCRIPTION             => l_brief_overview
20258                       ,p_PROJECT_ID              => p_project_id
20259                       ,p_PM_PRODUCT_CODE         => l_pm_product_code
20260                       ,p_CURRENT_FLAG            => l_current_flag
20261                       ,p_OBJECT_TYPE             => l_object_type
20262                       ,p_OBJECT_ID               => l_object_id
20263                       ,p_OBJECT_VERSION_ID       => l_object_version_id
20264                       ,p_PROGRESS_STATUS_CODE    => l_progress_status_code
20265                       ,p_ACTUAL_START_DATE       => l_actual_start_date
20266                       ,p_ACTUAL_FINISH_DATE      => l_actual_finish_date
20267                       ,p_ESTIMATED_START_DATE    => l_estimated_start_date
20268                       ,p_ESTIMATED_FINISH_DATE   => l_estimated_finish_date
20269                       ,p_PUBLISHED_FLAG          => l_published_flag
20270                       ,p_PUBLISHED_BY_PARTY_ID   => l_published_by_party_id
20271                       ,p_PROGRESS_COMMENT        => l_progress_comment
20272                       ,p_HISTORY_FLAG            => 'N'
20273                       ,p_status_code             => l_task_status
20274                       ,x_PERCENT_COMPLETE_ID     => l_percent_complete_id
20275                       ,p_ATTRIBUTE_CATEGORY      => null
20276                       ,p_ATTRIBUTE1              => null
20277                       ,p_ATTRIBUTE2              => null
20278                       ,p_ATTRIBUTE3              => null
20279                       ,p_ATTRIBUTE4              => null
20280                       ,p_ATTRIBUTE5              => null
20281                       ,p_ATTRIBUTE6              => null
20282                       ,p_ATTRIBUTE7              => null
20283                       ,p_ATTRIBUTE8              => null
20284                       ,p_ATTRIBUTE9              => null
20285                       ,p_ATTRIBUTE10             => null
20286                       ,p_ATTRIBUTE11             => null
20287                       ,p_ATTRIBUTE12             => null
20288                       ,p_ATTRIBUTE13             => null
20289                       ,p_ATTRIBUTE14             => null
20290                       ,p_ATTRIBUTE15             => null
20291                       ,p_structure_type          => p_structure_type
20292         );
20293 
20294         IF g1_debug_mode  = 'Y' THEN
20295             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPC', x_Log_Level=> 3);
20296         END IF;
20297 
20298         IF g1_debug_mode  = 'Y' THEN
20299             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTING IN PPR', x_Log_Level=> 3);
20300         END IF;
20301 
20302 
20303         l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
20304                            p_project_id                 => p_project_id
20305                           ,p_object_id                  => l_object_id
20306                           ,p_object_type                => l_object_type
20307                           ,p_object_version_id          => l_object_version_id
20308                           ,p_as_of_date                 => p_as_of_date
20309                           ,p_structure_type             => p_structure_type
20310                           ,p_structure_version_id       => l_structure_version_id
20311               ,p_proj_element_id            => l_task_id -- Bug 3919211 --l_object_id -- Bug 3764224
20312                           ,x_record_version_number      => l_rollup_rec_ver_number
20313         );
20314 
20315         IF l_PROGRESS_ROLLUP_ID IS NULL
20316         THEN
20317             PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
20318                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
20319                       ,X_PROJECT_ID                      => p_project_id
20320                       ,X_OBJECT_ID                       => l_object_id
20321                       ,X_OBJECT_TYPE                     => l_object_type
20322                       ,X_AS_OF_DATE                      => p_as_of_date
20323                       ,X_OBJECT_VERSION_ID               => l_object_version_id
20324                       ,X_LAST_UPDATE_DATE                => SYSDATE
20325                       ,X_LAST_UPDATED_BY                 => l_user_id
20326                       ,X_CREATION_DATE                   => SYSDATE
20327                       ,X_CREATED_BY                      => l_user_id
20328                       ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
20329                       ,X_LAST_UPDATE_LOGIN               => l_login_id
20330                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
20331                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
20332                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
20333                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
20334                       ,X_COMPLETED_PERCENTAGE            => l_percent_complete
20335                       ,X_ESTIMATED_START_DATE            => l_estimated_start_date
20336                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
20337                       ,X_ACTUAL_START_DATE               => l_actual_start_date
20338                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
20339                       ,X_EST_REMAINING_EFFORT            => null
20340                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
20341                       ,X_BASE_PROGRESS_STATUS_CODE       => l_BASE_PROGRESS_STATUS_CODE
20342                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
20343                       ,x_percent_complete_id             => l_percent_complete_id
20344                       ,X_STRUCTURE_TYPE                  => p_structure_type
20345                       ,X_PROJ_ELEMENT_ID                 => l_task_id -- p_task_id  Bug 3876091
20346                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
20347                       ,X_PPL_ACT_EFFORT_TO_DATE          => null
20348                       ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
20349                       ,X_EQPMT_ETC_EFFORT                => null
20350                       ,X_OTH_ACT_COST_TO_DATE_TC         => null
20351                       ,X_OTH_ACT_COST_TO_DATE_FC         => null
20352                       ,X_OTH_ACT_COST_TO_DATE_PC         => null
20353                       ,X_OTH_ETC_COST_TC                 => null
20354                       ,X_OTH_ETC_COST_FC                 => null
20355                       ,X_OTH_ETC_COST_PC                 => null
20356                       ,X_PPL_ACT_COST_TO_DATE_TC         => null
20357                       ,X_PPL_ACT_COST_TO_DATE_FC         => null
20358                       ,X_PPL_ACT_COST_TO_DATE_PC         => null
20359                       ,X_PPL_ETC_COST_TC                 => null
20360                       ,X_PPL_ETC_COST_FC                 => null
20361                       ,X_PPL_ETC_COST_PC                 => null
20362                       ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
20363                       ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
20364                       ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
20365                       ,X_EQPMT_ETC_COST_TC               => null
20366                       ,X_EQPMT_ETC_COST_FC               => null
20367                       ,X_EQPMT_ETC_COST_PC               => null
20368                       ,X_EARNED_VALUE                    => null
20369                       ,X_TASK_WT_BASIS_CODE              => null
20370                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
20371                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
20372                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
20373                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
20374                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
20375                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
20376                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
20377                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
20378                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
20379                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
20380                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
20381                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
20382                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
20383                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
20384                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
20385                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
20386                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
20387                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
20388                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
20389                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
20390                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
20391                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
20392                       ,X_SUBPRJ_EARNED_VALUE             => null
20393                       ,X_CURRENT_FLAG                    => l_current_flag
20394                       ,X_PROJFUNC_COST_RATE_TYPE         => null
20395                       ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
20396                       ,X_PROJFUNC_COST_RATE_DATE         => null
20397                       ,X_PROJ_COST_RATE_TYPE             => null
20398                       ,X_PROJ_COST_EXCHANGE_RATE         => null
20399                       ,X_PROJ_COST_RATE_DATE             => null
20400                       ,X_TXN_CURRENCY_CODE               => null
20401                       ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
20402                       ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
20403                       ,X_OTH_QUANTITY_TO_DATE            => null
20404                       ,X_OTH_ETC_QUANTITY                => null
20405                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
20406                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
20407                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
20408                       ,X_OTH_ETC_RAWCOST_TC      => null
20409                       ,X_OTH_ETC_RAWCOST_FC      => null
20410                       ,X_OTH_ETC_RAWCOST_PC      => null
20411                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
20412                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
20413                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
20414                       ,X_PPL_ETC_RAWCOST_TC      => null
20415                       ,X_PPL_ETC_RAWCOST_FC      => null
20416                       ,X_PPL_ETC_RAWCOST_PC      => null
20417                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
20418                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
20419                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
20420                       ,X_EQPMT_ETC_RAWCOST_TC    => null
20421                       ,X_EQPMT_ETC_RAWCOST_FC    => null
20422                       ,X_EQPMT_ETC_RAWCOST_PC    => null
20423                       ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
20424                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
20425                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
20426                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
20427                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
20428                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
20429                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
20430                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
20431                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
20432                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
20433                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
20434                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
20435                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
20436                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
20437                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
20438                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
20439                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
20440                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null);
20441         ELSE
20442             PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
20443                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
20444                       ,X_PROJECT_ID                      => p_project_id
20445                       ,X_OBJECT_ID                       => l_object_id
20446                       ,X_OBJECT_TYPE                     => l_object_type
20447                       ,X_AS_OF_DATE                      => p_as_of_date
20448                       ,X_OBJECT_VERSION_ID               => l_object_version_id
20449                       ,X_LAST_UPDATE_DATE                => SYSDATE
20450                       ,X_LAST_UPDATED_BY                 => l_user_id
20451                       ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
20452                       ,X_LAST_UPDATE_LOGIN               => l_login_id
20453                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
20454                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
20455                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
20456                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
20457                       ,X_COMPLETED_PERCENTAGE            => l_percent_complete
20458                       ,X_ESTIMATED_START_DATE            => l_estimated_start_date
20459                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
20460                       ,X_ACTUAL_START_DATE               => l_actual_start_date
20461                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
20462                       ,X_EST_REMAINING_EFFORT            => null
20463                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
20464                       ,X_BASE_PROGRESS_STATUS_CODE       => l_BASE_PROGRESS_STATUS_CODE
20465                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
20466                       ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
20467                       ,x_percent_complete_id             => l_percent_complete_id
20468                       ,X_STRUCTURE_TYPE                  => p_structure_type
20469                       ,X_PROJ_ELEMENT_ID                 => l_task_id --p_task_id Bug 3876091
20470                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
20471                       ,X_PPL_ACT_EFFORT_TO_DATE          => null
20472                       ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
20473                       ,X_EQPMT_ETC_EFFORT                => null
20474                       ,X_OTH_ACT_COST_TO_DATE_TC         => null
20475                       ,X_OTH_ACT_COST_TO_DATE_FC         => null
20476                       ,X_OTH_ACT_COST_TO_DATE_PC         => null
20477                       ,X_OTH_ETC_COST_TC                 => null
20478                       ,X_OTH_ETC_COST_FC                 => null
20479                       ,X_OTH_ETC_COST_PC                 => null
20480                       ,X_PPL_ACT_COST_TO_DATE_TC         => null
20481                       ,X_PPL_ACT_COST_TO_DATE_FC         => null
20482                       ,X_PPL_ACT_COST_TO_DATE_PC         => null
20483                       ,X_PPL_ETC_COST_TC                 => null
20484                       ,X_PPL_ETC_COST_FC                 => null
20485                       ,X_PPL_ETC_COST_PC                 => null
20486                       ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
20487                       ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
20488                       ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
20489                       ,X_EQPMT_ETC_COST_TC               => null
20490                       ,X_EQPMT_ETC_COST_FC               => null
20491                       ,X_EQPMT_ETC_COST_PC               => null
20492                       ,X_EARNED_VALUE                    => null
20493                       ,X_TASK_WT_BASIS_CODE              => null
20494                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
20495                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
20496                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
20497                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
20498                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
20499                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
20500                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
20501                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
20502                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
20503                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
20504                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
20505                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
20506                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
20507                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
20508                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
20509                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
20510                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
20511                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
20512                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
20513                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
20514                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
20515                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
20516                       ,X_SUBPRJ_EARNED_VALUE             => null
20517                       ,X_CURRENT_FLAG                    => l_current_flag
20518                       ,X_PROJFUNC_COST_RATE_TYPE         => null
20519                       ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
20520                       ,X_PROJFUNC_COST_RATE_DATE         => null
20521                       ,X_PROJ_COST_RATE_TYPE             => null
20522                       ,X_PROJ_COST_EXCHANGE_RATE         => null
20523                       ,X_PROJ_COST_RATE_DATE             => null
20524                       ,X_TXN_CURRENCY_CODE               => null
20525                       ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
20526                       ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
20527                       ,X_OTH_QUANTITY_TO_DATE            => null
20528                       ,X_OTH_ETC_QUANTITY                => null
20529                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
20530                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
20531                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
20532                       ,X_OTH_ETC_RAWCOST_TC      => null
20533                       ,X_OTH_ETC_RAWCOST_FC      => null
20534                       ,X_OTH_ETC_RAWCOST_PC      => null
20535                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
20536                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
20537                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
20538                       ,X_PPL_ETC_RAWCOST_TC      => null
20539                       ,X_PPL_ETC_RAWCOST_FC      => null
20540                       ,X_PPL_ETC_RAWCOST_PC      => null
20541                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
20542                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
20543                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
20544                       ,X_EQPMT_ETC_RAWCOST_TC    => null
20545                       ,X_EQPMT_ETC_RAWCOST_FC    => null
20546                       ,X_EQPMT_ETC_RAWCOST_PC    => null
20547                       ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
20548                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
20549                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
20550                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
20551                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
20552                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
20553                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
20554                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
20555                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
20556                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
20557                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
20558                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
20559                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
20560                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
20561                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
20562                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
20563                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
20564                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null);
20565 
20566                 -- FPM Dev CR 6
20567                 IF Fnd_Msg_Pub.count_msg > 0 THEN
20568                         RAISE  FND_API.G_EXC_ERROR;
20569                 END IF;
20570 
20571 
20572         END IF;
20573 
20574         IF g1_debug_mode  = 'Y' THEN
20575              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'INSERTED IN PPR', x_Log_Level=> 3);
20576         END IF;
20577 
20578     ELSIF l_db_action = 'UPDATE'
20579     THEN
20580 
20581         IF p_percent_complete_id IS NULL OR p_percent_complete_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20582         THEN
20583             l_percent_complete_id := PA_PROGRESS_UTILS.get_ppc_id(
20584                                       p_project_id        => p_project_id
20585                                      ,p_object_id         => l_object_id
20586                                      ,p_task_id           => l_task_id -- l_object_id -- Bug 3764224 Bug 3876091
20587                                      ,p_object_type       => l_object_type
20588                                      ,p_object_version_id => l_object_version_id
20589                                      ,p_as_of_date        => p_as_of_date
20590                                      ,p_structure_type    => p_structure_type
20591                                      );
20592            -- FPM Dev CR 6 Getting Record Version Number too
20593            BEGIN
20594                 SELECT record_version_number into l_record_version_number
20595                 FROM pa_percent_completes
20596                 where percent_complete_id = l_percent_complete_id;
20597            END;
20598 
20599         ELSE
20600            l_percent_complete_id := p_percent_complete_id;
20601            l_record_version_number := p_record_version_number;
20602         END IF;
20603 
20604         IF g1_debug_mode  = 'Y' THEN
20605            pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_percent_complete_id: '||l_percent_complete_id, x_Log_Level=> 3);
20606         END IF;
20607 
20608 
20609         PA_PERCENT_COMPLETES_PKG.UPDATE_ROW(
20610                        p_TASK_ID                 => l_task_id
20611                       ,p_DATE_COMPUTED           => p_as_of_date
20612                       ,p_LAST_UPDATE_DATE        => SYSDATE
20613                       ,p_LAST_UPDATED_BY         => l_user_id
20614                       ,p_LAST_UPDATE_LOGIN       => l_login_id
20615                       ,p_COMPLETED_PERCENTAGE    => l_percent_complete
20616                       ,p_DESCRIPTION             => l_brief_overview
20617                       ,p_PM_PRODUCT_CODE         => l_pm_product_code
20618                       ,p_CURRENT_FLAG            => l_current_flag
20619                       ,p_PERCENT_COMPLETE_ID     => l_percent_complete_id
20620                       ,p_project_id              => p_project_id
20621                       ,p_OBJECT_TYPE             => l_object_type
20622                       ,p_OBJECT_ID               => l_object_id
20623                       ,p_OBJECT_VERSION_ID       => l_object_version_id
20624                       ,p_PROGRESS_STATUS_CODE    => l_progress_status_code
20625                       ,p_ACTUAL_START_DATE       => l_actual_start_date
20626                       ,p_ACTUAL_FINISH_DATE      => l_actual_finish_date
20627                       ,p_ESTIMATED_START_DATE    => l_estimated_start_date
20628                       ,p_ESTIMATED_FINISH_DATE   => l_estimated_finish_date
20629                       ,p_PUBLISHED_FLAG          => l_published_flag
20630                       ,p_PUBLISHED_BY_PARTY_ID   => l_published_by_party_id
20631                       ,p_PROGRESS_COMMENT        => l_progress_comment
20632                       ,p_HISTORY_FLAG            => 'N'
20633                       ,p_status_code             => l_task_status
20634                       ,p_RECORD_VERSION_NUMBER   => l_record_version_number -- FPM Dev CR 6
20635                       ,p_ATTRIBUTE_CATEGORY      => null
20636                       ,p_ATTRIBUTE1              => null
20637                       ,p_ATTRIBUTE2              => null
20638                       ,p_ATTRIBUTE3              => null
20639                       ,p_ATTRIBUTE4              => null
20640                       ,p_ATTRIBUTE5              => null
20641                       ,p_ATTRIBUTE6              => null
20642                       ,p_ATTRIBUTE7              => null
20643                       ,p_ATTRIBUTE8              => null
20644                       ,p_ATTRIBUTE9              => null
20645                       ,p_ATTRIBUTE10             => null
20646                       ,p_ATTRIBUTE11             => null
20647                       ,p_ATTRIBUTE12             => null
20648                       ,p_ATTRIBUTE13             => null
20649                       ,p_ATTRIBUTE14             => null
20650                       ,p_ATTRIBUTE15             => null
20651                       ,p_structure_type          => p_structure_type
20652 
20653         );
20654                 -- FPM Dev CR 6
20655                 IF Fnd_Msg_Pub.count_msg > 0 THEN
20656                         RAISE  FND_API.G_EXC_ERROR;
20657                 END IF;
20658 
20659 
20660 
20661         --update progress rollup
20662         l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
20663                                    p_project_id   => p_project_id
20664                                   ,p_object_id    => l_object_id
20665                                   ,p_object_type  => l_object_type
20666                                   ,p_object_version_id => l_object_version_id
20667                                   ,p_as_of_date   => p_as_of_date
20668                                   ,p_structure_type => p_structure_type
20669                                   ,p_structure_version_id => l_structure_version_id
20670                   ,p_proj_element_id => l_task_id -- Bug 3919211 l_object_id -- Bug 3764224
20671                                   ,x_record_version_number => l_rollup_rec_ver_number
20672                                 );
20673 
20674         IF g1_debug_mode  = 'Y' THEN
20675              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'l_PROGRESS_ROLLUP_ID: '||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
20676         END IF;
20677 
20678 
20679         PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
20680                        X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
20681                       ,X_PROJECT_ID                      => p_project_id
20682                       ,X_OBJECT_ID                       => l_object_id
20683                       ,X_OBJECT_TYPE                     => l_object_type
20684                       ,X_AS_OF_DATE                      => p_as_of_date
20685                       ,X_OBJECT_VERSION_ID               => l_object_version_id
20686                       ,X_LAST_UPDATE_DATE                => SYSDATE
20687                       ,X_LAST_UPDATED_BY                 => l_user_id
20688                       ,X_PROGRESS_STATUS_CODE            => l_rollup_progress_status
20689                       ,X_LAST_UPDATE_LOGIN               => l_login_id
20690                       ,X_INCREMENTAL_WORK_QTY            => l_INCREMENTAL_WORK_QTY
20691                       ,X_CUMULATIVE_WORK_QTY             => l_CUMULATIVE_WORK_QTY
20692                       ,X_BASE_PERCENT_COMPLETE           => l_BASE_PERCENT_COMPLETE
20693                       ,X_EFF_ROLLUP_PERCENT_COMP         => l_EFF_ROLLUP_PERCENT_COMP
20694                       ,X_COMPLETED_PERCENTAGE            => l_percent_complete
20695                       ,X_ESTIMATED_START_DATE            => l_estimated_start_date
20696                       ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
20697                       ,X_ACTUAL_START_DATE               => l_actual_start_date
20698                       ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
20699                       ,X_EST_REMAINING_EFFORT            => null
20700                       ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
20701                       ,X_BASE_PROGRESS_STATUS_CODE       => l_BASE_PROGRESS_STATUS_CODE
20702                       ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_EFF_ROLLUP_PROG_STAT_CODE
20703                       ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
20704                       ,x_percent_complete_id             => l_percent_complete_id
20705                       ,X_STRUCTURE_TYPE                  => p_structure_type
20706                       ,X_PROJ_ELEMENT_ID                 => l_task_id --p_task_id Bug 3876091
20707                       ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
20708                       ,X_PPL_ACT_EFFORT_TO_DATE          => null
20709                       ,X_EQPMT_ACT_EFFORT_TO_DATE        => null
20710                       ,X_EQPMT_ETC_EFFORT                => null
20711                       ,X_OTH_ACT_COST_TO_DATE_TC         => null
20712                       ,X_OTH_ACT_COST_TO_DATE_FC         => null
20713                       ,X_OTH_ACT_COST_TO_DATE_PC         => null
20714                       ,X_OTH_ETC_COST_TC                 => null
20715                       ,X_OTH_ETC_COST_FC                 => null
20716                       ,X_OTH_ETC_COST_PC                 => null
20717                       ,X_PPL_ACT_COST_TO_DATE_TC         => null
20718                       ,X_PPL_ACT_COST_TO_DATE_FC         => null
20719                       ,X_PPL_ACT_COST_TO_DATE_PC         => null
20720                       ,X_PPL_ETC_COST_TC                 => null
20721                       ,X_PPL_ETC_COST_FC                 => null
20722                       ,X_PPL_ETC_COST_PC                 => null
20723                       ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
20724                       ,X_EQPMT_ACT_COST_TO_DATE_FC       => null
20725                       ,X_EQPMT_ACT_COST_TO_DATE_PC       => null
20726                       ,X_EQPMT_ETC_COST_TC               => null
20727                       ,X_EQPMT_ETC_COST_FC               => null
20728                       ,X_EQPMT_ETC_COST_PC               => null
20729                       ,X_EARNED_VALUE                    => null
20730                       ,X_TASK_WT_BASIS_CODE              => null
20731                       ,X_SUBPRJ_PPL_ACT_EFFORT           => null
20732                       ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
20733                       ,X_SUBPRJ_PPL_ETC_EFFORT           => null
20734                       ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
20735                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
20736                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
20737                       ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
20738                       ,X_SUBPRJ_PPL_ACT_COST_TC          => null
20739                       ,X_SUBPRJ_PPL_ACT_COST_FC          => null
20740                       ,X_SUBPRJ_PPL_ACT_COST_PC          => null
20741                       ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
20742                       ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
20743                       ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
20744                       ,X_SUBPRJ_OTH_ETC_COST_TC          => null
20745                       ,X_SUBPRJ_OTH_ETC_COST_FC          => null
20746                       ,X_SUBPRJ_OTH_ETC_COST_PC          => null
20747                       ,X_SUBPRJ_PPL_ETC_COST_TC          => null
20748                       ,X_SUBPRJ_PPL_ETC_COST_FC          => null
20749                       ,X_SUBPRJ_PPL_ETC_COST_PC          => null
20750                       ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
20751                       ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
20752                       ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
20753                       ,X_SUBPRJ_EARNED_VALUE             => null
20754                       ,X_CURRENT_FLAG                    => l_current_flag
20755                       ,X_PROJFUNC_COST_RATE_TYPE         => null
20756                       ,X_PROJFUNC_COST_EXCHANGE_RATE     => null
20757                       ,X_PROJFUNC_COST_RATE_DATE         => null
20758                       ,X_PROJ_COST_RATE_TYPE             => null
20759                       ,X_PROJ_COST_EXCHANGE_RATE         => null
20760                       ,X_PROJ_COST_RATE_DATE             => null
20761                       ,X_TXN_CURRENCY_CODE               => null
20762                       ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
20763                       ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
20764                       ,X_OTH_QUANTITY_TO_DATE            => null
20765                       ,X_OTH_ETC_QUANTITY                => null
20766                       ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
20767                       ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => null
20768                       ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => null
20769                       ,X_OTH_ETC_RAWCOST_TC      => null
20770                       ,X_OTH_ETC_RAWCOST_FC      => null
20771                       ,X_OTH_ETC_RAWCOST_PC      => null
20772                       ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
20773                       ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => null
20774                       ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => null
20775                       ,X_PPL_ETC_RAWCOST_TC      => null
20776                       ,X_PPL_ETC_RAWCOST_FC      => null
20777                       ,X_PPL_ETC_RAWCOST_PC      => null
20778                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
20779                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => null
20780                       ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => null
20781                       ,X_EQPMT_ETC_RAWCOST_TC    => null
20782                       ,X_EQPMT_ETC_RAWCOST_FC    => null
20783                       ,X_EQPMT_ETC_RAWCOST_PC    => null
20784                       ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
20785                       ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
20786                       ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
20787                       ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
20788                       ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
20789                       ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
20790                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
20791                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
20792                       ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
20793                       ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
20794                       ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
20795                       ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
20796                       ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
20797                       ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
20798                       ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
20799                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
20800                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
20801                       ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
20802         );
20803                 -- FPM Dev CR 6
20804                 IF Fnd_Msg_Pub.count_msg > 0 THEN
20805                         RAISE  FND_API.G_EXC_ERROR;
20806                 END IF;
20807 
20808         IF g1_debug_mode  = 'Y' THEN
20809              pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'COMPLETED ', x_Log_Level=> 3);
20810         END IF;
20811 
20812     END IF;  --<l_db_action>
20813 
20814 
20815     IF g1_debug_mode  = 'Y' THEN
20816            pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS', x_Msg => 'EXITING ', x_Log_Level=> 3);
20817     END IF;
20818 
20819 EXCEPTION
20820  when FND_API.G_EXC_ERROR then
20821       x_return_status := FND_API.G_RET_STS_ERROR;
20822       l_msg_count := Fnd_Msg_Pub.count_msg;
20823 
20824       if p_commit = FND_API.G_TRUE then
20825          rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
20826       end if;
20827 
20828      IF l_msg_count = 1 AND x_msg_data IS NULL
20829       THEN
20830           Pa_Interface_Utils_Pub.get_messages
20831               ( p_encoded        => Fnd_Api.G_TRUE
20832               , p_msg_index      => 1
20833               , p_msg_count      => l_msg_count
20834               , p_msg_data       => l_msg_data
20835               , p_data           => l_data
20836               , p_msg_index_out  => l_msg_index_out);
20837           x_msg_data := l_data;
20838           x_msg_count := l_msg_count;
20839      ELSE
20840           x_msg_count := l_msg_count;
20841      END IF;
20842 
20843      when FND_API.G_EXC_UNEXPECTED_ERROR then
20844        x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
20845        x_msg_count     := 1;
20846        x_msg_data      := SQLERRM;
20847 
20848       if p_commit = FND_API.G_TRUE then
20849          rollback to UPDATE_FINANCIAL_TASK_PROGRESS;
20850       end if;
20851       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
20852       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
20853                               p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
20854                               p_error_text     => SUBSTRB(SQLERRM,1,120));
20855     when OTHERS then
20856      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
20857      x_msg_count     := 1;
20858      x_msg_data      := SUBSTRB(SQLERRM,1,120);
20859       if p_commit = FND_API.G_TRUE then
20860          rollback to UPDATE_DELIVERABLE_PROGRESS;
20861       end if;
20862 
20863       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
20864                               p_procedure_name => 'UPDATE_FINANCIAL_TASK_PROGRESS',
20865                               p_error_text     => SUBSTRB(SQLERRM,1,120));
20866       raise;
20867 
20868 
20869 END UPDATE_FINANCIAL_TASK_PROGRESS;
20870 
20871 -- Progress Management Changes. Bug # 3420093.
20872 
20873 PROCEDURE re_rollup_progress(
20874   p_api_version                 IN      NUMBER          :=1.0
20875  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
20876  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
20877  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
20878  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
20879  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
20880  ,p_debug_mode                  IN      VARCHAR2        :='N'
20881  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
20882  ,p_project_id                  IN      NUMBER
20883  ,p_structure_version_id        IN      NUMBER
20884  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20885  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
20886  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
20887 )
20888 
20889 IS
20890    l_api_name           CONSTANT   VARCHAR2(30)    := 'RE_ROLLUP_PROGRESS';
20891    l_api_version        CONSTANT   NUMBER          := p_api_version;
20892    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
20893    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
20894    l_return_status                 VARCHAR2(1);
20895    l_msg_count                     NUMBER;
20896    l_msg_data                      VARCHAR2(250);
20897    l_msg_code                      VARCHAR2(12000);
20898 
20899 
20900 -- Bug 3693757 : This cursor is wrong as it may return wrong task_wt_basis_code of some other projects' task
20901 
20902 cursor l_ve_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
20903 select as_of_date, task_wt_basis_code
20904 from pa_progress_rollup
20905 where project_id = p_project_id --  Bug 3693757
20906 and structure_version_id = p_structure_version_id --  Bug 3693757
20907 and object_type = 'PA_STRUCTURES' --  Bug 3693757
20908 ;
20909 /* Bug 3693757
20910 and as_of_date = (select max(as_of_date)
20911                    from pa_progress_rollup
20912                    where project_id = p_project_id
20913                    and structure_version_id = p_structure_version_id
20914                    and current_flag = 'Y');
20915            */
20916 --bug # 3792713 Satish start
20917    l_published_structure           VARCHAR2(1)                                       ;
20918 
20919    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
20920    IS
20921    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED', 'Y', 'N')
20922    FROM pa_proj_elem_ver_structure str
20923    , pa_project_statuses status
20924    where str.element_version_id = c_structure_version_id
20925    AND str.project_id = c_project_id
20926    AND str.status_code = status.project_status_code;
20927 
20928 --bug # 3792713 Satish end
20929 
20930 cursor l_vd_cur(p_project_id NUMBER, p_structure_version_id NUMBER) is
20931 select as_of_date, task_wt_basis_code
20932 from pa_progress_rollup
20933 where project_id = p_project_id
20934 and structure_version_id = p_structure_version_id;
20935 
20936 --added by maansari for
20937     cursor cur_task_weight IS
20938     select pppa.task_weight_basis_code
20939     from pa_proj_progress_attr pppa
20940     where pppa.project_id = p_project_id
20941     and pppa.structure_type = 'WORKPLAN';
20942 
20943 l_as_of_date            DATE;
20944 l_task_wt_basis_code    VARCHAR2(30);
20945 l_base_struct_ver_id    NUMBER;
20946 
20947 BEGIN
20948         IF g1_debug_mode  = 'Y' THEN
20949                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
20950         END IF;
20951 
20952         IF (p_debug_mode = 'Y') THEN
20953                 IF g1_debug_mode  = 'Y' THEN
20954                         pa_debug.debug('PA_PROGRESS_PUB.RE_ROLLUP_PROGRESS');
20955                 END IF;
20956         END IF;
20957         IF (p_commit = FND_API.G_TRUE) THEN
20958                 savepoint RE_ROLLUP_PROGRESS;
20959         END IF;
20960 
20961         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
20962                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20963         END IF;
20964 
20965         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
20966                 FND_MSG_PUB.initialize;
20967         END IF;
20968 
20969         x_return_status := FND_API.G_RET_STS_SUCCESS;
20970 
20971         -- Get as_of_date and task_wt_basis_code for the project.
20972 
20973 /* replacing with cur_task_weight
20974         if (PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id) = 'Y') then
20975 
20976             open l_ve_cur(p_project_id, p_structure_version_id);
20977             fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
20978             close l_ve_cur;
20979         else
20980 
20981             open l_vd_cur(p_project_id, p_structure_version_id);
20982             fetch l_vd_cur into l_as_of_date, l_task_wt_basis_code;
20983             close l_vd_cur;
20984         end if;
20985 */
20986 
20987     --bug # 3792713 Satish start
20988     OPEN cur_check_published_version(p_structure_version_id, p_project_id);
20989     FETCH cur_check_published_version INTO l_published_structure;
20990     CLOSE cur_check_published_version;
20991 
20992     IF l_published_structure = 'Y'
20993     THEN
20994     return;
20995     ELSE
20996         open l_ve_cur(p_project_id, p_structure_version_id);
20997         fetch l_ve_cur into l_as_of_date, l_task_wt_basis_code;
20998         close l_ve_cur;
20999     END IF;
21000     --bug # 3792713 Satish end
21001 
21002 
21003 
21004         --Added by rtarway for BUG # 3616810, check if as_of_date is null
21005  if (l_as_of_date IS NOT NULL ) then
21006      -- Call Rollup API for the whole structure.
21007 
21008       -- Bug 3764224 : calling it here as this procedure gets called two times in publishing flow. One for
21009       -- Publsihed version and one for working version
21010       -- Bug 3693757 : 13-Jul-04 PJI tmp1 table shd be populated so that rollup API can access actuals values in RE_ROLLUP_PROGRESS
21011       BEGIN
21012        l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
21013        pa_progress_pub.populate_pji_tab_for_plan(
21014                         p_init_msg_list         => FND_API.G_FALSE,
21015                         p_project_id            => p_project_id,
21016                         p_structure_version_id  => p_structure_version_id,
21017                         p_baselined_str_ver_id  => l_base_struct_ver_id,
21018                         p_structure_type        => 'WORKPLAN',
21019                         x_return_status         => x_return_status,
21020                         x_msg_count             => x_msg_count,
21021                         x_msg_data              => x_msg_data
21022                         );
21023 
21024         EXCEPTION
21025           WHEN OTHERS THEN
21026              fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21027                                      p_procedure_name => 'RE_ROLLUP_PROGRESS',
21028                                      p_error_text     => SUBSTRB('PA_PROGRESS_PUB.populate_pji_tab_for_plan:'||SQLERRM,1,240));
21029         RAISE FND_API.G_EXC_ERROR;
21030         END;
21031 
21032 
21033            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21034                  Raise FND_API.G_EXC_ERROR;
21035             END IF;
21036 
21037 
21038                 OPEN cur_task_weight;
21039                 FETCH cur_task_weight INTO l_task_wt_basis_code;
21040                 CLOSE cur_task_weight;
21041 
21042                 PA_PROGRESS_PUB.ROLLUP_PROGRESS_PVT(
21043                  p_init_msg_list             => p_init_msg_list
21044                 ,p_commit                    => p_commit
21045                 ,p_validate_only             => p_validate_only
21046                 --Added by rtarway for BUG 3696263
21047                 ,p_calling_module       => p_calling_module
21048                 ,p_project_id                => p_project_id
21049                 ,p_structure_version_id      => p_structure_version_id
21050                 ,p_as_of_date                => l_as_of_date
21051                 ,p_wp_rollup_method          => l_task_wt_basis_code
21052                 ,p_rollup_entire_wbs         => 'Y'
21053                 ,x_return_status             => l_return_status
21054                 ,x_msg_count                 => l_msg_count
21055                 ,x_msg_data                  => l_msg_data);
21056 
21057         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21058                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
21059                                      p_msg_name       => l_msg_data);
21060                 x_msg_data := l_msg_data;
21061                 x_return_status := 'E';
21062                 x_msg_count := l_msg_count;
21063                 RAISE  FND_API.G_EXC_ERROR;
21064         END IF;
21065   end if;
21066 
21067         IF (p_commit = FND_API.G_TRUE) THEN
21068                 COMMIT;
21069         END IF;
21070 EXCEPTION
21071     when FND_API.G_EXC_ERROR then
21072       if p_commit = FND_API.G_TRUE then
21073          rollback to RE_ROLLUP_PROGRESS;
21074       end if;
21075       x_return_status := FND_API.G_RET_STS_ERROR;
21076     when FND_API.G_EXC_UNEXPECTED_ERROR then
21077       if p_commit = FND_API.G_TRUE then
21078          rollback to RE_ROLLUP_PROGRESS;
21079       end if;
21080       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21081       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21082                               p_procedure_name => 'RE_ROLLUP_PROGRESS',
21083                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21084     when OTHERS then
21085       if p_commit = FND_API.G_TRUE then
21086          rollback to RE_ROLLUP_PROGRESS;
21087       end if;
21088       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21089       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21090                               p_procedure_name => 'RE_ROLLUP_PROGRESS',
21091                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21092       raise;
21093 END re_rollup_progress;
21094 
21095 -- Bug 3633293 : Added populate_bulk_pji_tab_for_plan
21096 PROCEDURE populate_bulk_pji_tab_for_plan(
21097   p_api_version                 IN      NUMBER          :=1.0
21098  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
21099  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
21100  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
21101  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
21102  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
21103  ,p_debug_mode                  IN      VARCHAR2        :='N'
21104  ,p_max_msg_count               IN      NUMBER          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21105  ,p_person_id                           NUMBER
21106  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21107  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
21108  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21109 ) AS
21110    l_api_name           CONSTANT   VARCHAR2(30)    := 'populate_pji_tab_for_plan';
21111    l_api_version        CONSTANT   NUMBER          := p_api_version;
21112    l_return_status                 VARCHAR2(1);
21113    l_msg_count                     NUMBER;
21114    l_msg_data                      VARCHAR2(250);
21115    l_baseline_version_id           NUMBER;
21116 
21117    CURSOR c_get_distinct_str_ver_id IS
21118    SELECT distinct asgn.project_id project_id, asgn.structure_version_id structure_version_id
21119    FROM   pa_task_asgmts_v asgn
21120         , pa_proj_elem_ver_structure str
21121         , pa_proj_progress_attr prog
21122         , pa_proj_structure_types pstype
21123    WHERE asgn.person_id = p_person_id
21124    AND asgn.structure_version_id = str.element_version_id
21125    AND asgn.project_id = str.project_id
21126    AND str.latest_eff_published_flag = 'Y'
21127    AND str.proj_element_id = pstype.proj_element_id
21128    AND pstype.structure_type_id = 1
21129    AND asgn.project_id = prog.project_id
21130    AND prog.structure_type = 'WORKPLAN'
21131    AND prog.allow_collab_prog_entry = 'Y'
21132    UNION
21133    SELECT distinct elem.project_id project_id, str.element_version_id structure_version_id
21134    FROM   pa_proj_elements elem
21135         , pa_proj_elem_ver_structure str
21136         , pa_proj_progress_attr prog
21137         , pa_proj_structure_types pstype
21138    WHERE elem.manager_person_id = p_person_id
21139    AND elem.object_type = 'PA_TASKS'
21140    AND elem.project_id = str.project_id
21141    AND str.latest_eff_published_flag = 'Y'
21142    AND str.proj_element_id = pstype.proj_element_id
21143    AND pstype.structure_type_id = 1
21144    AND elem.project_id = prog.project_id
21145    AND prog.structure_type = 'WORKPLAN'
21146    AND prog.allow_collab_prog_entry = 'Y';
21147 BEGIN
21148 
21149         IF g1_debug_mode  = 'Y' THEN
21150                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
21151         END IF;
21152 
21153         IF (p_debug_mode = 'Y') THEN
21154                 IF g1_debug_mode  = 'Y' THEN
21155                         pa_debug.debug('PA_PROGRESS_PUB.POPULATE_BULK_PJI_TAB_FOR_PLAN');
21156                 END IF;
21157         END IF;
21158 
21159         IF (p_commit = FND_API.G_TRUE) THEN
21160                 savepoint populate_bulk_pji_tab_for_plan;
21161         END IF;
21162 
21163         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21164                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21165         END IF;
21166 
21167         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21168                 FND_MSG_PUB.initialize;
21169         END IF;
21170 
21171         x_return_status := FND_API.G_RET_STS_SUCCESS;
21172 
21173         FOR rec IN c_get_distinct_str_ver_id LOOP
21174                 l_baseline_version_id := null;
21175                 l_baseline_version_id :=  PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec.project_id);
21176                 IF l_baseline_version_id = -1 THEN
21177                         l_baseline_version_id := null;
21178                 END IF;
21179 
21180 
21181         -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
21182         PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
21183             p_calling_module    => p_calling_module
21184             ,p_project_id           => rec.project_id
21185             ,p_structure_version_id => rec.structure_version_id
21186             ,p_baselined_str_ver_id => l_baseline_version_id
21187             ,p_program_rollup_flag  => 'Y'
21188             ,p_calling_context  => 'ROLLUP'
21189             ,x_return_status        => l_return_status
21190             ,x_msg_count            => l_msg_count
21191             ,x_msg_data             => l_msg_data
21192             );
21193         /*
21194                 PJI_FM_XBS_ACCUM_UTILS.populate_workplan_data (
21195             p_project_id           => rec.project_id,
21196                         p_struct_ver_id        => rec.structure_version_id,
21197                         p_base_struct_ver_id   => l_baseline_version_id,
21198                         x_return_status        => l_return_status,
21199                         x_msg_code             => l_msg_data );
21200         */
21201         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21202             x_msg_data := l_msg_data;
21203             x_return_status := 'E';
21204             x_msg_count := l_msg_count;
21205             RAISE  FND_API.G_EXC_ERROR;
21206         END IF;
21207         END LOOP;
21208 
21209 
21210 EXCEPTION
21211     when FND_API.G_EXC_ERROR then
21212       if p_commit = FND_API.G_TRUE then
21213          rollback to populate_bulk_pji_tab_for_plan;
21214       end if;
21215       x_return_status := FND_API.G_RET_STS_ERROR;
21216     when FND_API.G_EXC_UNEXPECTED_ERROR then
21217       if p_commit = FND_API.G_TRUE then
21218          rollback to populate_bulk_pji_tab_for_plan;
21219       end if;
21220       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21221       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21222                               p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
21223                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21224     when OTHERS then
21225       if p_commit = FND_API.G_TRUE then
21226          rollback to populate_bulk_pji_tab_for_plan;
21227       end if;
21228       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21229       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21230                               p_procedure_name => 'POPULATE_BULK_PJI_TAB_FOR_PLAN',
21231                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21232       raise;
21233 END populate_bulk_pji_tab_for_plan;
21234 
21235 
21236 -- Bug 3614828 : Created this procedure for partial rollup.
21237 -- Start of comments
21238 --      API name        : ASGN_DLV_TO_TASK_ROLLUP_PVT
21239 --      Type            : Private
21240 --      Pre-reqs        : None.
21241 --      Purpose         : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
21242 --                      : This does partial rollup of working progress records
21243 --      History         : 15-JUNE-04  amksingh   Rewritten For FPM Development Bug 3614828
21244 --                        08-SEP-2004 Rakesh Raghavan Bug # 3879910. Replaced code with call to API:
21245 --                                                    PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT().
21246 -- End of comments
21247 
21248 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
21249  p_api_version                          IN      NUMBER          :=1.0
21250 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_FALSE -- Since it is a private API so false
21251 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
21252 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
21253 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
21254 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
21255 ,p_debug_mode                           IN      VARCHAR2        :='N'
21256 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21257 ,p_project_id                           IN      NUMBER
21258 ,p_task_id                              IN      NUMBER
21259 ,p_task_version_id                      IN      NUMBER
21260 ,p_as_of_date                           IN      DATE
21261 ,p_structure_version_id                 IN      NUMBER
21262 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
21263 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21264 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
21265 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21266 )
21267  IS
21268 
21269    l_api_name                   CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT'                           ;
21270    l_api_version                CONSTANT NUMBER      := 1.0                                                     ;
21271    l_return_status              VARCHAR2(1)                                                                     ;
21272    l_msg_count                  NUMBER                                                                          ;
21273    l_msg_data                   VARCHAR2(250)                                                                   ;
21274    l_data                       VARCHAR2(250)                                                                   ;
21275    l_msg_index_out              NUMBER                                                                          ;
21276    l_error_msg_code             VARCHAR2(250)                                                                   ;
21277    l_user_id                    NUMBER := FND_GLOBAL.USER_ID                                                    ;
21278    l_login_id                   NUMBER := FND_GLOBAL.LOGIN_ID                                                   ;
21279    g1_debug_mode                VARCHAR2(1)                                                                     ;
21280 
21281 BEGIN
21282 
21283         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
21284 
21285         IF g1_debug_mode  = 'Y' THEN
21286                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT');
21287         END IF;
21288 
21289         IF g1_debug_mode  = 'Y' THEN
21290                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
21291                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
21292                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
21293                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
21294                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
21295                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
21296                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
21297                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
21298                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21299                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
21300                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
21301                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
21302                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
21303                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
21304         END IF;
21305 
21306         IF p_structure_version_id IS NULL THEN
21307                 return;
21308         END IF;
21309 
21310         IF (p_commit = FND_API.G_TRUE) THEN
21311                 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT;
21312         END IF;
21313 
21314         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21315                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21316         END IF;
21317 
21318         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21319                 FND_MSG_PUB.initialize;
21320         END IF;
21321 
21322         -- Bug # 3879910. Call corresponding API in package: PA_PROGRESS_PVT.
21323 
21324     PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT(
21325     p_api_version        => p_api_version
21326     ,p_init_msg_list     => p_init_msg_list
21327     ,p_commit        => p_commit
21328     ,p_validate_only     => p_validate_only
21329     ,p_validation_level  => p_validation_level
21330     ,p_calling_module    => p_calling_module
21331     ,p_debug_mode        => p_debug_mode
21332     ,p_max_msg_count     => p_max_msg_count
21333     ,p_project_id        => p_project_id
21334     ,p_task_id       => p_task_id
21335     ,p_task_version_id   => p_task_version_id
21336     ,p_as_of_date        => p_as_of_date
21337     ,p_structure_version_id  => p_structure_version_id
21338     ,p_wp_rollup_method  => p_wp_rollup_method
21339     ,x_return_status     => l_return_status
21340     ,x_msg_count         => l_msg_count
21341     ,x_msg_data      => l_msg_data);
21342 
21343         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21344                 x_msg_data := l_msg_data;
21345                 x_return_status := 'E';
21346                 x_msg_count := l_msg_count;
21347                 RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
21348         END IF;
21349 
21350         x_return_status := FND_API.G_RET_STS_SUCCESS;
21351 
21352         IF (p_commit = FND_API.G_TRUE) THEN
21353                 COMMIT;
21354         END IF;
21355 
21356 
21357         IF g1_debug_mode  = 'Y' THEN
21358                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT END', x_Log_Level=> 3);
21359         END IF;
21360 
21361 EXCEPTION
21362         WHEN FND_API.G_EXC_ERROR THEN
21363                 IF p_commit = FND_API.G_TRUE THEN
21364                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21365                 END IF;
21366                 x_return_status := FND_API.G_RET_STS_ERROR;
21367         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
21368                 IF p_commit = FND_API.G_TRUE THEN
21369                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21370                 END IF;
21371                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21372                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21373                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
21374                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21375         WHEN OTHERS THEN
21376                 IF p_commit = FND_API.G_TRUE THEN
21377                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT;
21378                 END IF;
21379                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
21380                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
21381                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
21382                               p_error_text     => SUBSTRB(SQLERRM,1,120));
21383                 raise;
21384 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
21385 
21386 -- Start of comments
21387 --      API name        : COPY_PROGRESS_ACT_ETC
21388 --      Type            : Private
21389 --      Pre-reqs        : None.
21390 --      Purpose         : This API is intdended to be used for copying actuals and etc from one structure
21391 --                        version to another. If there is no progress records exists then the api pass null
21392 --                        for act and etc.
21393 --      History         : 30-JUNE-04  Rakesh Raghavan  Rewritten For FPM Development Bug
21394 --                        28-JUL-2004 Rakesh Raghavan  Added parameter: p_last_pub_str_version_id
21395 --                                                     and modified API.
21396 -- End of comments
21397 
21398 PROCEDURE COPY_PROGRESS_ACT_ETC(
21399  p_api_version              IN      NUMBER          :=1.0
21400 ,p_init_msg_list            IN      VARCHAR2        :=FND_API.G_FALSE -- FALSE for private API.
21401 ,p_commit                   IN      VARCHAR2        :=FND_API.G_FALSE
21402 ,p_validate_only            IN      VARCHAR2        :=FND_API.G_TRUE
21403 ,p_validation_level         IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
21404 ,p_calling_module           IN      VARCHAR2        :='SELF_SERVICE'
21405 ,p_debug_mode               IN      VARCHAR2        :='N'
21406 ,p_max_msg_count            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
21407 ,p_project_id               IN      NUMBER
21408 ,p_src_str_ver_id           IN      NUMBER
21409 ,p_dst_str_ver_id           IN      NUMBER
21410 ,p_pub_wp_with_prog_flag    IN      VARCHAR2        := 'Y'
21411 ,p_calling_context          IN      VARCHAR2        := 'PUBLISH'
21412 ,p_last_pub_str_version_id  IN      NUMBER          := NULL
21413 ,p_copy_actuals_flag        IN      VARCHAR2        := 'Y'
21414 ,p_copy_ETC_flag            IN      VARCHAR2        := 'Y'
21415 ,p_pji_conc_prog_context    IN      VARCHAR2        := 'N' -- Fix for Bug # 3996159.
21416 ,x_return_status            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21417 ,x_msg_count                OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
21418 ,x_msg_data                 OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
21419 ) IS
21420 
21421    l_api_name                   CONSTANT VARCHAR(30) := 'COPY_PROGRESS_ACT_ETC';
21422    l_api_version                CONSTANT NUMBER      := 1.0;
21423    l_return_status              VARCHAR2(1);
21424    l_msg_count                  NUMBER;
21425    l_msg_data                   VARCHAR2(250);
21426    l_data                       VARCHAR2(250);
21427    l_msg_index_out              NUMBER;
21428    l_error_msg_code             VARCHAR2(250);
21429    l_calling_context            VARCHAR2(15);
21430 
21431 -- This API will be called in three contexts.
21432 -- 1. From Publish structure API where it needs to get the progress data from published wp version and push to PJI API
21433 -- for the new workplan version which is going to be published.
21434 -- 2. PJI team sometimes truncates the data for a version. In thi scase they will call this API to push the progress data
21435 -- again back to PJI tables. Not sure about this context as how PJI will call. Majid is following up on this.
21436 -- 3. B7 F Team will pass the context as RBS. They need to resummarize the data when in working pw version RBS is made from
21437 -- null to not null. In this case only ETC needs to be pushed as PJi will derive actuals as planned-etc.
21438 
21439         CURSOR cur_working_wp_progress is
21440         select *
21441         from pa_progress_rollup ppr
21442         where ppr.project_id = p_project_id
21443         and ppr.structure_version_id = p_src_str_ver_id
21444         and ppr.object_type = 'PA_ASSIGNMENTS'
21445         and structure_type = 'WORKPLAN'
21446         and current_flag = 'Y';
21447 
21448 
21449         CURSOR cur_lp_progress is
21450         select *
21451         from pa_progress_rollup ppr
21452         where ppr.project_id = p_project_id
21453         and ppr.structure_version_id is null
21454         and ppr.object_type = 'PA_ASSIGNMENTS'
21455         and structure_type = 'WORKPLAN'
21456         and current_flag = 'Y';
21457         -- Using current_flag = 'Y' may push data of working progress too. Is it fine?
21458 
21459     l_working_prog     VARCHAR2(1) := 'N';
21460 
21461         l_ppr_rec       pa_progress_rollup%rowtype;
21462 
21463     -- Bug 3764224 : Changed the cusrsor def'n
21464     cursor cur_ptav (p_object_id NUMBER, p_task_id NUMBER) is
21465     select ptav2.resource_list_member_id, ptav2.txn_currency_code
21466            ,ptav2.resource_class_code, ptav2.rate_based_flag
21467            ,ptav2.rbs_element_id,planned_quantity,
21468             planned_bur_cost_txn_cur,
21469             planned_bur_cost_projfunc,
21470             planned_bur_cost_proj_cur,
21471             planned_raw_cost_txn_cur,
21472             planned_raw_cost_projfunc,
21473             planned_raw_cost_proj_cur
21474     from pa_task_asgmts_v ptav2
21475     where ptav2.resource_list_member_id = p_object_id
21476     and ptav2.structure_version_id = p_dst_str_ver_id
21477     and ptav2.task_id = p_task_id
21478     ;
21479 
21480     l_ptav_rec cur_ptav%rowtype;
21481 
21482 l_act_TXN_COST_this_period      NUMBER := 0;
21483 l_act_PRJ_COST_this_period      NUMBER := 0;
21484 l_act_POU_COST_this_period      NUMBER := 0;
21485 l_act_effort_this_period        NUMBER := 0;
21486 l_act_TXN_RAWCOST_this_period   NUMBER := 0;
21487 l_act_PRJ_RAWCOST_this_period   NUMBER := 0;
21488 l_act_POU_RAWCOST_this_period   NUMBER := 0;
21489 l_etc_TXN_COST_this_period      NUMBER := 0;
21490 l_etc_PRJ_COST_this_period      NUMBER := 0;
21491 l_etc_POU_COST_this_period      NUMBER := 0;
21492 l_etc_TXN_RAWCOST_this_period   NUMBER := 0;
21493 l_etc_PRJ_RAWCOST_this_period   NUMBER := 0;
21494 l_etc_POU_RAWCOST_this_period   NUMBER := 0;
21495 l_etc_effort_this_period        NUMBER := 0;
21496 
21497 l_new_object_id               NUMBER;
21498 l_actuals_pushed              VARCHAR2(1) :='N';
21499  l_msg_code                   VARCHAR2(32);
21500  l_src_str_ver_publsihed     VARCHAR2(1);
21501  l_resource_class_code       pa_task_assignments_v.resource_class_code%TYPE;
21502  L_TXN_CURRENCY_CODE         pa_task_assignments_v.txn_currency_code%TYPE;
21503  L_RATE_BASED_FLAG           varchar2(1);
21504  L_RBS_ELEMENT_ID            number;
21505  l_prog_mode                 varchar2(1);
21506 
21507 cursor cur_task_assgn(p_project_id NUMBER, p_object_version_id NUMBER) is
21508 select count(*)
21509 from pa_progress_rollup ppr
21510 where ppr.project_id = p_project_id
21511 and ppr.object_version_id = p_object_version_id
21512 and ppr.object_type = 'PA_ASSIGNMENTS'
21513 and ppr.structure_version_id is null
21514 and ppr.structure_type = 'WORKPLAN'
21515 and ppr.current_flag = 'Y';
21516 
21517 L_TASK_ASSGN  number;
21518 
21519 /*  bug 4871809 this cursor is not used
21520  --bug 3968791
21521 CURSOR cur_select_all_assgns
21522 IS
21523    SELECT ptav.*
21524    FROM pa_progress_rollup ppr2
21525        --,pa_task_assignments_v ptav  --bug 3967374
21526        ,pa_task_asgmts_v ptav
21527    WHERE ppr2.project_id=p_project_id
21528      AND ptav.project_id=p_project_id
21529      AND ppr2.object_id = ptav.task_id
21530      AND (ptav.resource_list_member_id ) not in (
21531                 SELECT object_id
21532                 FROM pa_progress_rollup ppr
21533                 where ppr.project_id=p_project_id
21534                   and ppr.structure_version_id is null
21535                   and ppr.current_flag = 'Y'
21536                   and ppr.object_type = 'PA_ASSIGNMENTS'
21537                   and ppr.structure_type = 'WORKPLAN'
21538                   and ppr.proj_element_id = ppr2.proj_element_id
21539                   )
21540      AND ptav.structure_version_id = p_dst_str_ver_id
21541      and ppr2.structure_version_id is null
21542      and ppr2.current_flag = 'Y'
21543      and ppr2.structure_type = 'WORKPLAN'
21544      ;*/
21545 --end bug 3968791
21546    Cursor cur_Summerized_Actuals IS
21547     Select count(1)
21548     FROM  PA_Proj_Elem_Ver_Structure ppevs,
21549           PA_Proj_Elements        ppe,
21550           PA_Proj_Structure_Types ppst,
21551           PA_Structure_types      pst
21552     WHERE ppevs.Project_ID        = P_Project_ID
21553     AND   ppevs.status_code       = 'STRUCTURE_PUBLISHED'
21554     AND   ppevs.proj_element_id   = ppe.Proj_Element_ID
21555     AND   ppe.Project_ID          = ppevs.Project_ID
21556     AND   ppe.Proj_Element_ID     = ppst.Proj_Element_ID
21557     AND   ppst.Structure_Type_ID  = pst.Structure_Type_ID
21558     AND   pst.structure_type      = 'WORKPLAN';
21559 
21560  l_count   number;
21561  l_index   number;
21562  l_plan_type_id         number;
21563  l_plan_version_id      number;
21564  l_period_type          varchar2(15);
21565  l_org_id               number;
21566  l_proj_curr_code       varchar2(15);
21567  l_proj_func_curr_code  varchar2(15);
21568    cursor proj_info is
21569     select org_id, project_currency_code, projfunc_currency_code
21570    from pa_projects_all
21571    where project_id = p_project_id;
21572 
21573  ETC_PROJECT_ID                           PA_PLSQL_DATATYPES.Num15TabTyp;
21574  ETC_PROJECT_ORG_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
21575  ETC_PROJECT_ELEMENT_ID                   PA_PLSQL_DATATYPES.Num15TabTyp;
21576  ETC_STRUCT_VER_ID                        PA_PLSQL_DATATYPES.Num15TabTyp;
21577  ETC_PERIOD_NAME                          PA_PLSQL_DATATYPES.Char80TabTyp;
21578  ETC_CALENDAR_TYPE                        PA_PLSQL_DATATYPES.Char1TabTyp;
21579  ETC_START_DATE                           PA_PLSQL_DATATYPES.DateTabTyp;
21580  ETC_END_DATE                             PA_PLSQL_DATATYPES.DateTabTyp;
21581  ETC_RBS_ELEMENT_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
21582  ETC_RBS_VERSION_ID                       PA_PLSQL_DATATYPES.Num15TabTyp;
21583  ETC_PLAN_VERSION_ID                      PA_PLSQL_DATATYPES.Num15TabTyp;
21584  ETC_PLAN_TYPE_ID                         PA_PLSQL_DATATYPES.Num15TabTyp;
21585  ETC_WP_VERSION_FLAG                      PA_PLSQL_DATATYPES.Char1TabTyp;
21586  ETC_ROLLUP_TYPE                          PA_PLSQL_DATATYPES.Char1TabTyp;
21587  ETC_PRJ_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
21588  ETC_PFC_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
21589  ETC_TXN_CURRENCY_CODE                    PA_PLSQL_DATATYPES.Char30TabTyp;
21590  ETC_QUANTITY                             PA_PLSQL_DATATYPES.AmtTabTyp;
21591  ETC_TXN_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
21592  ETC_PRJ_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
21593  ETC_PFC_BURDENED_COST                    PA_PLSQL_DATATYPES.AmtTabTyp;
21594  ETC_TXN_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
21595  ETC_PRJ_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
21596  ETC_PFC_RAW_COST                         PA_PLSQL_DATATYPES.AmtTabTyp;
21597  ETC_RESOURCE_CLASS_CODE                  PA_PLSQL_DATATYPES.Char30TabTyp;
21598  ETC_RATE_BASED_FLAG                      PA_PLSQL_DATATYPES.Char1TabTyp;
21599 
21600 BEGIN
21601 
21602         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
21603 
21604         IF g1_debug_mode  = 'Y' THEN
21605                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC');
21606         END IF;
21607 
21608         IF (p_commit = FND_API.G_TRUE) THEN
21609                 savepoint COPY_PROGRESS_ACT_ETC;
21610         END IF;
21611 
21612         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
21613                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
21614         END IF;
21615 
21616         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
21617                 FND_MSG_PUB.initialize;
21618         END IF;
21619 
21620         IF g1_debug_mode  = 'Y' THEN
21621                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC Passed Parameters', x_Log_Level=> 3);
21622                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21623                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_src_str_ver_id='||p_src_str_ver_id, x_Log_Level=> 3);
21624                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_dst_str_ver_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21625                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pub_wp_with_prog_flag='||p_pub_wp_with_prog_flag, x_Log_Level=> 3);
21626                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_calling_context='||p_calling_context, x_Log_Level=> 3);
21627                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_last_pub_str_version_id='||p_last_pub_str_version_id, x_Log_Level=> 3);
21628                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_copy_actuals_flag='||p_copy_actuals_flag, x_Log_Level=> 3);
21629                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_copy_ETC_flag='||p_copy_ETC_flag, x_Log_Level=> 3);
21630         END IF;
21631 
21632 
21633         x_return_status := FND_API.G_RET_STS_SUCCESS;
21634         l_calling_context := p_calling_context;
21635         -- code to make sure don't execute this procedure for first time publish structure
21636         if (l_calling_context = 'PUBLISH') then
21637           OPEN cur_Summerized_Actuals;
21638           FETCH cur_Summerized_Actuals INTO l_count;
21639           close cur_Summerized_Actuals;
21640           if l_count = 1 then
21641             l_calling_context := 'FIRST_PUBLISH';
21642           end if;
21643         end if;
21644 
21645         -- 3627315 Issue 8, We should not open the cursor cur_working_wp_progress unneccesarily for PUBLSIH context
21646         -- as in this context there will never be working wp version progress
21647         -- For PJI context, it should first check whthere the source str version id is publihed or not.
21648 
21649 
21650         l_src_str_ver_publsihed := PA_PROJECT_STRUCTURE_UTILS.Check_Struc_Ver_Published(p_project_id, p_src_str_ver_id);
21651 
21652 
21653         open proj_info;
21654         fetch proj_info into l_org_id,l_proj_curr_code,l_proj_func_curr_code;
21655         close proj_info;
21656         l_period_type := PA_FIN_PLAN_UTILS.Get_wp_bv_time_phase(p_dst_str_ver_id);
21657         l_plan_type_id := Pa_Fp_wp_gen_amt_utils.get_wp_ptype_id(p_project_id => p_project_id);
21658         l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
21659                                                       p_project_id => p_project_id,
21660                                                       p_plan_type_id => -1,
21661                                                       p_proj_str_ver_id => p_dst_str_ver_id) ;
21662         IF ( l_calling_context = 'PUBLISH')
21663         OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
21664             l_prog_mode := 'P';
21665             OPEN cur_lp_progress;
21666         ELSIF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')
21667  OR l_calling_context = 'RBS') THEN
21668             l_prog_mode := 'W';
21669             OPEN cur_working_wp_progress;
21670         END IF;
21671 
21672            l_index := 0;
21673            LOOP
21674              if (l_prog_mode = 'P') then
21675                 FETCH cur_lp_progress INTO l_ppr_rec;
21676                 EXIT WHEN cur_lp_progress%NOTFOUND;
21677              elsif (l_prog_mode = 'W') then
21678                 FETCH cur_working_wp_progress INTO l_ppr_rec;
21679                 EXIT WHEN cur_working_wp_progress%NOTFOUND;
21680              elsif (l_calling_context = 'FIRST_PUBLISH') then
21681                 exit;
21682              end if;
21683 
21684          -- 4417665 : We will delete assignment rollup records which are unplanned and got remapped to some
21685          -- other assignments after resource list modifications.
21686          -- Note that we could have deleted these in PA_TASK_ASSIGNMENTS_PVT.Copy_Missing_Unplanned_Asgmts too,
21687          -- But there it is difficult, so deleting here
21688 
21689              -- Derive the value for l_new_object_id.
21690              l_ptav_rec := null;
21691              OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21692              FETCH cur_ptav INTO l_ptav_rec;
21693              CLOSE cur_ptav;
21694 
21695          -- 4417665 : Added Beloe IF and code inside the IF
21696          IF (l_ptav_rec.rbs_element_id IS NULL
21697             AND (((nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)
21698              +nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)) = 0 )
21699         AND
21700              ((nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)) = 0)
21701         AND
21702              ((nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)
21703               +nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)) = 0)
21704         AND
21705               ((nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)) = 0)
21706             )
21707              )
21708          THEN
21709              IF l_prog_mode = 'P' THEN
21710             DELETE from pa_progress_rollup
21711             WHERE project_id = p_project_id
21712             AND structure_version_id is null
21713             AND structure_type = 'WORKPLAN'
21714             AND object_type = 'PA_ASSIGNMENTS'
21715             AND object_id = l_ppr_rec.object_id
21716             AND proj_element_id = l_ppr_rec.proj_element_id;
21717              END IF;
21718              IF l_prog_mode = 'W' THEN
21719             DELETE from pa_progress_rollup
21720             WHERE project_id = p_project_id
21721             AND structure_version_id = p_src_str_ver_id
21722             AND structure_type = 'WORKPLAN'
21723             AND object_type = 'PA_ASSIGNMENTS'
21724             AND object_id = l_ppr_rec.object_id
21725             AND proj_element_id = l_ppr_rec.proj_element_id;
21726              END IF;
21727          ELSE
21728 
21729              l_index := l_index + 1;
21730              ETC_PROJECT_ID(l_index)  := p_project_id;
21731              ETC_PROJECT_ELEMENT_ID(l_index)   := l_ppr_rec.proj_element_id;
21732              ETC_STRUCT_VER_ID(l_index)        := p_dst_str_ver_id;
21733              if (l_period_type = 'P') then
21734                  ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_pa_period_name;
21735              elsif (l_period_type = 'G') then
21736                  ETC_PERIOD_NAME(l_index) := l_ppr_rec.prog_gl_period_name;
21737              else
21738                  ETC_PERIOD_NAME(l_index) := null;
21739              end if;
21740              ETC_CALENDAR_TYPE(l_index)        := l_period_type;
21741              ETC_START_DATE(l_index)           := null;
21742              ETC_END_DATE(l_index)             := l_ppr_rec.as_of_date;
21743              ETC_RBS_VERSION_ID(l_index)       := null;
21744              ETC_PLAN_VERSION_ID(l_index)      := l_plan_version_id;
21745              ETC_PLAN_TYPE_ID(l_index)         := l_plan_type_id;
21746              ETC_WP_VERSION_FLAG(l_index)      := 'Y';
21747              ETC_ROLLUP_TYPE(l_index) := 'W';
21748              ETC_PROJECT_ORG_ID(l_index) := l_org_id;
21749              ETC_PRJ_CURRENCY_CODE(l_index) := l_proj_curr_code;
21750              ETC_PFC_CURRENCY_CODE(l_index) := l_proj_func_curr_code;
21751 
21752              -- 4417665 : Moving this code up
21753          /*
21754              -- Derive the value for l_new_object_id.
21755              l_ptav_rec := null;
21756              OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21757              FETCH cur_ptav INTO l_ptav_rec;
21758              CLOSE cur_ptav;
21759          */
21760 
21761              ETC_RBS_ELEMENT_ID(l_index) := l_ptav_rec.rbs_element_id;
21762              ETC_RATE_BASED_FLAG(l_index) := l_ptav_rec.rate_based_flag;
21763              etc_resource_class_code(l_index) := l_ptav_rec.resource_class_code;
21764              ETC_TXN_CURRENCY_CODE(l_index) := l_ptav_rec.txn_currency_code;
21765 
21766                        /*l_act_TXN_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)
21767                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
21768                         l_act_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_pc,0)
21769                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
21770                         l_act_POU_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_fc,0)
21771                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
21772                         l_act_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_tc,0)
21773                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
21774                         l_act_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_pc,0)
21775                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
21776                         l_act_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_fc,0)
21777                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
21778                         l_act_effort_this_period := (nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)--+nvl(l_ppr_rec.oth_quantity_to_date,0))Oth quantity is not required as it can be in diffrent UOM
21779                                          +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
21780                      */
21781            ETC_TXN_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)) - l_ptav_rec.planned_bur_cost_txn_cur;
21782 
21783            ETC_PRJ_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_pc,0)+nvl(l_ppr_rec.ppl_etc_cost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_pc,0)) - l_ptav_rec.planned_bur_cost_proj_cur;
21784            ETC_PFC_BURDENED_COST(l_index) := (nvl(l_ppr_rec.oth_etc_cost_fc,0)+nvl(l_ppr_rec.ppl_etc_cost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_fc,0)) - l_ptav_rec.planned_bur_cost_projfunc;
21785            ETC_TXN_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_tc,0)) - l_ptav_rec.planned_raw_cost_txn_cur;
21786            ETC_PRJ_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_pc,0)) - l_ptav_rec.planned_raw_cost_proj_cur;
21787            ETC_PFC_RAW_COST(l_index) := (nvl(l_ppr_rec.oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_fc,0)) - l_ptav_rec.planned_raw_cost_projfunc;
21788            if (l_ptav_rec.resource_class_code in ('PEOPLE','EQUIPMENT')) then
21789               ETC_QUANTITY(l_index) := (nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)) - l_ptav_rec.planned_quantity;
21790            else
21791               ETC_QUANTITY(l_index) := nvl(l_ppr_rec.oth_etc_quantity,0) - l_ptav_rec.planned_quantity;
21792            end if;
21793 
21794            ---added logic to copy actuals and ETC selctively bug 3821122
21795 
21796           IF p_copy_etc_flag = 'N' THEN
21797                ETC_TXN_BURDENED_COST(l_index)      :=null;
21798                ETC_PRJ_BURDENED_COST(l_index)      := null;
21799                ETC_PFC_BURDENED_COST(l_index)      := null;
21800                ETC_QUANTITY(l_index)       := null;
21801                ETC_TXN_RAW_COST(l_index)   := null;
21802                ETC_PRJ_RAW_COST(l_index)   := null;
21803                ETC_PFC_RAW_COST(l_index)   := null;
21804           END IF;
21805       END IF; -- IF (l_ptav_rec.rbs_element_id IS NULL
21806        END LOOP;
21807        if (l_prog_mode = 'P') then
21808           CLOSE cur_lp_progress;
21809        elsif (l_prog_mode = 'W') then
21810           CLOSE cur_working_wp_progress;
21811        end if;
21812 
21813                 IF g1_debug_mode  = 'Y' THEN
21814                             for l_count in 1..l_index loop
21815                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : PUBLISH WP CASE', x_Log_Level=> 3);
21816                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21817                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21818                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||ETC_PROJECT_ELEMENT_ID(l_count), x_Log_Level=> 3);
21819                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||ETC_END_DATE(l_count), x_Log_Level=> 3);
21820                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||etc_rbs_element_id(l_count), x_Log_Level=> 3);
21821                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||etc_rate_based_flag(l_count), x_Log_Level=> 3);
21822                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||etc_resource_class_code(l_count), x_Log_Level=> 3);
21823                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||etc_TXN_CURRENCY_CODE(l_count), x_Log_Level=> 3);
21824                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||ETC_TXN_BURDENED_COST(l_count), x_Log_Level=> 3);
21825                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||etc_PRJ_BURDENED_COST(l_count), x_Log_Level=> 3);
21826                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||etc_Pfc_burdened_COST(l_count), x_Log_Level=> 3);
21827                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||etc_quantity(l_count), x_Log_Level=> 3);
21828                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||etc_TXN_RAW_COST(l_count), x_Log_Level=> 3);
21829                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||etc_PRJ_RAW_COST(l_count), x_Log_Level=> 3);
21830                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||etc_PFC_RAW_COST(l_count), x_Log_Level=> 3);
21831                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||etc_period_name(l_count), x_Log_Level=> 3);
21832                              end loop;
21833                 END IF;
21834 
21835                        FORALL l_count IN 1..l_index
21836                          INSERT INTO PJI_FM_EXTR_PLAN_LINES(
21837                            PROJECT_ID
21838                           ,PROJECT_ORG_ID
21839                           ,PROJECT_ELEMENT_ID
21840                           ,STRUCT_VER_ID
21841                           ,PERIOD_NAME
21842                           ,CALENDAR_TYPE
21843                           ,END_DATE
21844                           ,RBS_ELEMENT_ID
21845                           ,PLAN_VERSION_ID
21846                           ,PLAN_TYPE_ID
21847                           ,WP_VERSION_FLAG
21848                           ,ROLLUP_TYPE
21849                           ,TXN_CURRENCY_CODE
21850                           ,ETC_QUANTITY
21851                           ,ETC_TXN_BURDENED_COST
21852                           ,ETC_PRJ_BURDENED_COST
21853                           ,ETC_PFC_BURDENED_COST
21854                           ,ETC_TXN_RAW_COST
21855                           ,ETC_PRJ_RAW_COST
21856                           ,ETC_PFC_RAW_COST
21857                           ,RESOURCE_CLASS_CODE
21858                           ,RATE_BASED_FLAG
21859                           ,PRJ_CURRENCY_CODE
21860                           ,PFC_CURRENCY_CODE)
21861                          VALUES( ETC_PROJECT_ID(l_count)
21862                           ,ETC_PROJECT_ORG_ID(l_count)
21863                           ,ETC_PROJECT_ELEMENT_ID(l_count)
21864                           ,ETC_STRUCT_VER_ID(l_count)
21865                           ,ETC_PERIOD_NAME(l_count)
21866                           ,ETC_CALENDAR_TYPE(l_count)
21867                           ,ETC_END_DATE(l_count)
21868                           ,ETC_RBS_ELEMENT_ID(l_count)
21869                           ,ETC_PLAN_VERSION_ID(l_count)
21870                           ,ETC_PLAN_TYPE_ID(l_count)
21871                           ,ETC_WP_VERSION_FLAG(l_count)
21872                           ,ETC_ROLLUP_TYPE(l_count)
21873                           ,ETC_TXN_CURRENCY_CODE(l_count)
21874                           ,ETC_QUANTITY(l_count)
21875                           ,ETC_TXN_BURDENED_COST(l_count)
21876                           ,ETC_PRJ_BURDENED_COST(l_count)
21877                           ,ETC_PFC_BURDENED_COST(l_count)
21878                           ,ETC_TXN_RAW_COST(l_count)
21879                           ,ETC_PRJ_RAW_COST(l_count)
21880                           ,ETC_PFC_RAW_COST(l_count)
21881                           ,ETC_RESOURCE_CLASS_CODE(l_count)
21882                           ,ETC_RATE_BASED_FLAG(l_count)
21883                           ,ETC_PRJ_CURRENCY_CODE(l_count)
21884                           ,ETC_PFC_CURRENCY_CODE(l_count));
21885                 if (g1_debug_mode  = 'Y') then
21886                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals' , x_Log_Level=> 3);
21887         END IF;
21888 
21889                         l_actuals_pushed := 'Y';
21890 
21891 /******** NOT REQUIRED
21892         --bug 3968791
21893         --select all assignments' planned values whose progress does not exists in progress rollup table and pass them
21894         --to PJI as ETC. This is applicable if any of the assignments for a given task has progress overridden.
21895         --This change will NOT select assignments from those tasks for which there is no single assignment has ETC.
21896         --Also the cursor will not select hidden assignments.
21897 
21898         --Push to PJI only if there is progress for some objects and also if copy  ETC flag is yes.
21899         IF l_actuals_pushed = 'Y' AND p_copy_etc_flag = 'Y'
21900         THEN
21901            IF ( l_calling_context = 'PUBLISH')
21902             OR ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'Y')) THEN
21903                FOR cur_select_all_assgns_rec IN cur_select_all_assgns LOOP
21904 
21905                 IF g1_debug_mode  = 'Y' THEN
21906                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : PUBLISH WP CASE with all assignments', x_Log_Level=> 3);
21907                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
21908                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
21909                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||cur_select_all_assgns_rec.task_id, x_Log_Level=> 3);
21910                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||cur_select_all_assgns_rec.resource_list_member_id, x_Log_Level=> 3);
21911                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'planning start date='||cur_select_all_assgns_rec.planning_start_date, x_Log_Level=> 3);
21912                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||cur_select_all_assgns_rec.rbs_element_id, x_Log_Level=> 3);
21913                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||cur_select_all_assgns_rec.rate_based_flag, x_Log_Level=> 3);
21914                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||cur_select_all_assgns_rec.resource_class_code, x_Log_Level=> 3);
21915                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||cur_select_all_assgns_rec.TXN_CURRENCY_CODE, x_Log_Level=> 3);
21916 
21917                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_TXN_CUR, x_Log_Level=> 3);
21918                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJ_CUR, x_Log_Level=> 3);
21919                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJFUNC, x_Log_Level=> 3);
21920                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||cur_select_all_assgns_rec.PLANNED_QUANTITY, x_Log_Level=> 3);
21921                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_TXN_CUR, x_Log_Level=> 3);
21922                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJ_CUR, x_Log_Level=> 3);
21923                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJFUNC, x_Log_Level=> 3);
21924 
21925                 END IF;
21926                    -- Call push workplan actuals.
21927                    PA_PROGRESS_PUB.push_workplan_actuals(
21928                       p_api_version                   =>      p_api_version
21929                      ,p_init_msg_list                =>      p_init_msg_list
21930                      ,p_commit                       =>      p_commit
21931                      ,p_validate_only                =>      p_validate_only
21932                      ,p_validation_level             =>      p_validation_level
21933                      ,p_calling_module               =>      p_calling_module
21934                      ,p_debug_mode                   =>      p_debug_mode
21935                      ,p_max_msg_count                =>      p_max_msg_count
21936                      ,p_project_Id                   =>      p_project_Id
21937                      ,p_structure_version_id         =>      p_dst_str_ver_id
21938                      ,p_proj_element_id              =>      cur_select_all_assgns_rec.task_id
21939                      ,p_object_id                    =>      cur_select_all_assgns_rec.resource_list_member_id
21940                      ,p_object_type                  =>      'PA_ASSIGNMENTS'
21941                      ,p_as_of_date                   =>      cur_select_all_assgns_rec.planning_start_date
21942                      ,p_rbs_element_id               =>      cur_select_all_assgns_rec.rbs_element_id
21943                      ,p_rate_based_flag              =>      cur_select_all_assgns_rec.rate_based_flag
21944                      ,p_resource_class_code          =>      cur_select_all_assgns_rec.resource_class_code
21945                      ,p_TXN_CURRENCY_CODE            =>      cur_select_all_assgns_rec.TXN_CURRENCY_CODE
21946                      ,p_call_pji_apis_flag           =>      'N'
21947                      ,p_etc_TXN_COST_this_period     =>      cur_select_all_assgns_rec.PLANNED_BUR_COST_TXN_CUR
21948                      ,p_etc_PRJ_COST_this_period     =>      cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJ_CUR
21949                      ,p_etc_POU_COST_this_period     =>      cur_select_all_assgns_rec.PLANNED_BUR_COST_PROJFUNC
21950                      ,p_etc_effort_this_period       =>      cur_select_all_assgns_rec.PLANNED_QUANTITY
21951                      ,p_etc_TXN_raw_COST_this_period =>      cur_select_all_assgns_rec.PLANNED_RAW_COST_TXN_CUR
21952                      ,p_etc_PRJ_raw_COST_this_period =>      cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJ_CUR
21953                      ,p_etc_POU_raw_COST_this_period =>      cur_select_all_assgns_rec.PLANNED_RAW_COST_PROJFUNC
21954                      ,p_pa_period_name           =>      null
21955              ,p_gl_period_name           =>      null    --pass null period name. let push workplan actual derive it based on planning start date
21956                      ,x_return_status                =>      l_return_status
21957                      ,x_msg_count                    =>      l_msg_count
21958                      ,x_msg_data                     =>      l_msg_data
21959                      );
21960                END LOOP;
21961            END IF;
21962         END IF;
21963         --bug 3968791
21964 
21965         IF ((l_calling_context = 'PJI' AND NVL(l_src_str_ver_publsihed, 'N') = 'N')OR l_calling_context = 'RBS') THEN
21966 
21967             OPEN cur_working_wp_progress;
21968            LOOP
21969                FETCH cur_working_wp_progress INTO l_ppr_rec;
21970                        EXIT WHEN cur_working_wp_progress%NOTFOUND;
21971 
21972                         -- Initialize the amount variables.
21973                        l_act_TXN_COST_this_period := null;
21974                         l_act_PRJ_COST_this_period := null;
21975                         l_act_POU_COST_this_period := null;
21976                         l_act_TXN_RAWCOST_this_period := null;
21977                         l_act_PRJ_RAWCOST_this_period := null;
21978                         l_act_POU_RAWCOST_this_period := null;
21979                         l_etc_TXN_COST_this_period := null;
21980                         l_etc_PRJ_COST_this_period := null;
21981                         l_etc_POU_COST_this_period := null;
21982                         l_etc_TXN_RAWCOST_this_period := null;
21983                         l_etc_PRJ_RAWCOST_this_period := null;
21984                         l_etc_POU_RAWCOST_this_period := null;
21985                         l_act_effort_this_period := null;
21986                         l_etc_effort_this_period := null;
21987 
21988                         -- Derive the value for l_new_object_id.
21989                        l_ptav_rec := null;
21990                         IF l_ppr_rec.object_type = 'PA_ASSIGNMENTS' then
21991                                OPEN cur_ptav(l_ppr_rec.object_id,l_ppr_rec.proj_element_id);
21992                                 FETCH cur_ptav INTO l_ptav_rec;
21993                                 CLOSE cur_ptav;
21994 
21995                                 --l_new_object_id := l_ptav_rec.resource_assignment_id; Bug 3764224
21996                 l_new_object_id := l_ptav_rec.resource_list_member_id; -- Bug 3764224
21997                 l_rbs_element_id := l_ptav_rec.rbs_element_id;
21998                                 l_rate_based_flag := l_ptav_rec.rate_based_flag;
21999                                 l_resource_class_code := l_ptav_rec.resource_class_code;
22000                                 l_TXN_CURRENCY_CODE := l_ptav_rec.txn_currency_code;
22001                        END IF;
22002 
22003                         -- Names of these variables are this period but actually it is sending cumulative amounts
22004                        l_act_TXN_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_tc,0)
22005                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_tc,0));
22006                         l_act_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_pc,0)
22007                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_pc,0));
22008                         l_act_POU_COST_this_period := (nvl(l_ppr_rec.oth_act_cost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_cost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_cost_to_date_fc,0)
22009                                          +nvl(l_ppr_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_cost_fc,0));
22010                         l_act_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_tc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_tc,0)
22011                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_tc,0));
22012                         l_act_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_pc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_pc,0)
22013                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_pc,0));
22014                         l_act_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.ppl_act_rawcost_to_date_fc,0)+nvl(l_ppr_rec.eqpmt_act_rawcost_to_date_fc,0)
22015                                          +nvl(l_ppr_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC,0)+nvl(l_ppr_rec.subprj_ppl_act_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_act_rawcost_fc,0));
22016                         l_etc_TXN_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_tc,0)+nvl(l_ppr_rec.ppl_etc_cost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_tc,0)
22017                                          +nvl(l_ppr_rec.subprj_oth_etc_cost_tc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_tc,0));
22018                         l_etc_PRJ_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_pc,0)+nvl(l_ppr_rec.ppl_etc_cost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_pc,0)
22019                                          +nvl(l_ppr_rec.subprj_oth_etc_cost_pc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_pc,0));
22020                         l_etc_POU_COST_this_period := (nvl(l_ppr_rec.oth_etc_cost_fc,0)+nvl(l_ppr_rec.ppl_etc_cost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_cost_fc,0)
22021                                          +nvl(l_ppr_rec.subprj_oth_etc_cost_fc,0)+nvl(l_ppr_rec.subprj_ppl_etc_cost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_cost_fc,0));
22022                         l_etc_TXN_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_tc,0)
22023                                          +nvl(l_ppr_rec.subprj_oth_etc_rawcost_tc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_tc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_tc,0));
22024                         l_etc_PRJ_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_pc,0)
22025                                          +nvl(l_ppr_rec.subprj_oth_etc_rawcost_pc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_pc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_pc,0));
22026                         l_etc_POU_RAWCOST_this_period := (nvl(l_ppr_rec.oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.eqpmt_etc_rawcost_fc,0)
22027                                          +nvl(l_ppr_rec.subprj_oth_etc_rawcost_fc,0)+nvl(l_ppr_rec.subprj_ppl_etc_rawcost_fc,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_rawcost_fc,0));
22028                         l_act_effort_this_period := (nvl(l_ppr_rec.ppl_act_effort_to_date,0)+nvl(l_ppr_rec.eqpmt_act_effort_to_date,0)--+nvl(l_ppr_rec.oth_quantity_to_date,0))Oth quantity is not required as it can be in diffrent UOM
22029                                          +nvl(l_ppr_rec.subprj_ppl_act_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_act_effort,0));
22030                         l_etc_effort_this_period := (nvl(l_ppr_rec.estimated_remaining_effort,0)+nvl(l_ppr_rec.eqpmt_etc_effort,0)--+nvl(l_ppr_rec.oth_etc_quantity,0))Oth quantity is not required as it can be in diffrent UOM
22031                                          +nvl(l_ppr_rec.subprj_ppl_etc_effort,0)+nvl(l_ppr_rec.subprj_eqpmt_etc_effort,0));
22032 
22033                IF l_calling_context = 'RBS' THEN
22034                 l_act_TXN_COST_this_period := null;
22035                 l_act_PRJ_COST_this_period := null;
22036                 l_act_POU_COST_this_period := null;
22037                 l_act_effort_this_period   := null;
22038                 l_act_TXN_RAWCOST_this_period := null;
22039                 l_act_PRJ_RAWCOST_this_period := null;
22040                 l_act_POU_RAWCOST_this_period := null;
22041                END IF;
22042 
22043 
22044                ---added logic to copy actuals and ETC selctively bug 3821122
22045 
22046                         IF p_copy_actuals_flag = 'N'
22047                         THEN
22048                             l_act_TXN_COST_this_period := null;
22049                             l_act_PRJ_COST_this_period := null;
22050                             l_act_POU_COST_this_period := null;
22051                             l_act_effort_this_period   := null;
22052                             l_act_TXN_RAWCOST_this_period := null;
22053                             l_act_PRJ_RAWCOST_this_period := null;
22054                             l_act_POU_RAWCOST_this_period := null;
22055                         END IF;
22056 
22057                         IF p_copy_etc_flag = 'N'
22058                         THEN
22059                            l_etc_TXN_COST_this_period      :=null;
22060                            l_etc_PRJ_COST_this_period      := null;
22061                            l_etc_POU_COST_this_period      := null;
22062                            l_etc_effort_this_period        := null;
22063                            l_etc_TXN_RAWCOST_this_period   := null;
22064                            l_etc_PRJ_RAWCOST_this_period   := null;
22065                            l_etc_POU_RAWCOST_this_period   := null;
22066                         END IF;
22067 
22068                 IF g1_debug_mode  = 'Y' THEN
22069                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : WORKING WP CASE', x_Log_Level=> 3);
22070                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22071                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22072                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||l_ppr_rec.proj_element_id, x_Log_Level=> 3);
22073                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||l_new_object_id, x_Log_Level=> 3);
22074                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_type='||l_ppr_rec.object_type, x_Log_Level=> 3);
22075                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||l_ppr_rec.as_of_date, x_Log_Level=> 3);
22076                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||l_rbs_element_id, x_Log_Level=> 3);
22077                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||l_rate_based_flag, x_Log_Level=> 3);
22078                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||l_resource_class_code, x_Log_Level=> 3);
22079                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||l_TXN_CURRENCY_CODE, x_Log_Level=> 3);
22080                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_COST_this_period='||l_act_TXN_COST_this_period, x_Log_Level=> 3);
22081                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_COST_this_period='||l_act_PRJ_COST_this_period, x_Log_Level=> 3);
22082                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_COST_this_period='||l_act_POU_COST_this_period, x_Log_Level=> 3);
22083                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_effort_this_period='||l_act_effort_this_period, x_Log_Level=> 3);
22084                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
22085                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_raw_COST_this_period='||l_act_TXN_RAWCOST_this_period, x_Log_Level=> 3);
22086                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_raw_COST_this_period='||l_act_PRJ_RAWCOST_this_period, x_Log_Level=> 3);
22087                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_raw_COST_this_period='||l_act_POU_RAWCOST_this_period, x_Log_Level=> 3);
22088                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||l_etc_TXN_COST_this_period, x_Log_Level=> 3);
22089                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||l_etc_PRJ_COST_this_period, x_Log_Level=> 3);
22090                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||l_etc_POU_COST_this_period, x_Log_Level=> 3);
22091                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||l_etc_effort_this_period, x_Log_Level=> 3);
22092                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||l_etc_TXN_rawCOST_this_period, x_Log_Level=> 3);
22093                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_rawCOST_this_period, x_Log_Level=> 3);
22094                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||l_etc_POU_rawCOST_this_period, x_Log_Level=> 3);
22095                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||l_ppr_rec.prog_pa_period_name, x_Log_Level=> 3);
22096                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_gl_period_name='||l_ppr_rec.prog_gl_period_name, x_Log_Level=> 3);
22097                 END IF;
22098 
22099                         -- Call push workplan actuals.
22100                         PA_PROGRESS_PUB.push_workplan_actuals(
22101                                 p_api_version                   =>      p_api_version
22102                                 ,p_init_msg_list                =>      p_init_msg_list
22103                                 ,p_commit                       =>      p_commit
22104                                 ,p_validate_only                =>      p_validate_only
22105                                 ,p_validation_level             =>      p_validation_level
22106                                 ,p_calling_module               =>      p_calling_module
22107                                 ,p_debug_mode                   =>      p_debug_mode
22108                                 ,p_max_msg_count                =>      p_max_msg_count
22109                                 ,p_project_Id                   =>      p_project_Id
22110                                 ,p_structure_version_id         =>      p_dst_str_ver_id
22111                                 ,p_proj_element_id              =>      l_ppr_rec.proj_element_id
22112                                 ,p_object_id                    =>      l_new_object_id
22113                                 ,p_object_type                  =>      l_ppr_rec.object_type
22114                                 ,p_as_of_date                   =>      l_ppr_rec.as_of_date
22115                                 ,p_rbs_element_id               =>      l_rbs_element_id--l_ptav_rec.rbs_element_id
22116                                 ,p_rate_based_flag              =>      l_rate_based_flag--l_ptav_rec.rate_based_flag
22117                                 ,p_resource_class_code          =>      l_resource_class_code--l_ptav_rec.resource_class_code
22118                                 ,p_TXN_CURRENCY_CODE            =>      l_TXN_CURRENCY_CODE--l_ptav_rec.txn_currency_code
22119                                 ,p_act_TXN_COST_this_period     =>      l_act_TXN_COST_this_period
22120                                 ,p_act_PRJ_COST_this_period     =>      l_act_PRJ_COST_this_period
22121                                 ,p_act_POU_COST_this_period     =>      l_act_POU_COST_this_period
22122                                 ,p_act_effort_this_period       =>      l_act_effort_this_period
22123                                 ,p_call_pji_apis_flag           =>      'N'
22124                                 ,p_act_TXN_raw_COST_this_period =>      l_act_TXN_RAWCOST_this_period
22125                                 ,p_act_PRJ_raw_COST_this_period =>      l_act_PRJ_RAWCOST_this_period
22126                                 ,p_act_POU_raw_COST_this_period =>      l_act_POU_RAWCOST_this_period
22127                                 ,p_etc_TXN_COST_this_period     =>      l_etc_TXN_COST_this_period
22128                                 ,p_etc_PRJ_COST_this_period     =>      l_etc_PRJ_COST_this_period
22129                                 ,p_etc_POU_COST_this_period     =>      l_etc_POU_COST_this_period
22130                                 ,p_etc_effort_this_period       =>      l_etc_effort_this_period
22131                                 ,p_etc_TXN_raw_COST_this_period =>      l_etc_TXN_RAWCOST_this_period
22132                                 ,p_etc_PRJ_raw_COST_this_period =>      l_etc_PRJ_RAWCOST_this_period
22133                                 ,p_etc_POU_raw_COST_this_period =>      l_etc_POU_RAWCOST_this_period
22134                 ,p_pa_period_name       =>      l_ppr_rec.prog_pa_period_name
22135                 ,p_gl_period_name       =>      l_ppr_rec.prog_gl_period_name
22136                                 ,x_return_status                =>      l_return_status
22137                                 ,x_msg_count                    =>      l_msg_count
22138                                 ,x_msg_data                     =>      l_msg_data);
22139 
22140                 IF g1_debug_mode  = 'Y' THEN
22141                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals l_return_status='||l_return_status, x_Log_Level=> 3);
22142             END IF;
22143 
22144 
22145                         l_actuals_pushed := 'Y';
22146             END LOOP;
22147             CLOSE cur_working_wp_progress;
22148         END IF;
22149 ************/
22150 
22151 /*********** NOT REQUIRED as PJI will have ETC as planned
22152     -- This push is required when you do not have progress record. We want PJI to stamp ETC as PLANNED initially
22153     -- So next time onwards when we send +ve ETC, it will subtract that ETC from it.
22154 
22155 
22156         if NVL(l_actuals_pushed,'N') = 'N' and l_calling_context = 'PUBLISH'
22157         then
22158 
22159             OPEN cur_ppev_ptav;
22160 
22161             LOOP
22162 
22163             FETCH cur_ppev_ptav INTO l_ppev_ptav_rec;
22164 
22165             EXIT WHEN cur_ppev_ptav%NOTFOUND;
22166 
22167 
22168                 -- Initialize the amount variables.
22169 
22170                         l_act_TXN_COST_this_period := null;
22171                         l_act_PRJ_COST_this_period := null;
22172                         l_act_POU_COST_this_period := null;
22173                         l_act_TXN_RAWCOST_this_period := null;
22174                         l_act_PRJ_RAWCOST_this_period := null;
22175                         l_act_POU_RAWCOST_this_period := null;
22176                         l_etc_TXN_COST_this_period := null;
22177                         l_etc_PRJ_COST_this_period := null;
22178                         l_etc_POU_COST_this_period := null;
22179                         l_etc_TXN_RAWCOST_this_period := null;
22180                         l_etc_PRJ_RAWCOST_this_period := null;
22181                         l_etc_POU_RAWCOST_this_period := null;
22182                         l_act_effort_this_period := null;
22183                         l_etc_effort_this_period := null;
22184 
22185 
22186                 -- Call push workplan actuals.
22187                 IF g1_debug_mode  = 'Y' THEN
22188                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling Push Workplan Actuals : NO Actuals Case', x_Log_Level=> 3);
22189                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22190                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_structure_version_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22191                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_proj_element_id='||l_ppev_ptav_rec.proj_element_id, x_Log_Level=> 3);
22192                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_id='||l_ppev_ptav_rec.object_id, x_Log_Level=> 3);
22193                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_object_type='||l_ppev_ptav_rec.object_type, x_Log_Level=> 3);
22194                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_as_of_date='||trunc(sysdate), x_Log_Level=> 3);
22195                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rbs_element_id='||l_ppev_ptav_rec.rbs_element_id, x_Log_Level=> 3);
22196                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_rate_based_flag='||l_ppev_ptav_rec.rate_based_flag, x_Log_Level=> 3);
22197                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_resource_class_code='||l_ppev_ptav_rec.resource_class_code, x_Log_Level=> 3);
22198                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_TXN_CURRENCY_CODE='||l_ppev_ptav_rec.txn_currency_code, x_Log_Level=> 3);
22199                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_COST_this_period='||l_act_TXN_COST_this_period, x_Log_Level=> 3);
22200                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_COST_this_period='||l_act_PRJ_COST_this_period, x_Log_Level=> 3);
22201                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_COST_this_period='||l_act_POU_COST_this_period, x_Log_Level=> 3);
22202                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_effort_this_period='||l_act_effort_this_period, x_Log_Level=> 3);
22203                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_call_pji_apis_flag='||'N', x_Log_Level=> 3);
22204                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_TXN_raw_COST_this_period='||l_act_TXN_RAWCOST_this_period, x_Log_Level=> 3);
22205                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_PRJ_raw_COST_this_period='||l_act_PRJ_RAWCOST_this_period, x_Log_Level=> 3);
22206                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_act_POU_raw_COST_this_period='||l_act_POU_RAWCOST_this_period, x_Log_Level=> 3);
22207                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_COST_this_period='||l_etc_TXN_COST_this_period, x_Log_Level=> 3);
22208                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_COST_this_period='||l_etc_PRJ_COST_this_period, x_Log_Level=> 3);
22209                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_COST_this_period='||l_etc_POU_COST_this_period, x_Log_Level=> 3);
22210                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_effort_this_period='||l_etc_effort_this_period, x_Log_Level=> 3);
22211                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_TXN_raw_COST_this_period='||l_etc_TXN_rawCOST_this_period, x_Log_Level=> 3);
22212                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_PRJ_raw_COST_this_period='||l_etc_PRJ_rawCOST_this_period, x_Log_Level=> 3);
22213                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_etc_POU_raw_COST_this_period='||l_etc_POU_rawCOST_this_period, x_Log_Level=> 3);
22214                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_pa_period_name='||to_char(null), x_Log_Level=> 3);
22215                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_gl_period_name='||to_char(null), x_Log_Level=> 3);
22216                 END IF;
22217 
22218 
22219                 PA_PROGRESS_PUB.push_workplan_actuals(
22220                         p_api_version                   =>      p_api_version
22221                         ,p_init_msg_list                =>      p_init_msg_list
22222                         ,p_commit                       =>      p_commit
22223                         ,p_validate_only                =>      p_validate_only
22224                         ,p_validation_level             =>      p_validation_level
22225                         ,p_calling_module               =>      p_calling_module
22226                         ,p_debug_mode                   =>      p_debug_mode
22227                         ,p_max_msg_count                =>      p_max_msg_count
22228                         ,p_project_Id                   =>      p_project_Id
22229                         ,p_structure_version_id         =>      p_dst_str_ver_id
22230                         ,p_proj_element_id              =>      l_ppev_ptav_rec.proj_element_id
22231                         ,p_object_id                    =>      l_ppev_ptav_rec.object_id
22232                         ,p_object_type                  =>      l_ppev_ptav_rec.object_type
22233                         ,p_as_of_date                   =>      trunc(sysdate) -- IS it OK to pass this as null, which period this will summarize into?
22234                         ,p_rbs_element_id               =>      l_ppev_ptav_rec.rbs_element_id
22235                         ,p_rate_based_flag              =>      l_ppev_ptav_rec.rate_based_flag
22236                         ,p_resource_class_code          =>      l_ppev_ptav_rec.resource_class_code
22237                         ,p_TXN_CURRENCY_CODE            =>      l_ppev_ptav_rec.txn_currency_code
22238                         ,p_act_TXN_COST_this_period     =>      l_act_TXN_COST_this_period
22239                         ,p_act_PRJ_COST_this_period     =>      l_act_PRJ_COST_this_period
22240                         ,p_act_POU_COST_this_period     =>      l_act_POU_COST_this_period
22241                         ,p_act_effort_this_period       =>      l_act_effort_this_period
22242                         ,p_call_pji_apis_flag           =>      'N'
22243                         ,p_act_TXN_raw_COST_this_period =>      l_act_TXN_RAWCOST_this_period
22244                         ,p_act_PRJ_raw_COST_this_period =>      l_act_PRJ_RAWCOST_this_period
22245                         ,p_act_POU_raw_COST_this_period =>      l_act_POU_RAWCOST_this_period
22246                         ,p_etc_TXN_COST_this_period     =>      l_etc_TXN_COST_this_period
22247                         ,p_etc_PRJ_COST_this_period     =>      l_etc_PRJ_COST_this_period
22248                         ,p_etc_POU_COST_this_period     =>      l_etc_POU_COST_this_period
22249                         ,p_etc_effort_this_period       =>      l_etc_effort_this_period
22250                         ,p_etc_TXN_raw_COST_this_period =>      l_etc_TXN_RAWCOST_this_period
22251                         ,p_etc_PRJ_raw_COST_this_period =>      l_etc_PRJ_RAWCOST_this_period
22252                         ,p_etc_POU_raw_COST_this_period =>      l_etc_POU_RAWCOST_this_period
22253                         ,x_return_status                =>      l_return_status
22254                         ,x_msg_count                    =>      l_msg_count
22255                         ,x_msg_data                     =>      l_msg_data);
22256 
22257                 IF g1_debug_mode  = 'Y' THEN
22258                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After Push Workplan Actuals l_return_status='||l_return_status, x_Log_Level=> 3);
22259             END IF;
22260 
22261 
22262                    l_actuals_pushed := 'Y';
22263 
22264             END LOOP;
22265             CLOSE cur_ppev_ptav;
22266 
22267         END IF;   --<<l_actuals_pushed>>
22268 ***************/
22269 
22270         if nvl( l_actuals_pushed, 'N') = 'Y' and (p_pji_conc_prog_context = 'N') -- Fix for Bug # 3996159.
22271         then
22272         BEGIN
22273 
22274         IF g1_debug_mode  = 'Y' THEN
22275         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'Calling PLAN_UPDATE_ACT_ETC', x_Log_Level=> 3);
22276         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_dst_str_ver_id='||p_dst_str_ver_id, x_Log_Level=> 3);
22277         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'p_last_pub_str_version_id'||p_last_pub_str_version_id, x_Log_Level=> 3);
22278     END IF;
22279 
22280 
22281         PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE_ACT_ETC (p_plan_wbs_ver_id     => p_dst_str_ver_id
22282                                                     , p_prev_pub_wbs_ver_id => p_last_pub_str_version_id
22283                                                     , x_msg_code => l_msg_code
22284                                                     , x_return_status => l_return_status);
22285 
22286     IF g1_debug_mode  = 'Y' THEN
22287         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.COPY_PROGRESS_ACT_ETC', x_Msg => 'After PLAN_UPDATE_ACT_ETC l_return_status='||l_return_status, x_Log_Level=> 3);
22288     END IF;
22289 
22290 
22291         EXCEPTION
22292            WHEN OTHERS THEN
22293                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
22294                             p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22295                             p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
22296                 RAISE FND_API.G_EXC_ERROR;
22297         END;
22298 
22299     -- populate_workplan_data is not called as it is called from page itself.
22300         end if;
22301 
22302 
22303         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
22304                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
22305                                      p_msg_name       => l_msg_data);
22306                 x_msg_data := l_msg_data;
22307                 x_return_status := 'E';
22308                 x_msg_count := l_msg_count;
22309                 RAISE  FND_API.G_EXC_ERROR;
22310         END IF;
22311 /***********
22312         -- here we need to make ETC as null on assignment records
22313         if (l_calling_context = 'PUBLISH') then
22314             update pa_progress_rollup
22315                set  oth_etc_quantity = to_number(null)
22316                    ,oth_etc_rawcost_tc     = to_number(null)
22317                    ,oth_etc_rawcost_pc     = to_number(null)
22318                    ,oth_etc_rawcost_fc     = to_number(null)
22319                    ,oth_etc_cost_tc        = to_number(null)
22320                    ,oth_etc_cost_pc        = to_number(null)
22321                    ,oth_etc_cost_fc        = to_number(null)
22322                    ,estimated_remaining_effort = to_number(null)
22323                    ,ppl_etc_rawcost_tc         = to_number(null)
22324                    ,ppl_etc_rawcost_pc         = to_number(null)
22325                    ,ppl_etc_rawcost_fc         = to_number(null)
22326                    ,ppl_etc_cost_tc            = to_number(null)
22327                    ,ppl_etc_cost_pc            = to_number(null)
22328                    ,ppl_etc_cost_fc            = to_number(null)
22329                    ,eqpmt_etc_effort       = to_number(null)
22330                    ,eqpmt_etc_rawcost_tc   = to_number(null)
22331                    ,eqpmt_etc_rawcost_pc   = to_number(null)
22332                    ,eqpmt_etc_rawcost_fc   = to_number(null)
22333                    ,eqpmt_etc_cost_tc      = to_number(null)
22334                    ,eqpmt_etc_cost_pc      = to_number(null)
22335                    ,eqpmt_etc_cost_fc      = to_number(null)
22336                    ,last_update_date       = SYSDATE
22337              where project_id = p_project_id
22338                and object_type = 'PA_ASSIGNMENTS'
22339                and structure_version_id is null
22340                and structure_type = 'WORKPLAN'
22341                and current_flag = 'Y';
22342          end if;
22343 ************/
22344         IF (p_commit = FND_API.G_TRUE) THEN
22345                 COMMIT;
22346         END IF;
22347 
22348 EXCEPTION
22349 
22350     when FND_API.G_EXC_ERROR then
22351       if p_commit = FND_API.G_TRUE then
22352          rollback to COPY_PROGRESS_ACT_ETC;
22353       end if;
22354       x_return_status := FND_API.G_RET_STS_ERROR;
22355 
22356     when FND_API.G_EXC_UNEXPECTED_ERROR then
22357       if p_commit = FND_API.G_TRUE then
22358          rollback to COPY_PROGRESS_ACT_ETC;
22359       end if;
22360       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22361       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
22362                               p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22363                               p_error_text     => SUBSTRB(SQLERRM,1,120));
22364     when OTHERS then
22365       if p_commit = FND_API.G_TRUE then
22366          rollback to COPY_PROGRESS_ACT_ETC;
22367       end if;
22368       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22369       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
22370                               p_procedure_name => 'COPY_PROGRESS_ACT_ETC',
22371                               p_error_text     => SUBSTRB(SQLERRM,1,120));
22372       raise;
22373 
22374 END  COPY_PROGRESS_ACT_ETC;
22375 
22376 
22377 
22378 -- Bug 3807299 : new API which will be called from update_progress and AMG pa_status_pub.update_progress
22379 PROCEDURE update_link_proj_rollup_dates(
22380   p_api_version                 IN      NUMBER          :=1.0
22381  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
22382  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
22383  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
22384  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
22385  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
22386  ,p_project_id                  IN      NUMBER
22387  ,p_task_id         IN      NUMBER
22388  ,p_task_version_id     IN      NUMBER
22389  ,p_as_of_date                  IN      DATE
22390  ,p_structure_version_id        IN      NUMBER
22391  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22392  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
22393  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22394 )
22395 IS
22396    l_api_name           CONSTANT   VARCHAR2(30)    := 'UPDATE_LINK_PROJ_ROLLUP_DATES';
22397    l_api_version        CONSTANT   NUMBER          := p_api_version;
22398    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
22399    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
22400    l_return_status                 VARCHAR2(1);
22401    l_msg_count                     NUMBER;
22402    l_msg_data                      VARCHAR2(250);
22403 
22404 CURSOR c_get_min_max_dates(c_par_project_id NUMBER, c_par_task_id NUMBER, c_par_task_ver_id NUMBER, c_par_str_ver_id NUMBER, c_as_of_date DATE) IS
22405         select min(ppr.actual_start_date), max(ppr.actual_finish_date),  min(ppr.estimated_start_date), max(ppr.estimated_finish_date)
22406         FROM
22407          --- removed join with pa_structures_links_v for performance improvement
22408          pa_proj_element_versions ppv1 --4871809
22409         ,pa_proj_element_versions ppv2
22410         ,pa_object_relationships por1
22411         ,pa_object_relationships por2
22412         ,pa_progress_rollup ppr
22413        WHERE
22414          ppv2.element_version_id = por1.object_id_to1
22415      AND ppv2.object_type = 'PA_STRUCTURES'
22416      AND por1.relationship_type in ( 'LW', 'LF' )
22417      AND por1.object_id_from1 = por2.object_id_to1
22418      AND por2.object_id_from1 = ppv1.element_version_id
22419      ANd por2.relationship_type = 'S'
22420      and por2.object_id_from2 = c_par_project_id
22421      and por2.object_id_from1 = c_par_task_ver_id
22422      and ppv1.parent_structure_version_id = c_par_str_ver_id
22423      AND por1.object_id_to2 = ppr.project_id
22424      and ppr.structure_type = 'WORKPLAN'
22425      and ppr.structure_version_id is null
22426      and ppr.object_type = 'PA_STRUCTURES'
22427      and ppr.current_flag <> 'W'   -- Bug 3879461
22428      and trunc(ppr.as_of_date) <= trunc(c_as_of_date);
22429 
22430 CURSOR c_get_sch_dates(c_project_id NUMBER, c_task_id NUMBER, c_task_ver_id NUMBER) IS
22431         select pev_schedule_id, actual_start_date, actual_finish_date, estimated_start_date, estimated_finish_date
22432         from pa_proj_elem_ver_schedule
22433         where project_id = c_project_id
22434     and proj_element_id = c_task_id
22435     and element_version_id = c_task_ver_id
22436     ;
22437 
22438 l_min_act_st_date       DATE;
22439 l_max_act_fin_date      DATE;
22440 l_min_est_st_date       DATE;
22441 l_max_est_fin_date      DATE;
22442 l_pev_schedule_id       NUMBER;
22443 l_act_st_date           DATE;
22444 l_act_fin_date          DATE;
22445 l_est_st_date           DATE;
22446 l_est_fin_date          DATE;
22447 l_actual_start_date_rollup  NUMBER;
22448 l_actual_finish_date_rollup NUMBER;
22449 l_estimated_start_date_rollup   NUMBER;
22450 l_estimated_finish_date_rollup  NUMBER;
22451 
22452 BEGIN
22453 
22454         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',l_user_id,l_login_id,275,null,null), 'N');
22455 
22456         IF g1_debug_mode  = 'Y' THEN
22457                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
22458         END IF;
22459 
22460         IF g1_debug_mode  = 'Y' THEN
22461                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES Start : Passed Parameters :', x_Log_Level=> 3);
22462                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
22463                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
22464                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
22465                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
22466                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
22467         END IF;
22468 
22469     IF g1_debug_mode  = 'Y' THEN
22470                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_LINK_PROJ_ROLLUP_DATES');
22471         END IF;
22472 
22473         IF (p_commit = FND_API.G_TRUE) THEN
22474                 savepoint UPDATE_LINK_PROJ_ROLLUP_DATES;
22475         END IF;
22476 
22477         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
22478                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22479         END IF;
22480 
22481         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
22482                 FND_MSG_PUB.initialize;
22483         END IF;
22484 
22485         x_return_status := FND_API.G_RET_STS_SUCCESS;
22486 
22487         OPEN c_get_min_max_dates(p_project_id, p_task_id, p_task_version_id, p_structure_version_id, p_as_of_date);
22488         FETCH c_get_min_max_dates INTO l_min_act_st_date, l_max_act_fin_date, l_min_est_st_date, l_max_est_fin_date;
22489     CLOSE c_get_min_max_dates;
22490 
22491         OPEN c_get_sch_dates(p_project_id, p_task_id, p_task_version_id);
22492         FETCH c_get_sch_dates INTO l_pev_schedule_id, l_act_st_date, l_act_fin_date, l_est_st_date, l_est_fin_date;
22493     CLOSE c_get_sch_dates;
22494 
22495     IF l_min_act_st_date IS NOT NULL OR l_max_act_fin_date IS NOT NULL OR
22496         l_min_est_st_date IS NOT NULL OR l_max_est_fin_date IS NOT NULL THEN
22497 
22498         IF l_min_act_st_date IS NOT NULL AND l_act_st_date IS NOT NULL THEN
22499             l_actual_start_date_rollup := l_act_st_date - l_min_act_st_date;
22500         END IF;
22501 
22502         IF l_max_act_fin_date IS NOT NULL AND l_act_fin_date IS NOT NULL THEN
22503             l_actual_finish_date_rollup := l_act_fin_date - l_max_act_fin_date;
22504         END IF;
22505 
22506         IF l_min_est_st_date IS NOT NULL AND l_est_st_date IS NOT NULL THEN
22507             l_estimated_start_date_rollup := l_est_st_date - l_min_est_st_date;
22508         END IF;
22509 
22510         IF l_max_est_fin_date IS NOT NULL AND l_est_fin_date IS NOT NULL THEN
22511             l_estimated_finish_date_rollup := l_est_fin_date - l_max_est_fin_date;
22512         END IF;
22513 
22514         UPDATE pa_proj_elem_ver_schedule
22515         SET actual_start_date_rollup= l_actual_start_date_rollup
22516         , actual_finish_date_rollup = l_actual_finish_date_rollup
22517         , estimated_start_date_rollup = l_estimated_start_date_rollup
22518         , estimated_finish_date_rollup = l_estimated_finish_date_rollup
22519         WHERE
22520         project_id = p_project_id
22521         and pev_schedule_id = l_pev_schedule_id
22522         and element_version_id = p_task_version_id
22523         and proj_element_id = p_task_id;
22524     END IF;
22525 
22526         IF (p_commit = FND_API.G_TRUE) THEN
22527                 COMMIT;
22528         END IF;
22529 
22530 
22531 EXCEPTION
22532     when FND_API.G_EXC_ERROR then
22533       if p_commit = FND_API.G_TRUE then
22534          rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22535       end if;
22536       x_return_status := FND_API.G_RET_STS_ERROR;
22537     when FND_API.G_EXC_UNEXPECTED_ERROR then
22538       if p_commit = FND_API.G_TRUE then
22539          rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22540       end if;
22541       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22542       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
22543                               p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
22544                               p_error_text     => SUBSTRB(SQLERRM,1,120));
22545     when OTHERS then
22546       if p_commit = FND_API.G_TRUE then
22547          rollback to UPDATE_LINK_PROJ_ROLLUP_DATES;
22548       end if;
22549       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
22550       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
22551                               p_procedure_name => 'UPDATE_LINK_PROJ_ROLLUP_DATES',
22552                               p_error_text     => SUBSTRB(SQLERRM,1,120));
22553       raise;
22554 END update_link_proj_rollup_dates;
22555 
22556 PROCEDURE UPDATE_PROGRESS_BULK(
22557   p_api_version             IN      NUMBER                  :=1.0
22558  ,p_init_msg_list           IN      VARCHAR2                :=FND_API.G_TRUE
22559  ,p_commit              IN      VARCHAR2                :=FND_API.G_FALSE
22560  ,p_validate_only           IN      VARCHAR2                :=FND_API.G_TRUE
22561  ,p_validation_level            IN      NUMBER                  :=FND_API.G_VALID_LEVEL_FULL
22562  ,p_calling_module          IN      VARCHAR2                :='SELF_SERVICE'
22563  ,p_calling_mode            IN      VARCHAR2                := null
22564  ,p_debug_mode              IN      VARCHAR2                :='N'
22565  ,p_max_msg_count           IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
22566  ,p_action              IN      VARCHAR2                :='SAVE'
22567  ,p_rollup_entire_wbs_flag      IN      VARCHAR2                :='N'
22568  ,p_progress_mode           IN      VARCHAR2                :='FUTURE'
22569  ,p_pm_product_code         IN      VARCHAR2                := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
22570  ,p_structure_type          IN      VARCHAR2                := 'WORKPLAN'
22571  ,p_project_id_tbl          IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22572  ,p_object_id_tbl           IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22573  ,p_object_version_id_tbl       IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22574  ,p_object_type_tbl         IN      SYSTEM.pa_varchar2_30_tbl_type      := SYSTEM.pa_varchar2_30_tbl_type()
22575  ,p_task_id_tbl             IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22576  ,p_structure_version_id_tbl        IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22577  ,p_as_of_date_tbl          IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22578  ,p_rbs_element_id_tbl              IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22579  ,p_resource_assignment_id_tbl      IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22580  ,p_rate_based_flag_tbl             IN      SYSTEM.pa_varchar2_1_tbl_type       := SYSTEM.pa_varchar2_1_tbl_type()
22581  ,p_resource_class_code_tbl         IN      SYSTEM.pa_varchar2_30_tbl_type      := SYSTEM.pa_varchar2_30_tbl_type()
22582  ,p_txn_currency_code_tbl           IN      SYSTEM.pa_varchar2_30_tbl_type      := SYSTEM.pa_varchar2_30_tbl_type()
22583  ,p_percent_complete_id_tbl     IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22584  ,p_record_version_number_tbl       IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22585  ,p_percent_complete_tbl        IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22586  ,p_eff_rup_percent_complete_tbl    IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22587  ,p_task_status_tbl         IN      SYSTEM.pa_varchar2_150_tbl_type     := SYSTEM.pa_varchar2_150_tbl_type()
22588  ,p_progress_status_code_tbl        IN      SYSTEM.pa_varchar2_30_tbl_type      := SYSTEM.pa_varchar2_30_tbl_type()
22589  ,p_progress_comment_tbl        IN      SYSTEM.pa_varchar2_4000_tbl_type2    := SYSTEM.pa_varchar2_4000_tbl_type2() /* 9754781 : Changes type */
22590  ,p_brief_overview_tbl          IN      SYSTEM.pa_varchar2_250_tbl_type     := SYSTEM.pa_varchar2_250_tbl_type()  /* 7709400 : Changed type */
22591  ,p_actual_start_date_tbl       IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22592  ,p_actual_finish_date_tbl      IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22593  ,p_estimated_start_date_tbl        IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22594  ,p_estimated_finish_date_tbl       IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22595  ,p_scheduled_start_date_tbl        IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22596  ,p_scheduled_finish_date_tbl       IN      SYSTEM.pa_date_tbl_type         := SYSTEM.pa_date_tbl_type()
22597  ,p_est_remaining_effort_tbl        IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22598  ,p_etc_cost_tbl            IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22599  ,p_actual_work_quantity_tbl        IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22600  ,p_actual_effort_tbl           IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22601  ,p_actual_cost_tbl         IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22602  ,p_act_eff_this_period_tbl     IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22603  ,p_actual_cost_this_period_tbl     IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22604  ,p_planned_cost_tbl            IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22605  ,p_planned_effort_tbl          IN      SYSTEM.pa_num_tbl_type          := SYSTEM.pa_num_tbl_type()
22606  ,x_return_status           OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22607  ,x_msg_count               OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
22608  ,x_msg_data                OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
22609 )
22610 IS
22611 
22612 l_api_name           CONSTANT   VARCHAR2(30)    := 'UPDATE_PROGRESSES_BULK'  ;
22613 l_api_version        CONSTANT   NUMBER          := p_api_version             ;
22614 l_user_id                       NUMBER          := FND_GLOBAL.USER_ID        ;
22615 l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID       ;
22616 l_return_status                 VARCHAR2(1)                                  ;
22617 l_msg_count                     NUMBER                                       ;
22618 l_msg_data                      VARCHAR2(250)                                ;
22619 l_object_type                   VARCHAR2(30)                                 ;
22620 l_structure_version_id          NUMBER                                       ;
22621 l_task_version_id               NUMBER                                       ;
22622 l_wp_rollup_method              pa_proj_progress_attr.task_weight_basis_code%TYPE;
22623 l_fin_rollup_method             pa_proj_progress_attr.task_weight_basis_code%TYPE;
22624 l_rollup_method                 pa_proj_progress_attr.task_weight_basis_code%TYPE;
22625 l_last_rollup_method            pa_proj_progress_attr.task_weight_basis_code%TYPE;
22626 L_LOWEST_LEVEL_TASK             VARCHAR2(1);
22627 l_last_progress_date            DATE;
22628 l_flag                          VARCHAR2(1);
22629 
22630 CURSOR c_get_task_version_id(c_proj_element_id NUMBER, c_project_id NUMBER, c_structure_version_id NUMBER)
22631 IS
22632 SELECT element_version_id, parent_structure_version_id
22633 FROM pa_proj_element_versions
22634 WHERE proj_element_id = c_proj_element_id
22635 AND object_type = 'PA_TASKS'
22636 AND project_id = c_project_id
22637 AND parent_structure_version_id = c_structure_version_id;
22638 
22639 CURSOR c_get_task_weight_method(c_project_id NUMBER, c_structure_type VARCHAR2)
22640 IS
22641 SELECT task_weight_basis_code
22642 FROM pa_proj_progress_attr
22643 WHERE project_id = c_project_id
22644 AND structure_type = c_structure_type;
22645 
22646 CURSOR c_get_latest_pub_task_ver(c_proj_element_id NUMBER, c_project_id NUMBER)
22647 IS
22648 SELECT elemver.element_version_id, elemver.parent_structure_version_id
22649 FROM pa_proj_element_versions elemver, pa_proj_elem_ver_structure str
22650 WHERE elemver.proj_element_id = c_proj_element_id
22651 AND elemver.object_type = 'PA_TASKS'
22652 AND elemver.project_id = c_project_id
22653 AND str.project_id = c_project_id
22654 AND elemver.parent_structure_version_id = str.element_version_id
22655 AND str.latest_eff_published_flag = 'Y';
22656 
22657 CURSOR c_get_template_flag(c_project_id NUMBER)
22658 IS
22659 SELECT TEMPLATE_FLAG
22660 FROM PA_PROJECTS_ALL
22661 WHERE PROJECT_ID = c_project_id;
22662 
22663 l_structure_sharing_code    pa_projects_all.structure_sharing_code%TYPE;
22664 l_last_str_sharing_code     pa_projects_all.structure_sharing_code%TYPE;
22665 l_last_project_id       NUMBER;
22666 l_last_sharing_Enabled      VARCHAR2(1);
22667 l_last_split_workplan       VARCHAR2(1);
22668 l_task_id           NUMBER;
22669 L_SHARING_ENABLED       VARCHAR2(1);
22670 L_SPLIT_WORKPLAN        VARCHAR2(1);
22671 l_project_ids           SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22672 l_struture_version_ids      SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22673 l_struture_version_id_tbl   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22674 l_proj_thru_dates_tbl       SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type();
22675 l_task_version_id_tbl       SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22676 l_wp_rollup_method_tbl      SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22677 l_fin_rollup_method_tbl     SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22678 l_object_type_tbl       SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
22679 l_lowest_level_task_tbl     SYSTEM.PA_VARCHAR2_1_TBL_TYPE    := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22680 l_task_id_tbl           SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22681 l_structure_version_id_tbl  SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22682 l_rollup_call_required_tbl  SYSTEM.PA_VARCHAR2_1_TBL_TYPE    := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22683 l_budget_call_required_tbl  SYSTEM.PA_VARCHAR2_1_TBL_TYPE    := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22684 l_mass_rlp_call_required_tbl    SYSTEM.PA_VARCHAR2_1_TBL_TYPE    := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
22685 l_action            VARCHAR2(30);
22686 l_resource_list_member_id   NUMBER;
22687 l_prog_pa_period_name       VARCHAR2(30);
22688 l_prog_gl_period_name       VARCHAR2(30);
22689 l_base_struct_ver_id        NUMBER;
22690 l_msg_code          VARCHAR2(32);
22691 l_record_count          NUMBER;
22692 l_count_of_rollup_calls     NUMBER;
22693 l_count_of_budget_calls     NUMBER;
22694 
22695 -- Bug 4218507
22696 l_mass_rollup_task_ver_id_tbl   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type();
22697 l_unique_rec_exists     VARCHAR2(1);
22698 l_calling_mode          VARCHAR2(15);
22699 l_check             VARCHAR2(1);
22700 
22701 -- Begin fix for Bug # 4524977.
22702 
22703 cursor l_cur_publish(l_request_id NUMBER)  is
22704 select substr(fcrsv.argument_text,1,(instr(fcrsv.argument_text,','))-1) process
22705 from fnd_conc_req_summary_v fcrsv
22706 where fcrsv.request_id = l_request_id;
22707 
22708 l_rec_publish l_cur_publish%ROWTYPE;
22709 
22710 l_wp_ver_enabled_flag VARCHAR2(1):= null;
22711 
22712 l_request_id            NUMBER          := null;
22713 l_process_code          VARCHAR2(30)    := null;
22714 l_str_version_id  NUMBER          := null;
22715 
22716 -- End fix for Bug # 4524977.
22717 
22718 l_plan_version_id       NUMBER; --  4587145
22719 
22720 l_prev_prog_upd_date date; -- 7225884
22721 
22722 -- MOAC Changes Bug 4698162 Begin
22723 CURSOR c_get_org_id(c_project_id NUMBER) IS
22724 select org_id
22725 from pa_projects_all
22726 where project_id = c_project_id;
22727 
22728 l_org_id NUMBER;
22729 -- MOAC Changes Bug 4698162 End
22730 l_structure_id   number;
22731 
22732 BEGIN
22733     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
22734 
22735         IF g1_debug_mode  = 'Y' THEN
22736                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK');
22737         END IF;
22738 
22739         --IF (p_commit = FND_API.G_TRUE) THEN
22740         savepoint UPDATE_PROGRESS_BULK;
22741         --END IF;
22742 
22743         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
22744                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22745         END IF;
22746 
22747         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
22748                 FND_MSG_PUB.initialize;
22749         END IF;
22750 
22751         x_return_status := FND_API.G_RET_STS_SUCCESS;
22752 
22753     l_record_count := p_project_id_tbl.COUNT;
22754 
22755     IF g1_debug_mode  = 'Y' THEN
22756         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK l_record_count '||l_record_count, x_Log_Level=> 3);
22757     END IF;
22758 
22759     IF( p_percent_complete_id_tbl.COUNT     <> l_record_count OR
22760         p_object_id_tbl.COUNT           <> l_record_count OR
22761         p_object_version_id_tbl.COUNT       <> l_record_count OR
22762         p_object_type_tbl.COUNT         <> l_record_count OR
22763         p_as_of_date_tbl.COUNT          <> l_record_count OR
22764         p_percent_complete_tbl.COUNT        <> l_record_count OR
22765         p_progress_status_code_tbl.COUNT        <> l_record_count OR
22766         p_progress_comment_tbl.COUNT        <> l_record_count OR
22767         p_brief_overview_tbl.COUNT          <> l_record_count OR
22768         p_actual_start_date_tbl.COUNT       <> l_record_count OR
22769         p_actual_finish_date_tbl.COUNT      <> l_record_count OR
22770         p_estimated_start_date_tbl.COUNT        <> l_record_count OR
22771         p_estimated_finish_date_tbl.COUNT           <> l_record_count OR
22772         p_scheduled_start_date_tbl.COUNT        <> l_record_count OR
22773         p_scheduled_finish_date_tbl.COUNT           <> l_record_count OR
22774         p_record_version_number_tbl.COUNT           <> l_record_count OR
22775         p_task_status_tbl.COUNT         <> l_record_count OR
22776         p_ETC_cost_tbl.COUNT            <> l_record_count OR
22777         p_est_remaining_effort_tbl.COUNT        <> l_record_count OR
22778         p_actual_work_quantity_tbl.COUNT        <> l_record_count OR
22779         p_actual_effort_tbl.COUNT           <> l_record_count OR
22780         p_actual_cost_tbl.COUNT         <> l_record_count OR
22781         p_act_eff_this_period_tbl.COUNT     <> l_record_count OR
22782         p_actual_cost_this_period_tbl.COUNT         <> l_record_count OR
22783         p_task_id_tbl.COUNT             <> l_record_count OR
22784         p_structure_version_id_tbl.COUNT        <> l_record_count OR
22785         p_planned_cost_tbl.COUNT            <> l_record_count OR
22786         p_planned_effort_tbl.COUNT          <> l_record_count OR
22787         p_rate_based_flag_tbl.COUNT         <> l_record_count OR
22788         p_resource_class_code_tbl.COUNT     <> l_record_count OR
22789         p_txn_currency_code_tbl.COUNT       <> l_record_count OR
22790         p_rbs_element_id_tbl.COUNT          <> l_record_count OR
22791         p_resource_assignment_id_tbl.COUNT          <> l_record_count OR
22792         p_eff_rup_percent_complete_tbl.COUNT    <> l_record_count )
22793     THEN
22794 
22795         IF g1_debug_mode  = 'Y' THEN
22796             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_percent_complete_id_tbl.COUNT '||p_percent_complete_id_tbl.COUNT, x_Log_Level=> 3);
22797             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_id_tbl.COUNT '||p_object_id_tbl.COUNT, x_Log_Level=> 3);
22798             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_version_id_tbl.COUNT '||p_object_version_id_tbl.COUNT, x_Log_Level=> 3);
22799             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_object_type_tbl.COUNT '||p_object_type_tbl.COUNT, x_Log_Level=> 3);
22800             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_as_of_date_tbl.COUNT '||p_as_of_date_tbl.COUNT, x_Log_Level=> 3);
22801             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_percent_complete_tbl.COUNT '||p_percent_complete_tbl.COUNT, x_Log_Level=> 3);
22802             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_progress_status_code_tbl.COUNT '||p_progress_status_code_tbl.COUNT, x_Log_Level=> 3);
22803             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_progress_comment_tbl.COUNT '||p_progress_comment_tbl.COUNT, x_Log_Level=> 3);
22804             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_brief_overview_tbl.COUNT '||p_brief_overview_tbl.COUNT, x_Log_Level=> 3);
22805             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_start_date_tbl.COUNT '||p_actual_start_date_tbl.COUNT, x_Log_Level=> 3);
22806             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_finish_date_tbl.COUNT '||p_actual_finish_date_tbl.COUNT, x_Log_Level=> 3);
22807             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_estimated_start_date_tbl.COUNT '||p_estimated_start_date_tbl.COUNT, x_Log_Level=> 3);
22808             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_estimated_finish_date_tbl.COUNT '||p_estimated_finish_date_tbl.COUNT, x_Log_Level=> 3);
22809             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_scheduled_start_date_tbl.COUNT '||p_scheduled_start_date_tbl.COUNT, x_Log_Level=> 3);
22810             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_scheduled_finish_date_tbl.COUNT '||p_scheduled_finish_date_tbl.COUNT, x_Log_Level=> 3);
22811             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_record_version_number_tbl.COUNT '||p_record_version_number_tbl.COUNT, x_Log_Level=> 3);
22812             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_task_status_tbl.COUNT '||p_task_status_tbl.COUNT, x_Log_Level=> 3);
22813             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_est_remaining_effort_tbl.COUNT '||p_est_remaining_effort_tbl.COUNT, x_Log_Level=> 3);
22814             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_ETC_cost_tbl.COUNT '||p_ETC_cost_tbl.COUNT, x_Log_Level=> 3);
22815             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_work_quantity_tbl.COUNT '||p_actual_work_quantity_tbl.COUNT, x_Log_Level=> 3);
22816             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_effort_tbl.COUNT '||p_actual_effort_tbl.COUNT, x_Log_Level=> 3);
22817             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_cost_tbl.COUNT '||p_actual_cost_tbl.COUNT, x_Log_Level=> 3);
22818             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_act_eff_this_period_tbl.COUNT '||p_act_eff_this_period_tbl.COUNT, x_Log_Level=> 3);
22819             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_actual_cost_this_period_tbl.COUNT '||p_actual_cost_this_period_tbl.COUNT, x_Log_Level=> 3);
22820             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_task_id_tbl.COUNT '||p_task_id_tbl.COUNT, x_Log_Level=> 3);
22821             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_structure_version_id_tbl.COUNT '||p_structure_version_id_tbl.COUNT, x_Log_Level=> 3);
22822             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_planned_cost_tbl.COUNT '||p_planned_cost_tbl.COUNT, x_Log_Level=> 3);
22823             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_planned_effort_tbl.COUNT '||p_planned_effort_tbl.COUNT, x_Log_Level=> 3);
22824             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rate_based_flag_tbl.COUNT '||p_rate_based_flag_tbl.COUNT, x_Log_Level=> 3);
22825             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_resource_class_code_tbl.COUNT '||p_resource_class_code_tbl.COUNT, x_Log_Level=> 3);
22826             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_txn_currency_code_tbl.COUNT '||p_txn_currency_code_tbl.COUNT, x_Log_Level=> 3);
22827             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rbs_element_id_tbl.COUNT '||p_rbs_element_id_tbl.COUNT, x_Log_Level=> 3);
22828             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_resource_assignment_id_tbl.COUNT '||p_resource_assignment_id_tbl.COUNT, x_Log_Level=> 3);
22829             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_rbs_element_id_tbl.COUNT '||p_rbs_element_id_tbl.COUNT, x_Log_Level=> 3);
22830             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK p_eff_rup_percent_complete_tbl.COUNT '||p_eff_rup_percent_complete_tbl.COUNT, x_Log_Level=> 3);
22831         END IF;
22832 
22833         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
22834                                     ,p_msg_name       => 'PA_INV_PARAM_PASSED');
22835         x_msg_data := 'PA_INV_PARAM_PASSED';
22836         x_return_status := FND_API.G_RET_STS_ERROR;
22837         RAISE  FND_API.G_EXC_ERROR;
22838     END IF;
22839 
22840 
22841     l_action := p_action;
22842     l_last_str_sharing_code := 'ABC';
22843     l_last_project_id := -9999;
22844 	PA_PROGRESS_PUB.G_PROJECT_ID := null; --Added for huawei
22845     l_last_sharing_Enabled := 'X';
22846     l_last_split_workplan := 'X';
22847     FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
22848         IF g1_debug_mode  = 'Y' THEN
22849             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_project_id_tbl('||i||')='||p_project_id_tbl(i), x_Log_Level=> 3);
22850             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_type_tbl('||i||')='||p_object_type_tbl(i), x_Log_Level=> 3);
22851             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_id_tbl('||i||')='||p_object_id_tbl(i), x_Log_Level=> 3);
22852             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_object_version_id_tbl('||i||')='||p_object_version_id_tbl(i), x_Log_Level=> 3);
22853             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_task_id_tbl('||i||')='||p_task_id_tbl(i), x_Log_Level=> 3);
22854             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_structure_version_id_tbl('||i||')='||p_structure_version_id_tbl(i), x_Log_Level=> 3);
22855             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_as_of_date_tbl('||i||')='||p_as_of_date_tbl(i), x_Log_Level=> 3);
22856             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_task_status_tbl('||i||')='||p_task_status_tbl(i), x_Log_Level=> 3);
22857             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_percent_complete_tbl('||i||')='||p_percent_complete_tbl(i), x_Log_Level=> 3);
22858             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_progress_status_code_tbl('||i||')='||p_progress_status_code_tbl(i), x_Log_Level=> 3);
22859             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_progress_comment_tbl('||i||')='||p_progress_comment_tbl(i), x_Log_Level=> 3);
22860             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_brief_overview_tbl('||i||')='||p_brief_overview_tbl(i), x_Log_Level=> 3);
22861             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_start_date_tbl('||i||')='||p_actual_start_date_tbl(i), x_Log_Level=> 3);
22862             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_finish_date_tbl('||i||')='||p_actual_finish_date_tbl(i), x_Log_Level=> 3);
22863             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_estimated_start_date_tbl('||i||')='||p_estimated_start_date_tbl(i), x_Log_Level=> 3);
22864             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_estimated_finish_date_tbl('||i||')='||p_estimated_finish_date_tbl(i), x_Log_Level=> 3);
22865             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_scheduled_start_date_tbl('||i||')='||p_scheduled_start_date_tbl(i), x_Log_Level=> 3);
22866             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_scheduled_finish_date_tbl('||i||')='||p_scheduled_finish_date_tbl(i), x_Log_Level=> 3);
22867             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_percent_complete_id_tbl('||i||')='||p_percent_complete_id_tbl(i), x_Log_Level=> 3);
22868             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_record_version_number_tbl('||i||')='||p_record_version_number_tbl(i), x_Log_Level=> 3);
22869             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_ETC_cost_tbl('||i||')='||p_ETC_cost_tbl(i), x_Log_Level=> 3);
22870             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_est_remaining_effort_tbl('||i||')='||p_est_remaining_effort_tbl(i), x_Log_Level=> 3);
22871             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_work_quantity_tbl('||i||')='||p_actual_work_quantity_tbl(i), x_Log_Level=> 3);
22872             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_effort_tbl('||i||')='||p_actual_effort_tbl(i), x_Log_Level=> 3);
22873             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_cost_tbl('||i||')='||p_actual_cost_tbl(i), x_Log_Level=> 3);
22874             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_act_eff_this_period_tbl('||i||')='||p_act_eff_this_period_tbl(i), x_Log_Level=> 3);
22875             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_actual_cost_this_period_tbl('||i||')='||p_actual_cost_this_period_tbl(i), x_Log_Level=> 3);
22876             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_planned_cost_tbl('||i||')='||p_planned_cost_tbl(i), x_Log_Level=> 3);
22877             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_planned_effort_tbl('||i||')='||p_planned_effort_tbl(i), x_Log_Level=> 3);
22878             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_rate_based_flag_tbl('||i||')='||p_rate_based_flag_tbl(i), x_Log_Level=> 3);
22879             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_resource_class_code_tbl('||i||')='||p_resource_class_code_tbl(i), x_Log_Level=> 3);
22880             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_txn_currency_code_tbl('||i||')='||p_txn_currency_code_tbl(i), x_Log_Level=> 3);
22881             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_rbs_element_id_tbl('||i||')='||p_rbs_element_id_tbl(i), x_Log_Level=> 3);
22882             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_resource_assignment_id_tbl('||i||')='||p_resource_assignment_id_tbl(i), x_Log_Level=> 3);
22883             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'p_eff_rup_percent_complete_tbl('||i||')='||p_eff_rup_percent_complete_tbl(i), x_Log_Level=> 3);
22884         END IF;
22885 
22886         -- Begin fix for Bug # 4524977.
22887 
22888         PA_PROJECT_STRUCTURE_UTILS.GET_CONC_REQUEST_DETAILS
22889         (p_project_id            => p_project_id_tbl(i)
22890         ,p_structure_type        => p_structure_type
22891         ,x_request_id            => l_request_id
22892         ,x_process_code          => l_process_code
22893         ,x_structure_version_id  => l_str_version_id
22894         ,x_return_status         => l_return_status
22895         ,x_msg_count             => l_msg_count
22896         ,x_msg_data              => l_msg_data);
22897 
22898 
22899         if l_return_status <> FND_API.G_RET_STS_SUCCESS then
22900 
22901                 x_msg_data := l_msg_data;
22902                 x_return_status := 'E';
22903                 x_msg_count := l_msg_count;
22904 
22905                 raise FND_API.G_EXC_ERROR;
22906 
22907         end if;
22908 
22909         open l_cur_publish(l_request_id);
22910         fetch l_cur_publish into l_rec_publish;
22911         close l_cur_publish;
22912 
22913 
22914         l_wp_ver_enabled_flag := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(p_project_id_tbl(i));
22915 
22916         if ((l_rec_publish.process = 'CONC_PUBLISH')
22917             and (l_process_code in ('WUP', 'WUE'))
22918             and (l_wp_ver_enabled_flag = 'Y'))  then
22919 
22920                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22921                                      ,p_msg_name      => 'PA_PS_PUBLISH_NO_PROG');
22922 
22923                 x_msg_data := 'PA_PS_PUBLISH_NO_PROG';
22924 
22925                 x_return_status := FND_API.G_RET_STS_ERROR;
22926 
22927                 raise FND_API.G_EXC_ERROR;
22928 
22929         elsif ((l_rec_publish.process = 'CONC_UPDATE')
22930                and (l_process_code = 'WUP')
22931                and (l_wp_ver_enabled_flag = 'N')) then
22932 
22933                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22934                                      ,p_msg_name      => 'PA_PS_UPDATE_NO_PROG');
22935 
22936                 x_msg_data := 'PA_PS_UPDATE_NO_PROG';
22937 
22938                 x_return_status := FND_API.G_RET_STS_ERROR;
22939 
22940                 raise FND_API.G_EXC_ERROR;
22941 
22942         elsif ((l_rec_publish.process = 'APPLY_PROGRESS')
22943                and (l_process_code = 'WUP')
22944                and (l_wp_ver_enabled_flag = 'N')) then
22945 
22946                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
22947                                      ,p_msg_name      => 'PA_PS_APLPRG_NO_PROG');
22948 
22949                 x_msg_data := 'PA_PS_APLPRG_NO_PROG';
22950 
22951                 x_return_status := FND_API.G_RET_STS_ERROR;
22952 
22953                 raise FND_API.G_EXC_ERROR;
22954 
22955         end if;
22956 
22957         -- End fix for Bug # 4524977.
22958 
22959         -- Call repective update_task_progress, finc, assgn, dlv depdening on object_type
22960         IF (p_object_type_tbl(i) IS NULL OR p_object_id_tbl(i) IS NULL OR p_as_of_date_tbl(i) IS NULL ) THEN
22961             PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
22962                         ,p_msg_name       => 'PA_INV_PARAM_PASSED');
22963             x_msg_data := 'PA_INV_PARAM_PASSED';
22964             x_return_status := FND_API.G_RET_STS_ERROR;
22965             RAISE  FND_API.G_EXC_ERROR;
22966         END IF;
22967 
22968         IF l_last_project_id <> p_project_id_tbl(i) THEN
22969             l_last_project_id :=  p_project_id_tbl(i);
22970 			PA_PROGRESS_PUB.G_PROJECT_ID :=l_last_project_id; --Added for huawei
22971             l_last_str_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(l_last_project_id);
22972             l_last_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(l_last_project_id);
22973             IF (l_last_sharing_Enabled = 'N' OR (l_last_sharing_Enabled = 'Y' AND l_last_str_sharing_code <> 'SHARE_FULL'))
22974                  AND p_structure_type = 'WORKPLAN'
22975             THEN
22976                 l_last_split_workplan := 'Y';
22977             ELSE
22978                 l_last_split_workplan := 'N';
22979             END IF;
22980 
22981             OPEN c_get_task_weight_method(l_last_project_id, p_structure_type);
22982             FETCH c_get_task_weight_method INTO l_last_rollup_method;
22983             CLOSE c_get_task_weight_method;
22984 
22985             l_structure_sharing_code := l_last_str_sharing_code;
22986             l_sharing_Enabled := l_last_sharing_Enabled;
22987             l_split_workplan := l_last_split_workplan;
22988             l_rollup_method := l_last_rollup_method;
22989 
22990 	    -- MOAC Changes Bug 4698162 Begin
22991 	    OPEN c_get_org_id(p_project_id_tbl(i));
22992 	    FETCH c_get_org_id INTO l_org_id;
22993 	    CLOSE c_get_org_id;
22994 
22995 	    IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <>  l_org_id THEN
22996 		PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
22997 	    END IF;
22998 	    -- MOAC Changes Bug 4698162 End
22999 
23000         ELSE
23001             l_structure_sharing_code := l_last_str_sharing_code;
23002             l_sharing_Enabled := l_last_sharing_Enabled;
23003             l_split_workplan := l_last_split_workplan;
23004             l_rollup_method := l_last_rollup_method;
23005         END IF;
23006 
23007         IF (p_calling_module = 'AMG') THEN
23008             OPEN c_get_template_flag(p_project_id_tbl(i));
23009             FETCH c_get_template_flag INTO l_flag;
23010             CLOSE c_get_template_flag;
23011             IF (l_flag = 'Y') THEN
23012                 PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA'
23013                          ,p_msg_name       => 'PA_TEMPL_PROGRESS_NOT_ALLOWED');
23014                 x_msg_data := 'PA_TEMPL_PROGRESS_NOT_ALLOWED';
23015                 x_return_status := FND_API.G_RET_STS_ERROR;
23016                 RAISE  FND_API.G_EXC_ERROR;
23017              END IF;
23018         END IF;
23019 
23020 		IF p_structure_type = 'WORKPLAN' THEN -- bug 7225884
23021 		  BEGIN
23022 		     SELECT next_progress_update_date
23023 		       INTO l_prev_prog_upd_date
23024 		       FROM pa_proj_progress_attr
23025 		      WHERE project_id = p_project_id_tbl(i)
23026 		    AND object_type    = 'PA_STRUCTURES'
23027 		    AND structure_type = 'WORKPLAN';
23028 		  EXCEPTION
23029 		  WHEN OTHERS THEN
23030 		    l_prev_prog_upd_date := p_as_of_date_tbl(i)-1;
23031 		  END;
23032 
23033 		  IF NVL(l_prev_prog_upd_date,p_as_of_date_tbl(i)-1) <> p_as_of_date_tbl(i) THEN
23034 		     UPDATE pa_proj_progress_attr
23035 		    SET next_progress_update_date = p_as_of_date_tbl(i)
23036 		      WHERE project_id            = p_project_id_tbl(i)
23037 		    AND object_type               = 'PA_STRUCTURES'
23038 		    AND structure_type            = 'WORKPLAN';
23039 		  END IF;
23040 
23041 		END IF;
23042 
23043 
23044         IF (p_structure_type = 'FINANCIAL' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
23045             IF g1_debug_mode  = 'Y' THEN
23046                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Financial ', x_Log_Level=> 3);
23047                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_FINANCIAL_TASK_PROGRESS', x_Log_Level=> 3);
23048             END IF;
23049 
23050 
23051             PA_PROGRESS_PUB.UPDATE_FINANCIAL_TASK_PROGRESS(
23052                      p_api_version                   => l_api_version
23053                      ,p_init_msg_list                => p_init_msg_list
23054                      ,p_commit                       => p_commit
23055                      ,p_validate_only                => p_validate_only
23056                      ,p_validation_level             => p_validation_level
23057                      ,p_calling_module               => p_calling_module
23058                      ,p_action                       => l_action
23059                      ,P_rollup_entire_wbs_flag       => P_rollup_entire_wbs_flag
23060                      ,p_percent_complete_id          => p_percent_complete_id_tbl(i)
23061                      ,p_project_id                   => p_project_id_tbl(i)
23062                      ,p_object_id                    => p_object_id_tbl(i)
23063                      ,p_object_version_id            => p_object_version_id_tbl(i)
23064                      ,p_object_type                  => p_object_type_tbl(i)
23065                      ,p_as_of_date                   => p_as_of_date_tbl(i)
23066                      ,p_percent_complete             => p_percent_complete_tbl(i)
23067                      ,p_structure_type               => p_structure_type
23068                      ,p_task_id                      => p_task_id_tbl(i)
23069                      ,p_structure_version_id         => p_structure_version_id_tbl(i)
23070                      ,p_record_version_number        => p_record_version_number_tbl(i)
23071                      ,p_progress_comment             => p_progress_comment_tbl(i)
23072                      ,p_brief_overview               => p_brief_overview_tbl(i)
23073                      ,x_return_status                => l_return_status
23074                      ,x_msg_count                    => l_msg_count
23075                      ,x_msg_data                     => l_msg_data
23076                      );
23077             IF g1_debug_mode  = 'Y' THEN
23078                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_FINANCIAL_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23079             END IF;
23080         ELSIF (p_structure_type = 'WORKPLAN' AND (p_object_type_tbl(i) = 'PA_TASKS' OR p_object_type_tbl(i)='PA_STRUCTURES')) THEN
23081             IF g1_debug_mode  = 'Y' THEN
23082                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Structure Type Workplan ', x_Log_Level=> 3);
23083                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_TASK_PROGRESS', x_Log_Level=> 3);
23084             END IF;
23085             PA_PROGRESS_PUB.UPDATE_TASK_PROGRESS(
23086                  p_api_version           => l_api_version
23087                  ,p_init_msg_list         => p_init_msg_list
23088                  ,p_commit                => p_commit
23089                  ,p_validate_only         => p_validate_only
23090                  ,p_validation_level      => p_validation_level
23091                  ,p_calling_module        => p_calling_module
23092                  ,p_calling_mode      => p_calling_mode   --bug 4287638
23093                  ,p_debug_mode            => p_debug_mode
23094                  ,p_max_msg_count         => p_max_msg_count
23095                  ,p_action                => l_action
23096                  ,p_bulk_load_flag        => p_rollup_entire_wbs_flag
23097                  ,p_progress_mode         => p_progress_mode
23098                  ,p_percent_complete_id   => p_percent_complete_id_tbl(i)
23099                  ,p_project_id            => p_project_id_tbl(i)
23100                  ,p_object_id             => p_object_id_tbl(i)
23101                  ,p_object_version_id     => p_object_version_id_tbl(i)
23102                  ,p_object_type           => p_object_type_tbl(i)
23103                  ,p_as_of_date            => p_as_of_date_tbl(i)
23104                  ,p_percent_complete      => p_percent_complete_tbl(i)
23105                  ,p_progress_status_code  => p_progress_status_code_tbl(i)
23106                  ,p_progress_comment      => p_progress_comment_tbl(i)
23107                  ,p_brief_overview        => p_brief_overview_tbl(i)
23108                  ,p_actual_start_date     => p_actual_start_date_tbl(i)
23109                  ,p_actual_finish_date    => p_actual_finish_date_tbl(i)
23110                  ,p_estimated_start_date  => p_estimated_start_date_tbl(i)
23111                  ,p_estimated_finish_date => p_estimated_finish_date_tbl(i)
23112                  ,p_record_version_number => p_record_version_number_tbl(i)
23113                  ,p_task_status           => p_task_status_tbl(i)
23114                  ,p_actual_work_quantity  => p_actual_work_quantity_tbl(i)
23115                  ,p_pm_product_code       => p_pm_product_code
23116                  ,p_structure_type        => p_structure_type
23117                  ,p_planned_cost          => p_planned_cost_tbl(i)
23118                  ,p_planned_effort        => p_planned_effort_tbl(i)
23119                  ,p_actual_effort         => p_actual_effort_tbl(i)
23120                  ,p_est_remaining_effort  => p_est_remaining_effort_tbl(i)
23121                  ,p_structure_version_id  => p_structure_version_id_tbl(i)
23122                  ,p_eff_rollup_percent_complete => p_eff_rup_percent_complete_tbl(i)
23123                  ,x_resource_list_member_id => l_resource_list_member_id
23124                  ,x_return_status         => l_return_status
23125                  ,x_msg_count             => l_msg_count
23126                  ,x_msg_data              => l_msg_data
23127                 );
23128 
23129             IF g1_debug_mode  = 'Y' THEN
23130                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_TASK_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23131             END IF;
23132         ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_ASSIGNMENTS' ) THEN
23133             IF g1_debug_mode  = 'Y' THEN
23134                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_ASSIGNMENT_PROGRESS', x_Log_Level=> 3);
23135             END IF;
23136                  PA_ASSIGNMENT_PROGRESS_PUB.UPDATE_ASSIGNMENT_PROGRESS(
23137                  p_api_version                   => l_api_version
23138                  ,p_init_msg_list                => p_init_msg_list
23139                  ,p_commit                       => p_commit
23140                  ,p_validate_only                => p_validate_only
23141                  ,p_validation_level             => p_validation_level
23142                  ,p_calling_module               => p_calling_module
23143                  ,p_action                       => l_action
23144                  ,p_bulk_load_flag               => p_rollup_entire_wbs_flag
23145                  ,p_progress_mode                => p_progress_mode
23146                  ,p_percent_complete_id          => p_percent_complete_id_tbl(i)
23147                  ,p_project_id                   => p_project_id_tbl(i)
23148                  ,p_object_id                    => p_object_id_tbl(i)
23149                  ,p_object_version_id            => p_object_version_id_tbl(i)
23150                  ,p_task_id                      => p_task_id_tbl(i)
23151                  ,p_as_of_date                   => p_as_of_date_tbl(i)
23152                  ,p_progress_comment             => p_progress_comment_tbl(i)
23153                  ,p_brief_overview               => p_brief_overview_tbl(i)
23154                  ,p_actual_start_date            => p_actual_start_date_tbl(i)
23155                  ,p_actual_finish_date           => p_actual_finish_date_tbl(i)
23156                  ,p_estimated_start_date         => p_estimated_start_date_tbl(i)
23157                  ,p_estimated_finish_date        => p_estimated_finish_date_tbl(i)
23158                  ,p_record_version_number        => p_record_version_number_tbl(i)
23159                  ,p_pm_product_code              => p_pm_product_code
23160                  ,p_structure_type               => p_structure_type
23161                  ,p_structure_version_id         => p_structure_version_id_tbl(i)
23162                  ,p_actual_cost_this_period      => p_actual_cost_this_period_tbl(i)
23163                  ,p_actual_effort_this_period    => p_act_eff_this_period_tbl(i)
23164                  ,p_rate_based_flag              => p_rate_based_flag_tbl(i)
23165                  ,p_resource_class_code          => p_resource_class_code_tbl(i)
23166                  ,p_actual_cost                  => p_actual_cost_tbl(i)
23167                  ,p_actual_effort                => p_actual_effort_tbl(i)
23168                  ,p_etc_cost_this_period         => p_etc_cost_tbl(i)
23169                  ,p_etc_effort_this_period       => p_est_remaining_effort_tbl(i)
23170                  ,p_txn_currency_code            => p_txn_currency_code_tbl(i)
23171                  ,p_rbs_element_id               => p_rbs_element_id_tbl(i)
23172                  ,p_resource_assignment_id       => p_resource_assignment_id_tbl(i)
23173                  ,p_scheduled_start_date         => p_scheduled_start_date_tbl(i)
23174                  ,p_scheduled_finish_date        => p_scheduled_finish_date_tbl(i)
23175                  ,x_return_status                => l_return_status
23176                  ,x_msg_count                    => l_msg_count
23177                  ,x_msg_data                     => l_msg_data
23178                  );
23179             IF g1_debug_mode  = 'Y' THEN
23180                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_ASSIGNMENT_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23181             END IF;
23182         ELSIF (p_structure_type = 'WORKPLAN' AND p_object_type_tbl(i) = 'PA_DELIVERABLES' ) THEN
23183             IF g1_debug_mode  = 'Y' THEN
23184                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling UPDATE_DELIVERABLE_PROGRESS', x_Log_Level=> 3);
23185             END IF;
23186             PA_DELIVERABLE_PROGRESS_PUB.UPDATE_DELIVERABLE_PROGRESS(
23187                    p_api_version                   => l_api_version
23188                   ,p_init_msg_list                => p_init_msg_list
23189                   ,p_commit                       => p_commit
23190                   ,p_validate_only                => p_validate_only
23191                   ,p_validation_level             => p_validation_level
23192                   ,p_calling_module               => p_calling_module
23193                   ,p_action                       => l_action
23194                   ,p_bulk_load_flag               => P_rollup_entire_wbs_flag
23195                   ,p_progress_mode                => p_progress_mode
23196                   ,p_percent_complete_id          => p_percent_complete_id_tbl(i)
23197                   ,p_project_id                   => p_project_id_tbl(i)
23198                   ,p_object_id                    => p_object_id_tbl(i)
23199                   ,p_object_type                  => p_object_type_tbl(i)
23200                   ,p_object_version_id            => p_object_version_id_tbl(i)
23201                   ,p_del_status                   => p_task_status_tbl(i)
23202                   ,p_task_id                      => p_task_id_tbl(i)
23203                   ,p_as_of_date                   => p_as_of_date_tbl(i)
23204                   ,p_percent_complete             => p_percent_complete_tbl(i)
23205                   ,p_progress_status_code         => p_progress_status_code_tbl(i)
23206                   ,p_progress_comment             => p_progress_comment_tbl(i)
23207                   ,p_brief_overview               => p_brief_overview_tbl(i)
23208                   ,p_actual_finish_date           => p_actual_finish_date_tbl(i)
23209                   ,p_record_version_number        => p_record_version_number_tbl(i)
23210                   ,p_pm_product_code              => p_pm_product_code
23211                   ,p_structure_type               => p_structure_type
23212                   ,x_return_status                => l_return_status
23213                   ,x_msg_count                    => l_msg_count
23214                   ,x_msg_data                     => l_msg_data
23215                  );
23216             IF g1_debug_mode  = 'Y' THEN
23217                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling UPDATE_DELIVERABLE_PROGRESS l_return_status='||l_return_status, x_Log_Level=> 3);
23218             END IF;
23219         END IF;
23220 
23221         IF g1_debug_mode  = 'Y' THEN
23222             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After individual APIs are called l_return_status='||l_return_status, x_Log_Level=> 3);
23223         END IF;
23224 
23225         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23226             x_msg_data := l_msg_data;
23227             x_return_status := 'E';
23228             x_msg_count := l_msg_count;
23229             RAISE  FND_API.G_EXC_ERROR;
23230         END IF;
23231 
23232         l_task_version_id_tbl.extend(1);
23233         l_object_type_tbl.extend(1);
23234         l_lowest_level_task_tbl.extend(1);
23235         l_structure_version_id_tbl.extend(1);
23236         l_task_id_tbl.extend(1);
23237         l_wp_rollup_method_tbl.extend(1);
23238         l_fin_rollup_method_tbl.extend(1);
23239         l_rollup_call_required_tbl.extend(1);
23240         l_mass_rlp_call_required_tbl.extend(1);
23241         l_budget_call_required_tbl.extend(1);
23242 
23243         IF g1_debug_mode  = 'Y' THEN
23244             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After building plsql tables', x_Log_Level=> 3);
23245         END IF;
23246 
23247 
23248         IF (p_object_type_tbl(i) = 'PA_ASSIGNMENTS' OR p_object_type_tbl(i) = 'PA_DELIVERABLES'
23249            OR (p_structure_type = 'FINANCIAL' and p_object_type_tbl(i) = 'PA_TASKS'))
23250         THEN
23251 
23252             l_object_type_tbl(i) := 'PA_TASKS';
23253             l_task_version_id_tbl(i) := null;
23254             l_structure_version_id_tbl(i) := null;
23255 
23256             IF   p_object_type_tbl(i) = 'PA_DELIVERABLES' AND  (p_task_id_tbl(i) IS NOT NULL)THEN
23257                 -- In deliverable case, we may not get task's structure version id. So we need to derive it.
23258                 IF ( PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id_tbl(i), p_task_id_tbl(i))) <> 'CANCELLED' ) THEN
23259                     OPEN c_get_latest_pub_task_ver(p_task_id_tbl(i), p_project_id_tbl(i));
23260                     FETCH c_get_latest_pub_task_ver INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
23261                     CLOSE c_get_latest_pub_task_ver;
23262                 END IF;
23263 
23264             ELSE
23265                 OPEN c_get_task_version_id(p_task_id_tbl(i), p_project_id_tbl(i) ,p_structure_version_id_tbl(i));
23266                 FETCH c_get_task_version_id INTO l_task_version_id_tbl(i), l_structure_version_id_tbl(i);
23267                 CLOSE c_get_task_version_id;
23268             END IF;
23269             l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
23270             l_task_id_tbl(i) := p_task_id_tbl(i);
23271         ELSE
23272             l_object_type_tbl(i) := p_object_type_tbl(i);
23273             l_task_version_id_tbl(i)   := p_object_version_id_tbl(i);
23274             l_lowest_level_task_tbl(i) := PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => l_task_version_id_tbl(i) );
23275             l_structure_version_id_tbl(i) := p_structure_version_id_tbl(i);
23276             l_task_id_tbl(i) := p_object_id_tbl(i);
23277         END IF;
23278 
23279         l_wp_rollup_method_tbl(i) := l_rollup_method;
23280         l_fin_rollup_method_tbl(i) := l_rollup_method;
23281         l_rollup_call_required_tbl(i) := 'Y';
23282         l_budget_call_required_tbl(i) := 'Y';
23283         l_mass_rlp_call_required_tbl(i) := 'N';
23284     END LOOP ; -- FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST LOOP
23285 
23286     IF g1_debug_mode  = 'Y' THEN
23287         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After First loop', x_Log_Level=> 3);
23288     END IF;
23289 
23290 
23291     -- loop through to find out whether mass rollup should be called or individual rollup
23292     FOR i in p_project_id_tbl.FIRST..p_project_id_tbl.LAST-1 LOOP
23293         IF l_task_version_id_tbl(i) IS NULL THEN
23294             l_rollup_call_required_tbl(i) := 'N';
23295             l_budget_call_required_tbl(i) := 'N';
23296         ELSE
23297             IF l_rollup_call_required_tbl(i) = 'Y'
23298             THEN
23299                 FOR j in i+1..p_project_id_tbl.count LOOP
23300                     IF l_task_version_id_tbl(j) IS NULL THEN
23301                         l_rollup_call_required_tbl(j) := 'N';
23302                         l_budget_call_required_tbl(j) := 'N';
23303                     ELSE
23304                         IF p_project_id_tbl(i) = p_project_id_tbl(j) AND
23305                            p_as_of_date_tbl(i) = p_as_of_date_tbl(j) AND
23306                            l_structure_version_id_tbl(i) = l_structure_version_id_tbl(j)
23307                         THEN
23308                             l_budget_call_required_tbl(j) := 'N';
23309                             IF l_task_version_id_tbl(i) = l_task_version_id_tbl(j)
23310                             THEN
23311                                 l_rollup_call_required_tbl(j) := 'N';
23312                             ELSE
23313                                 l_mass_rlp_call_required_tbl(i) := 'Y';
23314                                 l_rollup_call_required_tbl(i) := 'N';
23315                                 l_rollup_call_required_tbl(j) := 'N';
23316                             END IF;
23317                         END IF;
23318                     END IF;
23319                 END LOOP;
23320             END IF;
23321         END IF;
23322     END LOOP;
23323 
23324     IF g1_debug_mode  = 'Y' THEN
23325         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Second loop', x_Log_Level=> 3);
23326     END IF;
23327 
23328     l_last_project_id := null; -- MOAC Changes Bug 4698162
23329 	PA_PROGRESS_PUB.G_PROJECT_ID :=null; --Added for huawei
23330 
23331     FOR i in 1..l_task_version_id_tbl.count LOOP
23332 
23333 	-- MOAC Changes Bug 4698162 Begin
23334         IF NVL(l_last_project_id,-1234) <> p_project_id_tbl(i) THEN
23335             l_last_project_id :=  p_project_id_tbl(i);
23336 
23337             -- added below 2 lines of code for Huawei bug 13923366 skkoppul
23338             PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED := PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED( p_project_id_tbl(i) );
23339             PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE := PA_PROJ_TASK_STRUC_PUB.GET_SHARE_TYPE(p_project_id_tbl(i));
23340 
23341 	    OPEN c_get_org_id(p_project_id_tbl(i));
23342 	    FETCH c_get_org_id INTO l_org_id;
23343 	    CLOSE c_get_org_id;
23344 
23345 	    IF NVL(PA_MOAC_UTILS.GET_CURRENT_ORG_ID,-1234) <>  l_org_id THEN
23346 	        PA_MOAC_UTILS.SET_POLICY_CONTEXT('S', l_org_id);
23347 	    END IF;
23348 	END IF;
23349 	-- MOAC Changes Bug 4698162 End
23350 
23351         IF l_action = 'SAVE' AND l_rollup_call_required_tbl(i) = 'Y' AND p_structure_type = 'WORKPLAN' THEN
23352             IF g1_debug_mode  = 'Y' THEN
23353                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Log_Level=> 3);
23354             END IF;
23355 
23356             PA_PROGRESS_PUB.ASGN_DLV_TO_TASK_ROLLUP_PVT(
23357                 p_calling_module    => p_calling_module,
23358                 p_project_id        => p_project_id_tbl(i),
23359                 p_task_id       => l_task_id_tbl(i),
23360                 p_task_version_id   => l_task_version_id_tbl(i),
23361                 p_as_of_date        => p_as_of_date_tbl(i),
23362                 p_structure_version_id  => l_structure_version_id_tbl(i),
23363                 p_wp_rollup_method  => l_wp_rollup_method_tbl(i),
23364                 x_return_status         => l_return_status,
23365                 x_msg_count             => l_msg_count,
23366                 x_msg_data              => l_msg_data);
23367 
23368             IF g1_debug_mode  = 'Y' THEN
23369                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling ASGN_DLV_TO_TASK_ROLLUP_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23370             END IF;
23371 
23372             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23373                 x_msg_data := l_msg_data;
23374                 x_return_status := 'E';
23375                 x_msg_count := l_msg_count;
23376                 RAISE  FND_API.G_EXC_ERROR;
23377             END IF;
23378         END IF;
23379         IF l_action = 'PUBLISH' AND l_split_workplan =  'Y' AND l_budget_call_required_tbl(i) = 'Y'  AND p_structure_type = 'WORKPLAN'
23380         -- Removed for Bug 4416432 Issue 11 : AND p_object_type_tbl(i) <> 'PA_DELIVERABLES' -- Bug 4370820 : Added <> DELIVERABLES
23381         THEN
23382             IF g1_debug_mode  = 'Y' THEN
23383                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Check existnece of records in PA_PROG_ACT_BY_PERIOD_TEMP', x_Log_Level=> 3);
23384             END IF;
23385             BEGIN -- 4482295
23386                 -- Bug 4416432 Issue 11 Added following Check
23387                 l_check := 'N';
23388                 SELECT 'Y'
23389                 INTO l_check
23390                 FROM DUAL
23391                 WHERE EXISTS
23392                 (SELECT 'xyz'
23393                  from PA_PROG_ACT_BY_PERIOD_TEMP
23394                  where project_id = p_project_id_tbl(i)
23395                  AND structure_version_id = l_structure_version_id_tbl(i));
23396              EXCEPTION -- 4482295
23397                 WHEN NO_DATA_FOUND THEN
23398                     l_check := 'N';
23399                     IF g1_debug_mode  = 'Y' THEN
23400                         pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'No Records in PA_PROG_ACT_BY_PERIOD_TEMP', x_Log_Level=> 3);
23401                     END IF;
23402              END; -- 4482295
23403 
23404             IF g1_debug_mode  = 'Y' THEN
23405                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_check='||l_check, x_Log_Level=> 3);
23406             END IF;
23407 
23408             IF l_check = 'Y' THEN
23409             BEGIN
23410                  Pa_Task_Pub1.G_CALL_PJI_ROLLUP := 'N';
23411                  -- This flag is set so that plan_update from MAINTAIN_ACTUAL_AMT_WRP
23412                  -- is not called. Actually it gets called but PJI code does not do anything.
23413                  IF g1_debug_mode  = 'Y' THEN
23414                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling MAINTAIN_ACTUAL_AMT_WRP', x_Log_Level=> 3);
23415                  END IF;
23416 
23417                  l_project_ids.extend(1);
23418                  l_project_ids(1) := p_project_id_tbl(i);
23419                  l_struture_version_ids.extend(1);
23420                  l_struture_version_ids(1) := l_structure_version_id_tbl(i);
23421                  l_proj_thru_dates_tbl.extend(1);
23422                  l_proj_thru_dates_tbl(1) := p_as_of_date_tbl(i);
23423                  -- We can additionally check the existence of data before calling
23424                  PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
23425                    (P_PROJECT_ID_TAB                   => l_project_ids,
23426                 P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
23427                 P_ACTUALS_THRU_DATE                => l_proj_thru_dates_tbl,
23428                 P_CALLING_CONTEXT                  => 'WP_PROGRESS',
23429                 P_EXTRACTION_TYPE                  => 'INCREMENTAL',
23430                 X_RETURN_STATUS                    => l_return_status,
23431                 X_MSG_COUNT                        => l_msg_count,
23432                 X_MSG_DATA                         => l_msg_data
23433                  );
23434 
23435                  IF g1_debug_mode  = 'Y' THEN
23436                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling MAINTAIN_ACTUAL_AMT_WRP l_return_status='||l_return_status, x_Log_Level=> 3);
23437                  END IF;
23438 
23439 
23440                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23441                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23442                               p_msg_name       => l_msg_data);
23443                  x_msg_data := l_msg_data;
23444                  x_return_status := 'E';
23445                  x_msg_count := l_msg_count;
23446                  RAISE  FND_API.G_EXC_ERROR;
23447                 END IF;
23448                 Pa_Task_Pub1.G_CALL_PJI_ROLLUP := null ;
23449                 delete from PA_PROG_ACT_BY_PERIOD_TEMP where project_id = p_project_id_tbl(i) AND structure_version_id = l_structure_version_id_tbl(i);
23450                EXCEPTION
23451              WHEN OTHERS THEN
23452                  fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23453                        p_procedure_name => 'UPDATE_PROGRESS_BULK',
23454                  p_error_text     => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
23455                  RAISE FND_API.G_EXC_ERROR;
23456                END;
23457                END IF; --l_check
23458         END IF;
23459         IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y'  AND p_structure_type = 'WORKPLAN' THEN
23460      --14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23461         IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N')= 'N'
23462 		THEN
23463 
23464             BEGIN
23465                 -- We can additionally check the existence of data before calling
23466                 IF g1_debug_mode  = 'Y' THEN
23467                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling PLAN_UPDATE', x_Log_Level=> 3);
23468                 END IF;
23469 
23470                l_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
23471                                                           p_project_id => p_project_id_tbl(i),
23472                                                           p_plan_type_id => -1,
23473                                                           p_proj_str_ver_id => l_structure_version_id_tbl(i)) ;
23474 
23475                 PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE ( p_plan_version_id => l_plan_version_id, --  4587145 : Added l_plan_version_id
23476                               x_msg_code => l_msg_code,
23477                               x_return_status => x_return_status);
23478                 IF g1_debug_mode  = 'Y' THEN
23479                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling PLAN_UPDATE x_return_status='||x_return_status, x_Log_Level=> 3);
23480                 END IF;
23481 
23482             EXCEPTION
23483                 WHEN OTHERS THEN
23484                     fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23485                         p_procedure_name => 'UPDATE_PROGRESS_BULK',
23486                         p_error_text     => SUBSTRB('Call PJI_FM_XBS_ACCUM_MAINT.PLAN_UPDATE:'||SQLERRM,1,120));
23487                 RAISE FND_API.G_EXC_ERROR;
23488             END;
23489         END IF;
23490 
23491             l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id_tbl(i));
23492 
23493             IF (l_base_struct_ver_id = -1) THEN
23494                 l_base_struct_ver_id := l_structure_version_id_tbl(i);
23495             END IF;
23496             --14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23497             IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23498 	    THEN
23499 
23500             -- 4392189 : Instead of populate_workplan_data call, POPULATE_PJI_TAB_FOR_PLAN
23501             PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
23502                 p_calling_module    => p_calling_module
23503                 ,p_project_id           => p_project_id_tbl(i)
23504                 ,p_structure_version_id => l_structure_version_id_tbl(i)
23505                 ,p_baselined_str_ver_id => l_base_struct_ver_id
23506                 ,p_program_rollup_flag  => 'Y'
23507                 ,p_calling_context  => 'SUMMARIZE'
23508                 ,p_as_of_date       => p_as_of_date_tbl(i) -- Fix for Bug # 4251406.
23509                 ,x_return_status        => x_return_status
23510                 ,x_msg_count            => x_msg_count
23511                 ,x_msg_data             => x_msg_data
23512                 );
23513             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23514                 RAISE  FND_API.G_EXC_ERROR;
23515             END IF;
23516             END IF;
23517 
23518         END IF;
23519 
23520         IF g1_debug_mode  = 'Y' THEN
23521             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_mass_rlp_call_required_tbl(i) '||l_mass_rlp_call_required_tbl(i), x_Log_Level=> 3);
23522             pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'l_rollup_call_required_tbl(i) '||l_rollup_call_required_tbl(i), x_Log_Level=> 3);
23523         END IF;
23524         IF l_action = 'PUBLISH' AND l_mass_rlp_call_required_tbl(i) = 'Y'
23525         THEN
23526             -- It means it is the case of Mass Update Progress and AMG
23527             -- Hence do mass rollup
23528             -- We can give here some other value to l_count_of_rollup_calls
23529             -- like 5-6 so that after objects got exceeded that 5 then call Mass Rollup
23530             -- otherwsie individual rollup
23531             IF g1_debug_mode  = 'Y' THEN
23532                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Mass ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
23533             END IF;
23534 
23535             -- Bug 4218507 Begin
23536             FOR ii in 1..p_project_id_tbl.count LOOP
23537                 IF p_project_id_tbl(ii) = p_project_id_tbl(i) THEN
23538                     l_unique_rec_exists := 'Y';
23539                     FOR jj in 1..l_mass_rollup_task_ver_id_tbl.count LOOP
23540                         IF l_task_version_id_tbl(ii) IS NOT NULL AND l_task_version_id_tbl(ii) = l_mass_rollup_task_ver_id_tbl(jj) THEN
23541                             l_unique_rec_exists := 'N';
23542                             exit;
23543                         END IF;
23544                     END LOOP;
23545                     IF l_unique_rec_exists = 'Y' AND l_task_version_id_tbl(ii) IS NOT NULL THEN
23546                         l_mass_rollup_task_ver_id_tbl.extend(1);
23547                         l_mass_rollup_task_ver_id_tbl(l_mass_rollup_task_ver_id_tbl.count) := l_task_version_id_tbl(ii);
23548                     END IF;
23549                 END IF;
23550             END LOOP;
23551             -- Bug 4218507 Begin
23552 
23553 -- 14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23554             IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23555             THEN
23556             PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
23557                  p_init_msg_list             => p_init_msg_list
23558                 ,p_commit                    => p_commit
23559                 ,p_validate_only             => p_validate_only
23560                 ,p_project_id                => p_project_id_tbl(i)
23561                 ,p_structure_version_id      => l_structure_version_id_tbl(i)
23562                 ,p_as_of_date                => p_as_of_date_tbl(i)
23563                 ,p_structure_type        => p_structure_type
23564                 ,p_rollup_entire_wbs         => 'Y'
23565                 ,p_task_version_id_tbl       => l_mass_rollup_task_ver_id_tbl
23566                 ,p_fin_rollup_method         => l_fin_rollup_method_tbl(i) -- Bug 4619000
23567                 ,p_wp_rollup_method          => l_wp_rollup_method_tbl(i) -- Bug 4619000
23568                 ,x_return_status             => x_return_status
23569                 ,x_msg_count                 => x_msg_count
23570                 ,x_msg_data                  => x_msg_data);
23571             -- Mass Rollup currently has limitation that it does not do future rollup too
23572             IF g1_debug_mode  = 'Y' THEN
23573                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling Mass ROLLUP_PROGRESS_PVT x_return_status='||x_return_status, x_Log_Level=> 3);
23574             END IF;
23575 
23576             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23577                 RAISE  FND_API.G_EXC_ERROR;
23578             END IF;
23579             END IF;
23580         ELSIF l_action = 'PUBLISH' AND l_rollup_call_required_tbl(i) = 'Y'
23581         THEN
23582 
23583             IF g1_debug_mode  = 'Y' THEN
23584                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling Singular ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
23585             END IF;
23586 	    -- 14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23587             IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N') = 'N'
23588             THEN
23589 
23590             PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
23591              p_init_msg_list                => 'F'
23592             ,p_commit                       => 'F'
23593             ,p_validate_only                => 'F'
23594             ,p_calling_module       => p_calling_module
23595             ,p_progress_mode                => p_progress_mode
23596             ,p_project_id                   => p_project_id_tbl(i)
23597             ,P_OBJECT_TYPE                  => 'PA_TASKS'
23598             ,P_OBJECT_ID                    => l_task_id_tbl(i)
23599             ,p_object_version_id            => l_task_version_id_tbl(i)
23600             ,p_as_of_date                   => p_as_of_date_tbl(i)
23601             ,p_lowest_level_task            => nvl(l_lowest_level_task_tbl(i), 'N')
23602             ,p_process_whole_tree           => 'Y'
23603             ,p_structure_version_id         => l_structure_version_id_tbl(i)
23604             ,p_rollup_entire_wbs            => 'N'
23605             ,p_fin_rollup_method            => l_fin_rollup_method_tbl(i)
23606             ,p_wp_rollup_method             => l_wp_rollup_method_tbl(i)
23607             ,p_task_version_id              => l_task_version_id_tbl(i)
23608             ,p_structure_type               => p_structure_type
23609             ,x_return_status                => l_return_status
23610             ,x_msg_count                    => l_msg_count
23611             ,x_msg_data                     => l_msg_data);
23612 
23613             IF g1_debug_mode  = 'Y' THEN
23614                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling Singular ROLLUP_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23615             END IF;
23616 
23617             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23618                 x_msg_data := l_msg_data;
23619                 x_return_status := 'E';
23620                 x_msg_count := l_msg_count;
23621                 RAISE  FND_API.G_EXC_ERROR;
23622             END IF;
23623             END IF;
23624 
23625             IF p_progress_mode <> 'BACKDATED' THEN
23626                 IF g1_debug_mode  = 'Y' THEN
23627                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling ROLLUP_FUTURE_PROGRESS_PVT', x_Log_Level=> 3);
23628                 END IF;
23629 
23630                 IF p_object_type_tbl(i) IN ('PA_ASSIGNMENTS', 'PA_DELIVERABLES') THEN
23631                     l_calling_mode := null;
23632                 ELSE
23633                     l_calling_mode := 'FUTURE_ROLLUP';
23634                 END IF;
23635 	--14556729:Huawei Code change to defer the roll up API when G_ROLLUP_DEFER is set to Y , so that all the roll up is processed once at the end .
23636                 IF NVL(PA_PROJECT_PUB.G_ROLLUP_DEFER, 'N')= 'N'
23637                 THEN
23638                 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
23639                       p_project_id               => p_project_id_tbl(i)
23640                      ,P_OBJECT_TYPE              => l_object_type_tbl(i)
23641                      ,P_OBJECT_ID                => l_task_id
23642                      ,p_object_version_id        => l_task_version_id_tbl(i)
23643                      ,p_as_of_date               => p_as_of_date_tbl(i)
23644                      ,p_lowest_level_task        => NVL( l_lowest_level_task_tbl(i), 'N' )
23645                      ,p_calling_module           => p_calling_module
23646                      ,p_calling_mode         => l_calling_mode -- Bug 4097710
23647                      ,p_structure_type           => p_structure_type
23648                      ,p_structure_version_id     => l_structure_version_id_tbl(i)
23649                      ,p_fin_rollup_method        => l_fin_rollup_method_tbl(i)
23650                      ,p_wp_rollup_method         => l_wp_rollup_method_tbl(i)
23651                      ,x_return_status            => l_return_status
23652                      ,x_msg_count                => l_msg_count
23653                      ,x_msg_data                 => l_msg_data
23654                    );
23655 
23656                 IF g1_debug_mode  = 'Y' THEN
23657                     pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling ROLLUP_FUTURE_PROGRESS_PVT l_return_status='||l_return_status, x_Log_Level=> 3);
23658                 END IF;
23659 
23660                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23661                     x_msg_data := l_msg_data;
23662                     x_return_status := 'E';
23663                     x_msg_count := l_msg_count;
23664                     RAISE  FND_API.G_EXC_ERROR;
23665                 END IF;
23666                 END IF;
23667             END IF;
23668         END IF;
23669 
23670         ---5466645
23671         --Bug 13923366: Removed this unwanted loop.
23672         --FOR i in 1..l_task_version_id_tbl.count loop
23673         IF p_progress_mode <> 'BACKDATED' AND l_object_type_tbl(i) = 'PA_TASKS'
23674 	   AND p_structure_type = 'WORKPLAN'   --maansari fpm changes
23675 	THEN
23676           IF ( NVL(l_lowest_level_task_tbl(i), 'N' ) = 'Y' ) THEN
23677 	      --Huawei Bug 13923366
23678 	      IF(NVL(PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED, 'N') = 'Y')
23679 	      then
23680                    PA_TASK_PVT1.Update_Dates_To_All_Versions(
23681                        p_project_id           => p_project_id_tbl(i)
23682                       ,p_element_version_id       => l_task_version_id_tbl(i)
23683                       ,x_return_status               => l_return_status
23684                       ,x_msg_count                   => l_msg_count
23685                       ,x_msg_data                    => l_msg_data );
23686 		IF l_return_status <> FND_API.G_RET_STS_SUCCESS
23687 		THEN
23688 		PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23689 			     p_msg_name       => l_msg_data);
23690 			x_msg_data := l_msg_data;
23691 			x_return_status := 'E';
23692 			RAISE  FND_API.G_EXC_ERROR;
23693 		END IF;
23694 	      end if; --Huawei Bug 13923366
23695 
23696 		BEGIN
23697                     -- Bug 8881708 - l_task_version_id is not initialized in this procedure
23698                     /*
23699 			Select ppev1.proj_element_id
23700 			into l_structure_id
23701 			from pa_proj_element_versions ppev1, pa_proj_element_versions ppev2
23702 			where ppev2.element_version_id = l_task_version_id
23703 			and ppev2.project_id = ppev1.project_id
23704 			and ppev2.parent_structure_version_id = ppev1.element_version_id;
23705                     */
23706                     l_structure_id := NULL;
23707 
23708                     SELECT pevs.proj_element_id
23709                     INTO   l_structure_id
23710                     FROM   pa_proj_elem_ver_structure pevs
23711                     WHERE  pevs.element_version_id = l_structure_version_id_tbl(i)
23712                     AND    pevs.project_id = p_project_id_tbl(i);
23713 
23714 		EXCEPTION WHEN OTHERS THEN
23715 			l_structure_id := -999;
23716 		END;
23717 
23718 		IF ((PA_WORKPLAN_ATTR_UTILS.CHECK_AUTO_DATE_SYNC_ENABLED(l_structure_id) = 'Y')
23719 		AND
23720 		(PA_Proj_Elements_Utils.CHECK_IS_FINANCIAL_TASK(p_task_id_tbl(i)) = 'Y')    --Bug 3784405  Satish
23721 		AND
23722 		(PA_PROJECT_STRUCTURE_UTILS.CHECK_SHARING_ENABLED(p_project_id_tbl(i)) = 'Y'))
23723 		THEN
23724 		--copy to transaction dates
23725 			PA_PROJECT_DATES_PUB.COPY_PROJECT_DATES(
23726 			p_validate_only => FND_API.G_FALSE
23727 			,p_project_id => p_project_id_tbl(i)
23728 			,x_return_status => x_return_status
23729 			,x_msg_count => x_msg_count
23730 			,x_msg_data => x_msg_data);
23731 		END IF;
23732            END IF;
23733 	END IF; ------ p_progress_mode <> backdated
23734       --END LOOP;
23735       --Huawei Bug 13923366
23736         ---5466645
23737         -- Bug 4392189 : Uncommenting and chaning the code for program rollup
23738 
23739         IF l_action = 'PUBLISH' AND l_budget_call_required_tbl(i) = 'Y'  AND p_structure_type = 'WORKPLAN'  AND p_progress_mode <> 'BACKDATED' THEN
23740             IF g1_debug_mode  = 'Y' THEN
23741                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
23742             END IF;
23743 
23744             pa_progress_pvt.program_rollup_pvt(
23745                          p_init_msg_list        => 'F'
23746                         ,p_commit               => 'F'
23747                         ,p_validate_only        => 'F'
23748                         ,p_project_id           => p_project_id_tbl(i)
23749                         ,p_as_of_date           => p_as_of_date_tbl(i)
23750                         ,p_structure_type       => p_structure_type
23751                         ,p_structure_ver_id     => l_structure_version_id_tbl(i)
23752                         ,x_return_status        => l_return_status
23753                         ,x_msg_count            => l_msg_count
23754                         ,x_msg_data             => l_msg_data);
23755 
23756 
23757             IF g1_debug_mode  = 'Y' THEN
23758                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling program_rollup_pvt l_return_status='||l_return_status, x_Log_Level=> 3);
23759             END IF;
23760             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23761                 x_msg_data := l_msg_data;
23762                 x_return_status := 'E';
23763                 x_msg_count := l_msg_count;
23764                 RAISE  FND_API.G_EXC_ERROR;
23765             END IF;
23766 
23767         END IF;
23768 
23769         IF l_action = 'PUBLISH'  AND p_progress_mode <> 'BACKDATED' AND p_structure_type = 'WORKPLAN'
23770         AND p_object_type_tbl(i) = 'PA_TASKS' AND l_rollup_call_required_tbl(i) = 'Y'
23771         THEN
23772             IF g1_debug_mode  = 'Y' THEN
23773                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'Calling update_link_proj_rollup_dates', x_Log_Level=> 3);
23774             END IF;
23775 
23776             pa_progress_pub.update_link_proj_rollup_dates(
23777              p_init_msg_list    => 'F'
23778             ,p_commit       => 'F'
23779             ,p_calling_module   => p_calling_module
23780             ,p_project_id       => p_project_id_tbl(i)
23781             ,p_task_id      => l_task_id_tbl(i)
23782             ,p_task_version_id  => l_task_version_id_tbl(i)
23783             ,p_as_of_date           => p_as_of_date_tbl(i)
23784             ,p_structure_version_id => l_structure_version_id_tbl(i)
23785             ,x_return_status        => l_return_status
23786             ,x_msg_count            => l_msg_count
23787             ,x_msg_data             => l_msg_data
23788             );
23789 
23790             IF g1_debug_mode  = 'Y' THEN
23791                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.UPDATE_PROGRESS_BULK', x_Msg => 'After Calling update_link_proj_rollup_dates l_return_status='||l_return_status, x_Log_Level=> 3);
23792             END IF;
23793 
23794             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23795                 x_msg_data := l_msg_data;
23796                 x_return_status := 'E';
23797                 x_msg_count := l_msg_count;
23798                 RAISE  FND_API.G_EXC_ERROR;
23799             END IF;
23800         END IF;
23801     END LOOP;
23802 
23803     IF (p_commit = FND_API.G_TRUE) THEN
23804         COMMIT;
23805     END IF;
23806 
23807 EXCEPTION
23808     when FND_API.G_EXC_ERROR then
23809 --      if p_commit = FND_API.G_TRUE then
23810          rollback to UPDATE_PROGRESS_BULK;
23811 --      end if;
23812       x_return_status := FND_API.G_RET_STS_ERROR;
23813       x_msg_count := fnd_msg_pub.count_msg;
23814     when FND_API.G_EXC_UNEXPECTED_ERROR then
23815 --      if p_commit = FND_API.G_TRUE then
23816          rollback to UPDATE_PROGRESS_BULK;
23817 --      end if;
23818       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23819       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23820                               p_procedure_name => 'UPDATE_PROGRESS_BULK',
23821                               p_error_text     => SUBSTRB(SQLERRM,1,120));
23822       x_msg_count := fnd_msg_pub.count_msg;
23823     when OTHERS then
23824 --      if p_commit = FND_API.G_TRUE then
23825          rollback to UPDATE_PROGRESS_BULK;
23826 --      end if;
23827       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23828       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23829                               p_procedure_name => 'UPDATE_PROGRESS_BULK',
23830                               p_error_text     => SUBSTRB(SQLERRM,1,120));
23831       x_msg_count := fnd_msg_pub.count_msg;
23832       raise;
23833 END update_progress_bulk;
23834 
23835 --  Bug 3994165 : Removing POPULATE_PRG_ACT_TEMP_TBL and  POPULATE_PRG_ACT_TBL_SINGLE
23836 -- methods. They are not needed now.
23837 
23838 -- Begin fix for Bug # 4262985.
23839 
23840 PROCEDURE apply_lp_prog_on_cwv_wrp(
23841   p_api_version                 IN      NUMBER          :=1.0
23842  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
23843  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
23844  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
23845  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
23846  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
23847  ,p_debug_mode                  IN      VARCHAR2        :='N'
23848  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
23849  ,p_project_id                  IN      NUMBER
23850  ,p_working_str_version_id      IN      NUMBER
23851  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
23852  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
23853  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
23854 ) IS
23855 
23856    l_api_name           CONSTANT   VARCHAR2(30)    := 'APPLY_LP_PROG_ON_CWV_WRP';
23857    l_api_version        CONSTANT   NUMBER          := p_api_version;
23858    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
23859    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
23860    l_return_status                 VARCHAR2(1);
23861    l_msg_count                     NUMBER;
23862    l_msg_data                      VARCHAR2(250);
23863    l_msg_code                      VARCHAR2(12000);
23864 BEGIN
23865 
23866         IF g1_debug_mode  = 'Y' THEN
23867                 pa_debug.init_err_stack ('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
23868         END IF;
23869 
23870         IF (p_debug_mode = 'Y') THEN
23871                 IF g1_debug_mode  = 'Y' THEN
23872                         pa_debug.debug('PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP');
23873                 END IF;
23874         END IF;
23875         IF (p_commit = FND_API.G_TRUE) THEN
23876                 savepoint APPLY_LP_PROG_ON_CWV_WRP;
23877         END IF;
23878 
23879         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
23880                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23881         END IF;
23882 
23883         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
23884                 FND_MSG_PUB.initialize;
23885         END IF;
23886 
23887         x_return_status := FND_API.G_RET_STS_SUCCESS;
23888 
23889         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
23890 
23891         IF g1_debug_mode  = 'Y' THEN
23892                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP Start : Passed Parameters :', x_Log_Level=> 3);
23893                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
23894                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'p_working_str_version_id='||p_working_str_version_id, x_Log_Level=> 3);
23895                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Before calling PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG', x_Log_Level=> 3);
23896         END IF;
23897         -- 4392189 : Program Reporting Changes - Phase 2
23898     -- We do not have to set wbs_flag here. Bcoz depending on this flag, process_wbs_updates call wbs_maint API.
23899     /*
23900         PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG
23901           (
23902           p_calling_context       => p_calling_module
23903          ,p_project_id            => p_project_id
23904          ,p_structure_version_id  => p_working_str_version_id
23905          ,p_update_wbs_flag       => 'Y'
23906          ,x_return_status         => l_return_status
23907          ,x_msg_count             => l_msg_count
23908          ,x_msg_data              => l_msg_data);
23909      */
23910 
23911         IF g1_debug_mode  = 'Y' THEN
23912                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Done with PA_PROJ_TASK_STRUC_PUB.SET_UPDATE_WBS_FLAG l_return_status='||l_return_status, x_Log_Level=> 3);
23913         END IF;
23914 
23915 
23916         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23917                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23918                 p_msg_name       => l_msg_data);
23919                 x_msg_data := l_msg_data;
23920                 x_return_status := 'E';
23921                 x_msg_count := l_msg_count;
23922                 RAISE  FND_API.G_EXC_ERROR;
23923         END IF;
23924 
23925         IF g1_debug_mode  = 'Y' THEN
23926                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Before calling PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP', x_Log_Level=> 3);
23927         END IF;
23928         PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP(
23929              p_calling_context => 'APPLY_PROGRESS',
23930              p_project_id => p_project_id,
23931              p_structure_version_id => p_working_str_version_id,
23932              x_return_status => l_return_status,
23933              x_msg_count => l_msg_count,
23934              x_msg_data => l_msg_data
23935           );
23936 
23937         IF g1_debug_mode  = 'Y' THEN
23938                 pa_debug.write(x_Module=>'PA_PROGRESS_PUB.APPLY_LP_PROG_ON_CWV_WRP', x_Msg => 'Done with PA_PROJ_TASK_STRUC_PUB.PROCESS_WBS_UPDATES_WRP l_return_status='||l_return_status, x_Log_Level=> 3);
23939         END IF;
23940 
23941         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
23942                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
23943                 p_msg_name       => l_msg_data);
23944                 x_msg_data := l_msg_data;
23945                 x_return_status := 'E';
23946                 x_msg_count := l_msg_count;
23947                 RAISE  FND_API.G_EXC_ERROR;
23948         END IF;
23949 
23950 
23951 EXCEPTION
23952     when FND_API.G_EXC_ERROR then
23953       if p_commit = FND_API.G_TRUE then
23954          rollback to APPLY_LP_PROG_ON_CWV_WRP;
23955       end if;
23956       x_return_status := FND_API.G_RET_STS_ERROR;
23957 
23958     when FND_API.G_EXC_UNEXPECTED_ERROR then
23959       if p_commit = FND_API.G_TRUE then
23960          rollback to APPLY_LP_PROG_ON_CWV_WRP;
23961       end if;
23962       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23963       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23964                               p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
23965                               p_error_text     => SUBSTRB(SQLERRM,1,120));
23966     when OTHERS then
23967       if p_commit = FND_API.G_TRUE then
23968         rollback to APPLY_LP_PROG_ON_CWV;
23969       end if;
23970       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
23971       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PUB',
23972                               p_procedure_name => 'APPLY_LP_PROG_ON_CWV_WRP',
23973                               p_error_text     => SUBSTRB(SQLERRM,1,120));
23974       raise;
23975 END APPLY_LP_PROG_ON_CWV_WRP;
23976 
23977 -- End fix for Bug # 4262985.
23978 
23979 end PA_PROGRESS_PUB;