DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_PROGRESS_PVT

Source


1 package body PA_PROGRESS_PVT as
2 /* $Header: PAPCPVTB.pls 120.42.12020000.7 2013/06/06 09:47:14 djambhek ship $ */
3 
4 G_PKG_NAME              CONSTANT VARCHAR2(30) := 'PA_PROGRESS_PVT';
5 
6 g1_debug_mode varchar2(1) := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
7 
8 -- Start of comments
9 --      API name        : ROLLUP_PROGRESS_PVT
10 --      Type            : Public
11 --      Pre-reqs        : For Program Rollup, the sub project buckets should be populated.
12 --      Purpose         : Rolls up the structure
13 --      Parameters Desc :
14 --              P_OBJECT_TYPE                   Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
15 --              P_OBJECT_ID                     For assignments, pass resource_assignment_id, otherwise
16 --                                              proj_element_id of the deliverable and task
17 --              p_object_version_id             For Assignments, pass task_version_id, otherwise
18 --                                              element_version_id of the deliverable and task
19 --              p_task_version_id               For tasks, assignments, deliverables pass the task version id
20 --                                              , for struture pass null
21 --              p_lowest_level_task             Does not seem to be required
22 --              p_process_whole_tree            To indicate if whole tree rollup is not required. It will
23 --                                              do just 2 level rollup if N
24 --              p_structure_version_id          Structure version id of the publsihed or working structure version
25 --              p_structure_type                Possible values WORKPLAN, FINANCIAL
26 --              p_fin_rollup_method             Possible values are COST, EFFORT
27 --              p_wp_rollup_method              Possible values are COST, EFFORT, MANUAL, DURATION
28 --              p_rollup_entire_wbs             To indicate if it requires the whole structure rollup, in this
29 --                                              case it will ignore the passed object and starts with the lowest
30 --                                              task
31 --      History         : 17-MAR-04  amksingh   Rewritten For FPM Development Tracking Bug 3420093
32 -- End of comments
33 
34 -- Bug 4218507  : Rewritten rollup code to use bulk approach and also merged update_rollup code in this
35 -- Bug 4317491  : Added check of WORKPLAN
36 -- 23-Jun-2009  rthumma   Bug 6854114 : Changes done for 8 digit precision  for physical percent complete.
37 
38 PROCEDURE ROLLUP_PROGRESS_PVT(
39  p_api_version                          IN      NUMBER          :=1.0
40 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_TRUE
41 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
42 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
43 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
44 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
45 ,p_calling_mode                         IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
46 ,p_debug_mode                           IN      VARCHAR2        :='N'
47 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
48 ,p_progress_mode                        IN      VARCHAR2        := 'FUTURE'
49 ,p_project_id                           IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
50 ,p_object_type                          IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
51 ,p_object_id                            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
52 ,p_object_version_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
53 ,p_task_version_id                      IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
54 ,p_as_of_date                           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
55 ,p_lowest_level_task                    IN      VARCHAR2        := 'N'
56 ,p_process_whole_tree                   IN      VARCHAR2        := 'Y'
57 ,p_structure_version_id                 IN      NUMBER
58 ,p_structure_type                       IN      VARCHAR2        := 'WORKPLAN'
59 ,p_fin_rollup_method                    IN      VARCHAR2        := 'COST'
60 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
61 ,p_rollup_entire_wbs                    IN      VARCHAR2        := 'N'
62 ,p_task_version_id_tbl                  IN      SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
63 ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --maansari7/18  to be passed form apply lp progress to  select regular  planned amounts to send to schduling api for    percent comnplete and earned    value calculations.
64 ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, 3951024
65 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
66 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
67 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
68 )
69  IS
70 
71 l_api_name                      CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
72 l_api_version                   CONSTANT NUMBER         :=      1.0                     ;
73 l_return_status                 VARCHAR2(1)                                     ;
74 l_msg_count                     NUMBER                                          ;
75 l_msg_data                      VARCHAR2(250)                                   ;
76 l_data                          VARCHAR2(250)                                   ;
77 l_msg_index_out                 NUMBER                                          ;
78 l_error_msg_code                VARCHAR2(250)                                   ;
79 l_user_id                       NUMBER :=       FND_GLOBAL.USER_ID                      ;
80 l_login_id                      NUMBER :=       FND_GLOBAL.LOGIN_ID                     ;
81 l_lowest_task                   VARCHAR2(1)                                     ;
82 l_published_structure           VARCHAR2(1)                                     ;
83 l_task_version_id               NUMBER                                          ;
84 l_rollup_table1                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
85 l_rollup_table2                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
86 l_index                         NUMBER   := 0;
87 l_parent_count                  NUMBER   := 0;
88 l_process_number                NUMBER;
89 l_wbs_level                     NUMBER                                                                           ;
90 l_action_allowed                VARCHAR2(1)                                                                      ;
91 l_sharing_Enabled               VARCHAR2(1)                                                                      ;
92 l_split_workplan                VARCHAR2(1)                                                                      ;
93 l_structure_version_id          NUMBER                                                                           ;
94 g1_debug_mode                   VARCHAR2(1)                                                                      ;
95 l_Rollup_Method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                                ;
96 
97 
98    -- Rollup Cases
99    -- 1. Workplan Publsihed Version Rollup.
100    -- 2. Workplan Working Version Rollup.
101    -- 3. Financial Structure Rollup.
102    -- 4. Entire WBS using       structure       version id.
103    -- 5. Program Rollup
104 
105    --This       cursor selects  the parents of  a given task.
106 
107 
108 CURSOR cur_reverse_tree_update IS
109 SELECT proj_element_id, object_id_to1, object_type
110 FROM
111         ( select object_id_from1, object_id_to1
112         from pa_object_relationships
113         where relationship_type ='S'
114         and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
115         and object_type_to = 'PA_TASKS'
116         and p_rollup_entire_wbs='N'
117         start with object_id_to1 = p_task_version_id
118         and relationship_type = 'S'
119         connect by prior object_id_from1 = object_id_to1
120         and relationship_type =     'S'
121         ) pobj
122         , pa_proj_element_versions ppev
123 WHERE element_version_id = object_id_to1
124 and p_rollup_entire_wbs='N'
125 --select        structure
126 UNION
127 SELECT proj_element_id, element_version_id, object_type
128 FROM pa_proj_element_versions
129 WHERE element_version_id = p_structure_version_id
130 and project_id = p_project_id
131 and object_type = 'PA_STRUCTURES'
132 and p_rollup_entire_wbs='N'
133 UNION
134 SELECT proj_element_id, element_version_id, object_type
135 FROM pa_proj_element_versions
136 WHERE project_id = p_project_id
137 and parent_structure_version_id = p_structure_version_id
138 and object_type IN ('PA_TASKS','PA_STRUCTURES')
139 and p_rollup_entire_wbs='Y'
140 ;
141 
142 
143 l_mass_rollup_prog_exists_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
144 l_mass_rollup_prog_rec_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
145 
146 l_tsk_object_id_from1_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
147 l_tsk_parent_object_type_tab        SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
148 l_tsk_object_id_to1_tab         SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
149 l_tsk_object_type_tab           SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
150 l_tsk_wbs_level_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
151 l_tsk_weighting_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
152 l_tsk_roll_comp_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
153 l_tsk_over_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
154 l_tsk_as_of_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
155 l_tsk_actual_start_date_tab     SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
156 l_tsk_actual_finish_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
157 l_tsk_est_start_date_tab                SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
158 l_tsk_est_finish_date_tab       SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
159 l_tsk_rollup_weight1_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
160 l_tsk_override_weight2_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
161 l_tsk_base_weight3_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
162 l_tsk_task_weight4_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
163 l_tsk_status_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
164 l_tsk_object_id_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
165 l_tsk_proj_element_id_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
166 l_tsk_ppl_act_eff_tab           SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
167 l_tsk_ppl_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
168 l_tsk_ppl_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
169 l_tsk_ppl_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
170 l_tsk_ppl_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
171 l_tsk_ppl_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
172 l_tsk_ppl_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
173 l_tsk_est_rem_effort_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
174 l_tsk_ppl_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
175 l_tsk_ppl_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
176 l_tsk_ppl_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
177 l_tsk_ppl_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
178 l_tsk_ppl_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
179 l_tsk_ppl_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
180 l_tsk_eqpmt_act_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
181 l_tsk_eqpmt_act_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
182 l_tsk_eqpmt_act_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
183 l_tsk_eqpmt_act_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
184 l_tsk_eqpmt_act_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
185 l_tsk_eqpmt_act_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
186 l_tsk_eqpmt_act_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
187 l_tsk_eqpmt_etc_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
188 l_tsk_eqpmt_etc_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
189 l_tsk_eqpmt_etc_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
190 l_tsk_eqpmt_etc_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
191 l_tsk_eqpmt_etc_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
192 l_tsk_eqpmt_etc_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
193 l_tsk_eqpmt_etc_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
194 l_tsk_oth_quantity_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
195 l_tsk_oth_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
196 l_tsk_oth_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
197 l_tsk_oth_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
198 l_tsk_oth_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
199 l_tsk_oth_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
200 l_tsk_oth_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
201 l_tsk_oth_etc_quantity_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
202 l_tsk_oth_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
203 l_tsk_oth_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
204 l_tsk_oth_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
205 l_tsk_oth_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
206 l_tsk_oth_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
207 l_tsk_oth_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
208 l_tsk_current_flag_tab          SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
209 l_tsk_pf_cost_rate_type_tab     SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
210 l_tsk_pf_cost_exc_rate_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
211 l_tsk_pf_cost_rate_date_tab     SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
212 l_tsk_p_cost_rate_type_tab      SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
213 l_tsk_p_cost_exc_rate_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
214 l_tsk_p_cost_rate_date_tab      SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
215 l_tsk_txn_currency_code_tab     SYSTEM.PA_VARCHAR2_15_TBL_TYPE  := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
216 l_tsk_prog_pa_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
217 l_tsk_prog_gl_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
218 l_tsk_bac_value_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
219 l_tsk_bac_self_value_tab        SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
220 l_tsk_earned_value_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
221 l_tsk_deriv_method_tab          SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
222 l_tsk_progress_rollup_id_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
223 l_tsk_rollup_rec_ver_num_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
224 l_tsk_object_version_id_tab             SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
225 l_tsk_progress_stat_code_tab            SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
226 l_tsk_incremental_wq_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
227 l_tsk_cumulative_wq_tab                 SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
228 l_tsk_base_prog_stat_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
229 l_tsk_eff_roll_prg_st_code_tab          SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
230 l_tsk_percent_complete_id_tab           SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
231 l_tsk_task_wt_basis_code_tab            SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
232 l_tsk_base_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
233 l_tsk_structure_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
234 
235 l_tsk_create_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
236 l_tsk_update_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
237 
238 
239 l_prj_currency_code             VARCHAR2(15);
240 l_total_tasks                   NUMBER;
241 l_prog_pa_period_name           VARCHAR2(30);
242 l_prog_gl_period_name           VARCHAR2(30);
243 task_index                      NUMBER;
244 l_task_id                       NUMBER;
245 l_child_rollup_rec_exists       VARCHAR2(1);
246 l_sch_rec_ver_number            NUMBER;
247 
248 l_equipment_hours               NUMBER;
249 l_pou_labor_brdn_cost           NUMBER;
250 l_prj_labor_brdn_cost           NUMBER;
251 l_pou_equip_brdn_cost           NUMBER;
252 l_prj_equip_brdn_cost           NUMBER;
253 l_pou_labor_raw_cost            NUMBER;
254 l_prj_labor_raw_cost            NUMBER;
255 l_pou_equip_raw_cost            NUMBER;
256 l_prj_equip_raw_cost            NUMBER;
257 l_labor_hours                   NUMBER;
258 l_pou_oth_brdn_cost             NUMBER;
259 l_prj_oth_brdn_cost             NUMBER;
260 l_pou_oth_raw_cost              NUMBER;
261 l_prj_oth_raw_cost              NUMBER;
262 l_remaining_effort1             NUMBER;
263 l_percent_complete1             NUMBER;
264 l_percent_complete2             NUMBER;
265 l_etc_cost_pc                   NUMBER;
266 l_ppl_etc_cost_pc               NUMBER;
267 l_eqpmt_etc_cost_pc             NUMBER;
268 l_etc_cost_fc                   NUMBER;
269 l_ppl_etc_cost_fc               NUMBER;
270 l_eqpmt_etc_cost_fc             NUMBER;
271 l_bac_value1                    NUMBER;
272 l_ppl_act_cost_to_date_pc       NUMBER;
273 l_eqpmt_act_cost_to_date_pc     NUMBER;
274 l_oth_act_cost_to_date_fc       NUMBER;
275 l_ppl_act_cost_to_date_fc       NUMBER;
276 l_eqpmt_act_cost_to_date_fc     NUMBER;
277 l_ppl_act_effort_to_date        NUMBER;
278 l_oth_act_rawcost_to_date_pc    NUMBER;
279 l_ppl_act_rawcost_to_date_pc    NUMBER;
280 l_eqpmt_act_rawcost_to_date_pc  NUMBER;
281 l_etc_rawcost_pc                NUMBER;
282 l_ppl_etc_rawcost_pc            NUMBER;
283 l_eqpmt_act_rawcost_to_date_fc  NUMBER;
284 l_ppl_act_rawcost_to_date_fc    NUMBER;
285 l_oth_act_rawcost_to_date_fc    NUMBER;
286 l_eqpmt_act_effort_to_date      NUMBER;
287 l_eqpmt_etc_effort              NUMBER;
288 l_earned_value1                 NUMBER;
289 l_oth_act_cost_to_date_pc       NUMBER;
290 l_percent_complete_id           NUMBER;
291 l_progress_rollup_id            NUMBER;
292 l_rollup_rec_ver_number         NUMBER;
293 l_eqpmt_etc_rawcost_fc          NUMBER;
294 l_ppl_etc_rawcost_fc            NUMBER;
295 l_etc_rawcost_fc                NUMBER;
296 l_eqpmt_etc_rawcost_pc          NUMBER;
297 l_period_name                   VARCHAR2(30);
298 l_existing_object_status        VARCHAR2(150);
299 l_status_code                   VARCHAR2(150);
300 l_system_status_code            VARCHAR2(150);
301 l_status_code_temp              VARCHAR2(150); --Bug#5374114
302 l_system_status_code_temp       VARCHAR2(150); --Bug#5374114
303 l_max_rollup_as_of_date2        DATE;
304 l_current_flag                  VARCHAR2(1);
305 l_pev_schedule_id               NUMBER;
306 l_actual_exists                 VARCHAR2(1):='N';
307 l_tsk_scheduled_start_date      Date;
308 l_tsk_scheduled_finish_date     Date;
309 l_actual_start_date             Date;
310 l_actual_finish_date            Date;
311 l_estimated_start_date          Date;
312 l_estimated_finish_date         Date;
313 l_eff_rollup_status_code        VARCHAR2(150);
314 l_progress_status_code          VARCHAR2(150);
315 l_rolled_up_base_per_comp       NUMBER;
316 l_rolled_up_base_prog_stat      VARCHAR2(150);
317 l_rolled_up_per_comp            NUMBER;
318 l_rolled_up_prog_stat           VARCHAR2(150);
319 
320 
321 CURSOR cur_sch_id( c_object_version_id NUMBER )
322 IS
323 SELECT pev_schedule_id, record_version_number
324 FROM pa_proj_elem_ver_schedule
325 WHERE project_id = p_project_id
326 AND element_version_id = c_object_version_id;
327 
328 
329 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
330 IS
331 SELECT scheduled_start_date, scheduled_finish_date
332 FROM pa_proj_elem_ver_schedule
333 WHERE PROJECT_ID = c_project_id
334 AND element_version_id = c_element_version_id;
335 
336 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
337 SELECT 'Y' FROM DUAL
338 WHERE EXISTS
339 (SELECT 'xyz'
340 FROM    pa_percent_completes
341 WHERE project_id = p_project_id
342 AND task_id = c_task_id
343 AND object_type = 'PA_DELIVERABLES'
344 AND trunc(date_computed)<= trunc(p_as_of_date)
345 AND structure_type = 'WORKPLAN'
346 AND published_flag = 'Y'
347 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
348 );
349 
350 
351 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
352 IS
353 SELECT STATUS_CODE
354 FROM PA_PROJ_ELEMENTS
355 WHERE PROJ_ELEMENT_ID = l_proj_element_id
356 AND PROJECT_ID = l_project_id;
357 
358 CURSOR cur_status( c_status_weight      VARCHAR2 )
359 IS
360 select lookup_code
361 from fnd_lookup_values
362 where attribute4 = c_status_weight
363 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
364 and language = 'US'
365 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
366 
367 CURSOR cur_task_status( c_status_weight VARCHAR2 )
368 IS
369 select project_status_code
370 from pa_project_statuses
371 where project_status_weight =   c_status_weight
372 and status_type = 'TASK'
373 and predefined_flag = 'Y';
374 
375 l_process_number_temp   NUMBER;
376 
377    --This cursor selects the immediate child taks of a given task.
378    CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
379    IS
380           --select      structure
381     SELECT to_number(null) object_id_from1
382                 , ppev.object_type parent_object_type
383                 , element_version_id object_id_to1
384                 , ppev.object_type object_type
385                 , ppev.wbs_level wbs_level
386                 , to_number( null ) weighting_percentage
387                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
388                 , ppr.completed_percentage override_percent_complete
389 		, ppr.as_of_date
390                 , ppr.actual_start_date
391                 , ppr.actual_finish_date
392                 , ppr.estimated_start_date
393                 , ppr.estimated_finish_date
394                 , pps1.project_status_weight rollup_weight1 ---rollup progress status   code
395                 , pps2.project_status_weight override_weight2 ---override progress status code
396                 , pps3.project_status_weight base_weight3        --base prog status
397                 , to_number( null )     task_weight4        --task status
398                 , to_char(null) status_code
399                 , ppev.proj_element_id object_id
400                 , ppev.proj_element_id
401 		, ppr.PPL_ACT_EFFORT_TO_DATE
402                 , ppr.PPL_ACT_COST_TO_DATE_TC
403                 , ppr.PPL_ACT_COST_TO_DATE_PC
404                 , ppr.PPL_ACT_COST_TO_DATE_FC
405 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
406 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
407 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
408                 , ppr.ESTIMATED_REMAINING_EFFORT
409                 , ppr.PPL_ETC_COST_TC
410                 , ppr.PPL_ETC_COST_PC
411                 , ppr.PPL_ETC_COST_FC
412                 , ppr.PPL_ETC_RAWCOST_TC
413                 , ppr.PPL_ETC_RAWCOST_PC
414                 , ppr.PPL_ETC_RAWCOST_FC
415 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
416                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
417                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
418                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
419 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
420 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
421 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
422                 , ppr.EQPMT_ETC_EFFORT
423                 , ppr.EQPMT_ETC_COST_TC
424                 , ppr.EQPMT_ETC_COST_PC
425                 , ppr.EQPMT_ETC_COST_FC
426                 , ppr.EQPMT_ETC_RAWCOST_TC
427                 , ppr.EQPMT_ETC_RAWCOST_PC
428                 , ppr.EQPMT_ETC_RAWCOST_FC
429 		, ppr.OTH_QUANTITY_TO_DATE
430                 , ppr.OTH_ACT_COST_TO_DATE_TC
431                 , ppr.OTH_ACT_COST_TO_DATE_PC
432                 , ppr.OTH_ACT_COST_TO_DATE_FC
433 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
434 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
435 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
436 		, ppr.OTH_ETC_QUANTITY
437                 , ppr.OTH_ETC_COST_TC
438                 , ppr.OTH_ETC_COST_PC
439                 , ppr.OTH_ETC_COST_FC
440                 , ppr.OTH_ETC_RAWCOST_TC
441                 , ppr.OTH_ETC_RAWCOST_PC
442                 , ppr.OTH_ETC_RAWCOST_FC
443                 , ppr.CURRENT_FLAG
444                 , ppr.PROJFUNC_COST_RATE_TYPE
445                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
446                 , ppr.PROJFUNC_COST_RATE_DATE
447                 , ppr.PROJ_COST_RATE_TYPE
448                 , ppr.PROJ_COST_EXCHANGE_RATE
449                 , ppr.PROJ_COST_RATE_DATE
450                 , ppr.TXN_CURRENCY_CODE
451                 , ppr.PROG_PA_PERIOD_NAME
452                 , ppr.PROG_GL_PERIOD_NAME
453                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
454                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
455                   BAC_value_self -- bug 4493105
456                 , null earned_value
457 		, to_char(null) task_derivation_method
458 		, ppr.progress_rollup_id
459 		, ppr.record_version_number
460 	--	, element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
461 		, ppr.object_version_id -- Bug 4651304
462                 , ppr.progress_status_code
463                 , ppr.incremental_work_quantity
464                 , ppr.cumulative_work_quantity
465 		-- 4533112 : Added decode to select N and Y only
466                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
467                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
468                 , ppr.percent_complete_id
469                 , ppr.TASK_WT_BASIS_CODE
470                 , ppr.structure_version_id
471                 ,'N' create_required
472                 ,'N' update_required
473         , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
474     FROM pa_proj_element_versions ppev,
475             pa_progress_rollup ppr,
476             pa_project_statuses pps1,
477             pa_project_statuses pps2,
478             pa_project_statuses pps3 ,
479             pa_proj_rollup_temp temp
480     WHERE  --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
481                --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
482                temp.object_id = ppev.element_version_id
483         AND    temp.process_number = l_process_number_temp
484 	AND    ppev.object_type = 'PA_STRUCTURES'
485         AND    ppr.project_id  = ppev.project_id
486         AND    ppr.object_id = ppev.proj_element_id
487         AND    ppr.object_type =  'PA_STRUCTURES'
488         AND    ppr.as_of_date  = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
489                                  ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
490         AND    ppr.current_flag <>     'W'
491         AND    ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
492         AND    ppr.progress_status_code = pps2.project_status_code(+)
493         AND    ppr.base_progress_status_code = pps3.project_status_code(+)
494         AND    ppr.structure_type = p_structure_type
495         AND    ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
496 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
497         UNION ALL -- Changed for 14040849 changed from union to union all
498         --      select tasks
499         SELECT pobj.object_id_from1
500                 , ppev1.object_type     parent_object_type
501                 , pobj.object_id_to1
502                 , ppev2.object_type     object_type
503                 , ppev2.wbs_level wbs_level
504                 , pobj.weighting_percentage
505                 , ppr.EFF_ROLLUP_PERCENT_COMP   rollup_completed_percentage
506                 , ppr.completed_percentage override_percent_complete
507 		, ppr.as_of_date
508                 , ppr.actual_start_date
509                 , ppr.actual_finish_date
510                 , ppr.estimated_start_date
511                 , ppr.estimated_finish_date
512                 , pps1.project_status_weight rollup_weight1     ---rollup       progress        status code
513                 , pps2.project_status_weight override_weight2 ---override progress status code
514                 , pps3.project_status_weight base_weight3        ---base prog status
515                 , pps4.project_status_weight    task_weight4
516                 , ppe.status_code
517                 , ppev2.proj_element_id object_id
518                 , ppev2.proj_element_id
519 		, ppr.PPL_ACT_EFFORT_TO_DATE
520                 , ppr.PPL_ACT_COST_TO_DATE_TC
521                 , ppr.PPL_ACT_COST_TO_DATE_PC
522                 , ppr.PPL_ACT_COST_TO_DATE_FC
523 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
524 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
525 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
526                 , ppr.ESTIMATED_REMAINING_EFFORT
527                 , ppr.PPL_ETC_COST_TC
528                 , ppr.PPL_ETC_COST_PC
529                 , ppr.PPL_ETC_COST_FC
530                 , ppr.PPL_ETC_RAWCOST_TC
531                 , ppr.PPL_ETC_RAWCOST_PC
532                 , ppr.PPL_ETC_RAWCOST_FC
533 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
534 		, ppr.EQPMT_ACT_COST_TO_DATE_TC
535                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
536                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
537 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
538 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
539 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
540                 , ppr.EQPMT_ETC_EFFORT
541                 , ppr.EQPMT_ETC_COST_TC
542                 , ppr.EQPMT_ETC_COST_PC
543                 , ppr.EQPMT_ETC_COST_FC
544                 , ppr.EQPMT_ETC_RAWCOST_TC
545                 , ppr.EQPMT_ETC_RAWCOST_PC
546                 , ppr.EQPMT_ETC_RAWCOST_FC
547 		, ppr.OTH_QUANTITY_TO_DATE
548                 , ppr.OTH_ACT_COST_TO_DATE_TC
549                 , ppr.OTH_ACT_COST_TO_DATE_PC
550                 , ppr.OTH_ACT_COST_TO_DATE_FC
551 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
552 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
553 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
554 		, ppr.OTH_ETC_QUANTITY
555                 , ppr.OTH_ETC_COST_TC
556                 , ppr.OTH_ETC_COST_PC
557                 , ppr.OTH_ETC_COST_FC
558                 , ppr.OTH_ETC_RAWCOST_TC
559                 , ppr.OTH_ETC_RAWCOST_PC
560                 , ppr.OTH_ETC_RAWCOST_FC
561                 , ppr.CURRENT_FLAG
562                 , ppr.PROJFUNC_COST_RATE_TYPE
563                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
564                 , ppr.PROJFUNC_COST_RATE_DATE
565                 , ppr.PROJ_COST_RATE_TYPE
566                 , ppr.PROJ_COST_EXCHANGE_RATE
567                 , ppr.PROJ_COST_RATE_DATE
568                 , ppr.TXN_CURRENCY_CODE
569                 , ppr.PROG_PA_PERIOD_NAME
570                 , ppr.PROG_GL_PERIOD_NAME
571                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
572                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
573                                          p_structure_type,p_working_wp_prog_flag) BAC_value
574                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
575                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
576                                          p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
577                 , null earned_value
578 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
579 		, ppr.progress_rollup_id
580 		, ppr.record_version_number
581 	--	, pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
582 		, ppr.object_version_id -- Bug 4651304
583                 , ppr.progress_status_code
584                 , ppr.incremental_work_quantity
585                 , ppr.cumulative_work_quantity
586 		-- 4533112 : Added decode to select N and Y only
587                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
588                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
589                 , ppr.percent_complete_id
590                 , ppr.TASK_WT_BASIS_CODE
591                 , ppr.structure_version_id
592                 ,'N' create_required
593                 ,'N' update_required
594 		, ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
595           FROM
596                   pa_object_relationships       pobj,
597                   pa_proj_element_versions      ppev1,
598                   pa_proj_element_versions      ppev2,
599                   pa_progress_rollup ppr,
600                   pa_proj_elements      ppe,
601                   pa_project_statuses pps1,
602                   pa_project_statuses pps2,
603                   pa_project_statuses pps3,
604                   pa_project_statuses pps4,
605             pa_task_types ttype ,
606             pa_proj_rollup_temp temp
607         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
608           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
609               temp.object_id = pobj.object_id_from1
610           AND temp.process_number = l_process_number_temp
611           AND pobj.object_id_from1 = ppev1.element_version_id
612           AND pobj.object_id_to1 = ppev2.element_version_id
613           AND pobj.relationship_type = 'S'
614           AND ppr.project_id = ppev2.project_id
615           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
616                                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
617           AND ppr.current_flag <> 'W'
618           AND ppr.object_id     = ppev2.proj_element_id
619           AND ppr.project_id = ppev2.project_id
620           AND ppr.object_type = 'PA_TASKS'
621           AND ppe.proj_element_id = ppev2.proj_element_id
622           AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
623           AND ppr.progress_status_code = pps2.project_status_code(+)
624           AND ppr.base_progress_status_code = pps3.project_status_code(+)
625           AND ppe.status_code = pps4.project_status_code(+)
626           AND ppe.project_id = ppev2.project_id
627           AND ppe.object_type = ppev2.object_type
628           AND ppev2.object_type = 'PA_TASKS'
629           AND ppe.object_type = 'PA_TASKS'
630           AND ppe.link_task_flag <> 'Y' -- 4392189
631           AND pobj.object_type_to = 'PA_TASKS'
632           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
633           AND ppe.type_id = ttype.task_type_id
634           AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
635           AND ppr.structure_type = p_structure_type
636 	  AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
637 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
638 UNION ALL
639           SELECT to_number(null)        object_id_from1
640                 , ppev.object_type parent_object_type
641                 , element_version_id object_id_to1
642                 , ppev.object_type object_type
643                 , ppev.wbs_level wbs_level
644                 , to_number( null )     weighting_percentage
645                 , to_number(null) rollup_completed_percentage
646                 , to_number(null) override_percent_complete
647 		, to_date(null) as_of_date
648                 , to_date(null) actual_start_date
649                 , to_date(null) actual_finish_date
650                 , to_date(null) estimated_start_date
651                 , to_date(null) estimated_finish_date
652                 , to_number(null) rollup_weight1 ---rollup progress status code
653                 , to_number(null) override_weight2      ---override progress    status code
654                 , to_number(null) base_weight3     --base       prog    status
655                 , to_number( null )     task_weight4        --task status
656                 , to_char(null) status_code
657                 , ppev.proj_element_id object_id
658                 , ppev.proj_element_id
659 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
660                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
661                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
662                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
663 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
664 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
665 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
666                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
667                 , to_number( null )     PPL_ETC_COST_TC
668                 , to_number( null )     PPL_ETC_COST_PC
669                 , to_number( null )     PPL_ETC_COST_FC
670                 , to_number( null )     PPL_ETC_RAWCOST_TC
671                 , to_number( null )     PPL_ETC_RAWCOST_PC
672                 , to_number( null )     PPL_ETC_RAWCOST_FC
673 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
674                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
675                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
676                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
677 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
678 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
679 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
680                 , to_number( null )     EQPMT_ETC_EFFORT
681                 , to_number( null )     EQPMT_ETC_COST_TC
682                 , to_number( null )     EQPMT_ETC_COST_PC
683                 , to_number( null )     EQPMT_ETC_COST_FC
684                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
685                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
686                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
687 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
688                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
689                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
690                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
691 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
692 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
693 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
694 		, to_number(  null    ) OTH_ETC_QUANTITY
695                 , to_number( null )     OTH_ETC_COST_TC
696                 , to_number( null )     OTH_ETC_COST_PC
697                 , to_number( null )     OTH_ETC_COST_FC
698                 , to_number( null )     OTH_ETC_RAWCOST_TC
699                 , to_number( null )     OTH_ETC_RAWCOST_PC
700                 , to_number( null )     OTH_ETC_RAWCOST_FC
701                 , to_char(null) CURRENT_FLAG
702                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
703                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
704                 , to_date(null) PROJFUNC_COST_RATE_DATE
705                 , to_char(null) PROJ_COST_RATE_TYPE
706                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
707                 , to_date(null) PROJ_COST_RATE_DATE
708                 , to_char(null) TXN_CURRENCY_CODE
709                 , to_char(null) PROG_PA_PERIOD_NAME
710                 , to_char(null) PROG_GL_PERIOD_NAME
711                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
712                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
713                    BAC_value_self -- bug 4493105
714                 , null earned_value
715 		, to_char(null) task_derivation_method
716 		, to_number(null)     progress_rollup_id
717 		, to_number(null)     record_version_number
718                 , element_version_id object_version_id
719                 , to_char(null) progress_status_code
720                 , to_number(null) incremental_work_quantity
721                 , to_number(null) cumulative_work_quantity
722 		-- 4533112 : Added N only
723                 , 'N' base_progress_status_code
724                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
725                 , to_number(null) percent_complete_id
726                 , to_char(null) TASK_WT_BASIS_CODE
727                 , to_number(null) structure_version_id
728                 ,'N'    create_required
729                 ,'N'    update_required
730 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
731           FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
732           WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
733             --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
734             element_version_id  = temp.object_id
735                 AND temp.process_number = l_process_number_temp
736          AND    ppev.object_type =      'PA_STRUCTURES'
737          AND    pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
738                         ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
739                         IS      NULL
740 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
741         UNION ALL -- Change from Union to Union ALL for 14040849
742         --      select tasks
743         SELECT pobj.object_id_from1
744                 , ppev1.object_type     parent_object_type
745                 , pobj.object_id_to1
746                 , ppev2.object_type     object_type
747                 , ppev2.wbs_level wbs_level
748                 , pobj.weighting_percentage
749                 , to_number(null) rollup_completed_percentage
750                 , to_number(null) override_percent_complete
751 		, to_date(null) as_of_date
752                 , to_date(null) actual_start_date
753                 , to_date(null) actual_finish_date
754                 , to_date(null) estimated_start_date
755                 , to_date(null) estimated_finish_date
756                 , to_number(null) rollup_weight1 ---rollup progress status code
757                 , to_number(null) override_weight2      ---override progress    status code
758                 , to_number(null) base_weight3     --base       prog    status
759                 , to_number( null )     task_weight4        --task status
760                 , to_char(null) status_code
761                 , ppev2.proj_element_id object_id
762                 , ppev2.proj_element_id
763 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
764                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
765                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
766                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
767 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
768 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
769 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
770                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
771                 , to_number( null )     PPL_ETC_COST_TC
772                 , to_number( null )     PPL_ETC_COST_PC
773                 , to_number( null )     PPL_ETC_COST_FC
774                 , to_number( null )     PPL_ETC_RAWCOST_TC
775                 , to_number( null )     PPL_ETC_RAWCOST_PC
776                 , to_number( null )     PPL_ETC_RAWCOST_FC
777 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
778                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
779                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
780                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
781 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
782 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
783 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
784                 , to_number( null )     EQPMT_ETC_EFFORT
785                 , to_number( null )     EQPMT_ETC_COST_TC
786                 , to_number( null )     EQPMT_ETC_COST_PC
787                 , to_number( null )     EQPMT_ETC_COST_FC
788                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
789                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
790                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
791 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
792                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
793                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
794                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
795 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
796 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
797 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
798 		, to_number(  null    ) OTH_ETC_QUANTITY
799                 , to_number( null )     OTH_ETC_COST_TC
800                 , to_number( null )     OTH_ETC_COST_PC
801                 , to_number( null )     OTH_ETC_COST_FC
802                 , to_number( null )     OTH_ETC_RAWCOST_TC
803                 , to_number( null )     OTH_ETC_RAWCOST_PC
804                 , to_number( null )     OTH_ETC_RAWCOST_FC
805                 , to_char(null) CURRENT_FLAG
806                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
807                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
808                 , to_date(null) PROJFUNC_COST_RATE_DATE
809                 , to_char(null) PROJ_COST_RATE_TYPE
810                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
811                 , to_date(null) PROJ_COST_RATE_DATE
812                 , to_char(null) TXN_CURRENCY_CODE
813                 , to_char(null) PROG_PA_PERIOD_NAME
814                 , to_char(null) PROG_GL_PERIOD_NAME
815                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
816                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
817                                     p_structure_type,p_working_wp_prog_flag) BAC_value
818                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
819                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
820                                     p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
821                 , null earned_value
822 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
823 		, to_number(null) progress_rollup_id
824 		, to_number(null) record_version_number
825                 , pobj.object_id_to1 object_version_id
826                 , to_char(null) progress_status_code
827                 , to_number(null) incremental_work_quantity
828                 , to_number(null) cumulative_work_quantity
829 		-- 4533112 : Added N only
830                 , 'N' base_progress_status_code
831                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
832                 , to_number(null) percent_complete_id
833                 , to_char(null) TASK_WT_BASIS_CODE
834                 , to_number(null) structure_version_id
835                 ,'N' create_required
836                 ,'N' update_required
837 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
838           FROM
839                   pa_object_relationships       pobj,
840                   pa_proj_element_versions      ppev1,
841                   pa_proj_element_versions      ppev2,
842                   pa_proj_elements      ppe,
843                   pa_project_statuses pps4,
844             pa_task_types ttype ,
845             pa_proj_rollup_temp temp
846         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
847           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
848           pobj.object_id_from1  = temp.object_id
849           AND temp.process_number = l_process_number_temp
850           AND pobj.object_id_from1 = ppev1.element_version_id
851           AND pobj.object_id_to1 = ppev2.element_version_id
852           AND pobj.relationship_type = 'S'
853           AND ppe.proj_element_id = ppev2.proj_element_id
854           AND ppe.status_code = pps4.project_status_code(+)
855           AND ppe.project_id = ppev2.project_id
856           AND ppe.object_type = ppev2.object_type
857           AND ppev2.object_type = 'PA_TASKS'
858           AND ppe.object_type = 'PA_TASKS'
859           AND ppe.link_task_flag <> 'Y' -- 4392189
860           AND pobj.object_type_to = 'PA_TASKS'
861           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
862           AND ppe.type_id = ttype.task_type_id
863           AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
864                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id,     ppev2.proj_element_id/*Bug      3764224 */)
865                   IS NULL
866       AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
867 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
868       ;
869 
870    -- FPM       Dev CR 6 : Added Union ALL
871 
872    l_asgn_task_version_id_tab                    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
873    l_asgn_rate_based_flag_tab                    SYSTEM.PA_VARCHAR2_1_TBL_TYPE    :=    SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
874    l_asgn_resource_class_code_tab                SYSTEM.PA_VARCHAR2_30_TBL_TYPE :=      SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
875    l_asgn_res_assignment_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
876    l_asgn_planned_quantity_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
877    l_asgn_plan_bur_cost_pc_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
878    l_asgn_res_list_member_id_tab                SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
879 
880    CURSOR       cur_assgn_rec_bulk(     c_task_ver_id NUMBER, c_task_id NUMBER )        IS
881    SELECT       a.wbs_element_version_id
882    ,    a.rate_based_flag
883    ,    a.resource_class_code
884    ,    a.resource_assignment_id
885    ,    a.total_plan_quantity planned_quantity
886    ,    a.total_project_burdened_cost   planned_bur_cost_proj_cur
887    ,    a.resource_list_member_id
888    from pa_resource_assignments a
889    WHERE a.wbs_element_version_id = c_task_ver_id
890    AND a.project_id     = p_project_id
891    AND a.task_id = c_task_id
892 --   AND a.ta_display_flag        = 'Y' --Bug 4323537
893 ;
894 
895 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER)      IS
896 SELECT ppr.*
897 FROM    pa_progress_rollup      ppr
898 WHERE ppr.project_id = p_project_id
899 AND ppr.object_id =     c_object_id
900 AND ppr.proj_element_id = c_proj_element_id
901 AND ppr.object_type     = 'PA_ASSIGNMENTS'
902 AND ppr.current_flag <> 'W'
903 AND ppr.structure_type =        p_structure_type
904 AND ppr.as_of_date <= p_as_of_date
905 AND ((l_published_structure =   'Y' AND ppr.structure_version_id is null)       OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
906 AND rownum =1
907 ORDER BY as_of_date     desc
908 ;
909 
910 l_asgn_progress_rec     cur_get_asgn_progress%ROWTYPE;
911 l_asgn_act_start_date    DATE;
912 l_asgn_act_finish_date   DATE;
913 l_asgn_est_start_date    DATE;
914 l_asgn_est_finish_date   DATE;
915 l_asgn_as_of_date       DATE;
916 l_asgn_ppl_act_eff      NUMBER;
917 l_asgn_eqp_act_eff      NUMBER;
918 l_asgn_ppl_act_cost     NUMBER;
919 l_asgn_eqp_act_cost     NUMBER;
920 l_asgn_oth_act_cost     NUMBER;
921 l_asgn_ppl_etc_eff      NUMBER;
922 l_asgn_eqp_etc_eff      NUMBER;
923 l_asgn_ppl_etc_cost     NUMBER;
924 l_asgn_eqp_etc_cost     NUMBER;
925 l_asgn_oth_etc_cost     NUMBER;
926 l_asgn_earned_value     NUMBER;
927 l_asgn_bac_value        NUMBER;
928 
929 /*
930    --This cursor selects  the task assignments of a given task.
931    -- sql id: 14904837  bug: 4871809  NOT USED IN CODE
932    CURSOR cur_assgn( c_task_ver_id        NUMBER, c_task_per_comp_deriv_method    VARCHAR2 )
933    IS
934         SELECT asgn.task_version_id
935         , 'PA_TASKS' parent_object_type
936         , asgn.resource_assignment_id   object_id_to1     --maansari4/8 --      Bug 3764224, ideally this shdould be changes    to      RLM id. But keeping this as     is due to       Scheduling API  behaviour
937         , asgn.task_version_id object_id_from1
938         , 'PA_ASSIGNMENTS' object_type
939         , asgn.resource_class_code
940         , asgn.rate_based_flag
941         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST')  assignment_type
942         , ppr.actual_start_date
943         , ppr.actual_finish_date
944         , ppr.estimated_start_date
945         , ppr.estimated_finish_date
946         , ppr.ESTIMATED_REMAINING_EFFORT
947         , ppr.STRUCTURE_VERSION_ID
948         , ppr.STRUCTURE_TYPE
949         , ppr.PROJ_ELEMENT_ID
950         , ppr.PPL_ACT_EFFORT_TO_DATE
951         , ppr.EQPMT_ACT_EFFORT_TO_DATE
952         , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE     total_act_effort_to_date
953         , ppr.EQPMT_ETC_EFFORT
954         , ppr.EQPMT_ETC_EFFORT +        ppr.estimated_remaining_effort  total_etc_effort
955         , ppr.OTH_ACT_COST_TO_DATE_TC
956         , ppr.OTH_ACT_COST_TO_DATE_PC
957         , ppr.OTH_ACT_COST_TO_DATE_FC
958         , ppr.OTH_ETC_COST_TC
959         , ppr.OTH_ETC_COST_PC
960         , ppr.OTH_ETC_COST_FC
961         , ppr.PPL_ACT_COST_TO_DATE_TC
962         , ppr.PPL_ACT_COST_TO_DATE_PC
963         , ppr.PPL_ACT_COST_TO_DATE_FC
964         , ppr.PPL_ETC_COST_TC
965         , ppr.PPL_ETC_COST_PC
966         , ppr.PPL_ETC_COST_FC
967         , ppr.EQPMT_ACT_COST_TO_DATE_TC
968         , ppr.EQPMT_ACT_COST_TO_DATE_PC
969         , ppr.EQPMT_ACT_COST_TO_DATE_FC
970         , ppr.OTH_ACT_COST_TO_DATE_TC   +       ppr.PPL_ACT_COST_TO_DATE_TC +   ppr.EQPMT_ACT_COST_TO_DATE_TC   total_act_cost_to_date_tc
971         , ppr.OTH_ACT_COST_TO_DATE_PC   +       ppr.PPL_ACT_COST_TO_DATE_PC +   ppr.EQPMT_ACT_COST_TO_DATE_PC   total_act_cost_to_date_pc
972         , ppr.OTH_ACT_COST_TO_DATE_FC   +       ppr.PPL_ACT_COST_TO_DATE_FC +   ppr.EQPMT_ACT_COST_TO_DATE_FC   total_act_cost_to_date_fc
973         , ppr.EQPMT_ETC_COST_TC
974         , ppr.EQPMT_ETC_COST_PC
975         , ppr.EQPMT_ETC_COST_FC
976         , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC     + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
977         , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC     + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
978         , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC     + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
979 --      , ppr.EARNED_VALUE
980         , ppr.SUBPRJ_PPL_ACT_EFFORT
981         , ppr.SUBPRJ_EQPMT_ACT_EFFORT
982         , ppr.SUBPRJ_PPL_ETC_EFFORT
983         , ppr.SUBPRJ_EQPMT_ETC_EFFORT
984         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
985         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
986         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
987         , ppr.SUBPRJ_PPL_ACT_COST_TC
988         , ppr.SUBPRJ_PPL_ACT_COST_FC
989         , ppr.SUBPRJ_PPL_ACT_COST_PC
990         , ppr.SUBPRJ_EQPMT_ACT_COST_TC
991         , ppr.SUBPRJ_EQPMT_ACT_COST_FC
992         , ppr.SUBPRJ_EQPMT_ACT_COST_PC
993         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
994         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
995         , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
996         , ppr.SUBPRJ_OTH_ETC_COST_TC
997         , ppr.SUBPRJ_OTH_ETC_COST_FC
998         , ppr.SUBPRJ_OTH_ETC_COST_PC
999         , ppr.SUBPRJ_PPL_ETC_COST_TC
1000         , ppr.SUBPRJ_PPL_ETC_COST_FC
1001         , ppr.SUBPRJ_PPL_ETC_COST_PC
1002         , ppr.SUBPRJ_EQPMT_ETC_COST_TC
1003         , ppr.SUBPRJ_EQPMT_ETC_COST_FC
1004         , ppr.SUBPRJ_EQPMT_ETC_COST_PC
1005         , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC +     ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
1006         , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC +     ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
1007         , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC +     ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
1008         , ppr.SUBPRJ_EARNED_VALUE
1009         , ppr.CURRENT_FLAG
1010         , ppr.PROJFUNC_COST_RATE_TYPE
1011         , ppr.PROJFUNC_COST_EXCHANGE_RATE
1012         , ppr.PROJFUNC_COST_RATE_DATE
1013         , ppr.PROJ_COST_RATE_TYPE
1014         , ppr.PROJ_COST_EXCHANGE_RATE
1015         , ppr.PROJ_COST_RATE_DATE
1016         , ppr.TXN_CURRENCY_CODE
1017         , ppr.PROG_PA_PERIOD_NAME
1018         , ppr.PROG_GL_PERIOD_NAME
1019         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) +    nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
1020                                     ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))  ) earned_value
1021         , decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
1022                 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +   nvl(ppr.PPL_ETC_COST_PC,0)
1023                 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT',       decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
1024                 + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0) +   nvl(ppr.estimated_remaining_effort,0)), 0) bac_value_in_rollup_method
1025         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
1026                                         decode( asgn.resource_class_code,
1027                                             'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
1028                                                  decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1,      0,
1029                                                  nvl( asgn.planned_quantity-ppr.PPL_ACT_EFFORT_TO_DATE,0))),
1030                                             'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,
1031                                                  decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1,    0,
1032                                                  nvl( asgn.planned_quantity-ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0)
1033                                    ),
1034                                  ( NVL( decode( asgn.resource_class_code,
1035                                           'FINANCIAL_ELEMENTS',
1036                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1037                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1038                                                  nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1039                                           'MATERIAL_ITEMS',
1040                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1041                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1042                                                  nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1043                                           'PEOPLE',
1044                                         nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)      + nvl(ppr.PPL_ETC_COST_PC,
1045                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
1046                                                           nvl(asgn.planned_bur_cost_proj_cur-ppr.PPL_ACT_COST_TO_DATE_PC,0))),
1047                                           'EQUIPMENT',
1048                                         nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
1049                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1,  0,
1050                                                           nvl(asgn.planned_bur_cost_proj_cur-ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
1051                                     nvl(asgn.planned_bur_cost_proj_cur,0)
1052                                     ))
1053                                           ) bac_value_in_task_deriv
1054     FROM
1055                   pa_task_asgmts_v       asgn,
1056                   pa_progress_rollup ppr
1057         WHERE asgn.task_version_id      = c_task_ver_id
1058           AND asgn.project_id = ppr.project_id
1059           AND asgn.RESOURCE_LIST_MEMBER_ID      = ppr.object_id -- Bug 3764224
1060           AND asgn.task_id      = ppr.proj_element_id --        Bug 3764224
1061           AND ppr.object_type = 'PA_ASSIGNMENTS'
1062   --        AND asgn.ta_display_flag      = 'Y'   --Bug 4323537.
1063           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1064                                   asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS',p_as_of_date,asgn.task_version_id, p_structure_type, l_structure_version_id, asgn.task_id)  ---Bug 3764224      -- FPM Dev CR 3
1065           AND ppr.current_flag <> 'W'
1066           AND ppr.structure_type        =       p_structure_type
1067           AND ((l_published_structure   = 'Y' AND       ppr.structure_version_id        is null) OR (l_published_structure      = 'N' AND       ppr.structure_version_id        = p_structure_version_id))
1068 UNION ALL
1069         SELECT asgn.task_version_id
1070         , 'PA_TASKS' parent_object_type
1071         , asgn.resource_assignment_id   object_id_to1 -- Bug 3764224,   ideally this shdould be changes to      RLM id. But keeping     this    as is due       to Scheduling   API behaviour
1072         , asgn.task_version_id object_id_from1
1073         , 'PA_ASSIGNMENTS' object_type
1074         , asgn.resource_class_code
1075         , asgn.rate_based_flag
1076         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST')  assignment_type
1077         , to_date(null) actual_start_date
1078         , to_date(null) actual_finish_date
1079         , to_date(null) estimated_start_date
1080         , to_date(null) estimated_finish_date
1081         , to_number(null) ESTIMATED_REMAINING_EFFORT
1082         , to_number(null) STRUCTURE_VERSION_ID
1083         , to_char(null) STRUCTURE_TYPE
1084         , to_number(null) PROJ_ELEMENT_ID
1085         , to_number(null) PPL_ACT_EFFORT_TO_DATE
1086         , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
1087         , to_number(null) total_act_effort_to_date
1088         , to_number(null) EQPMT_ETC_EFFORT
1089         , to_number(null) total_etc_effort
1090         , to_number(null) OTH_ACT_COST_TO_DATE_TC
1091         , to_number(null) OTH_ACT_COST_TO_DATE_PC
1092         , to_number(null) OTH_ACT_COST_TO_DATE_FC
1093         , to_number(null) OTH_ETC_COST_TC
1094         , to_number(null) OTH_ETC_COST_PC
1095         , to_number(null) OTH_ETC_COST_FC
1096         , to_number(null) PPL_ACT_COST_TO_DATE_TC
1097         , to_number(null) PPL_ACT_COST_TO_DATE_PC
1098         , to_number(null) PPL_ACT_COST_TO_DATE_FC
1099         , to_number(null) PPL_ETC_COST_TC
1100         , to_number(null) PPL_ETC_COST_PC
1101         , to_number(null) PPL_ETC_COST_FC
1102         , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
1103         , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
1104         , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
1105         , to_number(null) total_act_cost_to_date_tc
1106         , to_number(null) total_act_cost_to_date_pc
1107         , to_number(null) total_act_cost_to_date_fc
1108         , to_number(null) EQPMT_ETC_COST_TC
1109         , to_number(null) EQPMT_ETC_COST_PC
1110         , to_number(null) EQPMT_ETC_COST_FC
1111         , to_number(null) total_etc_cost_tc
1112         , to_number(null) total_etc_cost_pc
1113         , to_number(null) total_etc_cost_fc
1114 --      , ppr.EARNED_VALUE
1115         , to_number(null) SUBPRJ_PPL_ACT_EFFORT
1116         , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
1117         , to_number(null) SUBPRJ_PPL_ETC_EFFORT
1118         , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
1119         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
1120         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
1121         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
1122         , to_number(null) SUBPRJ_PPL_ACT_COST_TC
1123         , to_number(null) SUBPRJ_PPL_ACT_COST_FC
1124         , to_number(null) SUBPRJ_PPL_ACT_COST_PC
1125         , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
1126         , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
1127         , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
1128         , to_number(null) total_subproj_act_cost_tc
1129         , to_number(null) total_subproj_act_cost_pc
1130         , to_number(null) total_subproj_act_cost_fc
1131         , to_number(null) SUBPRJ_OTH_ETC_COST_TC
1132         , to_number(null) SUBPRJ_OTH_ETC_COST_FC
1133         , to_number(null) SUBPRJ_OTH_ETC_COST_PC
1134         , to_number(null) SUBPRJ_PPL_ETC_COST_TC
1135         , to_number(null) SUBPRJ_PPL_ETC_COST_FC
1136         , to_number(null) SUBPRJ_PPL_ETC_COST_PC
1137         , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
1138         , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
1139         , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
1140         , to_number(null) total_subproj_etc_cost_tc
1141         , to_number(null) total_subproj_etc_cost_pc
1142         , to_number(null) total_subproj_etc_cost_fc
1143         , to_number(null) SUBPRJ_EARNED_VALUE
1144         , to_char(null) CURRENT_FLAG
1145         , to_char(null) PROJFUNC_COST_RATE_TYPE
1146         , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
1147         , to_date(null) PROJFUNC_COST_RATE_DATE
1148         , to_char(null) PROJ_COST_RATE_TYPE
1149         , to_number(null) PROJ_COST_EXCHANGE_RATE
1150         , to_date(null) PROJ_COST_RATE_DATE
1151         , to_char(null) TXN_CURRENCY_CODE
1152         , to_char(null) PROG_PA_PERIOD_NAME
1153         , to_char(null) PROG_GL_PERIOD_NAME
1154         , to_number(null) earned_value
1155         , to_number(null) bac_value_in_rollup_method
1156 --        , decode(c_task_per_comp_deriv_method,'EFFORT',decode(asgn.rate_based_flag,'Y',asgn.planned_quantity,0),asgn.planned_quantity) bac_value_in_task_deriv --3801780
1157 --bug 3815252
1158    ,    decode(c_task_per_comp_deriv_method,'EFFORT',decode(asgn.rate_based_flag,'Y',
1159                                  decode(asgn.resource_class_code,'PEOPLE', asgn.planned_quantity, 'EQUIPMENT', asgn.planned_quantity, 0),0)
1160                                 ,asgn.planned_bur_cost_proj_cur) bac_value_in_task_deriv --3801780
1161     FROM
1162                   pa_task_asgmts_v       asgn
1163         WHERE asgn.task_version_id      = c_task_ver_id
1164         AND     pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1165                                   asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS',p_as_of_date,asgn.task_version_id, p_structure_type, l_structure_version_id, asgn.task_id   )   --- Bug 3764224
1166                         IS NULL
1167           --bug 3958686, now hidden assignments should not      to be selected
1168     --      AND asgn.ta_display_flag      = 'Y'  -- Bug 4323537
1169         ; */
1170 
1171 -- FPM Dev CR 5 : Reverted back the outer       join
1172 -- FPM Dev CR 4 : Removed       Outer   Join    from    rollup table.   No need to select       deliverables which do   not have rollup records
1173    --This       cursor selects  the deliverables of     a given task.
1174    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER,    c_task_ver_id NUMBER, c_project_id      NUMBER)
1175    IS
1176         SELECT obj.object_type_from
1177         , 'PA_TASKS' parent_object_type
1178         ,       obj.object_id_to2 object_id
1179         ,       obj.object_id_to1
1180         ,       obj.object_id_from1
1181         , 'PA_DELIVERABLES'     object_type
1182         , ppr.actual_finish_date
1183         , ppr.as_of_date
1184         , ppr.completed_percentage
1185         , ppr.STRUCTURE_TYPE
1186         , ppr.PROJ_ELEMENT_ID
1187         , ppr.STRUCTURE_VERSION_ID
1188         , ppr.TASK_WT_BASIS_CODE
1189         , elem.progress_weight weighting_percentage
1190         , ppr.base_percent_complete
1191         , pps2.project_status_weight override_weight    ---override progress status code
1192         , pps3.project_status_weight base_weight          --base prog status
1193     FROM pa_proj_elements elem
1194     , pa_object_relationships   obj
1195     , pa_progress_rollup        ppr
1196     , pa_project_statuses pps2
1197     , pa_project_statuses pps3
1198         WHERE  obj.object_id_from2= c_task_proj_elem_id
1199         AND obj.object_type_from        =       'PA_TASKS'
1200         AND obj.object_type_to =        'PA_DELIVERABLES'
1201         AND obj.relationship_type = 'A'
1202         AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
1203         AND elem.proj_element_id        =       obj.object_id_to2
1204         AND elem.object_type = 'PA_DELIVERABLES'
1205         and elem.project_id     = p_project_id
1206 --        AND obj.object_id_to1 = ppr.object_version_id(+)
1207         AND ppr.object_type(+) =        'PA_DELIVERABLES'
1208         AND ppr.project_id(+) = c_project_id
1209         AND ppr.object_id(+) = obj.object_id_to2
1210         AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
1211                                   obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug     3764224 */) --  FPM Dev CR 3
1212         AND ppr.structure_type(+) = p_structure_type
1213         AND ppr.structure_version_id is null -- deliverable progress for        working version is not allowed
1214         AND ppr.base_progress_status_code = pps3.project_status_code(+)
1215         AND ppr.progress_status_code = pps2.project_status_code(+)
1216         AND ppr.current_flag(+) <>      'W'
1217         ;
1218 
1219     CURSOR c_mass_rollup_tasks IS
1220     select distinct object_id_from1
1221     from    pa_object_relationships
1222     start with  object_id_to1 IN (select object_id from pa_proj_rollup_temp  where process_number = l_process_number_temp)
1223     and relationship_type = 'S'
1224     connect by prior object_id_from1 = object_id_to1
1225     and relationship_type = 'S'
1226     MINUS
1227     select object_id object_id_from1 from pa_proj_rollup_temp  where process_number = l_process_number_temp
1228     ;
1229 
1230     CURSOR c_mass_rollup_tasks_temp IS
1231     select object_id
1232     from pa_proj_rollup_temp where process_number = l_process_number_temp
1233         ;
1234 
1235    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
1236    IS
1237    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
1238    FROM pa_proj_elem_ver_structure str
1239    ,    pa_project_statuses     status
1240    where str.element_version_id = c_structure_version_id
1241    AND str.project_id = c_project_id
1242    AND str.status_code =        status.project_status_code;
1243 
1244    CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
1245    IS
1246    SELECT element_version_id
1247    FROM pa_proj_element_versions
1248    where project_id = c_project_id
1249    and object_type = 'PA_TASKS'
1250    AND parent_structure_version_id      = c_structure_version_id
1251    AND wbs_level = (Select max(wbs_level)
1252                   From pa_proj_element_versions
1253                   where project_id = c_project_id
1254                   and object_type =     'PA_TASKS'
1255                   AND parent_structure_version_id = c_structure_version_id);
1256 
1257 l_track_wp_cost_flag            VARCHAR2(1) :=  'Y';    --bug 3830434
1258 l_assignment_exists      VARCHAR2(1) ;  -- Bug 3830673
1259 l_digit_number           number; --BUG  3950574,        rtarway
1260 
1261 --bug 4045979,  start
1262 l_base_struct_ver_id NUMBER;
1263 
1264 CURSOR check_task_baselined(c_structure_ver_id NUMBER,  c_task_version_id NUMBER)
1265 IS
1266   select 'Y' from pa_proj_element_versions ppev1
1267   where ppev1.parent_structure_version_id = c_structure_ver_id
1268   and ppev1.proj_element_id =   (select proj_element_id from pa_proj_element_versions ppev2
1269                                   where ppev2.element_version_id =      c_task_version_id
1270                                   and ppev2.project_id =        p_project_id);
1271 
1272 l_task_baselined VARCHAR2(1) := 'N';
1273 l_parent_task_baselined VARCHAR2(1) :=  'N';
1274 
1275 --bug 4045979,  end
1276 
1277 l_tsk_progress_exists VARCHAR2(1);
1278 l_mapping_tasks_to_rollup_tab   PA_PLSQL_DATATYPES.NumTabTyp;
1279 
1280 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
1281 CURSOR cur_tree_rollup_dates
1282 IS
1283 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
1284 from pa_object_relationships obj
1285 , pa_proj_element_versions ver
1286 , pa_progress_rollup ppr
1287 , pa_proj_rollup_temp rollup
1288 , pa_proj_element_versions ver2
1289 where rollup.object_id = obj.object_id_to1
1290 AND rollup.process_number = l_process_number_temp
1291 AND obj.relationship_type = 'S'
1292 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
1293 AND obj.object_type_to = 'PA_TASKS'
1294 AND obj.object_id_from1= ver.element_version_id
1295 AND ver.project_id = p_project_id
1296 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
1297 AND ver.project_id = ppr.project_id
1298 AND ppr.as_of_date > p_as_of_date
1299 AND ppr.object_id = ver.proj_element_id
1300 AND ppr.current_flag = 'Y'
1301 AND ppr.proj_element_id = ver.proj_element_id
1302 AND ppr.structure_type = p_structure_type
1303 AND ppr.structure_version_id is null
1304 AND obj.object_id_to1 = ver2.element_version_id
1305 AND ver2.project_id = p_project_id
1306 AND ver2.object_type = 'PA_TASKS'
1307 AND rollup.object_type = 'PA_TASKS' --  cklee bug: 6610612
1308 order by ppr.as_of_date;
1309 
1310 
1311 -- Bug 4392189 Begin
1312 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
1313 SELECT
1314   ppv2.project_id                     sub_project_id
1315  ,ppv2.element_version_id             sub_structure_ver_id
1316  ,ppv2.proj_element_id                sub_proj_element_id
1317 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
1318                                     'WORKPLAN','N')    sub_project_bac_value
1319 FROM
1320      pa_proj_element_versions ppv2
1321     ,pa_proj_elem_ver_structure ppevs2
1322     ,pa_object_relationships por1
1323     ,pa_object_relationships por2
1324 WHERE
1325   por1.object_id_from1 = c_task_version_id
1326  AND por1.object_id_to1 = por2.object_id_from1
1327  AND por2.object_id_to1 = ppv2.element_version_id
1328  AND ppv2.object_type = 'PA_STRUCTURES'
1329 -- AND por2.relationship_type in ( 'LW', 'LF' )
1330  AND por2.relationship_type = 'LW'
1331  AND ppevs2.element_version_id = ppv2.element_version_id
1332  AND ppevs2.project_id = ppv2.project_id
1333  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
1334  AND ppevs2.latest_eff_published_flag = 'Y';
1335 
1336 l_sub_project_id    NUMBER;
1337 l_sub_structure_ver_id  NUMBER;
1338 l_sub_proj_element_id   NUMBER;
1339 l_sub_project_bac_value NUMBER;
1340 
1341 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
1342 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
1343 SELECT
1344 ppr.progress_rollup_id
1345 ,ppr.actual_start_date
1346 ,ppr.actual_finish_date
1347 ,ppr.estimated_start_date
1348 ,ppr.estimated_finish_date
1349 ,pps1.project_status_weight rollup_weight1
1350 ,pps2.project_status_weight override_weight2
1351 ,pps3.project_status_weight base_weight3
1352 ,pps4.project_status_weight task_weight4
1353 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
1354 --                                    ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
1355 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,0)
1356         , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +  nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) +  nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
1357 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
1358 FROM
1359 pa_progress_rollup ppr
1360 ,pa_project_statuses pps1
1361 ,pa_project_statuses pps2
1362 ,pa_project_statuses pps3
1363 ,pa_project_statuses pps4
1364 ,pa_proj_elements ppe
1365 WHERE
1366 ppr.project_id = c_sub_project_id
1367 AND ppe.project_id = c_sub_project_id
1368 AND ppe.object_type = 'PA_STRUCTURES'
1369 AND ppe.proj_element_id = c_sub_proj_element_id
1370 AND ppr.object_id = c_sub_proj_element_id
1371 AND ppr.object_type = 'PA_STRUCTURES'
1372 AND ppr.structure_version_id is null
1373 AND ppr.structure_type = 'WORKPLAN'
1374 AND ppr.current_flag IN ('Y', 'N')
1375 AND ppr.as_of_date <= c_as_of_date
1376 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
1377 AND ppr.progress_status_code =  pps2.project_status_code(+)
1378 AND ppr.base_progress_status_code = pps3.project_status_code(+)
1379 AND ppe.status_code = pps4.project_status_code(+)
1380 order by as_of_date desc
1381  ;
1382 
1383 
1384 l_subproj_prog_rollup_id    NUMBER;
1385 l_subproj_act_start_date    DATE;
1386 l_subproj_act_finish_date   DATE;
1387 l_subproj_est_start_date    DATE;
1388 l_subproj_est_finish_date   DATE;
1389 l_subproj_rollup_weight1    NUMBER;
1390 l_subproj_override_weight2  NUMBER;
1391 l_subproj_base_weight3      NUMBER;
1392 l_subproj_task_weight4      NUMBER;
1393 l_subproj_earned_value      NUMBER;
1394 l_subproj_bac_value     NUMBER;
1395 l_subproj_comp_percentage       NUMBER; --Bug 4506009
1396 l_actual_lowest_task        VARCHAR2(1) := 'N';
1397 -- Bug 4392189 End
1398 
1399 l_summary_object_flag       VARCHAR2(1); -- 4370746
1400 l_wp_version_enabled_flag   VARCHAR2(1); -- Bug#12393400
1401 
1402 -- Bug 4506461 Begin
1403 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
1404 SELECT 'Y'
1405 FROM pa_object_relationships
1406 WHERE --relationship_type in ( 'LW', 'LF' )
1407 relationship_type = 'LW'
1408 AND object_id_from1 IN
1409     (SELECT object_id_to1
1410     FROM pa_object_relationships
1411     START WITH  object_id_from1 = c_task_version_id
1412     AND relationship_type = 'S'
1413     CONNECT BY PRIOR object_id_to1 = object_id_from1
1414     AND relationship_type = 'S')
1415     ;
1416 l_subproject_found VARCHAR2(1):='N';
1417 l_rederive_base_pc VARCHAR2(1):='N';
1418 -- Bug 4506461 End
1419 
1420 l_last_as_of_date   DATE;--4573257
1421 l_subproj_task_version_id NUMBER;--4582956
1422 l_org_id NUMBER; -- 4746476
1423 BEGIN
1424 
1425         -- Rollup       Cases
1426         -- 1. Workplan  Publsihed       Version Rollup.
1427         -- 2. Workplan  Working Version Rollup.
1428         -- 3. Financial Structure       Rollup.
1429         -- 4. Entire WBS using structure version id.
1430         -- 5. Program Rollup
1431 
1432 
1433         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
1434 
1435         IF g1_debug_mode  = 'Y' THEN
1436                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT');
1437         END IF;
1438 
1439 
1440         IF g1_debug_mode  = 'Y' THEN
1441                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
1442                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=>     3);
1443                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
1444                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=>     3);
1445                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
1446                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
1447                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
1448                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
1449                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=>     3);
1450                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
1451                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
1452                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
1453                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
1454                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id='||p_task_version_id,       x_Log_Level=>   3);
1455                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
1456                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
1457                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
1458                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id,     x_Log_Level=> 3);
1459                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
1460                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
1461                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
1462                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
1463                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
1464         END IF;
1465 
1466 	l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
1467 
1468         -- 20 May : Amit : If Structure_version_id is null, then no rocessing shd  be done
1469         --      Bug 3856161 : Added     p_as_of_date check also
1470         IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
1471                 return;
1472         END IF;
1473 
1474         --bug 4045979
1475         l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
1476 
1477         --BUG 4355204, rtarway
1478         --IF (p_commit =  FND_API.G_TRUE) THEN
1479                 savepoint ROLLUP_PROGRESS_PVT2;
1480         --END IF;
1481 
1482         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
1483                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1484         END IF;
1485 
1486         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE))     THEN
1487                 FND_MSG_PUB.initialize;
1488         END IF;
1489 
1490         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
1491         l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --bug 3830434
1492     -- 4746476 : added org_id in below select
1493     SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
1494 
1495         IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
1496                 l_split_workplan := 'Y';
1497         ELSE
1498                 l_split_workplan := 'N';
1499         END IF;
1500 
1501 	-- Bug 4938333
1502 	-- In case of financial struture, no need to check for published version
1503 	-- populate structure_version_id always null.
1504 	IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
1505 
1506 		-- This is to find out  whether passed  struture version id     is published or not.
1507 		-- bcoz progress for workplna workplan version also exists
1508 
1509 		OPEN  cur_check_published_version(p_structure_version_id, p_project_id);
1510 		FETCH cur_check_published_version INTO l_published_structure;
1511 		CLOSE cur_check_published_version;
1512 
1513 		IF l_published_structure = 'Y' THEN
1514 			l_structure_version_id := null;
1515 		ELSE
1516 			l_structure_version_id := p_structure_version_id;
1517 		END IF;
1518 	ELSE -- Bug 4938333
1519 		l_published_structure := 'Y'; -- Bug 4938333
1520                 l_structure_version_id := null; -- Bug 4938333
1521 	END IF;
1522 
1523         l_task_version_id := p_task_version_id;
1524 
1525         IF p_structure_type = 'WORKPLAN' THEN
1526                 l_rollup_method := p_wp_rollup_method;
1527         ELSE
1528                 l_rollup_method := p_fin_rollup_method;
1529         END IF;
1530 
1531         IF g1_debug_mode  =     'Y'     THEN
1532                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled,       x_Log_Level=>   3);
1533                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
1534                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1535                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_task_version_id='||l_task_version_id,       x_Log_Level=>   3);
1536         END IF;
1537 
1538         --l_lowest_task := p_lowest_task;
1539         -- Loop thru all the parents of the passed task
1540 
1541         SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
1542         INTO  l_process_number_temp FROM dual;
1543 
1544     IF p_rollup_entire_wbs = 'N' THEN
1545                 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1546                 SELECT distinct l_process_number_temp, object_id_from1, 'PA_TASKS', 1
1547                 FROM pa_object_relationships
1548                 WHERE relationship_type = 'S'
1549                 START WITH object_id_to1 = l_task_version_id
1550                 AND relationship_type = 'S'
1551                 CONNECT BY PRIOR object_id_from1 = object_id_to1
1552                 AND relationship_type = 'S'
1553         UNION ALL -- 4563049 : Rollup Structure also if passed, so that it can populate ETC from PJI
1554         SELECT distinct l_process_number_temp, l_task_version_id object_id_from1, 'PA_TASKS', 1
1555         FROM dual
1556         WHERE l_task_version_id = p_structure_version_id
1557         ;
1558         ELSE
1559         IF g1_debug_mode = 'Y' THEN
1560             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
1561             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
1562             FOR i in 1..p_task_version_id_tbl.count LOOP
1563                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
1564             END LOOP;
1565         END IF;
1566 
1567                 IF p_task_version_id_tbl.count > 0 THEN
1568                         FORALL i in 1..p_task_version_id_tbl.count
1569                                 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1570                                 VALUES(l_process_number_temp,p_task_version_id_tbl(i),  'PA_TASKS',1 );
1571 
1572                         l_mass_rollup_prog_rec_tab.delete;
1573                         OPEN  c_mass_rollup_tasks;
1574                         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1575                         CLOSE c_mass_rollup_tasks;
1576 
1577             FORALL i IN 1..l_mass_rollup_prog_rec_tab.COUNT
1578               INSERT INTO PA_PROJ_ROLLUP_TEMP(
1579                 PROCESS_NUMBER,
1580                 OBJECT_TYPE,
1581                 OBJECT_ID,
1582                 wbs_level)
1583               VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_rec_tab(i), 1);
1584 
1585             l_mass_rollup_prog_rec_tab.delete;
1586                 ELSE
1587                         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1588                         SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
1589                         FROM pa_proj_element_versions
1590                         WHERE project_id = p_project_id
1591                         AND parent_structure_version_id = p_structure_version_id
1592                         --AND PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(element_version_id) = 'N'
1593             -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
1594             AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
1595                         AND object_type = 'PA_TASKS'
1596                         UNION
1597                         SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
1598                         FROM dual
1599                         ;
1600                 END IF;
1601         END IF;
1602 
1603     IF g1_debug_mode = 'Y' THEN
1604         l_mass_rollup_prog_rec_tab.delete;
1605                 OPEN  c_mass_rollup_tasks_temp;
1606                 FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1607                 CLOSE c_mass_rollup_tasks_temp;
1608                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
1609         FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
1610                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
1611         END LOOP;
1612         l_mass_rollup_prog_rec_tab.delete;
1613 
1614         END IF;
1615 
1616 
1617     OPEN cur_tasks(1);
1618     FETCH cur_tasks BULK COLLECT INTO
1619     l_tsk_object_id_from1_tab
1620     ,l_tsk_parent_object_type_tab
1621     ,l_tsk_object_id_to1_tab
1622     ,l_tsk_object_type_tab
1623     ,l_tsk_wbs_level_tab
1624     ,l_tsk_weighting_percent_tab
1625     ,l_tsk_roll_comp_percent_tab
1626     ,l_tsk_over_percent_comp_tab
1627     ,l_tsk_as_of_date_tab
1628     ,l_tsk_actual_start_date_tab
1629     ,l_tsk_actual_finish_date_tab
1630     ,l_tsk_est_start_date_tab
1631     ,l_tsk_est_finish_date_tab
1632     ,l_tsk_rollup_weight1_tab
1633     ,l_tsk_override_weight2_tab
1634     ,l_tsk_base_weight3_tab
1635     ,l_tsk_task_weight4_tab
1636     ,l_tsk_status_code_tab
1637     ,l_tsk_object_id_tab
1638     ,l_tsk_proj_element_id_tab
1639     ,l_tsk_PPL_ACT_EFF_tab
1640     ,l_tsk_PPL_ACT_COST_TC_tab
1641     ,l_tsk_PPL_ACT_COST_PC_tab
1642     ,l_tsk_PPL_ACT_COST_FC_tab
1643     ,l_tsk_PPL_ACT_RAWCOST_TC_tab
1644     ,l_tsk_PPL_ACT_RAWCOST_PC_tab
1645     ,l_tsk_PPL_ACT_RAWCOST_FC_tab
1646     ,l_tsk_EST_REM_EFFORT_tab
1647     ,l_tsk_PPL_ETC_COST_TC_tab
1648     ,l_tsk_PPL_ETC_COST_PC_tab
1649     ,l_tsk_PPL_ETC_COST_FC_tab
1650     ,l_tsk_PPL_ETC_RAWCOST_TC_tab
1651     ,l_tsk_PPL_ETC_RAWCOST_PC_tab
1652     ,l_tsk_PPL_ETC_RAWCOST_FC_tab
1653     ,l_tsk_EQPMT_ACT_EFFORT_tab
1654     ,l_tsk_EQPMT_ACT_COST_TC_tab
1655     ,l_tsk_EQPMT_ACT_COST_PC_tab
1656     ,l_tsk_EQPMT_ACT_COST_FC_tab
1657     ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
1658     ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
1659     ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
1660     ,l_tsk_EQPMT_ETC_EFFORT_tab
1661     ,l_tsk_EQPMT_ETC_COST_TC_tab
1662     ,l_tsk_EQPMT_ETC_COST_PC_tab
1663     ,l_tsk_EQPMT_ETC_COST_FC_tab
1664     ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
1665     ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
1666     ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
1667     ,l_tsk_OTH_QUANTITY_tab
1668     ,l_tsk_OTH_ACT_COST_TC_tab
1669     ,l_tsk_OTH_ACT_COST_PC_tab
1670     ,l_tsk_OTH_ACT_COST_FC_tab
1671     ,l_tsk_OTH_ACT_RAWCOST_TC_tab
1672     ,l_tsk_OTH_ACT_RAWCOST_PC_tab
1673     ,l_tsk_OTH_ACT_RAWCOST_FC_tab
1674     ,l_tsk_OTH_ETC_QUANTITY_tab
1675     ,l_tsk_OTH_ETC_COST_TC_tab
1676     ,l_tsk_OTH_ETC_COST_PC_tab
1677     ,l_tsk_OTH_ETC_COST_FC_tab
1678     ,l_tsk_OTH_ETC_RAWCOST_TC_tab
1679     ,l_tsk_OTH_ETC_RAWCOST_PC_tab
1680     ,l_tsk_OTH_ETC_RAWCOST_FC_tab
1681     ,l_tsk_CURRENT_FLAG_tab
1682     ,l_tsk_PF_COST_RATE_TYPE_tab
1683     ,l_tsk_PF_COST_EXC_RATE_tab
1684     ,l_tsk_PF_COST_RATE_DATE_tab
1685     ,l_tsk_P_COST_RATE_TYPE_tab
1686     ,l_tsk_P_COST_EXC_RATE_tab
1687     ,l_tsk_P_COST_RATE_DATE_tab
1688     ,l_tsk_TXN_CURRENCY_CODE_tab
1689     ,l_tsk_PROG_PA_PERIOD_NAME_tab
1690     ,l_tsk_PROG_GL_PERIOD_NAME_tab
1691     ,l_tsk_bac_value_tab
1692     ,l_tsk_bac_self_value_tab -- Bug 4493105
1693     ,l_tsk_earned_value_tab
1694     ,l_tsk_deriv_method_tab
1695     ,l_tsk_progress_rollup_id_tab
1696     ,l_tsk_rollup_rec_ver_num_tab
1697     ,l_tsk_object_version_id_tab
1698     ,l_tsk_progress_stat_code_tab
1699     ,l_tsk_incremental_wq_tab
1700     ,l_tsk_cumulative_wq_tab
1701     ,l_tsk_base_prog_stat_code_tab
1702     ,l_tsk_eff_roll_prg_st_code_tab
1703     ,l_tsk_percent_complete_id_tab
1704     ,l_tsk_task_wt_basis_code_tab
1705     ,l_tsk_structure_version_id_tab
1706     ,l_tsk_create_required
1707     ,l_tsk_update_required
1708     ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
1709          ;
1710     CLOSE cur_tasks;
1711 
1712         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
1713 
1714     IF g1_debug_mode = 'Y' THEN
1715               pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
1716         END IF;
1717 
1718 
1719     FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
1720 	-- Bug 4636100 Issue 2 : Added following if
1721 	-- The intention of this IF is to just pass the structure level record
1722 	-- to scheduling API. Note that in structure case, we just pass one level
1723 	-- records below say task A, and if that below task A has an assignment, it will calculate
1724 	-- wrong % complete because we are not sending A's childs
1725 	IF (   (nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
1726 	     OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
1727 	     OR (p_rollup_entire_wbs = 'Y')
1728 	    )
1729 	THEN
1730 
1731         IF g1_debug_mode = 'Y' THEN
1732                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
1733                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
1734                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
1735                 END IF;
1736                 l_tsk_progress_exists := 'N';
1737                 l_parent_count := l_parent_count + 1;
1738                 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
1739                 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
1740 
1741 
1742                 IF g1_debug_mode = 'Y' THEN
1743                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
1744                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
1745                 END IF;
1746 
1747         -- Bug 4392189 : Program Changes Begin
1748         IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1749             l_sub_project_id := null;
1750             l_subproj_prog_rollup_id := null;
1751             l_subproj_act_start_date := null;
1752             l_subproj_act_finish_date := null;
1753             l_subproj_est_start_date := null;
1754             l_subproj_est_finish_date := null;
1755             l_subproj_rollup_weight1 := null;
1756             l_subproj_override_weight2 := null;
1757             l_subproj_base_weight3 := null;
1758             l_subproj_task_weight4 := null;
1759             l_subproj_earned_value := null;
1760             l_subproj_bac_value := null;
1761 
1762             -- 4587527 : It was not supporting multiple sub projects at link task
1763             -- So converted it into FOR LOOP
1764             FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
1765 
1766 
1767                 --OPEN c_get_sub_project (l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k));
1768                 --FETCH c_get_sub_project INTO l_sub_project_id, l_sub_structure_ver_id, l_sub_proj_element_id, l_sub_project_bac_value;
1769                 --CLOSE c_get_sub_project;
1770 
1771                 --IF l_sub_project_id IS NOT NULL THEN
1772                 IF g1_debug_mode = 'Y' THEN
1773                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
1774                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
1775                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
1776                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
1777                 END IF;
1778                 l_subproject_found := 'Y'; -- Bug 4506461
1779                 l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
1780                 IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
1781                     l_actual_lowest_task := 'Y';
1782                 END IF;
1783 
1784                 l_subproj_prog_rollup_id    := null;
1785                 l_subproj_act_start_date    := null;
1786                 l_subproj_act_finish_date   := null;
1787                 l_subproj_est_start_date    := null;
1788                 l_subproj_est_finish_date   := null;
1789                 l_subproj_rollup_weight1    := null;
1790                 l_subproj_override_weight2  := null;
1791                 l_subproj_base_weight3      := null;
1792                 l_subproj_task_weight4      := null;
1793                 l_subproj_bac_value     := null;
1794                 l_subproj_comp_percentage   := null;
1795 
1796                 OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
1797                 FETCH c_get_sub_project_progress INTO
1798                   l_subproj_prog_rollup_id
1799                 , l_subproj_act_start_date
1800                 , l_subproj_act_finish_date
1801                 , l_subproj_est_start_date
1802                 , l_subproj_est_finish_date
1803                 , l_subproj_rollup_weight1
1804                 , l_subproj_override_weight2
1805                 , l_subproj_base_weight3
1806                 , l_subproj_task_weight4
1807                 --, l_subproj_earned_value Bug 4506009
1808                 , l_subproj_bac_value
1809                 , l_subproj_comp_percentage -- Bug 4506009
1810                 ;
1811                 CLOSE c_get_sub_project_progress;
1812 
1813                 IF g1_debug_mode = 'Y' THEN
1814                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
1815                 END IF;
1816 
1817                 l_index := l_index + 1;
1818 
1819                 l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
1820                 l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
1821                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
1822                 l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_tsk_object_id_to1_tab(k);
1823                 l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
1824                 l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
1825 
1826 		-- 4533112 : Added following check
1827 		IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
1828 			l_rollup_table1(l_index).START_DATE1			:= l_subproj_act_start_date;
1829 			l_rollup_table1(l_index).FINISH_DATE1                   := l_subproj_act_finish_date;
1830 			l_rollup_table1(l_index).START_DATE2                    := l_subproj_est_start_date;
1831 			l_rollup_table1(l_index).FINISH_DATE2                   := l_subproj_est_finish_date;
1832 		END IF;
1833 
1834                 -- 4582956 Begin : LInk task should be treated as summaru task which means
1835                 -- we should be passing % complete of sub project and bac value of sub project
1836                 /*
1837 
1838                 -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
1839                 -- This is additional sefety fix
1840 
1841                 -- Bug 4506009 : Deriving l_subproj_earned_value
1842                 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1843                     --l_subproj_earned_value := nvl(round((NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_subproj_comp_percentage,0)/100), 5),0);
1844                     -- 4579654 : For more accuracy, Do not round the earned value here.
1845                     --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100), 5),0);
1846                     l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1847                 ELSE
1848                     --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_subproj_comp_percentage,0)/100), l_prj_currency_code),0);
1849                     -- 4579654 : For more accuracy, Do not round the earned value here.
1850                     --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100), l_prj_currency_code),0);
1851                     l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1852                 END IF;
1853 
1854                 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
1855                     l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
1856                     l_rollup_table1(l_index).BAC_VALUE1                     := 1;
1857                 ELSE
1858                     l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_subproj_earned_value, 0 );
1859                     --l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0));
1860                     l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_sub_project_bac_value, 0);
1861                 END IF;
1862 
1863                 */
1864                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_subproj_comp_percentage, 0);
1865                 l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
1866                 -- 4582956 End
1867 
1868                 --    Rollup Progress Status Rollup
1869                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_subproj_rollup_weight1,0);       --rollup prog status
1870                 l_rollup_table1(l_index).PROGRESS_override1              := l_subproj_override_weight2;    --override prg  status
1871 
1872                 --    Base Progress Status Rollup
1873 		-- 4533112 : Base progress status is not used
1874                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2     := nvl( l_subproj_base_weight3, 0 );  --base prog status
1875                 --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
1876 
1877                 --    Task Status Rollup
1878                 l_rollup_table1(l_index).task_status1                    := nvl( l_subproj_task_weight4, 0 );  -- task status
1879 
1880 
1881                 l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
1882                 l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
1883                 l_action_allowed                := 'Y';
1884                 l_rollup_table1(l_index).rollup_node1           := l_action_allowed;
1885                 l_rollup_table1(l_index).rollup_node2           := l_action_allowed;
1886 
1887                 IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
1888                     -- This means  Progress exists for the  corresponding task
1889                     l_tsk_progress_exists := 'Y';
1890                 END IF;
1891                 --END IF; -- l_sub_project_id IS NOT NULL THEN
1892             END LOOP;
1893         END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1894         -- Bug 4392189 : Program Changes End
1895 
1896                 -- Loop thru all task assignments of a passed parent
1897                 IF p_structure_type = 'WORKPLAN'
1898         THEN
1899             l_asgn_task_version_id_tab.delete;
1900             l_asgn_rate_based_flag_tab.delete;
1901             l_asgn_resource_class_code_tab.delete;
1902             l_asgn_res_assignment_id_tab.delete;
1903             l_asgn_planned_quantity_tab.delete;
1904             l_asgn_plan_bur_cost_pc_tab.delete;
1905             l_asgn_res_list_member_id_tab.delete;
1906 
1907             OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
1908             FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
1909             , l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
1910             , l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
1911             CLOSE cur_assgn_rec_bulk;
1912 
1913                     IF g1_debug_mode = 'Y' THEN
1914                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
1915                 END IF;
1916 
1917             FOR i in 1..l_asgn_task_version_id_tab.count LOOP
1918 
1919                 IF g1_debug_mode = 'Y' THEN
1920                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
1921                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
1922                 END IF;
1923 
1924                 l_asgn_progress_rec := null;
1925                 l_asgn_act_start_date := null;
1926                 l_asgn_act_finish_date := null;
1927                 l_asgn_est_start_date := null;
1928                 l_asgn_est_finish_date := null;
1929                 l_asgn_as_of_date := null;
1930                 l_asgn_ppl_act_eff := null;
1931                 l_asgn_eqp_act_eff := null;
1932                 l_asgn_ppl_act_cost := null;
1933                 l_asgn_eqp_act_cost := null;
1934                 l_asgn_oth_act_cost := null;
1935                 l_asgn_ppl_etc_eff := null;
1936                 l_asgn_eqp_etc_eff := null;
1937                 l_asgn_ppl_etc_cost := null;
1938                 l_asgn_eqp_etc_cost := null;
1939                 l_asgn_oth_etc_cost := null;
1940 
1941                 OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
1942                 FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
1943                 CLOSE cur_get_asgn_progress;
1944 
1945                 IF g1_debug_mode  = 'Y' THEN
1946                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
1947                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
1948                 END IF;
1949 
1950                 IF l_asgn_progress_rec.object_id is not null THEN
1951                     l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
1952                     l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
1953                     l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
1954                     l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
1955                     l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
1956 
1957                     l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
1958                     l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
1959                     l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
1960                     l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
1961                     l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
1962 
1963                     l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
1964                     l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
1965                     l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
1966                     l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
1967                     l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
1968 
1969                      IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1970                          l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) +  nvl(l_asgn_eqp_act_eff,0);
1971                          IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1972                             IF l_asgn_ppl_etc_eff IS NULL THEN
1973                                 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1974                             ELSE
1975                                 l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
1976                             END IF;
1977                          ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1978                             IF l_asgn_eqp_etc_eff IS NULL THEN
1979                                 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1980                             ELSE
1981                                 l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
1982                             END IF;
1983                          ELSE
1984                             l_asgn_bac_value := 0;
1985                          END IF;
1986                      ELSE
1987                          l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
1988                          IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1989                             IF l_asgn_ppl_etc_cost IS NULL THEN
1990                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1991                             ELSE
1992                                 l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
1993                             END IF;
1994                          ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1995                                IF l_asgn_eqp_etc_cost IS NULL THEN
1996                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1997                                ELSE
1998                                 l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
1999                                END IF;
2000                          ELSE
2001                                IF l_asgn_oth_etc_cost IS NULL THEN
2002                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
2003                                ELSE
2004                                 l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
2005                                END IF;
2006                          END IF;
2007                      END IF;
2008                 ELSE
2009                     l_asgn_earned_value := 0;
2010                     IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2011                         IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
2012                             l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
2013                         ELSE
2014                             l_asgn_bac_value := 0;
2015                         END IF;
2016                     ELSE
2017                         l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
2018                     END IF;
2019                 END IF;
2020 
2021                 l_index := l_index + 1;
2022 
2023                 l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_ASSIGNMENTS';
2024                 l_rollup_table1(l_index).OBJECT_ID                      := l_asgn_res_assignment_id_tab(i);
2025                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
2026                 l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_asgn_task_version_id_tab(i);
2027                 l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning       some    value so that order     by in   scheduling API  works
2028                 l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
2029 
2030                 -- Percent Complete needs to be derived using Earned Value and BAC Value
2031 
2032                 -- Percent Complete at Assignment level does not get calculated
2033 		-- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
2034 --Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
2035 --  and child task actual dates, regardless of the PPC Method.
2036                -- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
2037     IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
2038                      -- Actual Date Rollup : Only Start     Date    gets    rolls up.
2039                      l_rollup_table1(l_index).START_DATE1                    := l_asgn_act_start_date;
2040                      l_rollup_table1(l_index).FINISH_DATE1                    := l_asgn_act_finish_date;
2041 
2042                      -- Estimated Date Rollup  : Only Start Date    gets    rolls   up.
2043                      l_rollup_table1(l_index).START_DATE2                    := l_asgn_est_start_date;
2044                      l_rollup_table1(l_index).FINISH_DATE2                    := l_asgn_est_finish_date;
2045                 END IF;
2046 
2047                 -- Progress Status entry is not  there at assignment     level
2048 
2049                 -- Assignment Status entry is not there at assignment level
2050 
2051 
2052                 -- Earned Value and BAC Rollup
2053                 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
2054                     l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
2055                     l_rollup_table1(l_index).BAC_VALUE1                     := 1;
2056                     -- 4392189 : Program Reporting Changes - Phase 2
2057                     -- Having Set2 columns to get Project level % complete
2058                     l_rollup_table1(l_index).EARNED_VALUE2                  := 0;
2059                     l_rollup_table1(l_index).BAC_VALUE2                     := 1;
2060                 ELSE
2061                     l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_asgn_earned_value, 0 );
2062                     l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_asgn_bac_value, 0 );
2063                     -- 4392189 : Program Reporting Changes - Phase 2
2064                     -- Having Set2 columns to get Project level % complete
2065                     l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( l_asgn_earned_value, 0 );
2066                     l_rollup_table1(l_index).BAC_VALUE2                     := NVL( l_asgn_bac_value, 0 );
2067                 END IF;
2068 
2069                 l_rollup_table1(l_index).DIRTY_FLAG1            :=      'Y';
2070                 l_rollup_table1(l_index).DIRTY_FLAG2            :=      'Y';
2071                 l_action_allowed :=     'Y';
2072                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
2073                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
2074 
2075                 IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS   NOT NULL THEN
2076                     -- This means  Progress exists for the  corresponding task
2077                     l_tsk_progress_exists := 'Y';
2078                 END IF;
2079 
2080 	    --Bug#12393400 - Added - Begin
2081 	    -- For resource assignments in working version,
2082 	    -- the actual_finish_date should be NULL in case actual effort is not same as planned
2083 	    IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
2084 		AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
2085 		AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
2086 		  -- Update to happen only version is disabled or on a working version when version enabled
2087 		  IF (l_wp_version_enabled_flag = 'N'
2088 		     OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
2089 		    UPDATE PA_PROGRESS_ROLLUP
2090 		     SET ACTUAL_FINISH_DATE = NULL
2091 		     WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
2092 		  END IF;
2093 	    END IF; -- end check for
2094 	    --Bug#12393400 - Added - End
2095 
2096             END LOOP;       -- Assignments  Loop
2097         END IF;
2098 
2099         -- Bug 3957792 : Added check for Cancelled tasks
2100                 IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k)   = 'DELIVERABLE'
2101                 AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
2102                 THEN
2103 
2104             FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id)   LOOP    -- FPM Change
2105                 IF g1_debug_mode  = 'Y' THEN
2106                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
2107                                 END IF;
2108 
2109                                 l_index := l_index + 1;
2110 
2111                                 l_rollup_table1(l_index).OBJECT_TYPE             := cur_del_rec.object_type;
2112                                 l_rollup_table1(l_index).OBJECT_ID               := cur_del_rec.object_id_to1;--Object Version Id       of Deliverable
2113                                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE      := cur_del_rec.parent_object_type;
2114                                 l_rollup_table1(l_index).PARENT_OBJECT_ID        := l_tsk_object_id_to1_tab(k);--Object Version Id      of Task
2115                                 l_rollup_table1(l_index).WBS_LEVEL               := 9999999;
2116                                 l_rollup_table1(l_index).CALENDAR_ID             := l_index;
2117 
2118                                 -- Rollup       Percent Complete Rollup
2119                                 l_rollup_table1(l_index).task_weight1            := nvl( cur_del_rec.weighting_percentage, 0 );
2120                                 l_rollup_table1(l_index).PERCENT_COMPLETE1       := nvl( cur_del_rec.completed_percentage, 0 );
2121 				-- 4392189 : Program Reporting Changes - Phase 2
2122 				-- Having Set2 columns to get Project level % complete
2123                                 l_rollup_table1(l_index).task_weight2            := nvl( cur_del_rec.weighting_percentage, 0 );
2124                                 l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_del_rec.completed_percentage, 0 );
2125 
2126                                 --l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR     2
2127 
2128                                 -- Base Percent Complete Rollup
2129 
2130                                 -- Dates will not get rolled up for deliverable
2131 
2132                                 -- Rollup       Progress Status Rollup
2133 
2134                                 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 :=  0;       --rollup       prog    status is       0 for deliverable as it is      lowest --       FPM Dev CR 2
2135                                 l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;         --override prg status
2136 
2137                                 -- Base Progress Status Rollup
2138 				-- 4533112 : Now base progress status is not used
2139                                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
2140                                 -- l_rollup_table1(l_index).PROGRESS_override2      := 0;        -- FPM Dev CR  2
2141 
2142                                 l_rollup_table1(l_index).DIRTY_FLAG1      :=    'Y';
2143                                 l_rollup_table1(l_index).DIRTY_FLAG2      :=    'Y';
2144 
2145 				-- Deliverable Status will not      get rolled up for deliverable
2146 
2147                                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2148 
2149                                 IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
2150 					l_action_allowed := 'N';
2151                                 END IF;
2152 
2153                                 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
2154 					l_action_allowed := 'N';
2155                                 END IF;
2156 
2157                                 IF g1_debug_mode  =     'Y'     THEN
2158 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed,     x_Log_Level=> 3);
2159                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
2160                                 END IF;
2161 
2162                                 l_rollup_table1(l_index).rollup_node1             :=    l_action_allowed;
2163                                 l_rollup_table1(l_index).rollup_node2             :=    l_action_allowed;
2164 
2165                                 --maansari4/10  temporarily passing     'Y' to rollup node.
2166                                 -- need to investigate  why l_action_allowed is coming always as        'N'
2167 
2168                                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
2169                                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
2170 
2171                 IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL     THEN
2172                     -- This means  Progress        exists for the  corresponding task
2173                     l_tsk_progress_exists := 'Y';
2174                         END IF;
2175             END LOOP;       -- Delivertables Loop
2176         END IF;       -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES'   THEN
2177 
2178         l_index := l_index + 1;
2179 
2180         l_rollup_table1(l_index).OBJECT_TYPE                     := l_tsk_object_type_tab(k);
2181         l_rollup_table1(l_index).OBJECT_ID                       := l_tsk_object_id_to1_tab(k);--Task Version Id
2182         l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := l_tsk_parent_object_type_tab(k);
2183         l_rollup_table1(l_index).PARENT_OBJECT_ID                := l_tsk_object_id_from1_tab(k); --Parent    Task    Version Id
2184         l_rollup_table1(l_index).WBS_LEVEL                       := NVL( l_tsk_wbs_level_tab(k),      0 );
2185         l_rollup_table1(l_index).CALENDAR_ID                     := l_index;
2186         -- 4582956 Begin
2187                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG      := l_summary_object_flag; -- 4370746
2188         IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2189             -- 4586449 : Passing L for link tasks
2190             --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
2191             l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
2192         ELSE
2193             l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := l_summary_object_flag;
2194         END IF;
2195         -- 4582956 end
2196 
2197         -- Rollup Percent  Complete Rollup
2198         l_rollup_table1(l_index).task_weight1                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
2199         l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( l_tsk_roll_comp_percent_tab(k), 0    );
2200         -- 4392189 : Program Reporting Changes - Phase 2
2201         -- Having Set2 columns to get Project level % complete
2202         l_rollup_table1(l_index).task_weight2                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
2203         l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( l_tsk_base_percent_comp_tab(k), 0    );
2204 
2205         --bug 4045979, start
2206         l_task_baselined := 'N';
2207         l_parent_task_baselined := 'N';
2208         -- added if condition for bug 13923366 Huawei by skkoppul
2209         -- In version disabled and shared structures, there will only be one occurence and hence no need to check
2210         IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
2211            l_task_baselined := 'Y';
2212            l_parent_task_baselined := 'Y';
2213         ELSE
2214            OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
2215            FETCH check_task_baselined INTO l_task_baselined;
2216            CLOSE check_task_baselined;
2217 
2218            OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
2219            FETCH check_task_baselined INTO l_parent_task_baselined;
2220            CLOSE check_task_baselined;
2221         END IF;
2222 
2223         -- 4392189 : Program Reporting Changes - Phase 2
2224         -- Having Set2 columns to get Project level % complete
2225 
2226         IF p_structure_type = 'WORKPLAN' AND  l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2227         THEN
2228             l_rollup_table1(l_index).PERCENT_OVERRIDE1        := 0;
2229             l_rollup_table1(l_index).PERCENT_OVERRIDE2        := 0;
2230         ELSE
2231             l_rollup_table1(l_index).PERCENT_OVERRIDE1        := l_tsk_over_percent_comp_tab(k);
2232             --4557541 : For self % complete Override at tasks level would not be considered
2233             --l_rollup_table1(l_index).PERCENT_OVERRIDE2        := l_tsk_over_percent_comp_tab(k);
2234             l_rollup_table1(l_index).PERCENT_OVERRIDE2        := null;
2235 
2236         END IF;
2237 
2238         -- Bug 4284353 : Added below code
2239         IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
2240             l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
2241             l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
2242         END IF;
2243 
2244         --    Actual Date Rollup
2245         l_rollup_table1(l_index).START_DATE1                     := l_tsk_actual_start_date_tab(k);
2246         l_rollup_table1(l_index).FINISH_DATE1                    := l_tsk_actual_finish_date_tab(k);
2247 
2248         --    Estimated Date Rollup
2249         l_rollup_table1(l_index).START_DATE2                     := l_tsk_est_start_date_tab(k);
2250         l_rollup_table1(l_index).FINISH_DATE2                    := l_tsk_est_finish_date_tab(k);
2251 
2252         --    Rollup Progress Status Rollup
2253         l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_tsk_rollup_weight1_tab(k),0);       --rollup prog status
2254         l_rollup_table1(l_index).PROGRESS_override1              := l_tsk_override_weight2_tab(k);    --override prg  status
2255 
2256         --    Base Progress Status Rollup
2257 	-- 4533112 : base progress status is not used
2258         --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 );  --base prog status
2259         --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
2260 
2261         --    Task Status Rollup
2262         l_rollup_table1(l_index).task_status1                    := nvl( l_tsk_task_weight4_tab(k), 0 );  -- task status
2263 
2264         -- ETC Effort      Rollup
2265         --    l_rollup_table1(l_index).REMAINING_EFFORT1                       := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT,      0 );    --etc_people_effort
2266         --    l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                       := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0      );
2267 
2268         -- ETC Cost in Project     Currency Rollup
2269         --    l_rollup_table1(l_index).ETC_COST1                               := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2270         --    l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2271         --    l_rollup_table1(l_index).EQPMT_ETC_COST1                         := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
2272 
2273         -- ETC Cost in  Project Functional Currency Rollup
2274         --    l_rollup_table1(l_index).ETC_COST2                               := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2275         --    l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2276         --    l_rollup_table1(l_index).EQPMT_ETC_COST2                         := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
2277 
2278         -- Sub Project  ETC Effort Rollup
2279         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2280         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1      := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
2281 
2282         -- Sub Project ETC Cost in Project Currency     Rollup
2283         --    l_rollup_table1(l_index).SUB_PRJ_ETC_COST1               := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2284         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC,  0 );
2285         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0      );
2286 
2287         -- Sub Project ETC Cost in Project Functional Currency Rollup
2288         --    l_rollup_table1(l_index).SUB_PRJ_ETC_COST2               := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2289         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC,  0 );
2290         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0      );
2291 
2292         -- Earned Value and BAC Rollup
2293         --    Bug 3830673, 3879461 : We should pass the earned value  for     lowest task which do not        have    assignments
2294         --IF NVL(l_lowest_task, 'N') = 'Y' AND NVL(l_assignment_exists, 'N') = 'N' THEN
2295         --      IF    l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2296         --        l_rollup_table1(l_index).EARNED_VALUE1 := nvl(cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE,0)       + nvl(cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
2297         --      ELSE
2298         --        l_rollup_table1(l_index).EARNED_VALUE1 := nvl(cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC,0) + nvl(cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC,0) +     nvl(cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
2299         --      END IF;
2300         --ELSE
2301 
2302         -- 4392189 : Program Reporting Changes - Phase 2
2303         -- Having Set2 columns to get Project level % complete
2304         l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2305         l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2306 
2307         --END IF;
2308 
2309         -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
2310         -- in earned_value1 set
2311         IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2312 
2313             l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
2314                     , l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k),  p_structure_version_id,
2315                     'WORKPLAN','N','Y');
2316  	    -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
2317             --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
2318 	    l_rollup_table1(l_index).EARNED_VALUE2 := 1;
2319         END IF;
2320 
2321         l_rollup_table1(l_index).BAC_VALUE1              := NVL( l_tsk_bac_value_tab(k), 0 );
2322 
2323         IF g1_debug_mode = 'Y' THEN
2324             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1,     x_Log_Level=> 3);
2325                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
2326                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
2327                 END IF;
2328 
2329         -- 4586449 End
2330 
2331         l_rollup_table1(l_index).BAC_VALUE2              := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k),      0 );
2332 
2333         -- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
2334         -- Otheriwse it will look for deliverables and will result in 0 % complete
2335         IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
2336             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
2337         ELSE
2338             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
2339             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
2340         END IF;
2341 
2342         --    Bug 4207995 : Passing Dirty_flags always Y
2343         --               IF (cur_tasks_rec.object_id_to1 =      p_object_version_id)    THEN
2344                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
2345                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
2346         --               ELSE
2347         --                       l_rollup_table1(l_index).DIRTY_FLAG1      := 'N';
2348         --                       l_rollup_table1(l_index).DIRTY_FLAG2      := 'N';
2349         --               END    IF;
2350 
2351         l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2352 
2353         IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
2354             l_action_allowed :=     'N';
2355         END IF;
2356 
2357         IF g1_debug_mode   = 'Y' THEN
2358             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed,    x_Log_Level=> 3);
2359                 END IF;
2360 
2361         l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
2362         l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
2363 
2364                 --maansari4/10  temporarily passing     'Y' to rollup node.
2365                 -- need to investigate  why l_action_allowed is coming always as        'N'
2366 
2367                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
2368                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
2369 
2370 
2371         IF p_rollup_entire_wbs = 'Y' THEN
2372                   --    This    means Progress  exists for the  corresponding task
2373             IF l_tsk_progress_exists        = 'Y' THEN
2374                 l_mass_rollup_prog_exists_tab.extend(1);
2375                 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2376             ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
2377                 l_mass_rollup_prog_exists_tab.extend(1);
2378                 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2379             END IF;
2380         END IF;
2381 
2382         l_mapping_tasks_to_rollup_tab(l_index):= k;
2383 
2384         --IF (p_process_whole_tree = 'N' and l_parent_count  = 2) THEN
2385                 --        exit;
2386                 --END IF;
2387 	END IF; -- Bug 4636100 Issue 2 : Added Endif
2388     END LOOP;       -- End Tasks Loop
2389 
2390         --begin bug 3951982
2391         IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2392           AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
2393       AND l_actual_lowest_task = 'N' -- Bug 4392189
2394         THEN
2395         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
2396         SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS',  1
2397         FROM dual;
2398 
2399         FOR cur_tasks_rec in cur_tasks(1) LOOP
2400             IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
2401                 IF g1_debug_mode  = 'Y' THEN
2402                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Second task cursor for summary task with assignments',        x_Log_Level=>   3);
2403                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1,   x_Log_Level=> 3);
2404                 END IF;
2405                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(  cur_tasks_rec.status_code, 'PROGRESS_ROLLUP'    );
2406 
2407                 l_index := l_index + 1;
2408 
2409                 l_rollup_table1(l_index).OBJECT_TYPE                        :=      cur_tasks_rec.object_type;
2410                 l_rollup_table1(l_index).OBJECT_ID                          :=      cur_tasks_rec.object_id_to1;--Task      Version Id
2411                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE                 :=      cur_tasks_rec.parent_object_type;
2412                 l_rollup_table1(l_index).PARENT_OBJECT_ID                   :=      cur_tasks_rec.object_id_from1; --Parent Task    Version Id
2413                 l_rollup_table1(l_index).WBS_LEVEL                          :=      NVL( cur_tasks_rec.wbs_level, 0 );
2414                 l_rollup_table1(l_index).CALENDAR_ID                        :=      l_index;
2415                         l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG            :=      'Y'; -- 4370746
2416 
2417                 -- Rollup Percent Complete Rollup
2418                 l_rollup_table1(l_index).task_weight1                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
2419                 l_rollup_table1(l_index).PERCENT_COMPLETE1                  :=      nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
2420                 -- 4392189 : Program Reporting Changes - Phase 2
2421                 -- Having Set2 columns to get Project level % complete
2422                 l_rollup_table1(l_index).task_weight2                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
2423                 l_rollup_table1(l_index).PERCENT_COMPLETE2                  :=      nvl( cur_tasks_rec.base_percent_complete, 0 );
2424 
2425                 --bug 4045979, start
2426                 l_task_baselined := 'N';
2427                 l_parent_task_baselined := 'N';
2428                 -- added if condition for bug 13923366 by skkoppul
2429                 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
2430                 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
2431                    l_task_baselined := 'Y';
2432                    l_parent_task_baselined := 'Y';
2433                 ELSE
2434                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
2435                    FETCH check_task_baselined INTO l_task_baselined;
2436                    CLOSE check_task_baselined;
2437 
2438                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
2439                    FETCH check_task_baselined INTO l_parent_task_baselined;
2440                    CLOSE check_task_baselined;
2441                 END IF;
2442 
2443                 -- 4392189 : Program Reporting Changes - Phase 2
2444                 -- Having Set2 columns to get Project level % complete
2445 
2446                 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2447                 THEN
2448                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := 0;
2449                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := 0;
2450                 ELSE
2451                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := cur_tasks_rec.override_percent_complete;
2452                     --4557541 : For self % complete Override at tasks level would not be considered
2453                     --l_rollup_table1(l_index).PERCENT_OVERRIDE2      := cur_tasks_rec.override_percent_complete;
2454                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := null;
2455                 END IF;
2456                 --bug       4045979, end
2457 
2458                 -- Actual Date Rollup
2459                 l_rollup_table1(l_index).START_DATE1                        :=      cur_tasks_rec.actual_start_date;
2460                 l_rollup_table1(l_index).FINISH_DATE1                       :=      cur_tasks_rec.actual_finish_date;
2461 
2462                 -- Estimated Date Rollup
2463                 l_rollup_table1(l_index).START_DATE2                        :=      cur_tasks_rec.estimated_start_date;
2464                 l_rollup_table1(l_index).FINISH_DATE2                       :=      cur_tasks_rec.estimated_finish_date;
2465 
2466                 -- Rollup Progress Status   Rollup
2467                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1            :=      nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
2468                 l_rollup_table1(l_index).PROGRESS_override1                 :=      cur_tasks_rec.override_weight2;    --override prg status
2469 
2470                 -- Base Progress Status Rollup
2471 		-- 4533112 : Base Progress Status is not used
2472                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl(    cur_tasks_rec.base_weight3, 0   );  --base prog status
2473                 --l_rollup_table1(l_index).PROGRESS_override2                 :=    0;  -- FPM Dev  CR 2
2474 
2475                 -- Task Status Rollup
2476                 l_rollup_table1(l_index).task_status1                       :=      nvl(    cur_tasks_rec.task_weight4, 0   );  -- task status
2477 
2478                 -- ETC Effort Rollup
2479                 l_rollup_table1(l_index).REMAINING_EFFORT1                  :=      NVL(    cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
2480                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                  :=      NVL(    cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
2481 
2482                 -- ETC Cost in Project Currency     Rollup
2483                 l_rollup_table1(l_index).ETC_COST1                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2484                 l_rollup_table1(l_index).PPL_ETC_COST1                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2485                 l_rollup_table1(l_index).EQPMT_ETC_COST1                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_PC, 0      );
2486 
2487                 -- ETC Cost in Project Functional Currency Rollup
2488                 l_rollup_table1(l_index).ETC_COST2                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2489                 l_rollup_table1(l_index).PPL_ETC_COST2                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2490                 l_rollup_table1(l_index).EQPMT_ETC_COST2                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_FC, 0      );
2491 
2492                 -- Sub Project ETC Effort   Rollup
2493                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2494                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT,        0 );
2495 
2496                   --    Sub Project ETC Cost in Project Currency Rollup
2497                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2498                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
2499                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
2500 
2501                   --    Sub Project ETC Cost in Project Functional      Currency Rollup
2502                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2503                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
2504                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
2505 
2506                 -- 4392189 : Program Reporting Changes - Phase 2
2507                 -- Having Set2 columns to get Project level % complete
2508 
2509                 l_rollup_table1(l_index).EARNED_VALUE1              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
2510                 l_rollup_table1(l_index).BAC_VALUE1                 :=      NVL( cur_tasks_rec.BAC_VALUE, 0 );
2511 
2512                 l_rollup_table1(l_index).EARNED_VALUE2              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
2513                 l_rollup_table1(l_index).BAC_VALUE2                 :=      NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
2514 
2515                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
2516                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
2517                 -- Bug 4207995 : Passing Dirty_flags always Y
2518                 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
2519                  l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
2520                  l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
2521                 -- ELSE
2522                 --      l_rollup_table1(l_index).DIRTY_FLAG1         := 'N';
2523                 --      l_rollup_table1(l_index).DIRTY_FLAG2         := 'N';
2524                 -- END IF;
2525 
2526                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
2527 
2528                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
2529                     l_action_allowed := 'N';
2530                 END IF;
2531 
2532                 IF g1_debug_mode  = 'Y' THEN
2533                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
2534                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
2535                 END IF;
2536 
2537                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
2538                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
2539 
2540                 --maansari4/10 temporarily passing 'Y' to rollup node.
2541                 -- need to  investigate why l_action_allowed        is coming       always as       'N'
2542                 l_rollup_table1(l_index).rollup_node1 := 'Y';
2543                 l_rollup_table1(l_index).rollup_node2 := 'Y';
2544             END IF;       --<<cur_tasks_rec.object_type   = 'PA_TASKS'
2545         END LOOP;
2546     END IF; --  p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2547         --end bug 3951982
2548 
2549         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
2550 
2551     IF g1_debug_mode = 'Y' THEN
2552         FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2553             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
2554         END LOOP;
2555     END IF;
2556 
2557         IF p_rollup_entire_wbs = 'Y' THEN
2558         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2559         INSERT INTO PA_PROJ_ROLLUP_TEMP(
2560         PROCESS_NUMBER,
2561         OBJECT_TYPE,
2562         OBJECT_ID,
2563         wbs_level)
2564         VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2565 
2566         l_mass_rollup_prog_exists_tab.delete;
2567 
2568         OPEN c_mass_rollup_tasks;
2569         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
2570         CLOSE c_mass_rollup_tasks;
2571 
2572         IF g1_debug_mode = 'Y' THEN
2573             FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2574                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
2575             END LOOP;
2576         END IF;
2577 
2578         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2579         INSERT INTO PA_PROJ_ROLLUP_TEMP(
2580         PROCESS_NUMBER,
2581         OBJECT_TYPE,
2582         OBJECT_ID,
2583         wbs_level)
2584         VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2585     END IF;
2586 
2587 
2588         -- FPM Dev CR 2 : Printing the  Rollup Table before     calling Generate Schedule
2589         IF g1_debug_mode  =     'Y'     THEN
2590                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
2591                 FOR i IN 1..l_rollup_table1.count LOOP
2592                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
2593                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
2594                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
2595                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
2596                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
2597                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2598                                 ' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
2599                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2600                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2601                                 ' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2602                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2603                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2604                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2605                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2606                                 ' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2607                                         ' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2608                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2609                                 ' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2610                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2611                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
2612                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
2613                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
2614                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2615                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2616                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2617                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2618                                 ' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2619                                         ' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2620                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
2621                                 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
2622                           ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
2623                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
2624                                 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2625                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
2626                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2627                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2628                   x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
2629                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
2630                 END LOOP;
2631         END IF;
2632 
2633         IF l_rollup_table1.count <= 0 THEN
2634         return;
2635         END IF;
2636 
2637         --Added by rtarway for  bug 3950574
2638         IF p_structure_type = 'WORKPLAN' THEN
2639             l_digit_number := 8;  --Bug 6854114
2640         ELSE
2641             l_digit_number := 8;  --Bug 6854114
2642         END IF;
2643 
2644         --  Bug 4207995 : Commented partial_flags in the below call
2645 
2646         PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
2647         p_commit                                => p_commit
2648         ,p_debug_mode                           => 'Y'
2649         ,x_return_status                        => l_return_status
2650         ,x_msg_count                            => l_msg_count
2651         ,x_msg_data                             => l_msg_data
2652         ,x_process_number                       => l_process_number
2653         ,p_data_structure                       => l_rollup_table1
2654         ,p_number_digit                         => l_digit_number
2655         ,p_process_flag1                        => 'Y'
2656         ,p_process_rollup_flag1                 => 'Y'
2657         ,p_process_progress_flag1               => 'Y'
2658         ,p_process_percent_flag1                => 'Y'
2659         ,p_process_effort_flag1                 => 'Y'
2660         ,p_process_task_status_flag1            => 'Y'
2661         ,p_process_flag2                        => 'Y'
2662         ,p_process_rollup_flag2                 => 'Y'
2663         ,p_process_progress_flag2               => 'Y'
2664         ,p_process_percent_flag2                => 'Y'
2665         ,p_process_ETC_Flag1                    => 'Y'
2666         ,p_process_ETC_Flag2                    => 'Y'
2667         ,p_Rollup_Method                        => l_Rollup_Method
2668         ,p_calling_module                       =>'ROLLUP_API'
2669                 );
2670 
2671     IF g1_debug_mode = 'Y' THEN
2672                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=>      3);
2673         END IF;
2674 
2675         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2676                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2677                                      p_msg_name       => l_msg_data
2678                                 );
2679                 x_msg_data := l_msg_data;
2680         x_return_status := 'E';
2681         RAISE  FND_API.G_EXC_ERROR;
2682         END IF;
2683 
2684 
2685         IF g1_debug_mode = 'Y' THEN
2686                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Doing  UPDATE_ROLLUP_PROGRESS_PVT',   x_Log_Level=> 3);
2687                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
2688         END IF;
2689 
2690         ----    **************  Updation Starts  ******************  ----------
2691 
2692         IF g1_debug_mode = 'Y' THEN
2693 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
2694 		FOR i IN 1..l_rollup_table1.count LOOP
2695 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
2696 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
2697 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
2698 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
2699 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
2700 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2701 					' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
2702 					' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2703 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2704 					' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2705 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2706 					' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2707 						' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2708 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2709 					' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2710 						' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2711 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2712 					' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2713 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2714 					' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
2715 						' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
2716 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
2717 					' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2718 						' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2719 							' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2720 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2721 					' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2722 						' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2723 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
2724 					' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
2725 				  ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
2726 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
2727 					' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2728 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
2729 			    ||l_rollup_table1(i).EARNED_VALUE2||
2730 					' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2731 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2732 			  x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
2733 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
2734 		END LOOP;
2735 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'Getting Periods', x_Log_Level=> 3);
2736 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
2737         END IF;
2738 
2739 
2740         BEGIN
2741 	  -- 4746476 : Added org_id in functions call below
2742           l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
2743           l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
2744         EXCEPTION
2745           WHEN OTHERS THEN
2746                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2747                                 p_msg_name               => 'PA_FP_INVALID_DATE_RANGE');
2748                  x_msg_data :=  'PA_FP_INVALID_DATE_RANGE';
2749                  x_return_status :=     'E';
2750                  x_msg_count := fnd_msg_pub.count_msg;
2751                  RAISE  FND_API.G_EXC_ERROR;
2752         END ;
2753 
2754         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'After Getting Periods', x_Log_Level=> 3);
2755 
2756 
2757 
2758         FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
2759         IF g1_debug_mode   = 'Y' THEN
2760             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1,      x_Log_Level=> 3);
2761                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
2762                 END IF;
2763 
2764                 FOR i in 1..l_rollup_table1.count LOOP
2765                 IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
2766                   (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
2767                   --((p_calling_mode = 'FUTURE_ROLLUP' AND cur_reverse_tree_rec.object_id_to1 <> p_object_version_id)OR p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL)
2768         THEN
2769                     -- Find the corresponding task rollup record data position
2770                     task_index  := l_mapping_tasks_to_rollup_tab(i);
2771 
2772 
2773                     IF g1_debug_mode  = 'Y' THEN
2774                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
2775                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=>       3);
2776                                 END IF;
2777                     -- Bug 3919211      Begin
2778                     IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
2779                          l_task_id := 0;
2780                     ELSE
2781                          l_task_id := cur_reverse_tree_rec.proj_element_id;
2782                     END IF;
2783                     -- Bug 3919211 End
2784 
2785 
2786                     l_child_rollup_rec_exists := 'N';
2787                     IF p_rollup_entire_wbs='Y' THEN
2788                          BEGIN
2789                                  SELECT 'Y' into l_child_rollup_rec_exists
2790                                  FROM dual
2791                                  WHERE exists
2792                                  (
2793                                    SELECT       'xyz'
2794                                    from pa_proj_rollup_temp
2795                                    WHERE object_id = cur_reverse_tree_rec.object_id_to1
2796                                    and process_number = l_process_number_temp
2797                                  );
2798                          EXCEPTION
2799                                  WHEN OTHERS THEN
2800                                    l_child_rollup_rec_exists := 'N';
2801                          END;
2802                     END IF;
2803 
2804 
2805                     IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
2806 
2807 
2808                          l_eff_rollup_status_code := null;
2809                          l_progress_status_code := null;
2810 
2811                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
2812                          FETCH cur_status INTO l_eff_rollup_status_code;
2813                          CLOSE cur_status;
2814 
2815                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
2816                          FETCH cur_status INTO l_progress_status_code;
2817                          CLOSE cur_status;
2818 
2819                          IF g1_debug_mode  = 'Y' THEN
2820                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
2821                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code,     x_Log_Level=>   3);
2822                          END    IF;
2823 
2824 
2825                          -- FPM dev CR 4 : Initialized the values to null
2826                          l_rolled_up_per_comp :=        null;
2827                          l_rolled_up_prog_stat := null;
2828                          l_rolled_up_base_prog_stat := null;
2829                          l_rolled_up_prog_stat := null;
2830                          l_remaining_effort1 := null;
2831                          l_percent_complete1 := null;
2832                          l_ETC_Cost_PC    :=    null;
2833                          l_PPL_ETC_COST_PC := null;
2834                          l_EQPMT_ETC_COST_PC := null;
2835                          l_ETC_Cost_FC          :=      null;
2836                          l_PPL_ETC_COST_FC       :=     null;
2837                          l_EQPMT_ETC_COST_FC := null;
2838                          l_EQPMT_ETC_EFFORT     := null;
2839                          l_BAC_VALUE1 := null;
2840                          l_EARNED_VALUE1 :=     null;
2841                          l_remaining_effort1 := null;
2842                          l_EQPMT_ETC_EFFORT     := null;
2843                          l_OTH_ACT_COST_TO_DATE_PC :=   null;
2844                          l_PPL_ACT_COST_TO_DATE_PC :=   null;
2845                          l_EQPMT_ACT_COST_TO_DATE_PC := null;
2846                          l_OTH_ACT_COST_TO_DATE_FC :=   null;
2847                          l_PPL_ACT_COST_TO_DATE_FC :=   null;
2848                          l_EQPMT_ACT_COST_TO_DATE_FC := null;
2849                          l_PPL_ACT_EFFORT_TO_DATE := null;
2850                          l_EQPMT_ACT_EFFORT_TO_DATE := null;
2851                          -- Bug 3621404 : Raw Cost Changes
2852                          l_OTH_ACT_RAWCOST_TO_DATE_PC   := null;
2853                          l_PPL_ACT_RAWCOST_TO_DATE_PC   := null;
2854                          l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
2855                          l_OTH_ACT_RAWCOST_TO_DATE_FC   := null;
2856                          l_PPL_ACT_RAWCOST_TO_DATE_FC   := null;
2857                          l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
2858                          l_ETC_RAWCost_PC := null;
2859                          l_PPL_ETC_RAWCOST_PC :=        null;
2860                          l_EQPMT_ETC_RAWCOST_PC := null;
2861                          l_ETC_RAWCost_FC := null;
2862                          l_PPL_ETC_RAWCOST_FC :=        null;
2863                          l_EQPMT_ETC_RAWCOST_FC := null;
2864                          l_actual_start_date := l_rollup_table1(i).start_date1;
2865                          l_actual_finish_date :=        l_rollup_table1(i).finish_date1;
2866                          l_estimated_start_date := l_rollup_table1(i).start_date2;
2867                          l_estimated_finish_date        := l_rollup_table1(i).finish_date2;
2868 
2869                          --OPEN cur_pa_rollup1( cur_reverse_tree_rec.proj_element_id );
2870                          --FETCH        cur_pa_rollup1  INTO    l_cur_pa_rollup1_rec;
2871                          --CLOSE cur_pa_rollup1;
2872 
2873 
2874                          l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
2875                          l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
2876 
2877 
2878                          IF g1_debug_mode  = 'Y' THEN
2879                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=>   3);
2880                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat,       x_Log_Level=> 3);
2881                          END IF;
2882 
2883                          IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task    value, we       shd get it for  each    task
2884                          THEN
2885                                  -- l_rolled_up_base_per_comp   := nvl(l_rollup_table1(i).percent_complete2,0);
2886                                  l_rolled_up_base_prog_stat := l_progress_status_code;
2887                          ELSE
2888                                  -- l_rolled_up_base_per_comp   := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
2889                                  l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
2890                          END IF;
2891 
2892 
2893                          l_PROGRESS_ROLLUP_ID := null;
2894                          l_rollup_rec_ver_number := null;
2895                          l_percent_complete_id := null;
2896                          IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
2897                                  l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
2898                                  l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
2899                          END IF;
2900 
2901 
2902 
2903             IF g1_debug_mode  = 'Y' THEN
2904                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
2905                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
2906             END IF;
2907 
2908             -- 4392189 : Program Reporting Changes - Phase 2
2909             -- Having Set2 columns to get Project level % complete
2910 
2911             IF p_structure_type = 'WORKPLAN' THEN
2912                                  l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
2913                                  l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
2914             ELSE
2915                                  l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
2916                                  l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
2917             END IF;
2918 
2919                         l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
2920             l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
2921 
2922             IF g1_debug_mode  = 'Y' THEN
2923                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
2924                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
2925                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
2926             END IF;
2927 
2928             l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
2929 
2930             IF p_wp_rollup_method = 'EFFORT' THEN
2931                  l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
2932             ELSE
2933                  l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
2934             END IF;
2935 
2936         --bug 4317491, added a check of WORKPLAN
2937         IF p_structure_type = 'WORKPLAN' THEN
2938                         BEGIN
2939                                  SELECT
2940 
2941                                  /*+    INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2942                     PERIOD_NAME
2943                                  ,      ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
2944                                  ,      ACT_PRJ_LABOR_BRDN_COST
2945                                  ,      ACT_PRJ_EQUIP_BRDN_COST
2946                                  ,      ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
2947                                  ,      ACT_POU_LABOR_BRDN_COST
2948                                  ,      ACT_POU_EQUIP_BRDN_COST
2949                                  ,      ACT_LABOR_HRS
2950                                  ,      ACT_EQUIP_HRS
2951                                  ,      ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
2952                                  ,      ETC_PRJ_LABOR_BRDN_COST
2953                                  ,      ETC_PRJ_EQUIP_BRDN_COST
2954                                  ,      ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
2955                                  ,      ETC_POU_LABOR_BRDN_COST
2956                                  ,      ETC_POU_EQUIP_BRDN_COST
2957                                  ,      ETC_LABOR_HRS
2958                                  ,      ETC_EQUIP_HRS
2959                                  ,      ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
2960                                  ,      ACT_PRJ_LABOR_RAW_COST
2961                                  ,      ACT_PRJ_EQUIP_RAW_COST
2962                                  ,      ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
2963                                  ,      ACT_POU_LABOR_RAW_COST
2964                                  ,      ACT_POU_EQUIP_RAW_COST
2965                                  ,      ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
2966                                  ,      ETC_PRJ_LABOR_RAW_COST
2967                                  ,      ETC_PRJ_EQUIP_RAW_COST
2968                                  ,      ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
2969                                  ,      ETC_POU_LABOR_RAW_COST
2970                                  ,      ETC_POU_EQUIP_RAW_COST
2971                                  ,  LABOR_HOURS
2972                                  ,  EQUIPMENT_HOURS
2973                                  ,  POU_LABOR_BRDN_COST
2974                                  ,  PRJ_LABOR_BRDN_COST
2975                                  ,  POU_EQUIP_BRDN_COST
2976                                  ,  PRJ_EQUIP_BRDN_COST
2977                                  ,  POU_BRDN_COST - (     POU_EQUIP_BRDN_COST     + POU_LABOR_BRDN_COST )
2978                                  ,  PRJ_BRDN_COST - (     PRJ_EQUIP_BRDN_COST     + PRJ_LABOR_BRDN_COST )
2979                                  ,  POU_LABOR_RAW_COST
2980                                  ,  PRJ_LABOR_RAW_COST
2981                                  ,  POU_EQUIP_RAW_COST
2982                                  ,  PRJ_EQUIP_RAW_COST
2983                                  ,  POU_RAW_COST  - (     POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
2984                                  ,  PRJ_RAW_COST  - (     PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
2985                                  INTO
2986                     l_PERIOD_NAME
2987                                  ,      l_OTH_ACT_COST_TO_DATE_PC
2988                                  ,      l_PPL_ACT_COST_TO_DATE_PC
2989                                  ,      l_EQPMT_ACT_COST_TO_DATE_PC
2990                                  ,      l_OTH_ACT_COST_TO_DATE_FC
2991                                  ,      l_PPL_ACT_COST_TO_DATE_FC
2992                                  ,      l_EQPMT_ACT_COST_TO_DATE_FC
2993                                  ,      l_PPL_ACT_EFFORT_TO_DATE
2994                                  ,      l_EQPMT_ACT_EFFORT_TO_DATE
2995                                  ,      l_ETC_Cost_PC
2996                                  ,      l_PPL_ETC_COST_PC
2997                                  ,      l_EQPMT_ETC_COST_PC
2998                                  ,      l_ETC_Cost_FC
2999                                  ,      l_PPL_ETC_COST_FC
3000                                  ,      l_EQPMT_ETC_COST_FC
3001                                  ,      l_remaining_effort1
3002                                  ,      l_EQPMT_ETC_EFFORT
3003                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_PC
3004                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_PC
3005                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_PC
3006                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_FC
3007                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_FC
3008                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_FC
3009                                  ,      l_ETC_RAWCost_PC
3010                                  ,      l_PPL_ETC_RAWCOST_PC
3011                                  ,      l_EQPMT_ETC_RAWCOST_PC
3012                                  ,      l_ETC_RAWCost_FC
3013                                  ,      l_PPL_ETC_RAWCOST_FC
3014                                  ,      l_EQPMT_ETC_RAWCOST_FC
3015                                  ,      l_LABOR_HOURS
3016                                  ,      l_EQUIPMENT_HOURS
3017                                  ,      l_POU_LABOR_BRDN_COST
3018                                  ,      l_PRJ_LABOR_BRDN_COST
3019                                  ,      l_POU_EQUIP_BRDN_COST
3020                                  ,      l_PRJ_EQUIP_BRDN_COST
3021                                  ,      l_POU_OTH_BRDN_COST
3022                                  ,      l_PRJ_OTH_BRDN_COST
3023                                  ,      l_POU_LABOR_RAW_COST
3024                                  ,      l_PRJ_LABOR_RAW_COST
3025                                  ,      l_POU_EQUIP_RAW_COST
3026                                  ,      l_PRJ_EQUIP_RAW_COST
3027                                  ,      l_POU_OTH_RAW_COST
3028                                  ,      l_PRJ_OTH_RAW_COST
3029                                  FROM PJI_FM_XBS_ACCUM_TMP1
3030                                   WHERE project_id      = p_project_id
3031                                   AND struct_version_id = p_structure_version_id
3032                                   AND project_element_id        =       cur_reverse_tree_rec.proj_element_id
3033                                   AND plan_version_id > 0
3034                                   AND txn_currency_code is      null
3035                                   AND calendar_type     = 'A'
3036                                   AND res_list_member_id        is null;
3037                          EXCEPTION
3038                                  WHEN NO_DATA_FOUND     THEN
3039                                    null;
3040                                  WHEN OTHERS THEN
3041                                    fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
3042                                                                    p_procedure_name     => 'ROLLUP_PROGRESS_PVT',
3043                                                                    p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
3044                                    RAISE FND_API.G_EXC_ERROR;
3045                          END;
3046 
3047 
3048 
3049                          IF g1_debug_mode  = 'Y'        THEN
3050                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
3051                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
3052                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
3053                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=>    3);
3054                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
3055                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
3056                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=>    3);
3057                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE,        x_Log_Level=> 3);
3058                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
3059                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_Cost_PC:        '||l_ETC_Cost_PC, x_Log_Level=> 3);
3060                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=>        3);
3061                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC,  x_Log_Level=> 3);
3062                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_Cost_FC:        '||l_ETC_Cost_FC, x_Log_Level=> 3);
3063                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=>        3);
3064                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC,  x_Log_Level=> 3);
3065                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1,  x_Log_Level=> 3);
3066                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT:   '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
3067                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3068                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3069                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
3070                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3071                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3072                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
3073                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
3074                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC,        x_Log_Level=> 3);
3075                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=>      3);
3076                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
3077                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC,        x_Log_Level=> 3);
3078                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=>      3);
3079                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_LABOR_HOURS:        '||l_LABOR_HOURS, x_Log_Level=> 3);
3080                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=>        3);
3081                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
3082                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
3083                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
3084                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
3085                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST,  x_Log_Level=> 3);
3086                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST,  x_Log_Level=> 3);
3087                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST,        x_Log_Level=> 3);
3088                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST,        x_Log_Level=> 3);
3089                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST,        x_Log_Level=> 3);
3090                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST,        x_Log_Level=> 3);
3091                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_POU_OTH_RAW_COST:   '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
3092                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST:   '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
3093                          END IF;
3094 
3095                          /* 5726773                         --bug 3829341
3096                          --bug 3824042, the check       for whether exisitng etc(l_cur_rollup_rec. )
3097                          -- is null is  not required as we are always   taking from pji.
3098 
3099                          IF     ( L_EQPMT_ETC_EFFORT IS NULL AND L_EQUIPMENT_HOURS      >= L_EQPMT_ACT_EFFORT_TO_DATE)
3100                          THEN
3101                                  L_EQPMT_ETC_EFFORT     := (L_EQUIPMENT_HOURS - L_EQPMT_ACT_EFFORT_TO_DATE);
3102                          END    IF;
3103 
3104                          IF L_EQPMT_ETC_EFFORT <        0
3105                          THEN
3106                                  L_EQPMT_ETC_EFFORT     :=0;
3107                          END    IF;
3108 
3109                          IF (L_REMAINING_EFFORT1        IS NULL AND L_LABOR_HOURS >= L_PPL_ACT_EFFORT_TO_DATE)   THEN
3110                                  L_REMAINING_EFFORT1 := (L_LABOR_HOURS - L_PPL_ACT_EFFORT_TO_DATE);
3111                          END    IF;
3112 
3113                          IF L_REMAINING_EFFORT1 <0
3114                          THEN
3115                                  L_REMAINING_EFFORT1 := 0;
3116                          END    IF;
3117 
3118                          IF ( L_ETC_COST_FC     IS NULL AND     L_POU_OTH_BRDN_COST     >= L_OTH_ACT_COST_TO_DATE_FC)   THEN
3119                                  L_ETC_COST_FC:= L_POU_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_FC;
3120                          END    IF;
3121 
3122                          IF L_ETC_COST_FC <     0
3123                          THEN
3124                                  L_ETC_COST_FC  := 0;
3125                          END    IF;
3126 
3127                          IF (L_ETC_COST_PC IS NULL AND L_PRJ_OTH_BRDN_COST >= L_OTH_ACT_COST_TO_DATE_PC) THEN
3128                                  L_ETC_COST_PC:= L_PRJ_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_PC;
3129                          END    IF;
3130 
3131                          IF L_ETC_COST_PC <0
3132                          THEN
3133                                  L_ETC_COST_PC  :=0;
3134                          END    IF;
3135 
3136                          IF (L_PPL_ETC_COST_FC IS NULL AND      L_POU_LABOR_BRDN_COST >=        L_PPL_ACT_COST_TO_DATE_FC) THEN
3137                                  L_PPL_ETC_COST_FC      := (L_POU_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_FC);
3138                          END    IF;
3139 
3140                          IF L_PPL_ETC_COST_FC <0
3141                          THEN
3142                                  L_PPL_ETC_COST_FC      :=0;
3143                          END    IF;
3144 
3145                          IF (L_PPL_ETC_COST_PC IS NULL AND      L_PRJ_LABOR_BRDN_COST >=        L_PPL_ACT_COST_TO_DATE_PC) THEN
3146                                  L_PPL_ETC_COST_PC      := (L_PRJ_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_PC);
3147                          END    IF;
3148 
3149                          IF L_PPL_ETC_COST_PC <0
3150                          THEN
3151                                  L_PPL_ETC_COST_PC      :=0;
3152                          END    IF;
3153 
3154                          IF ( L_EQPMT_ETC_COST_FC IS NULL AND L_POU_EQUIP_BRDN_COST     >= L_EQPMT_ACT_COST_TO_DATE_FC) THEN
3155                          L_EQPMT_ETC_COST_FC := (L_POU_EQUIP_BRDN_COST -        L_EQPMT_ACT_COST_TO_DATE_FC);
3156                          END    IF;
3157 
3158                          IF L_EQPMT_ETC_COST_FC <0
3159                          THEN
3160                          L_EQPMT_ETC_COST_FC :=0;
3161                          END    IF;
3162 
3163                          IF (L_EQPMT_ETC_COST_PC        IS NULL AND L_PRJ_EQUIP_BRDN_COST >= L_EQPMT_ACT_COST_TO_DATE_PC)  THEN
3164                                  L_EQPMT_ETC_COST_PC := (L_PRJ_EQUIP_BRDN_COST - L_EQPMT_ACT_COST_TO_DATE_PC);
3165                          END    IF;
3166 
3167                          IF L_EQPMT_ETC_COST_PC <0
3168                          THEN
3169                                  L_EQPMT_ETC_COST_PC :=0;
3170                          END    IF;
3171 
3172                          IF (L_ETC_RAWCOST_FC IS        NULL    AND L_POU_OTH_RAW_COST >=       L_OTH_ACT_RAWCOST_TO_DATE_FC)    THEN
3173                                  L_ETC_RAWCOST_FC:=     L_POU_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_FC;
3174                          END    IF;
3175 
3176                          IF L_ETC_RAWCOST_FC <0
3177                          THEN
3178                                  L_ETC_RAWCOST_FC :=0;
3179                          END    IF;
3180 
3181                          IF (L_ETC_RAWCOST_PC IS        NULL    AND L_PRJ_OTH_RAW_COST >=       L_OTH_ACT_RAWCOST_TO_DATE_PC)   THEN
3182                                  L_ETC_RAWCOST_PC:=     L_PRJ_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_PC;
3183                          END    IF;
3184 
3185                          IF L_ETC_RAWCOST_PC <0
3186                          THEN
3187                                  L_ETC_RAWCOST_PC :=0;
3188                          END    IF;
3189 
3190                          IF (L_PPL_ETC_RAWCOST_FC IS NULL AND L_POU_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_FC) THEN
3191                                  L_PPL_ETC_RAWCOST_FC :=        (L_POU_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_FC);
3192                          END    IF;
3193 
3194                          IF L_PPL_ETC_RAWCOST_FC        <0
3195                          THEN
3196                                  L_PPL_ETC_RAWCOST_FC :=0;
3197                          END    IF;
3198 
3199                          IF (L_PPL_ETC_RAWCOST_PC IS NULL AND L_PRJ_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_PC) THEN
3200                                  L_PPL_ETC_RAWCOST_PC :=        (L_PRJ_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_PC);
3201                          END    IF;
3202 
3203                          IF L_PPL_ETC_RAWCOST_PC        <0
3204                          THEN
3205                                  L_PPL_ETC_RAWCOST_PC :=0;
3206                          END    IF;
3207 
3208                          IF ( L_EQPMT_ETC_RAWCOST_FC IS NULL    AND L_POU_EQUIP_RAW_COST        >= L_EQPMT_ACT_RAWCOST_TO_DATE_FC)      THEN
3209                          L_EQPMT_ETC_RAWCOST_FC := (L_POU_EQUIP_RAW_COST        - L_EQPMT_ACT_RAWCOST_TO_DATE_FC);
3210                          END    IF;
3211 
3212                          IF L_EQPMT_ETC_RAWCOST_FC <0
3213                          THEN
3214                                  L_EQPMT_ETC_RAWCOST_FC :=0;
3215                          END    IF;
3216 
3217                          IF ( L_EQPMT_ETC_RAWCOST_PC IS NULL    AND L_PRJ_EQUIP_RAW_COST        >= L_EQPMT_ACT_RAWCOST_TO_DATE_PC)      THEN
3218                                  L_EQPMT_ETC_RAWCOST_PC :=      (L_PRJ_EQUIP_RAW_COST - L_EQPMT_ACT_RAWCOST_TO_DATE_PC);
3219                          END    IF;
3220 
3221                          IF L_EQPMT_ETC_RAWCOST_PC <0
3222                          THEN
3223                                  L_EQPMT_ETC_RAWCOST_PC :=0;
3224                          END    IF;
3225 */
3226 
3227                          IF p_working_wp_prog_flag = 'Y' OR l_published_structure =     'N'
3228                          --for working  version p_working_wp_prog_flag may      not be 'Y' because of   bug 3846353
3229                          THEN
3230                                  l_EQPMT_ETC_EFFORT     := null;
3231                                  l_remaining_effort1:= null;
3232                                  l_ETC_Cost_FC:= null;
3233                                  l_ETC_Cost_PC:= null;
3234                                  l_PPL_ETC_COST_FC:= null;
3235                                  l_PPL_ETC_COST_PC      := null;
3236                                  l_EQPMT_ETC_COST_FC:= null;
3237                                  l_EQPMT_ETC_COST_PC:= null;
3238                                  l_ETC_RAWCost_FC:=     null;
3239                                  l_ETC_RAWCost_PC := null;
3240                                  l_PPL_ETC_RAWCOST_FC:= null;
3241                                  l_PPL_ETC_RAWCOST_PC:= null;
3242                                  l_EQPMT_ETC_RAWCOST_FC:= null;
3243                                  l_EQPMT_ETC_RAWCOST_PC:= null;
3244                          END    IF;
3245 
3246                          -- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
3247                          IF g1_debug_mode  = 'Y' THEN
3248                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
3249                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).task_statusl       ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
3250                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
3251                          END    IF;
3252 
3253                          IF cur_reverse_tree_rec.object_type = 'PA_TASKS' THEN
3254 
3255                                   --do not rollup on-hold task status. We dont need to worry   about
3256                                   --cancelled bcoz they are not selected.
3257 
3258                                  -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
3259                                  l_actual_exists := 'N';
3260                                  ---5726773  changed '>0' to '<>0'
3261  	                         IF (l_PPL_ACT_EFFORT_TO_DATE   <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
3262                                    IF g1_debug_mode      = 'Y' THEN
3263                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
3264                                    END IF;
3265                                    l_actual_exists := 'Y';
3266                                  END    IF;
3267 
3268                                  IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
3269                                    -- 14-Feb-2005 Patched thru Bug      4180026
3270                                    OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id);
3271                                    FETCH c_get_dlv_status INTO l_actual_exists;
3272                                    CLOSE c_get_dlv_status;
3273                                  END    IF;
3274 
3275                                  IF g1_debug_mode = 'Y' THEN
3276                                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
3277                                  END    IF;
3278 
3279                                  IF ( ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
3280                                    OR
3281                                    ( l_percent_complete1 > 0 OR  l_rolled_up_per_comp > 0 )
3282                                    OR l_actual_exists = 'Y'
3283                                  )      THEN
3284                                    -- Bug        3842084 : Initilaized l_status_code with l_existing_object_status
3285                                          --get the existing      status
3286                                    OPEN  c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);
3287                                          FETCH c_get_object_status INTO l_existing_object_status;
3288                                          CLOSE c_get_object_status;
3289 
3290                                    l_status_code := l_existing_object_status;
3291                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
3292                                    l_status_code_temp := l_status_code; --Bug#5374114
3293                                    l_system_status_code_temp := l_system_status_code; --Bug#5374114
3294 
3295                                          IF ( nvl(l_rollup_table1(i).task_status1,0)    <>      0 )
3296                                          THEN
3297                                         OPEN     cur_task_status (      to_char(l_rollup_table1(i).task_status1) );
3298                                                  FETCH cur_task_status INTO l_status_code;
3299                                         CLOSE cur_task_status;
3300                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
3301                                    END IF;
3302                                    -- Now       Defaulting of   Status will happen even if the status is returned by Scheuling API, but it is wrong
3303 
3304                                          l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
3305                                    IF g1_debug_mode      = 'Y' THEN
3306                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
3307                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
3308                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
3309                                    END IF;
3310 
3311                                          IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
3312                                          THEN
3313                                         l_status_code := '127';
3314                                         l_system_status_code := 'COMPLETED';
3315                                          ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1)  < 100)) AND l_system_status_code        IN ('NOT_STARTED','COMPLETED'))
3316                                          THEN
3317                                         l_status_code := '125';
3318                                         l_system_status_code := 'IN_PROGRESS';
3319                                         l_actual_finish_date := null;
3320                                    -- This is done to first time make task In Progress  if any sub-objects are in Progress
3321                                    ELSIF (l_actual_exists ='Y' AND      l_system_status_code    = 'NOT_STARTED')
3322                                    THEN
3323                                         l_status_code := '125';
3324                                         l_system_status_code := 'IN_PROGRESS';
3325                                         l_actual_finish_date := null;
3326                                    END IF;
3327 
3328 /* Changes by shanif for bug#5374114 - START */
3329 
3330                     IF (l_system_status_code = l_system_status_code_temp) THEN
3331                         l_system_status_code := l_system_status_code_temp;
3332                         l_status_code  := l_status_code_temp;
3333                     END IF;
3334 
3335 /* Changes by shanif for bug#5374114 - END */
3336 
3337                                    IF g1_debug_mode      = 'Y' THEN
3338                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
3339                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
3340                                    END IF;
3341 
3342                                    IF l_structure_version_id IS NULL THEN -- Bug 3922325  : This  does    not make sense  for     working wp version rollup
3343                                         UPDATE pa_proj_elements
3344                                         SET status_code = l_status_code
3345                                         WHERE project_id = p_project_id
3346                                         AND proj_element_id     = cur_reverse_tree_rec.proj_element_id;
3347                                    END IF;
3348 
3349 
3350                                    IF p_structure_type = 'WORKPLAN' THEN
3351                                         OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1);
3352                                         FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
3353                                         CLOSE c_get_dates;
3354                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3355                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3356                                                 l_actual_finish_date := to_date(null);
3357                                         END IF;
3358                     -- Bug 4232099 : added folling IF
3359                     IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3360                         l_actual_finish_date := to_date(null);
3361                     END IF;
3362                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3363                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3364                                         END IF;
3365                                         IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3366                                                 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
3367                                         END IF;
3368 
3369                                         IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL     THEN
3370                                                 IF l_actual_finish_date < l_actual_start_date THEN
3371                                                   IF TRUNC(SYSDATE)  < l_actual_start_date THEN
3372                                                           l_actual_finish_date := l_actual_start_date;
3373                                                   ELSE
3374                                                           l_actual_finish_date := TRUNC(SYSDATE);
3375                                                   END IF;
3376                                                 END IF;
3377                                         END IF;
3378                                    END IF;
3379 
3380                                    UPDATE pa_percent_completes
3381                                    SET status_code = l_status_code
3382                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
3383                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
3384                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
3385                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3386                                    AND project_id = p_project_id
3387                                    --AND PA_PROGRESS_UTILS.get_system_task_status( status_code )        NOT IN  ( 'CANCELLED',  'COMPLETED' )
3388                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
3389                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
3390                                    AND current_flag = 'N' and published_flag  = 'N'
3391                                    ;
3392 
3393                                    -- 14-Feb-2005 :     Added Patched thru Bug 4180026
3394                                    UPDATE pa_percent_completes
3395                                    SET status_code = l_status_code
3396                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
3397                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
3398                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
3399                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3400                                    AND project_id = p_project_id
3401                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
3402                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
3403                                    AND published_flag = 'Y' ---4743866
3404                                    AND current_flag = 'Y'
3405                                    AND trunc(date_computed) = trunc(p_as_of_date)
3406                                    ;
3407 
3408                                  END    IF;
3409                          END    IF;
3410 
3411                          IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
3412                                  l_ETC_Cost_FC:= null;
3413                                  l_ETC_Cost_PC:= null;
3414                                  l_PPL_ETC_COST_FC:= null;
3415                                  l_PPL_ETC_COST_PC      := null;
3416                                  l_EQPMT_ETC_COST_FC:= null;
3417                                  l_EQPMT_ETC_COST_PC:= null;
3418                                  l_ETC_RAWCost_FC:=     null;
3419                                  l_ETC_RAWCost_PC := null;
3420                                  l_PPL_ETC_RAWCOST_FC:= null;
3421                                  l_PPL_ETC_RAWCOST_PC:= null;
3422                                  l_EQPMT_ETC_RAWCOST_FC:= null;
3423                                  l_EQPMT_ETC_RAWCOST_PC:= null;
3424                                  l_OTH_ACT_COST_TO_DATE_PC:= null;
3425                                  l_OTH_ACT_COST_TO_DATE_FC:= null;
3426                                  l_PPL_ACT_COST_TO_DATE_PC:= null;
3427                                  l_PPL_ACT_COST_TO_DATE_FC:= null;
3428                                  l_EQPMT_ACT_COST_TO_DATE_PC:= null;
3429                                  l_EQPMT_ACT_COST_TO_DATE_FC:= null;
3430                                  l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
3431                                  l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
3432                                  l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
3433                                  l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
3434                                  l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
3435                                  l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
3436                         END IF;
3437 
3438 
3439                 END IF; -- IF  p_structure_type = 'WORKPLAN' --bug 4317491
3440 
3441 
3442 		-- Bug 4651304 Begin
3443 		-- One solution for this issue could be to pass
3444 		-- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
3445 		-- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
3446 		-- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
3447 		-- Best way is to always retain the existing object_version_id in pa_progress_rollup
3448 		-- table in case of update, in case of insert, use the new object version id
3449 
3450 		-- Commented below code and added new condition
3451 
3452 
3453 		--IF p_upd_new_elem_ver_id_flag = 'Y' THEN
3454 		--	l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3455 		--END IF;
3456 
3457 		IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
3458 			null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
3459 		ELSE
3460 			l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3461 		END IF;
3462 		-- Bug 4651304 End
3463 
3464 		l_tsk_proj_element_id_tab(task_index) := l_task_id;
3465 		l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
3466                     -- 4392189 : Program Reporting Changes - Phase 2
3467                     -- Having Set2 columns to get Project level % complete
3468                                         -- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3469                     -- Bug 4506461 Begin
3470                     l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
3471                     -- 4540890 : Removed l_subproject_found check from below
3472                     IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
3473                         l_rederive_base_pc := 'N';
3474                         OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
3475                         FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
3476                         CLOSE c_get_any_childs_have_subprj;
3477                         IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3478                             l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3479                         END IF;
3480                     END IF;
3481                     -- Bug 4506461 End
3482 
3483                     l_tsk_earned_value_tab(task_index) := l_earned_value1;
3484                                         l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
3485                                         l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
3486 
3487 
3488                                         IF p_structure_type = 'WORKPLAN' THEN
3489                                                 l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
3490                                                 l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
3491                                                 l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
3492                                                 l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
3493 						-- 4533112 : Base Progress Status is not used
3494                                                 --l_tsk_base_prog_stat_code_tab(task_index) :=    l_rolled_up_base_prog_stat;
3495                                                 l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
3496 
3497                                                 IF p_progress_mode <> 'BACKDATED' THEN
3498                                                         l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
3499                                                         l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
3500                                                         l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
3501                                                         l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
3502                                                         l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
3503                                                         l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
3504                                                         l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
3505                                                         l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
3506                                                         l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
3507                                                         l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
3508 
3509                                                         l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
3510                                                         l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
3511                                                         l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
3512                                                         l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
3513                                                         l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
3514                                                         l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
3515                                                         l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
3516                                                         l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
3517                                                         l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
3518                                                         l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
3519 
3520                                                         l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
3521                                                         l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
3522                                                         l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
3523                                                         l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
3524                                                         l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
3525                                                         l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
3526                                                         l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
3527                                                         l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
3528 
3529                                                 END IF; -- p_progress_mode <> 'BACKDATED'
3530 
3531                                                 -- 5119716 Begin
3532                                                 -- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
3533                                                 -- For performance changes, it was removed and replaced with direct update statement
3534                                                 -- The follwoing portion for dirty schedule was missing out.
3535                                                 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y' THEN
3536 
3537                                                         PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
3538                                                                 p_structure_version_id  => p_structure_version_id
3539                                                                 ,p_dirty_flag           => 'Y'
3540                                                                 ,x_return_status        => x_return_status
3541                                                                 ,x_msg_count            => x_msg_count
3542                                                                 ,x_msg_data             => x_msg_data
3543                                                                 );
3544 
3545                                                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3546                                                                 raise FND_API.G_EXC_ERROR;
3547                                                         END IF;
3548 
3549                                                 END IF;
3550                                                 -- 5119716 End
3551 
3552                                                  UPDATE pa_proj_elem_ver_schedule
3553                                                  SET    ACTUAL_START_DATE = l_actual_start_date
3554                                                  , ACTUAL_FINISH_DATE = l_actual_finish_date
3555                                                  , ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
3556                                                  , ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
3557                                                  , record_version_number = record_version_number+1
3558                                                  -- 5119716 Begin
3559                                                  , estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
3560                                                  , actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
3561                                                  -- 5119716 End
3562                                                  , last_updated_by = l_user_id
3563                                                  , last_update_date= sysdate
3564                                                  , last_update_login = l_login_id
3565                                                  WHERE project_id = p_project_id
3566                                                  AND element_version_id = l_rollup_table1(i).object_id;
3567 
3568 
3569                                                 IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
3570                                                         UPDATE pa_projects_all
3571                                                         SET actual_start_date = l_rollup_table1(i).start_date1,
3572                                                             actual_finish_date = l_rollup_table1(i).finish_date1
3573                                                         WHERE project_id = p_project_id;
3574                                                 END IF;
3575                                         END IF; -- p_structure_type     = 'WORKPLAN'
3576 
3577                     IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3578                         l_tsk_update_required(task_index):='Y';
3579                     ELSE
3580                         -- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
3581                         IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3582                             l_tsk_create_required(task_index):='Y';
3583                             BEGIN
3584                                 SELECT percent_complete_id
3585                                 INTO l_percent_complete_id
3586                                 FROM pa_percent_completes
3587                                 WHERE project_id = p_project_id
3588                                 AND object_id =  cur_reverse_tree_rec.proj_element_id
3589                                 AND object_Type = l_rollup_table1(i).object_Type
3590                                 AND structure_type = p_structure_type
3591                                 AND date_computed = ( SELECT max(date_computed)
3592                                             FROM    pa_percent_completes
3593                                             WHERE project_id = p_project_id
3594                                             AND object_id =  cur_reverse_tree_rec.proj_element_id
3595                                             AND object_Type = l_rollup_table1(i).object_Type
3596                                             AND structure_type = p_structure_type
3597                                             AND date_computed <= p_as_of_date);
3598                             EXCEPTION WHEN OTHERS THEN
3599                                 l_percent_complete_id := null;
3600                             END;
3601                             l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
3602                                             (p_project_id   => p_project_id,
3603                                             p_object_id     => cur_reverse_tree_rec.proj_element_id,
3604                                             p_object_type   => l_rollup_table1(i).object_type,
3605                                             p_structure_type =>     p_structure_type,
3606                                             p_structure_version_id => l_structure_version_id,
3607                                             p_proj_element_id => cur_reverse_tree_rec.proj_element_id
3608                                      );
3609 
3610                             IF l_max_rollup_as_of_date2 > p_as_of_date  THEN
3611                                 l_current_flag  := 'N';
3612                             ELSE
3613                                 l_current_flag  := 'Y';
3614                             END IF;
3615                             l_tsk_current_flag_tab(task_index)      := l_current_flag;
3616                             l_tsk_prog_pa_period_name_tab(task_index) :=    l_prog_pa_period_name;
3617                             l_tsk_prog_gl_period_name_tab(task_index) :=    l_prog_gl_period_name;
3618 
3619 
3620                             IF l_max_rollup_as_of_date2 < p_as_of_date THEN
3621                                 UPDATE pa_progress_rollup
3622                                    SET current_flag = 'N'
3623                                  WHERE project_id = p_project_id
3624                                    AND object_id = cur_reverse_tree_rec.proj_element_id
3625                                    AND object_type = l_rollup_table1(i).object_type
3626                                    AND current_flag <> 'W'
3627                                    AND structure_type = p_structure_type
3628                                    AND ((l_published_structure = 'Y'   AND structure_version_id is null) OR (l_published_structure =        'N' AND structure_version_id =  p_structure_version_id))
3629                                    ;
3630                             END IF;
3631                         END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3632                     END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3633                 END IF;--       p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists =  'Y'
3634                 exit;
3635             END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
3636         END LOOP;
3637         END LOOP;
3638 
3639         FORALL i in 1..l_tsk_object_version_id_tab.count
3640                 UPDATE pa_progress_rollup
3641                 SET
3642                 object_version_id = l_tsk_object_version_id_tab(i)
3643                 , last_update_date = sysdate
3644                 , last_updated_by = l_user_id
3645                 , last_update_login = l_login_id
3646                 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3647                 , completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
3648         -- Bug 4284353 : Used decode above
3649                 , estimated_start_date = l_tsk_est_start_date_tab(i)
3650                 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3651                 , actual_start_date = l_tsk_actual_start_date_tab(i)
3652                 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3653                 , record_version_number = record_version_number +1
3654                 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3655                 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
3656                 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
3657                 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3658                 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
3659                 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3660                 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3661                 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3662                 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3663                 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3664                 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
3665                 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
3666                 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3667                 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3668                 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3669                 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
3670                 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
3671                 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3672                 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3673                 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3674                 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
3675                 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
3676                 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3677                 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3678                 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3679                 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3680                 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3681                 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3682                 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3683                 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
3684                 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3685                 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3686                 , earned_value = l_tsk_earned_value_tab(i)
3687                 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3688         , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3689                 WHERE l_tsk_update_required(i) = 'Y'
3690                 AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i)
3691                 ;
3692 
3693 
3694         IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED'  THEN
3695                 FORALL i in 1..l_tsk_object_version_id_tab.count
3696                         UPDATE pa_progress_rollup
3697                         SET
3698                         object_version_id =     l_tsk_object_version_id_tab(i)
3699                         , last_update_date = sysdate
3700                         , last_updated_by =     l_user_id
3701                         , last_update_login     = l_login_id
3702                         , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3703                         , estimated_start_date =        l_tsk_est_start_date_tab(i)
3704                         , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3705                         , actual_start_date     = l_tsk_actual_start_date_tab(i)
3706                         , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3707                         , record_version_number = record_version_number +1
3708                         , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3709                         , base_progress_status_code =   l_tsk_base_prog_stat_code_tab(i)
3710                         , eff_rollup_prog_stat_code =   l_tsk_eff_roll_prg_st_code_tab(i)
3711                         , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3712                         , ppl_act_effort_to_date        = l_tsk_ppl_act_eff_tab(i)
3713                         , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3714                         , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3715                         , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3716                         , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3717                         , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3718                         , ppl_etc_cost_pc =     l_tsk_ppl_etc_cost_pc_tab(i)
3719                         , ppl_etc_cost_fc =     l_tsk_ppl_etc_cost_fc_tab(i)
3720                         , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3721                         , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3722                         , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3723                         , eqpmt_act_cost_to_date_pc =   l_tsk_eqpmt_act_cost_pc_tab(i)
3724                         , eqpmt_act_cost_to_date_fc =   l_tsk_eqpmt_act_cost_fc_tab(i)
3725                         , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3726                         , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3727                         , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3728                         , eqpmt_etc_cost_pc     = l_tsk_eqpmt_etc_cost_pc_tab(i)
3729                         , eqpmt_etc_cost_fc     = l_tsk_eqpmt_etc_cost_fc_tab(i)
3730                         , eqpmt_etc_rawcost_pc =        l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3731                         , eqpmt_etc_rawcost_fc =        l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3732                         , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3733                         , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3734                         , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3735                         , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3736                         , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3737                         , oth_etc_cost_fc =     l_tsk_oth_etc_cost_fc_tab(i)
3738                         , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3739                         , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3740                         , earned_value  = l_tsk_earned_value_tab(i)
3741                         , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3742                 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3743                         WHERE l_tsk_update_required(i) = 'Y'
3744                         AND project_id  = p_project_id
3745                         AND object_id = l_tsk_object_id_tab(i)
3746                         AND proj_element_id     = l_tsk_proj_element_id_tab(i)
3747                         AND object_type = l_tsk_object_type_tab(i)
3748                         AND as_of_date  >= p_as_of_date
3749                         AND current_flag = 'W'
3750                         AND structure_type = 'WORKPLAN'
3751                         AND structure_version_id is null
3752                         ;
3753         END IF;
3754 
3755     -- Bug 4242787 : This is effective solution for the bug 4097710
3756     -- We should not create new records if the rollup is called from Future Rollup API
3757     -- It should just update.
3758     IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3759         FORALL i in 1..l_tsk_object_version_id_tab.count
3760                 INSERT INTO pa_progress_rollup
3761                 (
3762                 progress_rollup_id
3763                 ,project_id
3764                 ,object_id
3765                 ,object_type
3766                 ,as_of_date
3767                 ,object_version_id
3768                 ,last_update_date
3769                 ,last_updated_by
3770                 ,creation_date
3771                 ,created_by
3772                 ,progress_status_code
3773                 ,last_update_login
3774                 ,eff_rollup_percent_comp
3775                 ,completed_percentage
3776                 ,estimated_start_date
3777                 ,estimated_finish_date
3778                 ,actual_start_date
3779                 ,actual_finish_date
3780                 ,record_version_number
3781                 ,base_percent_comp_deriv_code
3782                 ,base_progress_status_code
3783                 ,eff_rollup_prog_stat_code
3784                 ,percent_complete_id
3785                 ,structure_type
3786                 ,proj_element_id
3787                 ,structure_version_id
3788                 ,ppl_act_effort_to_date
3789                 ,ppl_act_cost_to_date_pc
3790                 ,ppl_act_cost_to_date_fc
3791                 ,ppl_act_rawcost_to_date_pc
3792                 ,ppl_act_rawcost_to_date_fc
3793                 ,estimated_remaining_effort
3794                 ,ppl_etc_cost_pc
3795                 ,ppl_etc_cost_fc
3796                 ,ppl_etc_rawcost_pc
3797                 ,ppl_etc_rawcost_fc
3798                 ,eqpmt_act_effort_to_date
3799                 ,eqpmt_act_cost_to_date_pc
3800                 ,eqpmt_act_cost_to_date_fc
3801                 ,eqpmt_act_rawcost_to_date_pc
3802                 ,eqpmt_act_rawcost_to_date_fc
3803                 ,eqpmt_etc_effort
3804                 ,eqpmt_etc_cost_pc
3805                 ,eqpmt_etc_cost_fc
3806                 ,eqpmt_etc_rawcost_pc
3807                 ,eqpmt_etc_rawcost_fc
3808                 ,oth_quantity_to_date
3809                 ,oth_act_cost_to_date_pc
3810                 ,oth_act_cost_to_date_fc
3811                 ,oth_act_rawcost_to_date_pc
3812                 ,oth_act_rawcost_to_date_fc
3813                 ,oth_etc_quantity
3814                 ,oth_etc_cost_pc
3815                 ,oth_etc_cost_fc
3816                 ,oth_etc_rawcost_pc
3817                 ,oth_etc_rawcost_fc
3818                 ,earned_value
3819                 ,task_wt_basis_code
3820                 ,current_flag
3821                 ,projfunc_cost_rate_type
3822                 ,projfunc_cost_exchange_rate
3823                 ,projfunc_cost_rate_date
3824                 ,proj_cost_rate_type
3825                 ,proj_cost_exchange_rate
3826                 ,proj_cost_rate_date
3827                 ,txn_currency_code
3828                 ,prog_pa_period_name
3829                 ,prog_gl_period_name
3830         ,base_percent_complete
3831                 )
3832                 SELECT
3833                 PA_PROGRESS_ROLLUP_S.nextval
3834                 , p_project_id
3835                 , l_tsk_object_id_tab(i)
3836                 , l_tsk_object_type_tab(i)
3837                 , p_as_of_date
3838                 , l_tsk_object_version_id_tab(i)
3839                 , sysdate
3840                 , l_user_id
3841                 , sysdate
3842                 , l_user_id
3843                 , l_tsk_progress_stat_code_tab(i)
3844                 , l_login_id
3845                 , l_tsk_roll_comp_percent_tab(i)
3846                 ,  decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
3847         -- Bug 4284353 : Used decode above
3848                 , l_tsk_est_start_date_tab(i)
3849                 , l_tsk_est_finish_date_tab(i)
3850                 , l_tsk_actual_start_date_tab(i)
3851                 , l_tsk_actual_finish_date_tab(i)
3852                 , 1
3853                 , l_tsk_deriv_method_tab(i)
3854                 , l_tsk_base_prog_stat_code_tab(i)
3855                 , l_tsk_eff_roll_prg_st_code_tab(i)
3856                 , l_tsk_percent_complete_id_tab(i)
3857                 , p_structure_type
3858                 , l_tsk_proj_element_id_tab(i)
3859                 , l_structure_version_id
3860                 , l_tsk_ppl_act_eff_tab(i)
3861                 , l_tsk_ppl_act_cost_pc_tab(i)
3862                 , l_tsk_ppl_act_cost_fc_tab(i)
3863                 , l_tsk_ppl_act_rawcost_pc_tab(i)
3864                 , l_tsk_ppl_act_rawcost_fc_tab(i)
3865                 , l_tsk_est_rem_effort_tab(i)
3866                 , l_tsk_ppl_etc_cost_pc_tab(i)
3867                 , l_tsk_ppl_etc_cost_fc_tab(i)
3868                 , l_tsk_ppl_etc_rawcost_pc_tab(i)
3869                 , l_tsk_ppl_etc_rawcost_fc_tab(i)
3870                 , l_tsk_eqpmt_act_effort_tab(i)
3871                 , l_tsk_eqpmt_act_cost_pc_tab(i)
3872                 , l_tsk_eqpmt_act_cost_fc_tab(i)
3873                 , l_tsk_eqpmt_act_rawcost_pc_tab(i)
3874                 , l_tsk_eqpmt_act_rawcost_fc_tab(i)
3875                 , l_tsk_eqpmt_etc_effort_tab(i)
3876                 , l_tsk_eqpmt_etc_cost_pc_tab(i)
3877                 , l_tsk_eqpmt_etc_cost_fc_tab(i)
3878                 , l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3879                 , l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3880                 , l_tsk_oth_quantity_tab(i)
3881                 , l_tsk_oth_act_cost_pc_tab(i)
3882                 , l_tsk_oth_act_cost_fc_tab(i)
3883                 , l_tsk_oth_act_rawcost_pc_tab(i)
3884                 , l_tsk_oth_act_rawcost_fc_tab(i)
3885                 , l_tsk_oth_etc_quantity_tab(i)
3886                 , l_tsk_oth_etc_cost_pc_tab(i)
3887                 , l_tsk_oth_etc_cost_fc_tab(i)
3888                 , l_tsk_oth_etc_rawcost_pc_tab(i)
3889                 , l_tsk_oth_etc_rawcost_fc_tab(i)
3890                 , l_tsk_earned_value_tab(i)
3891                 , l_tsk_task_wt_basis_code_tab(i)
3892                 , l_tsk_current_flag_tab(i)
3893                 , l_tsk_pf_cost_rate_type_tab(i)
3894                 , l_tsk_pf_cost_exc_rate_tab(i)
3895                 , l_tsk_pf_cost_rate_date_tab(i)
3896                 , l_tsk_p_cost_rate_type_tab(i)
3897                 , l_tsk_p_cost_exc_rate_tab(i)
3898                 , l_tsk_p_cost_rate_date_tab(i)
3899                 , l_tsk_txn_currency_code_tab(i)
3900                 , l_tsk_prog_pa_period_name_tab(i)
3901                 , l_tsk_prog_gl_period_name_tab(i)
3902         , l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3903                 FROM
3904                 DUAL
3905                 WHERE l_tsk_create_required(i) = 'Y'
3906                 ;
3907     END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP'  OR p_calling_mode IS NULL THEN
3908 
3909     -- Bug 4242787
3910     -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
3911         -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3912 
3913         ----    **************  Updation Ends   ******************      ----------
3914 
3915     -- Bug 4242787
3916     -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
3917     -- Future rollup seprately if they are calling Mass Rollup
3918     IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
3919         IF g1_debug_mode  = 'Y' THEN
3920             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
3921         END IF;
3922 
3923         FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
3924             IF g1_debug_mode  = 'Y' THEN
3925                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
3926                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
3927                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
3928                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
3929             END IF;
3930             -- Bug 4573257 Begin
3931             -- We need to call PJI tmp table population
3932             -- otherwise we will get incorrect actual and etc for future dates records
3933             IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
3934 
3935                 IF (l_base_struct_ver_id = -1) THEN
3936                     l_base_struct_ver_id := p_structure_version_id;
3937                 END IF;
3938 
3939                 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
3940                     p_calling_module    => p_calling_module
3941                     ,p_project_id           => p_project_id
3942                     ,p_structure_version_id => p_structure_version_id
3943                     ,p_baselined_str_ver_id => l_base_struct_ver_id
3944                     ,p_program_rollup_flag  => 'Y'
3945                     ,p_calling_context  => 'ROLLUP'
3946                     ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
3947                     ,x_return_status        => x_return_status
3948                     ,x_msg_count            => x_msg_count
3949                     ,x_msg_data             => x_msg_data
3950                     );
3951                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3952                     RAISE  FND_API.G_EXC_ERROR;
3953                 END IF;
3954                 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
3955             END IF;
3956             -- Bug 4573257 End
3957 
3958             PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
3959                  p_init_msg_list                => 'F'
3960                 ,p_calling_module       => p_calling_module
3961                 ,p_calling_mode         => 'FUTURE_ROLLUP'
3962                 ,p_commit                       => 'F'
3963                 ,p_validate_only                => 'F'
3964                 ,p_project_id                   => p_project_id
3965                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
3966                 ,P_OBJECT_ID                    => cur_tree_rollup_rec.child_task_id
3967                 ,p_object_version_id            => cur_tree_rollup_rec.child_task_ver_id
3968                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
3969                 ,p_lowest_level_task            => p_lowest_level_task
3970                 ,p_process_whole_tree           => 'N'
3971                 ,p_structure_type               => p_structure_type
3972                 ,p_structure_version_id         => p_structure_version_id
3973                 ,p_rollup_entire_wbs            => 'N'
3974                 ,p_fin_rollup_method            => p_fin_rollup_method
3975                 ,p_wp_rollup_method             => p_wp_rollup_method
3976                 ,p_task_version_id              => cur_tree_rollup_rec.child_task_ver_id
3977                 ,x_return_status                => x_return_status
3978                 ,x_msg_count                    => x_msg_count
3979                 ,x_msg_data                     => x_msg_data);
3980 
3981             IF g1_debug_mode  = 'Y' THEN
3982                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
3983             END IF;
3984 
3985             IF x_return_status <> 'S' THEN
3986                 raise FND_API.G_EXC_ERROR;
3987             END IF;
3988         END LOOP;
3989     END IF; -- p_rollup_entire_wbs = 'Y'
3990 
3991         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3992 
3993 
3994 
3995         x_return_status := FND_API.G_RET_STS_SUCCESS;
3996 
3997         IF (p_commit =  FND_API.G_TRUE) THEN
3998                 COMMIT;
3999         END IF;
4000 
4001 
4002         IF g1_debug_mode  =     'Y'     THEN
4003                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
4004         END IF;
4005 
4006 EXCEPTION
4007         WHEN    FND_API.G_EXC_ERROR     THEN
4008                 --BUG 4355204
4009         --IF p_commit = FND_API.G_TRUE THEN
4010                         rollback to ROLLUP_PROGRESS_PVT2;
4011                 --END IF;
4012                 x_return_status := FND_API.G_RET_STS_ERROR;
4013         WHEN    FND_API.G_EXC_UNEXPECTED_ERROR THEN
4014                 --BUG 4355204
4015         --IF p_commit = FND_API.G_TRUE THEN
4016                         rollback to ROLLUP_PROGRESS_PVT2;
4017                 --END IF;
4018                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4019                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4020                                  p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4021                                  p_error_text      => SUBSTRB(SQLERRM,1,120));
4022         WHEN    OTHERS THEN
4023                 --BUG 4355204
4024         --IF p_commit = FND_API.G_TRUE THEN
4025                         rollback to ROLLUP_PROGRESS_PVT2;
4026                 --END IF;
4027                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4028                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4029                                  p_procedure_name => 'ROLLUP_PROGRESS_PVT',
4030                                  p_error_text      => SUBSTRB(SQLERRM,1,120));
4031                 raise;
4032 END ROLLUP_PROGRESS_PVT;
4033 
4034 -- Start of comments
4035 --      API name        : UPDATE_ROLLUP_PROGRESS_PVT
4036 --      Type            : Private
4037 --      Pre-reqs        : ROLLUP_PROGRESS_PVT shd have been called.
4038 --      Purpose         : Updates the Rolled up data
4039 --      Parameters Desc :
4040 --              P_OBJECT_TYPE                   Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
4041 --              P_OBJECT_ID                     For assignments, pass resource_assignment_id, otherwise
4042 --                                              proj_element_id of the deliverable and task
4043 --              p_object_version_id             For Assignments, pass task_version_id, otherwise
4044 --                                              element_version_id of the deliverable and task
4045 --              p_task_version_id               For tasks, assignments, deliverables pass the task version id
4046 --                                              , for struture pass null
4047 --              p_lowest_level_task             Does not seem to be required
4048 --              p_structure_version_id          Structure version id of the publsihed or working structure version
4049 --              p_structure_type                Possible values WORKPLAN, FINANCIAL
4050 --              p_fin_rollup_method             Possible values are COST, EFFORT
4051 --              p_wp_rollup_method              Possible values are COST, EFFORT, MANUAL, DURATION
4052 --              p_published_structure           To indicate if the passed structure version is published
4053 --      History         : 17-MAR-04  amksingh   Rewritten For FPM Development Tracking Bug 3420093
4054 
4055 -- End of comments
4056 
4057 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4058   p_api_version                         IN      NUMBER                  :=1.0
4059  ,p_init_msg_list                       IN      VARCHAR2                :=FND_API.G_TRUE
4060  ,p_commit                              IN      VARCHAR2                :=FND_API.G_FALSE
4061  ,p_validate_only                       IN      VARCHAR2                :=FND_API.G_TRUE
4062  ,p_validation_level                    IN      NUMBER                  :=FND_API.G_VALID_LEVEL_FULL
4063  ,p_calling_module                      IN      VARCHAR2                :='SELF_SERVICE'
4064  ,p_calling_mode            IN      VARCHAR2                :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4065  ,p_debug_mode                          IN      VARCHAR2                :='N'
4066  ,p_max_msg_count                       IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4067  ,p_project_id                          IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4068  ,p_object_version_id                   IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4069  ,p_as_of_date                          IN      DATE                    := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4070  ,p_rollup_table                        IN      PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4071  ,p_lowest_level_task                   IN      VARCHAR2                := 'N'
4072  ,p_task_version_id                     IN      NUMBER
4073  ,p_structure_version_id                IN      NUMBER
4074  ,p_structure_type                      IN      VARCHAR2                := 'WORKPLAN'
4075  ,p_fin_rollup_method                   IN      VARCHAR2                := 'COST'
4076  ,p_wp_rollup_method                    IN      VARCHAR2                := 'COST'
4077  ,p_published_structure                 IN      VARCHAR2
4078  ,p_rollup_entire_wbs                   IN      VARCHAR2                := 'N' -- FPM Dev CR 7
4079  ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --bug 3829341
4080  ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, for BUG 3951024
4081  ,p_progress_mode           IN  VARCHAR2        := 'FUTURE'  -- 4091457
4082  ,x_return_status                       OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4083  ,x_msg_count                           OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4084  ,x_msg_data                            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4085 ) IS
4086    l_api_name                      CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4087    l_api_version                   CONSTANT NUMBER      := 1.0                          ;
4088 
4089    l_return_status                 VARCHAR2(1)                                          ;
4090    l_msg_count                     NUMBER                                               ;
4091    l_msg_data                      VARCHAR2(250)                                        ;
4092    l_data                          VARCHAR2(250)                                        ;
4093    l_msg_index_out                 NUMBER                                               ;
4094    l_error_msg_code                VARCHAR2(250)                                        ;
4095    l_user_id                       NUMBER                       := FND_GLOBAL.USER_ID   ;
4096    l_login_id                      NUMBER                       := FND_GLOBAL.LOGIN_ID  ;
4097 
4098 BEGIN
4099 -- Bug 4242787 : Commented update_rollup_progress_pvt, IT is merged into rollup_progress_pvt
4100 x_return_status := FND_API.G_RET_STS_SUCCESS;
4101         IF (p_commit = FND_API.G_TRUE) THEN
4102                 COMMIT;
4103         END IF;
4104 EXCEPTION
4105     WHEN FND_API.G_EXC_ERROR THEN
4106                 IF g1_debug_mode  = 'Y' THEN
4107                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4108                 END IF;
4109 
4110                 IF p_commit = FND_API.G_TRUE THEN
4111                 rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4112                 END IF;
4113              x_return_status := FND_API.G_RET_STS_ERROR;
4114     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4115 
4116                 IF g1_debug_mode  = 'Y' THEN
4117                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4118                 END IF;
4119 
4120                 IF p_commit = FND_API.G_TRUE THEN
4121                         rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4122                 END IF;
4123                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4124                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4125                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4126                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4127     WHEN OTHERS THEN
4128                 IF g1_debug_mode  = 'Y' THEN
4129                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4130                 END IF;
4131 
4132                 IF p_commit = FND_API.G_TRUE THEN
4133                         rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4134                 END IF;
4135                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4136                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4137                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4138                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4139                 raise;
4140 END UPDATE_ROLLUP_PROGRESS_PVT;
4141 
4142 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
4143  p_project_id              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4144  ,P_OBJECT_TYPE            IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4145  ,P_OBJECT_ID              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4146  ,p_object_version_id      IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4147  ,p_as_of_date             IN   DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4148  ,p_lowest_level_task      IN   VARCHAR2        := 'N'
4149  ,p_calling_module         IN   VARCHAR2        := 'SELF_SERVICE'
4150  ,p_calling_mode       IN VARCHAR2          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4151  ,p_structure_type         IN   VARCHAR2        := 'WORKPLAN'
4152  ,p_structure_version_id   IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4153  ,p_fin_rollup_method      IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4154  ,p_wp_rollup_method       IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4155  ,p_rollup_entire_wbs      IN   VARCHAR2        := 'N' -- Bug 3606627
4156  ,x_return_status          OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4157  ,x_msg_count              OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
4158  ,x_msg_data               OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4159 )
4160  IS
4161 
4162 -- 4537865
4163      l_msg_count                  NUMBER ;
4164      l_data                       VARCHAR2(2000);
4165      l_msg_data                   VARCHAR2(2000);
4166      l_msg_index_out              NUMBER;
4167 
4168    CURSOR cur_reverse_tree
4169    IS
4170    SELECT proj_element_id, object_id_from1, object_id_to1, object_type
4171        FROM
4172       ( select object_id_from1, object_id_to1
4173           from pa_object_relationships
4174           where p_rollup_entire_wbs='N'
4175           AND relationship_type = 'S' -- FPM
4176          start with object_id_to1 = p_object_version_id
4177          --and relationship_type = 'S'  -- Bug 3603636
4178          and relationship_type = 'S' -- Bug 4122809 : Added this
4179          connect by prior object_id_from1 = object_id_to1
4180      and relationship_type = 'S'  -- Bug 3958686
4181      ) pobj, pa_proj_element_versions ppev
4182        WHERE element_version_id = object_id_to1
4183        AND p_rollup_entire_wbs='N'
4184    UNION -- AMG Changes
4185      SELECT ever.proj_element_id, obj.object_id_from1 object_id_from1, ever.element_version_id object_id_to1, ever.object_type object_type
4186      FROM pa_proj_element_versions ever
4187      , pa_object_relationships obj
4188      WHERE ever.project_id = p_project_id
4189      and ever.parent_structure_version_id = p_structure_version_id
4190      -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
4191 --     and PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(ever.element_version_id) = 'N'
4192      and PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(ever.element_version_id) = 'Y'
4193      and ever.object_type = 'PA_TASKS'
4194      AND obj.object_id_to1 = ever.element_version_id
4195      AND obj.relationship_type = 'S'
4196      and p_rollup_entire_wbs='Y';
4197 
4198 
4199     l_object_id    NUMBER;
4200     -- Bug 3764224 : This cursor deals with tasks only, so no need to add join of proj_element_id
4201     CURSOR cur_tree_rollup_dates
4202     IS
4203     select as_of_date, published_flag, ppc.current_flag
4204       from pa_progress_rollup ppr, pa_percent_completes ppc
4205      where ppr.project_id = p_project_id
4206        and ppr.object_id = l_object_id
4207        and ppr.as_of_Date > p_as_of_date
4208        and ppr.project_id = ppc.project_id(+)
4209        and ppr.object_id = ppc.object_id(+)
4210        and ppr.as_of_date = ppc.date_computed(+)
4211        and ppr.structure_type = p_structure_type
4212        and ppr.structure_version_id is null -- For Future Rollup no need to check for structure version id
4213      order by as_of_date;
4214 
4215      cur_tree_rollup_rec  cur_tree_rollup_dates%rowtype;
4216      l_structure_version_id            NUMBER;
4217      g1_debug_mode                     VARCHAR2(1);
4218 
4219      l_base_struct_ver_id       NUMBER; -- Bug 4573257
4220      l_last_as_of_date          DATE; -- Bug 4573257
4221 BEGIN
4222 
4223         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4224 
4225         IF g1_debug_mode  = 'Y' THEN
4226                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT');
4227         END IF;
4228 
4229         IF g1_debug_mode  = 'Y' THEN
4230                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4231                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4232                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
4233                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
4234                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
4235                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4236                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
4237                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
4238                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4239                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
4240                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
4241         END IF;
4242 
4243     For cur_tree_rec in cur_reverse_tree loop
4244 
4245            select proj_element_id into l_object_id
4246              from pa_proj_element_versions
4247             where element_version_id = cur_tree_rec.object_id_from1;
4248 
4249         IF g1_debug_mode  = 'Y' THEN
4250                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'l_object_id'||l_object_id, x_Log_Level=> 3);
4251         END IF;
4252 
4253 
4254           open cur_tree_rollup_dates;
4255           loop
4256              fetch cur_tree_rollup_dates into cur_tree_rollup_rec;
4257              if cur_tree_rollup_dates%notfound then
4258                 exit;
4259              end if;
4260              ----------------dbms_output.put_line(cur_tree_rec.proj_element_id||'  '||cur_tree_rollup_rec.as_of_date);
4261              if nvl(cur_tree_rollup_rec.current_flag,'X') = 'N' and nvl(cur_tree_rollup_rec.published_flag,'X') = 'Y' then
4262                 null;
4263              else
4264 
4265             IF g1_debug_mode  = 'Y' THEN
4266                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'Calling ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
4267                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
4268             END IF;
4269 
4270         -- Bug 4573257 Begin
4271         -- We need to call PJI tmp table population
4272         -- otherwise we will get incorrect actual and etc for future dates records
4273         IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
4274                 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
4275             IF (l_base_struct_ver_id = -1) THEN
4276                 l_base_struct_ver_id := p_structure_version_id;
4277             END IF;
4278 
4279             PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
4280                 p_calling_module    => p_calling_module
4281                 ,p_project_id           => p_project_id
4282                 ,p_structure_version_id => p_structure_version_id
4283                 ,p_baselined_str_ver_id => l_base_struct_ver_id
4284                 ,p_program_rollup_flag  => 'Y'
4285                 ,p_calling_context  => 'ROLLUP'
4286                 ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
4287                 ,x_return_status        => x_return_status
4288                 ,x_msg_count            => x_msg_count
4289                 ,x_msg_data             => x_msg_data
4290                 );
4291             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4292                 RAISE  FND_API.G_EXC_ERROR;
4293             END IF;
4294             l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
4295         END IF;
4296         -- Bug 4573257 End
4297 
4298         -- Bug 4097710 : Changed the API from PUB to PVT.
4299         -- It is not good idea to call PUB APi from PVT
4300 
4301                 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
4302                  p_init_msg_list                => 'F'
4303             --Added by rtarway for BUG 3696263
4304                 ,p_calling_module       => p_calling_module
4305         ,p_calling_mode         => 'FUTURE_ROLLUP' -- Bug 4097710, 4242787 Changed back to FUTURE_ROLLUP
4306                 ,p_commit                       => 'F'
4307                 ,p_validate_only                => 'F'
4308                 ,p_project_id                   => p_project_id
4309                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
4310                 ,P_OBJECT_ID                    => cur_tree_rec.proj_element_id
4311                 ,p_object_version_id            => cur_tree_rec.object_id_to1
4312                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
4313                 ,p_lowest_level_task            => p_lowest_level_task
4314                 ,p_process_whole_tree           => 'N'
4315                 ,p_structure_type               => p_structure_type
4316                 ,p_structure_version_id         => p_structure_version_id
4317                 ,p_rollup_entire_wbs            => 'N'
4318                 ,p_fin_rollup_method            => p_fin_rollup_method
4319                 ,p_wp_rollup_method             => p_wp_rollup_method
4320                 ,p_task_version_id              => cur_tree_rec.object_id_to1
4321                 ,x_return_status                => x_return_status
4322                 ,x_msg_count                    => x_msg_count
4323                 ,x_msg_data                     => x_msg_data);
4324 
4325         -- Start : 4537865
4326         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4327                  RAISE FND_API.G_EXC_ERROR;
4328             END IF;
4329         -- End : 4537865
4330              end if;
4331           end loop;
4332           close cur_tree_rollup_dates;
4333     END loop;
4334     IF g1_debug_mode  = 'Y' THEN
4335          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
4336     END IF;
4337 EXCEPTION
4338 -- 4537865 : Start
4339     when FND_API.G_EXC_ERROR then
4340       x_return_status := FND_API.G_RET_STS_ERROR;
4341 
4342       l_msg_count := Fnd_Msg_Pub.count_msg;
4343 
4344       IF l_msg_count = 1 AND x_msg_data IS NULL
4345       THEN
4346           Pa_Interface_Utils_Pub.get_messages
4347               ( p_encoded        => Fnd_Api.G_FALSE
4348               , p_msg_index      => 1
4349               , p_msg_count      => l_msg_count
4350               , p_msg_data       => l_msg_data
4351               , p_data           => l_data
4352               , p_msg_index_out  => l_msg_index_out);
4353           x_msg_data := l_data;
4354       x_msg_count := l_msg_count;
4355       END IF;
4356 
4357 -- 4537865 : End
4358     WHEN OTHERS THEN
4359                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4360         x_msg_count := 1 ; -- 4537865
4361         x_msg_data := SUBSTRB(SQLERRM,1,120); -- 4537865
4362                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4363                               p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
4364                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4365                 raise;
4366 END ROLLUP_FUTURE_PROGRESS_PVT;
4367 
4368 PROCEDURE program_rollup_pvt(
4369   p_api_version                 IN      NUMBER          :=1.0
4370  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
4371  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
4372  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
4373  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
4374  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
4375  ,p_debug_mode                  IN      VARCHAR2        :='N'
4376  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4377  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4378  ,p_as_of_date                  IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4379  ,p_structure_type              IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4380  ,p_structure_ver_id            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4381  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4382  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4383  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4384 )
4385 IS
4386    l_api_name           CONSTANT   VARCHAR2(30)    := 'PROGRAM_ROLLUP_PVT';
4387    l_api_version        CONSTANT   NUMBER          := p_api_version;
4388    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
4389    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
4390    l_return_status                 VARCHAR2(1);
4391    l_msg_count                     NUMBER;
4392    l_msg_data                      VARCHAR2(250);
4393 
4394    l_parent_task_id                NUMBER;
4395    l_parent_struc_ver_id           NUMBER;
4396 
4397 CURSOR c1 (p_project_id NUMBER) IS
4398        /* select *
4399         from pa_structures_links_v
4400         where sub_project_id = p_project_id;*/
4401 --bug 4033869
4402 SELECT
4403   ppv2.project_id                     sub_project_id
4404  ,ppv2.element_version_id             SUB_STRUCTURE_VER_ID
4405  ,ppv1.project_id                     PARENT_PROJECT_ID
4406  ,ppv1.parent_structure_version_id    PARENT_STRUCTURE_VER_ID
4407  ,ppv1.element_version_id             PARENT_TASK_VERSION_ID
4408  ,ppv1.proj_element_id                PARENT_TASK_ID
4409 FROM
4410      pa_proj_element_versions ppv1
4411     ,pa_proj_elem_ver_structure ppevs1
4412     ,pa_proj_element_versions ppv2
4413     ,pa_proj_elem_ver_structure ppevs2
4414     ,pa_object_relationships por1
4415     ,pa_object_relationships por2
4416 WHERE
4417      ppv2.element_version_id = por1.object_id_to1
4418  AND por1.object_id_from1 = por2.object_id_to1
4419  AND por2.object_id_from1 = ppv1.element_version_id
4420  AND ppv2.object_type = 'PA_STRUCTURES'
4421 -- AND por1.relationship_type in ( 'LW', 'LF' )
4422  AND por1.relationship_type = 'LW'
4423  AND ppevs1.element_version_id = ppv1.parent_structure_version_id
4424  AND ppevs1.project_id = ppv1.project_id
4425  AND ppevs1.status_code = 'STRUCTURE_PUBLISHED'
4426  AND ppevs1.latest_eff_published_flag = 'Y'
4427  AND ppevs2.element_version_id = ppv2.element_version_id
4428  AND ppevs2.project_id = ppv2.project_id
4429  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
4430  AND ppevs2.latest_eff_published_flag = 'Y'
4431  AND ppv2.project_id=p_project_id
4432  ;
4433 
4434 l_parent_task_status     VARCHAR2(30);
4435 l_parent_as_of_date      DATE;
4436 l_pln_parent_task_self   NUMBER;
4437 l_parent_plan_version_id NUMBER;
4438 
4439 --This cursor returns self planned value for a task.
4440 CURSOR cur_self_planned ( c_project_id NUMBER, c_proj_element_id NUMBER,
4441                           c_plan_version_id NUMBER, c_base_percnt_deriv_code VARCHAR2)
4442 IS
4443 select decode(c_base_percnt_deriv_code, 'COST',  sum(brdn_cost), 'EFFORT', sum(nvl(labor_hrs,0)+nvl(equipment_hours,0)))
4444 from pji_fp_xbs_accum_f
4445 where project_id =  c_project_id
4446 and plan_version_id = c_plan_version_id
4447 and project_element_id = c_proj_element_id
4448 and calendar_type = 'A'
4449 and wbs_rollup_flag = 'N'
4450 and bitand(curr_record_type_id,  8) = 8
4451 and rbs_aggr_level = 'T'
4452 and prg_rollup_flag = 'N'
4453 ;
4454 --end bug 4033869
4455 l_c1rec                         c1%rowtype;
4456 l_base_prcnt_comp_drv_code      VARCHAR2(30);
4457 
4458 l_bcwp                  NUMBER := 0;
4459 l_bac                   NUMBER := 0;
4460 l_pln_parent_task       NUMBER :=0;
4461 l_pln_sub_project       NUMBER :=0;
4462 l_eff_rollup_prcnt_comp NUMBER :=0;
4463 l_mode                  VARCHAR2(1) := NULL;
4464 l_progress_rollup_id    NUMBER;
4465 
4466 l_msg_code NUMBER;
4467 l_calling_module        VARCHAR2(30);
4468 
4469 CURSOR c_get_parent_base_per_comp_der(c_project_id number, c_task_id number) IS
4470 SELECT base_percent_comp_deriv_code
4471       ,status_code   --bug 4033869
4472 FROM pa_proj_elements
4473 WHERE project_id = c_project_id
4474 AND proj_element_id = c_task_id;
4475 
4476 CURSOR c_get_task_weightage_method(c_project_id number) IS
4477 SELECT task_weight_basis_code,progress_cycle_id   ---4701759, 4701727
4478 FROM pa_proj_progress_attr
4479 WHERE project_id = c_project_id
4480 AND structure_type = 'WORKPLAN';
4481 
4482 CURSOR c_get_sub_proj_rollup IS
4483 SELECT *
4484 FROM pa_progress_rollup
4485 WHERE project_id = p_project_id
4486 AND object_type = 'PA_STRUCTURES'
4487 AND structure_type = 'WORKPLAN'
4488 AND structure_version_id  is NULL
4489 AND as_of_date = p_as_of_date;
4490 
4491 CURSOR c_get_par_task_rollup(c_object_id NUMBER, c_project_id NUMBER) IS
4492 SELECT *
4493 FROM pa_progress_rollup
4494 WHERE object_id = c_object_id
4495 AND project_id = c_project_id
4496 AND object_type = 'PA_TASKS'
4497 AND structure_type = 'WORKPLAN'
4498 AND structure_version_id is null
4499 AND as_of_date = p_as_of_date;
4500 
4501 CURSOR cur_get_status( c_status_weight VARCHAR2, c_status_type VARCHAR2  ) IS
4502 SELECT project_status_code
4503 FROM pa_project_statuses
4504 WHERE project_status_weight = c_status_weight
4505 AND status_type = c_status_type
4506 AND predefined_flag = 'Y';
4507 
4508 CURSOR cur_get_status_weight(c_status_code VARCHAR2, c_status_type VARCHAR2 ) IS
4509 SELECT project_status_weight
4510 FROM pa_project_statuses
4511 WHERE project_status_code = c_status_code
4512 AND status_type = c_status_type;
4513 
4514 l_child_prog_cycle_id       number;  ---4701759, 4701727
4515 l_par_prog_cycle_id         number;
4516 l_sub_project_rec  c_get_sub_proj_rollup%ROWTYPE;
4517 l_parent_task_rec  c_get_par_task_rollup%ROWTYPE;
4518 l_task_weight_basis_code pa_proj_progress_attr.task_weight_basis_code%TYPE;
4519 L_BASE_STRUCT_VER_ID   NUMBER;
4520 
4521 l_remaining_effort1    NUMBER ;
4522 l_ETC_Cost_PC              NUMBER ;
4523 l_PPL_ETC_COST_PC          NUMBER ;
4524 l_EQPMT_ETC_COST_PC        NUMBER ;
4525 l_ETC_Cost_FC              NUMBER ;
4526 l_PPL_ETC_COST_FC          NUMBER ;
4527 l_EQPMT_ETC_COST_FC        NUMBER ;
4528 l_EQPMT_ETC_EFFORT         NUMBER ;
4529 l_OTH_ACT_COST_TO_DATE_PC  NUMBER ;
4530 l_PPL_ACT_COST_TO_DATE_PC  NUMBER ;
4531 l_EQPMT_ACT_COST_TO_DATE_PC NUMBER;
4532 l_OTH_ACT_COST_TO_DATE_FC  NUMBER ;
4533 l_PPL_ACT_COST_TO_DATE_FC  NUMBER ;
4534 l_EQPMT_ACT_COST_TO_DATE_FC NUMBER;
4535 l_PPL_ACT_EFFORT_TO_DATE   NUMBER ;
4536 l_EQPMT_ACT_EFFORT_TO_DATE NUMBER ;
4537 l_PERIOD_NAME              VARCHAR2(10);
4538 g1_debug_mode              VARCHAR2(1);
4539 l_OTH_ACT_RAWCOST_TO_DATE_PC         NUMBER;
4540 l_PPL_ACT_RAWCOST_TO_DATE_PC         NUMBER;
4541 l_EQPMT_ACT_RAWCOST_TO_DATE_PC       NUMBER;
4542 l_OTH_ACT_RAWCOST_TO_DATE_FC         NUMBER;
4543 l_PPL_ACT_RAWCOST_TO_DATE_FC         NUMBER;
4544 l_EQPMT_ACT_RAWCOST_TO_DATE_FC       NUMBER;
4545 l_ETC_RAWCost_PC                     NUMBER;
4546 l_PPL_ETC_RAWCOST_PC                 NUMBER;
4547 l_EQPMT_ETC_RAWCOST_PC               NUMBER;
4548 l_ETC_RAWCost_FC                     NUMBER;
4549 l_PPL_ETC_RAWCOST_FC                 NUMBER;
4550 l_EQPMT_ETC_RAWCOST_FC               NUMBER;
4551 l_LABOR_HOURS           NUMBER;
4552 l_EQUIPMENT_HOURS           NUMBER;
4553 l_POU_LABOR_BRDN_COST   NUMBER := null;
4554 l_PRJ_LABOR_BRDN_COST   NUMBER := null;
4555 l_POU_EQUIP_BRDN_COST   NUMBER := null;
4556 l_PRJ_EQUIP_BRDN_COST   NUMBER := null;
4557 l_POU_LABOR_RAW_COST    NUMBER := null;
4558 l_PRJ_LABOR_RAW_COST    NUMBER := null;
4559 l_POU_EQUIP_RAW_COST    NUMBER := null;
4560 l_PRJ_EQUIP_RAW_COST    NUMBER := null;
4561 l_POU_OTH_BRDN_COST     NUMBER := null;
4562 l_PRJ_OTH_BRDN_COST     NUMBER := null;
4563 l_POU_OTH_RAW_COST     NUMBER := null;
4564 l_PRJ_OTH_RAW_COST     NUMBER := null;
4565 l_current_flag         VARCHAR2(1);
4566 l_dummy VARCHAR2(1);
4567 l_parent_progress_status pa_progress_rollup.progress_status_code%TYPE;
4568 l_child_progress_status pa_progress_rollup.progress_status_code%TYPE;
4569 l_par_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4570 l_child_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4571 l_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4572 l_eff_rollup_progress_status pa_progress_rollup.progress_status_code%TYPE;
4573 l_actual_start_date DATE;
4574 l_actual_finish_date DATE;
4575 l_estimated_start_date DATE;
4576 l_estimated_finish_date DATE;
4577 --Added for bug 16230177
4578 cursor get_parent_max_asofdate(l_proj number, l_obj number) is
4579  select as_of_date
4580    from pa_progress_rollup
4581   where project_id = l_proj
4582     and object_id = l_obj
4583     and object_type = 'PA_TASKS'
4584     and structure_version_id is null
4585     and structure_type = 'WORKPLAN'
4586     and current_flag = 'Y';
4587 BEGIN
4588 
4589 --Open Question:
4590 --1. The parent Project progress record should go to the parent project cycle date.
4591 --As of now it is going with just passed as of date.
4592 --2.
4593     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4594 
4595         IF g1_debug_mode  = 'Y' THEN
4596                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4597         END IF;
4598 
4599         IF g1_debug_mode  = 'Y' THEN
4600                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
4601                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4602                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_ver_id='||p_structure_ver_id, x_Log_Level=> 3);
4603                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
4604                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4605         END IF;
4606 
4607     IF g1_debug_mode  = 'Y' THEN
4608                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4609         END IF;
4610 
4611         IF (p_commit = FND_API.G_TRUE) THEN
4612                 savepoint PROGRAM_ROLLUP_PVT2;
4613         END IF;
4614 
4615         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4616                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4617         END IF;
4618 
4619         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4620                 FND_MSG_PUB.initialize;
4621         END IF;
4622 
4623         x_return_status := FND_API.G_RET_STS_SUCCESS;
4624 
4625         -- Get the parent task of the project.
4626 
4627     IF p_structure_type <> 'WORKPLAN' THEN
4628         return;
4629     END IF;
4630 
4631         l_calling_module := p_calling_module;  ---4492493
4632 
4633         IF (l_calling_module = 'ASGMT_PLAN_CHANGE') then  --4492493
4634             l_calling_module := 'SELF_SERVICE';
4635         END IF;
4636 
4637         OPEN c1(p_project_id);
4638         ---4701759, 4701727
4639         OPEN c_get_task_weightage_method(p_project_id);
4640         FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_child_prog_cycle_id;
4641         CLOSE c_get_task_weightage_method;
4642     LOOP
4643              if ((p_calling_module = 'ASGMT_PLAN_CHANGE' and  NVL(PA_PROJ_TASK_STRUC_PUB.IS_WP_VERSIONING_ENABLED(l_c1rec.parent_project_id), 'N' ) = 'N') OR
4644                 (p_calling_module <> 'ASGMT_PLAN_CHANGE')) then  --4492493
4645             FETCH c1 INTO l_c1rec;
4646             EXIT WHEN c1%NOTFOUND;
4647 
4648             IF g1_debug_mode  = 'Y' THEN
4649                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_project_id='||l_c1rec.parent_project_id, x_Log_Level=> 3);
4650                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_task_id='||l_c1rec.parent_task_id, x_Log_Level=> 3);
4651                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_structure_ver_id='||l_c1rec.parent_structure_ver_id, x_Log_Level=> 3);
4652                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_c1rec.parent_task_version_id='||l_c1rec.parent_task_version_id, x_Log_Level=> 3);
4653             END IF;
4654 
4655             IF (p_structure_type = 'WORKPLAN') THEN
4656 
4657                 -- Bug 3807299 Program_rollup redesign
4658                 --l_base_prcnt_comp_drv_code    := null;
4659 
4660                 --OPEN c_get_parent_base_per_comp_der(l_c1rec.parent_project_id,l_c1rec.parent_task_id);
4661                 --FETCH c_get_parent_base_per_comp_der INTO l_base_prcnt_comp_drv_code,
4662                 --  l_parent_task_status;   --bug 4033869
4663                 --CLOSE c_get_parent_base_per_comp_der;
4664 
4665                 OPEN c_get_task_weightage_method(l_c1rec.parent_project_id);
4666                 FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_par_prog_cycle_id;
4667                 CLOSE c_get_task_weightage_method;
4668 		--Bug 16230177 changes start here
4669 		--Commented below code for AWE Performance bug 16230177
4670 
4671                 ---4701759, 4701727
4672                 /*if (l_child_prog_cycle_id <> l_par_prog_cycle_id) then
4673                     l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
4674                                            p_project_id => l_c1rec.parent_project_id
4675                                           ,p_task_id => l_c1rec.parent_task_id
4676                                           ,p_start_date => trunc(p_as_of_date)-1);
4677                 else
4678                     l_parent_as_of_date := trunc(p_as_of_date);
4679                 end if;*/
4680 		--Forward ported 11i changes
4681 		open get_parent_max_asofdate(l_c1rec.parent_project_id,l_c1rec.parent_task_id);
4682 	        fetch get_parent_max_asofdate into l_parent_as_of_date;
4683 		close get_parent_max_asofdate;
4684 		if (l_parent_as_of_date is null or l_parent_as_of_date < p_as_of_date) then
4685 		    l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
4686 					   p_project_id => l_c1rec.parent_project_id
4687 					  ,p_task_id => l_c1rec.parent_task_id
4688 					  ,p_start_date => trunc(p_as_of_date)-1);
4689                 end if;
4690                 --Bug 16230177 changes end here
4691 
4692                 IF g1_debug_mode  = 'Y' THEN
4693                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_task_weight_basis_code='||l_task_weight_basis_code, x_Log_Level=> 3);
4694                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_as_of_date='||l_parent_as_of_date, x_Log_Level=> 3);
4695                 END IF;
4696 
4697                 -- 4586449 : This is not related to this but but putting this fix with this bug.
4698                 -- In this API we earlier decided that we do not need to call PJI temp table
4699                 -- population, because update_progress_bulk or get_summarized_actuals have already
4700                 -- populated it for the entire hierarchy upwards for the given p_as_of_date.
4701                 -- But note that program project next cycle date  might be ahead than the passed p_as_of_date.
4702                 -- In this case, we will get wrong data for program. So we need to populate it here too..
4703 
4704                 IF l_parent_as_of_date > p_as_of_date THEN
4705                     pa_progress_pub.populate_pji_tab_for_plan(
4706                             p_init_msg_list     => FND_API.G_FALSE
4707                             ,p_commit       => FND_API.G_FALSE
4708                             ,p_calling_module   => l_calling_module
4709                             ,p_project_id       => l_c1rec.parent_project_id
4710                             ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4711                             ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(l_c1rec.parent_project_id)
4712                             ,p_structure_type       => 'WORKPLAN'
4713                             ,p_program_rollup_flag  => 'Y'
4714                             ,p_calling_context  => 'SUMMARIZE'
4715                             ,p_as_of_date       => l_parent_as_of_date
4716                             ,x_return_status        => x_return_status
4717                             ,x_msg_count            => x_msg_count
4718                             ,x_msg_data             => x_msg_data);
4719 
4720                     IF x_return_status <> 'S' THEN
4721                         RAISE FND_API.G_EXC_ERROR;
4722                     END IF;
4723                 END IF;
4724 
4725                 /* Bug 4392189 : Now Rollup API will take care of everything. No need to do anything here
4726 
4727                 -- Amit : Reducing the scope of this IF condition as COST or EFFORT should rollup even
4728                 -- if task derivation method is other than COST or EFFORT
4729                 --IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
4730                 --THEN
4731                 -- Calculating BCWP.
4732                 l_sub_project_rec := null;
4733 
4734                 OPEN c_get_sub_proj_rollup;
4735                 FETCH c_get_sub_proj_rollup INTO l_sub_project_rec;
4736                 CLOSE c_get_sub_proj_rollup;
4737 
4738                 l_parent_task_rec := null;
4739 
4740                 OPEN c_get_par_task_rollup(l_c1rec.parent_task_id, l_c1rec.parent_project_id);
4741                 FETCH c_get_par_task_rollup INTO l_parent_task_rec;
4742                 CLOSE c_get_par_task_rollup;
4743 
4744                                 --bug 4033869
4745                 -- Get sub project plan in terms of derivation method of parent task
4746                 l_pln_sub_project := pa_progress_utils.Get_BAC_Value(p_project_id => p_project_id
4747                                  ,p_task_weight_method => l_base_prcnt_comp_drv_code
4748                                  ,p_proj_element_id => l_sub_project_rec.object_id
4749                                  ,p_structure_version_id => p_structure_ver_id
4750                                  ,p_structure_type => 'WORKPLAN');
4751                                 --l_pln_parent_task_self
4752                 --get the plan version id of the parent structure ver id.
4753                 IF g1_debug_mode  = 'Y' THEN
4754                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_pln_sub_project='||l_pln_sub_project, x_Log_Level=> 3);
4755                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Before calling Pa_Fp_wp_gen_amt_utils.get_wp_version_id', x_Log_Level=> 3);
4756                 END IF;
4757 
4758                 BEGIN
4759                     l_parent_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
4760                                                       p_project_id => l_c1rec.parent_project_id,
4761                                                       p_plan_type_id => -1,
4762                                                       p_proj_str_ver_id => l_c1rec.parent_structure_ver_id) ;
4763                                 EXCEPTION
4764                     WHEN OTHERS THEN
4765                         fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4766                         p_procedure_name => 'PROGRAM_ROLLUP_PVT',
4767                         p_error_text => SUBSTRB('Call of PA_FP_WP_GEN_AMT_UTILS.GET_WP_VERSION_ID Failed: SQLERRM'||SQLERRM,1,120));
4768                         RAISE FND_API.G_EXC_ERROR;
4769                                 END;
4770 
4771                 IF g1_debug_mode  = 'Y' THEN
4772                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_plan_version_id='||l_parent_plan_version_id, x_Log_Level=> 3);
4773                 END IF;
4774 
4775                 --if l_base_prcnt_comp_drv_code is COST then select self planned COST for parent task in l_pln_parent_task_self
4776                 --if l_base_prcnt_comp_drv_code is EFFORT then select self planned EFFORT for parent task in l_pln_parent_task_self
4777 
4778                 OPEN cur_self_planned ( l_c1rec.parent_project_id, l_c1rec.parent_task_id,
4779                                                        l_parent_plan_version_id, l_base_prcnt_comp_drv_code);
4780                                 FETCH cur_self_planned INTO l_pln_parent_task_self;
4781                 CLOSE cur_self_planned;
4782                                 --End bug 4033869
4783 
4784                 IF g1_debug_mode  = 'Y' THEN
4785                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_pln_parent_task_self='||l_pln_parent_task_self, x_Log_Level=> 3);
4786                 END IF;
4787 
4788                 IF l_parent_task_rec.project_id IS NOT NULL THEN
4789                     IF g1_debug_mode  = 'Y' THEN
4790                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Update U', x_Log_Level=> 3);
4791                     END IF;
4792 
4793                     l_mode := 'U';
4794 
4795                                         --l_bcwp := nvl(l_parent_task_rec.earned_value,0) + nvl(l_sub_project_rec.earned_value,0);
4796                     l_bcwp :=nvl((nvl(l_parent_task_rec.completed_percentage,l_parent_task_rec.eff_rollup_percent_comp)*l_pln_parent_task_self)/100,0) + --bug 4033869 nvl(l_parent_task_rec.earned_value,0)
4797                              nvl((nvl(l_sub_project_rec.completed_percentage,l_sub_project_rec.eff_rollup_percent_comp)*l_pln_sub_project)/100,0); --bug 4033869
4798                     --l_eff_rollup_prcnt_comp := l_parent_task_rec.eff_rollup_percent_comp;
4799 
4800                     IF g1_debug_mode  = 'Y' THEN
4801                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.completed_percentage='||l_parent_task_rec.completed_percentage, x_Log_Level=> 3);
4802                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.eff_rollup_percent_comp='||l_parent_task_rec.eff_rollup_percent_comp, x_Log_Level=> 3);
4803                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.as_of_date='||l_parent_task_rec.as_of_date, x_Log_Level=> 3);
4804                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.completed_percentage='||l_sub_project_rec.completed_percentage, x_Log_Level=> 3);
4805                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.eff_rollup_percent_comp='||l_sub_project_rec.eff_rollup_percent_comp, x_Log_Level=> 3);
4806                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.as_of_date='||l_sub_project_rec.as_of_date, x_Log_Level=> 3);
4807                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4808                     END IF;
4809 
4810 
4811                     IF PA_PROGRESS_UTILS.get_system_task_status(l_parent_task_status) NOT IN ( 'CANCELLED', 'ON_HOLD', 'COMPLETED' )
4812                     --bug 4033869 If parent is ON-HOLD, CANCELLED or COMPLETED then do not rollup any progress attributes.
4813                     THEN
4814                         --l_parent_progress_status := nvl(l_parent_task_rec.PROGRESS_STATUS_CODE, l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE);
4815                         --l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4816                         l_parent_progress_status := l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE;
4817                         l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4818 
4819                         IF g1_debug_mode  = 'Y' THEN
4820                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_progress_status='||l_parent_progress_status, x_Log_Level=> 3);
4821                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_child_progress_status='||l_child_progress_status, x_Log_Level=> 3);
4822                         END IF;
4823 
4824                         IF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NOT NULL THEN
4825                             OPEN cur_get_status_weight(l_parent_progress_status, 'PROGRESS');
4826                             FETCH cur_get_status_weight INTO l_par_progress_status_weight;
4827                             CLOSE cur_get_status_weight;
4828 
4829                             OPEN cur_get_status_weight(l_child_progress_status, 'PROGRESS');
4830                             FETCH cur_get_status_weight INTO l_child_progress_status_weight;
4831                             CLOSE cur_get_status_weight;
4832 
4833                             SELECT GREATEST(l_par_progress_status_weight, l_child_progress_status_weight)
4834                             INTO l_progress_status_weight
4835                             FROM DUAL;
4836 
4837                             IF g1_debug_mode  = 'Y' THEN
4838                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_par_progress_status_weight='||l_par_progress_status_weight, x_Log_Level=> 3);
4839                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_child_progress_status_weight='||l_child_progress_status_weight, x_Log_Level=> 3);
4840                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_progress_status_weight='||l_progress_status_weight, x_Log_Level=> 3);
4841                             END IF;
4842 
4843                             OPEN cur_get_status(l_progress_status_weight, 'PROGRESS');
4844                             FETCH cur_get_status INTO l_eff_rollup_progress_status;
4845                             CLOSE cur_get_status;
4846 
4847                             IF l_eff_rollup_progress_status IS NULL THEN
4848                                 l_eff_rollup_progress_status := l_parent_progress_status;
4849                             END IF;
4850                         ELSIF l_parent_progress_status IS NULL AND l_child_progress_status IS NOT NULL THEN
4851                             l_eff_rollup_progress_status := l_child_progress_status;
4852                         ELSIF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NULL THEN
4853                             l_eff_rollup_progress_status := l_parent_progress_status;
4854                         ELSE
4855                             l_eff_rollup_progress_status := null;
4856                         END IF;
4857 
4858                         IF g1_debug_mode  = 'Y' THEN
4859                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_eff_rollup_progress_status='||l_eff_rollup_progress_status, x_Log_Level=> 3);
4860                         END IF;
4861 
4862 
4863                         IF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4864                             SELECT LEAST(l_sub_project_rec.ACTUAL_START_DATE, l_parent_task_rec.ACTUAL_START_DATE)
4865                             INTO l_actual_start_date
4866                             FROM DUAL;
4867                         ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4868                             l_actual_start_date := l_parent_task_rec.ACTUAL_START_DATE;
4869                         ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NULL THEN
4870                             l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4871                         ELSE
4872                             l_actual_start_date := null;
4873                         END IF;
4874 
4875                         IF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4876                             SELECT GREATEST(l_sub_project_rec.ACTUAL_FINISH_DATE, l_parent_task_rec.ACTUAL_FINISH_DATE)
4877                             INTO l_actual_finish_date
4878                             FROM DUAL;
4879                         ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4880                             l_actual_finish_date := l_parent_task_rec.ACTUAL_FINISH_DATE;
4881                         ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NULL THEN
4882                             l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4883                         ELSE
4884                             l_actual_finish_date := null;
4885                         END IF;
4886 
4887                         IF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4888                             SELECT LEAST(l_sub_project_rec.ESTIMATED_START_DATE, l_parent_task_rec.ESTIMATED_START_DATE)
4889                             INTO l_estimated_start_date
4890                             FROM DUAL;
4891                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4892                             l_estimated_start_date := l_parent_task_rec.ESTIMATED_START_DATE;
4893                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NULL THEN
4894                             l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4895                         ELSE
4896                             l_estimated_start_date := null;
4897                         END IF;
4898 
4899                         IF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4900                             SELECT GREATEST(l_sub_project_rec.ESTIMATED_FINISH_DATE, l_parent_task_rec.ESTIMATED_FINISH_DATE)
4901                             INTO l_estimated_finish_date
4902                             FROM DUAL;
4903                         ELSIF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4904                             l_estimated_finish_date := l_parent_task_rec.ESTIMATED_FINISH_DATE;
4905                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NULL THEN
4906                             l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4907                         ELSE
4908                             l_estimated_finish_date := null;
4909                         END IF;
4910 
4911                         IF g1_debug_mode  = 'Y' THEN
4912                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_actual_start_date='||l_actual_start_date, x_Log_Level=> 3);
4913                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_actual_finish_date='||l_actual_finish_date, x_Log_Level=> 3);
4914                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_estimated_start_date='||l_estimated_start_date, x_Log_Level=> 3);
4915                             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_estimated_finish_date='||l_estimated_finish_date, x_Log_Level=> 3);
4916                         END IF;
4917 
4918                     -- For Task Status Rollup, we can use PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS
4919                     -- First we need to confirm that whether we are inserting/updating in PPC table
4920                     END IF;  --PA_PROGRESS_UTILS.get_system_task_status bug 4033869
4921                 ELSE
4922                     IF g1_debug_mode  = 'Y' THEN
4923                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Insert I', x_Log_Level=> 3);
4924                     END IF;
4925 
4926                                         l_mode := 'I';
4927                     l_bcwp := nvl((nvl(l_sub_project_rec.completed_percentage,l_sub_project_rec.eff_rollup_percent_comp)*l_pln_sub_project)/100,0); --bug 4033869
4928                     l_eff_rollup_prcnt_comp := null;
4929                     l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4930                     l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4931                     l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4932                     l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4933                     --task status can not rollup as we are not creating records in percent complete table
4934                     --l_task_status :=
4935                     l_eff_rollup_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4936                 END IF;
4937 
4938                 IF g1_debug_mode  = 'Y' THEN
4939                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_parent_task_rec.earned_value='||l_parent_task_rec.earned_value, x_Log_Level=> 3);
4940                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_sub_project_rec.earned_value='||l_sub_project_rec.earned_value, x_Log_Level=> 3);
4941                 END IF;
4942                 */
4943 
4944 
4945                 /* Bug 4392189 : No need to call populate_pji_tab_for_plan for parnet here.
4946                  The temp table will be having data up in the complete hierrachy of program
4947                 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_c1rec.parent_project_id);
4948 
4949                 pa_progress_pub.populate_pji_tab_for_plan(
4950                     p_init_msg_list => 'F',
4951                     p_calling_module => l_calling_module,
4952                     p_project_id   => l_c1rec.parent_project_id,
4953                     p_structure_version_id => l_c1rec.parent_structure_ver_id,
4954                     p_baselined_str_ver_id => l_base_struct_ver_id,
4955                     p_structure_type => 'WORKPLAN',
4956                     x_return_status => x_return_status,
4957                     x_msg_count     =>  x_msg_count,
4958                     x_msg_data      =>  x_msg_data);
4959 
4960                 IF x_return_status <> 'S' THEN
4961                     RAISE FND_API.G_EXC_ERROR;
4962                 END IF;
4963                 */
4964                 /*
4965 
4966                 l_pln_parent_task := pa_progress_utils.Get_BAC_Value(p_project_id => l_c1rec.parent_project_id
4967                                  ,p_task_weight_method => l_base_prcnt_comp_drv_code
4968                                  ,p_proj_element_id => l_c1rec.parent_task_id
4969                                  ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4970                                  ,p_structure_type => 'WORKPLAN');
4971 
4972 
4973                                 --parent plan includes child plan. --bug 4033869
4974                                 l_bac := nvl(l_pln_parent_task,0);
4975 
4976                 IF g1_debug_mode  = 'Y' THEN
4977                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4978                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bac='||l_bac, x_Log_Level=> 3);
4979                 END IF;
4980 
4981                                 -- Calculating rollup percent_complete.
4982                 IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT') THEN
4983                     IF (l_bac > 0) THEN
4984                         l_eff_rollup_prcnt_comp := (l_bcwp/l_bac) * 100;
4985                     ELSE
4986                         l_eff_rollup_prcnt_comp := NULL;
4987                     END IF;
4988                 END IF;
4989 
4990                 IF g1_debug_mode  = 'Y' THEN
4991                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_eff_rollup_prcnt_comp='||l_eff_rollup_prcnt_comp, x_Log_Level=> 3);
4992                 END IF;
4993 
4994 
4995                 BEGIN
4996                                        SELECT
4997                 */
4998                         /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
4999                 /*
5000                            PERIOD_NAME
5001                                              , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
5002                                              , ACT_PRJ_LABOR_BRDN_COST
5003                                              , ACT_PRJ_EQUIP_BRDN_COST
5004                                              , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
5005                                              , ACT_POU_LABOR_BRDN_COST
5006                                              , ACT_POU_EQUIP_BRDN_COST
5007                                              , ACT_LABOR_HRS
5008                                              , ACT_EQUIP_HRS
5009                                              , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
5010                                              , ETC_PRJ_LABOR_BRDN_COST
5011                                              , ETC_PRJ_EQUIP_BRDN_COST
5012                                              , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
5013                                              , ETC_POU_LABOR_BRDN_COST
5014                                              , ETC_POU_EQUIP_BRDN_COST
5015                                              , ETC_LABOR_HRS
5016                                              , ETC_EQUIP_HRS
5017                                              , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
5018                                              , ACT_PRJ_LABOR_RAW_COST
5019                                              , ACT_PRJ_EQUIP_RAW_COST
5020                                              , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
5021                                              , ACT_POU_LABOR_RAW_COST
5022                                              , ACT_POU_EQUIP_RAW_COST
5023                                              , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
5024                                              , ETC_PRJ_LABOR_RAW_COST
5025                                              , ETC_PRJ_EQUIP_RAW_COST
5026                                              , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
5027                                              , ETC_POU_LABOR_RAW_COST
5028                                              , ETC_POU_EQUIP_RAW_COST
5029                          , LABOR_HOURS
5030                          , EQUIPMENT_HOURS
5031                              , POU_LABOR_BRDN_COST
5032                          , PRJ_LABOR_BRDN_COST
5033                              , POU_EQUIP_BRDN_COST
5034                          , PRJ_EQUIP_BRDN_COST
5035                          , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
5036                                              , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
5037                                              , POU_LABOR_RAW_COST
5038                                              , PRJ_LABOR_RAW_COST
5039                                              , POU_EQUIP_RAW_COST
5040                                              , PRJ_EQUIP_RAW_COST
5041                                              , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
5042                                              , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
5043                                         INTO   l_PERIOD_NAME
5044                                              , l_OTH_ACT_COST_TO_DATE_PC
5045                                              , l_PPL_ACT_COST_TO_DATE_PC
5046                                              , l_EQPMT_ACT_COST_TO_DATE_PC
5047                                              , l_OTH_ACT_COST_TO_DATE_FC
5048                                              , l_PPL_ACT_COST_TO_DATE_FC
5049                                              , l_EQPMT_ACT_COST_TO_DATE_FC
5050                                              , l_PPL_ACT_EFFORT_TO_DATE
5051                                              , l_EQPMT_ACT_EFFORT_TO_DATE
5052                                              , l_ETC_Cost_PC
5053                                              , l_PPL_ETC_COST_PC
5054                                              , l_EQPMT_ETC_COST_PC
5055                                              , l_ETC_Cost_FC
5056                                              , l_PPL_ETC_COST_FC
5057                                              , l_EQPMT_ETC_COST_FC
5058                                              , l_remaining_effort1
5059                                              , l_EQPMT_ETC_EFFORT
5060                                              , l_OTH_ACT_RAWCOST_TO_DATE_PC
5061                                              , l_PPL_ACT_RAWCOST_TO_DATE_PC
5062                                              , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5063                                              , l_OTH_ACT_RAWCOST_TO_DATE_FC
5064                                              , l_PPL_ACT_RAWCOST_TO_DATE_FC
5065                                              , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5066                                              , l_ETC_RAWCost_PC
5067                                              , l_PPL_ETC_RAWCOST_PC
5068                                              , l_EQPMT_ETC_RAWCOST_PC
5069                                              , l_ETC_RAWCost_FC
5070                                              , l_PPL_ETC_RAWCOST_FC
5071                                              , l_EQPMT_ETC_RAWCOST_FC
5072                          , l_LABOR_HOURS
5073                          , l_EQUIPMENT_HOURS
5074                                              , l_POU_LABOR_BRDN_COST
5075                                              , l_PRJ_LABOR_BRDN_COST
5076                                              , l_POU_EQUIP_BRDN_COST
5077                                              , l_PRJ_EQUIP_BRDN_COST
5078                          , l_POU_OTH_BRDN_COST
5079                          , l_PRJ_OTH_BRDN_COST
5080                          , l_POU_LABOR_RAW_COST
5081                          , l_PRJ_LABOR_RAW_COST
5082                          , l_POU_EQUIP_RAW_COST
5083                          , l_PRJ_EQUIP_RAW_COST
5084                          , l_POU_OTH_RAW_COST
5085                          , l_PRJ_OTH_RAW_COST
5086                                          FROM PJI_FM_XBS_ACCUM_TMP1
5087                                          WHERE project_id = l_c1rec.parent_project_id
5088                                          AND struct_version_id = l_c1rec.parent_structure_ver_id
5089                                          AND project_element_id = l_c1rec.parent_task_id
5090                                          AND plan_version_id > 0
5091                                          AND txn_currency_code is null
5092                                          AND calendar_type = 'A'
5093                                          AND res_list_member_id is null;
5094                                 EXCEPTION
5095                                          WHEN NO_DATA_FOUND THEN
5096                                               null;
5097                                          WHEN OTHERS THEN
5098                                               fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5099                                                                    p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5100                                                                    p_error_text     => SUBSTRB('Select from PJI_FM_XBS_ACCUM_TMP1 Failed: SQLERRM'||SQLERRM,1,120));
5101                                              RAISE FND_API.G_EXC_ERROR;
5102                 END;
5103 
5104 
5105                 IF g1_debug_mode  = 'Y' THEN
5106                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC='||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
5107                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE='||l_PPL_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
5108                 END IF;
5109 
5110 
5111                 -- Rollup the attributes from the structure progress record into parent task record
5112                 IF l_mode = 'U' THEN
5113 
5114                     l_parent_as_of_date := l_parent_task_rec.AS_OF_DATE;   --bug 4033869
5115 
5116                     PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
5117                     X_PROGRESS_ROLLUP_ID            =>      l_parent_task_rec.PROGRESS_ROLLUP_ID
5118                     ,X_PROJECT_ID                   =>      l_parent_task_rec.PROJECT_ID
5119                     ,X_OBJECT_ID                    =>      l_parent_task_rec.OBJECT_ID
5120                     ,X_OBJECT_TYPE                  =>      l_parent_task_rec.OBJECT_TYPE
5121                     ,X_AS_OF_DATE                   =>      l_parent_task_rec.AS_OF_DATE
5122                     ,X_OBJECT_VERSION_ID            =>      l_parent_task_rec.OBJECT_VERSION_ID
5123                     ,X_LAST_UPDATE_DATE             =>      sysdate
5124                     ,X_LAST_UPDATED_BY              =>      l_user_id
5125                     ,X_PROGRESS_STATUS_CODE         =>      l_parent_task_rec.PROGRESS_STATUS_CODE
5126                     ,X_LAST_UPDATE_LOGIN            =>      l_login_id
5127                     ,X_INCREMENTAL_WORK_QTY         =>      l_parent_task_rec.INCREMENTAL_WORK_QUANTITY
5128                     ,X_CUMULATIVE_WORK_QTY          =>      l_parent_task_rec.CUMULATIVE_WORK_QUANTITY
5129                     ,X_BASE_PERCENT_COMPLETE        =>      l_parent_task_rec.BASE_PERCENT_COMPLETE
5130                     ,X_EFF_ROLLUP_PERCENT_COMP      =>      l_eff_rollup_prcnt_comp
5131                     ,X_COMPLETED_PERCENTAGE         =>      l_parent_task_rec.COMPLETED_PERCENTAGE
5132                     ,X_ESTIMATED_START_DATE         =>      l_estimated_start_date -- l_parent_task_rec.ESTIMATED_START_DATE
5133                     ,X_ESTIMATED_FINISH_DATE        =>      l_estimated_finish_date -- l_parent_task_rec.ESTIMATED_FINISH_DATE
5134                     ,X_ACTUAL_START_DATE            =>      l_actual_start_date --l_parent_task_rec.ACTUAL_START_DATE
5135                     ,X_ACTUAL_FINISH_DATE           =>      l_actual_finish_date -- l_parent_task_rec.ACTUAL_FINISH_DATE
5136                     ,X_EST_REMAINING_EFFORT         =>      l_remaining_effort1
5137                     ,X_BASE_PERCENT_COMP_DERIV_CODE =>      l_parent_task_rec.BASE_PERCENT_COMP_DERIV_CODE
5138                     ,X_BASE_PROGRESS_STATUS_CODE    =>      l_parent_task_rec.BASE_PROGRESS_STATUS_CODE
5139                     ,X_EFF_ROLLUP_PROG_STAT_CODE    =>      l_eff_rollup_progress_status--l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE
5140                     ,X_RECORD_VERSION_NUMBER        =>      l_parent_task_rec.RECORD_VERSION_NUMBER
5141                     ,X_percent_complete_id          =>      l_parent_task_rec.percent_complete_id
5142                     ,X_STRUCTURE_TYPE               =>      l_parent_task_rec.STRUCTURE_TYPE
5143                     ,X_PROJ_ELEMENT_ID              =>      l_parent_task_rec.PROJ_ELEMENT_ID
5144                     ,X_STRUCTURE_VERSION_ID         =>      l_parent_task_rec.STRUCTURE_VERSION_ID
5145                     ,X_PPL_ACT_EFFORT_TO_DATE       =>      l_PPL_ACT_EFFORT_TO_DATE
5146                     ,X_EQPMT_ACT_EFFORT_TO_DATE     =>      l_EQPMT_ACT_EFFORT_TO_DATE
5147                     ,X_EQPMT_ETC_EFFORT             =>      l_EQPMT_ETC_EFFORT
5148                     ,X_OTH_ACT_COST_TO_DATE_TC      =>      l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5149                     ,X_OTH_ACT_COST_TO_DATE_FC      =>      l_OTH_ACT_COST_TO_DATE_FC
5150                     ,X_OTH_ACT_COST_TO_DATE_PC      =>      l_OTH_ACT_COST_TO_DATE_PC
5151                     ,X_OTH_ETC_COST_TC              =>      l_parent_task_rec.OTH_ETC_COST_TC
5152                     ,X_OTH_ETC_COST_FC              =>      l_ETC_Cost_FC
5153                     ,X_OTH_ETC_COST_PC              =>      l_ETC_Cost_PC
5154                     ,X_PPL_ACT_COST_TO_DATE_TC      =>      l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5155                     ,X_PPL_ACT_COST_TO_DATE_FC      =>      l_PPL_ACT_COST_TO_DATE_FC
5156                     ,X_PPL_ACT_COST_TO_DATE_PC      =>      l_PPL_ACT_COST_TO_DATE_PC
5157                     ,X_PPL_ETC_COST_TC              =>      l_parent_task_rec.PPL_ETC_COST_TC
5158                     ,X_PPL_ETC_COST_FC              =>      l_PPL_ETC_COST_FC
5159                     ,X_PPL_ETC_COST_PC              =>      l_PPL_ETC_COST_PC
5160                     ,X_EQPMT_ACT_COST_TO_DATE_TC    =>      l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5161                     ,X_EQPMT_ACT_COST_TO_DATE_FC    =>      l_EQPMT_ACT_COST_TO_DATE_FC
5162                     ,X_EQPMT_ACT_COST_TO_DATE_PC    =>      l_EQPMT_ACT_COST_TO_DATE_PC
5163                     ,X_EQPMT_ETC_COST_TC            =>      l_parent_task_rec.EQPMT_ETC_COST_TC
5164                     ,X_EQPMT_ETC_COST_FC            =>      l_EQPMT_ETC_COST_FC
5165                     ,X_EQPMT_ETC_COST_PC            =>      l_EQPMT_ETC_COST_PC
5166                     ,X_EARNED_VALUE                 =>      l_bcwp
5167                     ,X_TASK_WT_BASIS_CODE           =>      l_parent_task_rec.TASK_WT_BASIS_CODE
5168                     ,X_SUBPRJ_PPL_ACT_EFFORT        =>      null
5169                     ,X_SUBPRJ_EQPMT_ACT_EFFORT      =>      null
5170                     ,X_SUBPRJ_PPL_ETC_EFFORT        =>      null
5171                     ,X_SUBPRJ_EQPMT_ETC_EFFORT      =>      null
5172                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC =>      null
5173                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC =>      null
5174                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC =>      null
5175                     ,X_SUBPRJ_PPL_ACT_COST_TC       =>      null
5176                     ,X_SUBPRJ_PPL_ACT_COST_FC       =>      null
5177                     ,X_SUBPRJ_PPL_ACT_COST_PC       =>      null
5178                     ,X_SUBPRJ_EQPMT_ACT_COST_TC     =>      null
5179                     ,X_SUBPRJ_EQPMT_ACT_COST_FC     =>      null
5180                     ,X_SUBPRJ_EQPMT_ACT_COST_PC     =>      null
5181                     ,X_SUBPRJ_OTH_ETC_COST_TC       =>      null
5182                     ,X_SUBPRJ_OTH_ETC_COST_FC       =>      null
5183                     ,X_SUBPRJ_OTH_ETC_COST_PC       =>      null
5184                     ,X_SUBPRJ_PPL_ETC_COST_TC       =>      null
5185                     ,X_SUBPRJ_PPL_ETC_COST_FC       =>      null
5186                     ,X_SUBPRJ_PPL_ETC_COST_PC       =>      null
5187                     ,X_SUBPRJ_EQPMT_ETC_COST_TC     =>      null
5188                     ,X_SUBPRJ_EQPMT_ETC_COST_FC     =>      null
5189                     ,X_SUBPRJ_EQPMT_ETC_COST_PC     =>      null
5190                     ,X_SUBPRJ_EARNED_VALUE          =>      null
5191                     ,X_CURRENT_FLAG                 =>      l_parent_task_rec.CURRENT_FLAG
5192                     ,X_PROJFUNC_COST_RATE_TYPE      =>      l_parent_task_rec.PROJFUNC_COST_RATE_TYPE
5193                     ,X_PROJFUNC_COST_EXCHANGE_RATE  =>      l_parent_task_rec.PROJFUNC_COST_EXCHANGE_RATE
5194                     ,X_PROJFUNC_COST_RATE_DATE      =>      l_parent_task_rec.PROJFUNC_COST_RATE_DATE
5195                     ,X_PROJ_COST_RATE_TYPE          =>      l_parent_task_rec.PROJ_COST_RATE_TYPE
5196                     ,X_PROJ_COST_EXCHANGE_RATE      =>      l_parent_task_rec.PROJ_COST_EXCHANGE_RATE
5197                     ,X_PROJ_COST_RATE_DATE          =>      l_parent_task_rec.PROJ_COST_RATE_DATE
5198                     ,X_TXN_CURRENCY_CODE            =>      l_parent_task_rec.TXN_CURRENCY_CODE
5199                     ,X_PROG_PA_PERIOD_NAME          =>      l_parent_task_rec.PROG_PA_PERIOD_NAME
5200                     ,X_PROG_GL_PERIOD_NAME          =>      l_parent_task_rec.PROG_GL_PERIOD_NAME
5201                     ,X_OTH_QUANTITY_TO_DATE         =>      l_parent_task_rec.oth_quantity_to_date
5202                     ,X_OTH_ETC_QUANTITY             =>      l_parent_task_rec.oth_etc_quantity
5203                     ,X_OTH_ACT_RAWCOST_TO_DATE_TC   =>  l_parent_task_rec.OTH_ACT_RAWCOST_TO_DATE_TC
5204                     ,X_OTH_ACT_RAWCOST_TO_DATE_FC   =>  l_OTH_ACT_RAWCOST_TO_DATE_FC
5205                     ,X_OTH_ACT_RAWCOST_TO_DATE_PC   =>  l_OTH_ACT_RAWCOST_TO_DATE_PC
5206                     ,X_OTH_ETC_RAWCOST_TC       =>  l_parent_task_rec.OTH_ETC_RAWCOST_TC
5207                     ,X_OTH_ETC_RAWCOST_FC       =>  l_ETC_RAWCost_FC
5208                     ,X_OTH_ETC_RAWCOST_PC       =>  l_ETC_RAWCost_PC
5209                     ,X_PPL_ACT_RAWCOST_TO_DATE_TC   =>  l_parent_task_rec.PPL_ACT_RAWCOST_TO_DATE_TC
5210                     ,X_PPL_ACT_RAWCOST_TO_DATE_FC   =>  l_PPL_ACT_RAWCOST_TO_DATE_FC
5211                     ,X_PPL_ACT_RAWCOST_TO_DATE_PC   =>  l_PPL_ACT_RAWCOST_TO_DATE_PC
5212                     ,X_PPL_ETC_RAWCOST_TC       =>  l_parent_task_rec.PPL_ETC_RAWCOST_TC
5213                     ,X_PPL_ETC_RAWCOST_FC       =>  l_PPL_ETC_RAWCOST_FC
5214                     ,X_PPL_ETC_RAWCOST_PC       =>  l_PPL_ETC_RAWCOST_PC
5215                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC =>  l_parent_task_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC
5216                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC =>  l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5217                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC =>  l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5218                     ,X_EQPMT_ETC_RAWCOST_TC     =>  l_parent_task_rec.EQPMT_ETC_RAWCOST_TC
5219                     ,X_EQPMT_ETC_RAWCOST_FC     =>  l_EQPMT_ETC_RAWCOST_FC
5220                     ,X_EQPMT_ETC_RAWCOST_PC     =>  l_EQPMT_ETC_RAWCOST_PC
5221                     ,X_SP_OTH_ACT_RAWCOST_TODATE_TC =>  null
5222                     ,X_SP_OTH_ACT_RAWCOST_TODATE_FC =>  null
5223                     ,X_SP_OTH_ACT_RAWCOST_TODATE_PC =>  null
5224                     ,X_SUBPRJ_PPL_ACT_RAWCOST_TC    =>  null
5225                     ,X_SUBPRJ_PPL_ACT_RAWCOST_FC    =>  null
5226                     ,X_SUBPRJ_PPL_ACT_RAWCOST_PC    =>  null
5227                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC  =>  null
5228                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC  =>  null
5229                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC  =>  null
5230                     ,X_SUBPRJ_OTH_ETC_RAWCOST_TC    =>  null
5231                     ,X_SUBPRJ_OTH_ETC_RAWCOST_FC    =>  null
5232                     ,X_SUBPRJ_OTH_ETC_RAWCOST_PC    =>  null
5233                     ,X_SUBPRJ_PPL_ETC_RAWCOST_TC    =>  null
5234                     ,X_SUBPRJ_PPL_ETC_RAWCOST_FC    =>  null
5235                     ,X_SUBPRJ_PPL_ETC_RAWCOST_PC    =>  null
5236                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC  =>  null
5237                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC  =>  null
5238                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC  =>  null
5239                     );
5240 
5241                     -- FPM Dev CR 6
5242                     IF Fnd_Msg_Pub.count_msg > 0 THEN
5243                         RAISE  FND_API.G_EXC_ERROR;
5244                     END IF;
5245                   ELSE -- IF l_mode = 'U' THEN
5246                       BEGIN
5247                         SELECT 'X'
5248                         INTO l_dummy
5249                         FROM pa_progress_rollup
5250                         WHERE project_id =  l_c1rec.parent_project_id
5251                         AND object_id = l_c1rec.parent_task_id
5252                         AND object_type = 'PA_TASKS'
5253                         AND structure_type = 'WORKPLAN'
5254                         AND structure_version_id is NULL
5255                         AND trunc(as_of_date) > p_as_of_date
5256                         AND current_flag = 'Y';
5257 
5258                         l_current_flag := 'N';
5259                       EXCEPTION
5260                         WHEN NO_DATA_FOUND THEN
5261                             l_current_flag := 'Y';
5262 
5263                         UPDATE pa_progress_rollup
5264                         SET current_flag = 'N'
5265                         WHERE project_id =  l_c1rec.parent_project_id
5266                         AND object_id = l_c1rec.parent_task_id
5267                         AND object_type = 'PA_TASKS'
5268                         AND structure_type = 'WORKPLAN'
5269                         AND structure_version_id is NULL
5270                         AND current_flag = 'Y';
5271                       END;
5272                       --bug 4033869
5273                                           --derive as of date for parent task relative to p_as_of_date
5274                       l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
5275                                                      p_project_id => l_c1rec.parent_project_id
5276                                                     ,p_task_id => l_c1rec.parent_task_id
5277                                                     ,p_start_date => p_as_of_date);
5278                       --End bug 4033869
5279                       PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5280                            X_PROGRESS_ROLLUP_ID              => l_progress_rollup_id
5281                           ,X_PROJECT_ID                      => l_c1rec.parent_project_id
5282                           ,X_OBJECT_ID                       => l_c1rec.parent_task_id
5283                           ,X_OBJECT_TYPE                     => 'PA_TASKS'
5284                           ,X_AS_OF_DATE                      => l_parent_as_of_date    --bug 4033869
5285                           ,X_OBJECT_VERSION_ID               => l_c1rec.parent_task_version_id
5286                           ,X_LAST_UPDATE_DATE                => SYSDATE
5287                           ,X_LAST_UPDATED_BY                 => l_user_id
5288                           ,X_CREATION_DATE                   => SYSDATE
5289                           ,X_CREATED_BY                      => l_user_id
5290                           ,X_PROGRESS_STATUS_CODE            => null
5291                           ,X_LAST_UPDATE_LOGIN               => l_login_id
5292                           ,X_INCREMENTAL_WORK_QTY            => null
5293                           ,X_CUMULATIVE_WORK_QTY             => null
5294                           ,X_BASE_PERCENT_COMPLETE           => null
5295                           ,X_EFF_ROLLUP_PERCENT_COMP         => l_eff_rollup_prcnt_comp
5296                           ,X_COMPLETED_PERCENTAGE            => null
5297                           ,X_ESTIMATED_START_DATE            => l_estimated_start_date
5298                           ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
5299                           ,X_ACTUAL_START_DATE               => l_actual_start_date
5300                           ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
5301                           ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
5302                           ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
5303                           ,X_BASE_PROGRESS_STATUS_CODE       => null
5304                           ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_progress_status
5305                           ,x_percent_complete_id             => null
5306                           ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
5307                           ,X_PROJ_ELEMENT_ID                 => l_c1rec.parent_task_id
5308                           ,X_STRUCTURE_VERSION_ID            => null
5309                           ,X_PPL_ACT_EFFORT_TO_DATE      => l_PPL_ACT_EFFORT_TO_DATE
5310                           ,X_EQPMT_ACT_EFFORT_TO_DATE    => l_EQPMT_ACT_EFFORT_TO_DATE
5311                           ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
5312                           ,X_OTH_ACT_COST_TO_DATE_TC         => l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5313                           ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
5314                           ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
5315                           ,X_OTH_ETC_COST_TC                 => l_parent_task_rec.OTH_ETC_COST_TC
5316                           ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
5317                           ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
5318                           ,X_PPL_ACT_COST_TO_DATE_TC         => l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5319                           ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
5320                           ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
5321                           ,X_PPL_ETC_COST_TC                 => l_parent_task_rec.PPL_ETC_COST_TC
5322                           ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
5323                           ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
5324                           ,X_EQPMT_ACT_COST_TO_DATE_TC       => l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5325                           ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
5326                           ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
5327                           ,X_EQPMT_ETC_COST_TC               => l_parent_task_rec.EQPMT_ETC_COST_TC
5328                           ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
5329                           ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
5330                           ,X_EARNED_VALUE                    => l_bcwp
5331                           ,X_TASK_WT_BASIS_CODE              => l_task_weight_basis_code
5332                           ,X_SUBPRJ_PPL_ACT_EFFORT           => null
5333                           ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
5334                           ,X_SUBPRJ_PPL_ETC_EFFORT           => null
5335                           ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
5336                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
5337                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
5338                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
5339                           ,X_SUBPRJ_PPL_ACT_COST_TC          => null
5340                           ,X_SUBPRJ_PPL_ACT_COST_FC          => null
5341                           ,X_SUBPRJ_PPL_ACT_COST_PC          => null
5342                           ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
5343                           ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
5344                           ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
5345                           ,X_SUBPRJ_OTH_ETC_COST_TC          => null
5346                           ,X_SUBPRJ_OTH_ETC_COST_FC          => null
5347                           ,X_SUBPRJ_OTH_ETC_COST_PC          => null
5348                           ,X_SUBPRJ_PPL_ETC_COST_TC          => null
5349                           ,X_SUBPRJ_PPL_ETC_COST_FC          => null
5350                           ,X_SUBPRJ_PPL_ETC_COST_PC          => null
5351                           ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
5352                           ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
5353                           ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
5354                           ,X_SUBPRJ_EARNED_VALUE             => null
5355                           ,X_CURRENT_FLAG                    => l_current_flag
5356                           ,X_PROJFUNC_COST_RATE_TYPE         => l_sub_project_rec.PROJFUNC_COST_RATE_TYPE
5357                           ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_sub_project_rec.PROJFUNC_COST_EXCHANGE_RATE
5358                               ,X_PROJFUNC_COST_RATE_DATE         => l_sub_project_rec.PROJFUNC_COST_RATE_DATE
5359                           ,X_PROJ_COST_RATE_TYPE             => l_sub_project_rec.PROJ_COST_RATE_TYPE
5360                               ,X_PROJ_COST_EXCHANGE_RATE         => l_sub_project_rec.PROJ_COST_EXCHANGE_RATE
5361                               ,X_PROJ_COST_RATE_DATE             => l_sub_project_rec.PROJ_COST_RATE_DATE
5362                               ,X_TXN_CURRENCY_CODE               => l_sub_project_rec.TXN_CURRENCY_CODE
5363                               ,X_PROG_PA_PERIOD_NAME             => l_sub_project_rec.PROG_PA_PERIOD_NAME
5364                               ,X_PROG_GL_PERIOD_NAME             => l_sub_project_rec.PROG_GL_PERIOD_NAME
5365                               ,X_OTH_QUANTITY_TO_DATE            => null
5366                               ,X_OTH_ETC_QUANTITY                => null
5367                               ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
5368                               ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
5369                               ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
5370                               ,X_OTH_ETC_RAWCOST_TC      => null
5371                               ,X_OTH_ETC_RAWCOST_FC      => l_ETC_RAWCost_FC
5372                               ,X_OTH_ETC_RAWCOST_PC      => l_ETC_RAWCost_PC
5373                               ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
5374                               ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
5375                               ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
5376                               ,X_PPL_ETC_RAWCOST_TC      => null
5377                               ,X_PPL_ETC_RAWCOST_FC      => l_PPL_ETC_RAWCOST_FC
5378                               ,X_PPL_ETC_RAWCOST_PC      => l_PPL_ETC_RAWCOST_PC
5379                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
5380                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5381                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5382                               ,X_EQPMT_ETC_RAWCOST_TC        => null
5383                               ,X_EQPMT_ETC_RAWCOST_FC        => l_EQPMT_ETC_RAWCOST_FC
5384                               ,X_EQPMT_ETC_RAWCOST_PC        => l_EQPMT_ETC_RAWCOST_PC
5385                               ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
5386                               ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
5387                               ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
5388                               ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
5389                               ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
5390                               ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
5391                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
5392                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
5393                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
5394                               ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
5395                               ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
5396                               ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
5397                               ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
5398                               ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
5399                               ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
5400                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
5401                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
5402                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
5403                           );
5404                   END IF;
5405                 */
5406                   -- Call rollup_progress_pvt api for the parent project.
5407 
5408                  IF g1_debug_mode  = 'Y' THEN
5409                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Done with Insert/Update, Calling Rollup', x_Log_Level=> 3);
5410                  END IF;
5411                     -- Bug 4097710 : Changed the API from PUB to PVT.
5412                     -- It is not good idea to call PUB APi from PVT
5413 
5414                   PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
5415                      p_init_msg_list             => p_init_msg_list
5416                     ,p_commit                    => p_commit
5417                     ,p_calling_module        => l_calling_module
5418                     ,p_validate_only             => p_validate_only
5419                     ,p_project_id                => l_c1rec.parent_project_id
5420                     ,p_object_type           => 'PA_TASKS'
5421                     ,p_object_id                 => l_c1rec.parent_task_id
5422                     ,p_object_version_id         => l_c1rec.parent_task_version_id
5423                     ,p_task_version_id       => l_c1rec.parent_task_version_id
5424                     ,p_structure_version_id      => l_c1rec.parent_structure_ver_id
5425                     ,p_structure_type            => 'WORKPLAN'
5426                     ,p_wp_rollup_method      => l_task_weight_basis_code
5427                     ,p_as_of_date                => l_parent_as_of_date   --bug 4033869
5428                     ,p_lowest_level_task         => 'Y'  -- Bug 4392189
5429                     ,x_return_status             => l_return_status
5430                     ,x_msg_count                 => l_msg_count
5431                     ,x_msg_data                  => l_msg_data);
5432 
5433                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5434                     x_msg_data := l_msg_data;
5435                     x_return_status := 'E';
5436                     x_msg_count := l_msg_count;
5437                     RAISE  FND_API.G_EXC_ERROR;
5438                 END IF;
5439 
5440                 -- 4392189 : Added call of ROLLUP_FUTURE_PROGRESS_PVT
5441 
5442                 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
5443                       p_project_id               => l_c1rec.parent_project_id
5444                      ,P_OBJECT_TYPE              => 'PA_TASKS'
5445                      ,P_OBJECT_ID                => l_c1rec.parent_task_id
5446                      ,p_object_version_id        => l_c1rec.parent_task_version_id
5447                      ,p_as_of_date               => l_parent_as_of_date
5448                      ,p_lowest_level_task        => 'Y'
5449                      ,p_calling_module           => l_calling_module
5450                      ,p_structure_type           => 'WORKPLAN'
5451                      ,p_structure_version_id     => l_c1rec.parent_structure_ver_id
5452                      ,p_wp_rollup_method         => l_task_weight_basis_code
5453                      ,x_return_status            => l_return_status
5454                      ,x_msg_count                => l_msg_count
5455                      ,x_msg_data                 => l_msg_data
5456                    );
5457 
5458                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5459                     x_msg_data := l_msg_data;
5460                     x_return_status := 'E';
5461                     x_msg_count := l_msg_count;
5462                     RAISE  FND_API.G_EXC_ERROR;
5463                 END IF;
5464 
5465                          --  END IF; -- IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
5466             END IF; -- p_structure_type = 'WORKPLAN'
5467 
5468                         --bug 4033869
5469                 IF g1_debug_mode  = 'Y' THEN
5470                            pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Calling program_rollup_pvt in recursion', x_Log_Level=> 3);
5471                         END IF;
5472             -- Bug 4097710 : Changed the API from PUB to PVT.
5473             -- It is not good idea to call PUB APi from PVT
5474                         pa_progress_pvt.program_rollup_pvt(
5475                              p_init_msg_list        => 'F'
5476                             ,p_calling_module       => p_calling_module  --4492493
5477                             ,p_commit               => 'F'
5478                             ,p_validate_only        => 'F'
5479                             ,p_project_id           => l_c1rec.parent_project_id
5480                             ,p_as_of_date           => p_as_of_date
5481                             ,p_structure_type       => p_structure_type
5482                             ,p_structure_ver_id     => l_c1rec.parent_structure_ver_id
5483                             ,x_return_status        => l_return_status
5484                             ,x_msg_count            => l_msg_count
5485                             ,x_msg_data             => l_msg_data);
5486                        IF g1_debug_mode  = 'Y' THEN
5487                            pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'After Calling program_rollup_pvt recursively l_return_status='||l_return_status, x_Log_Level=> 3);
5488                        END IF;
5489 
5490                    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5491               x_msg_data := l_msg_data;
5492               x_return_status := 'E';
5493               x_msg_count := l_msg_count;
5494               RAISE  FND_API.G_EXC_ERROR;
5495                END IF;
5496                        --end bug 4033869
5497                     end if;   ---4492493
5498                 END LOOP;
5499         CLOSE C1;
5500 
5501         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5502                 x_msg_data := l_msg_data;
5503                 x_return_status := 'E';
5504                 x_msg_count := l_msg_count;
5505                 RAISE  FND_API.G_EXC_ERROR;
5506         END IF;
5507 
5508         IF (p_commit = FND_API.G_TRUE) THEN
5509                 COMMIT;
5510         END IF;
5511 
5512 
5513 EXCEPTION
5514     when FND_API.G_EXC_ERROR then
5515       if p_commit = FND_API.G_TRUE then
5516          rollback to PROGRAM_ROLLUP_PVT2;
5517       end if;
5518       x_return_status := FND_API.G_RET_STS_ERROR;
5519     when FND_API.G_EXC_UNEXPECTED_ERROR then
5520       if p_commit = FND_API.G_TRUE then
5521          rollback to PROGRAM_ROLLUP_PVT2;
5522       end if;
5523       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5524       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5525                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5526                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5527     when OTHERS then
5528       if p_commit = FND_API.G_TRUE then
5529          rollback to PROGRAM_ROLLUP_PVT2;
5530       end if;
5531       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5532       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5533                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5534                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5535       raise;
5536 END program_rollup_pvt;
5537 
5538 -- Bug 3614828 : Created this procedure for partial rollup.
5539 -- Start of comments
5540 --      API name        : ASGN_DLV_TO_TASK_ROLLUP_PVT
5541 --      Type            : Private
5542 --      Pre-reqs        : None.
5543 --      Purpose         : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
5544 --                      : This does partial rollup of working progress records
5545 --      History         : 15-JUNE-04  amksingh   Rewritten For FPM Development Bug 3614828
5546 -- End of comments
5547 
5548 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
5549  p_api_version                          IN      NUMBER          :=1.0
5550 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_FALSE -- Since it is a private API so false
5551 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
5552 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
5553 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
5554 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
5555 ,p_debug_mode                           IN      VARCHAR2        :='N'
5556 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5557 ,p_project_id                           IN      NUMBER
5558 ,p_task_id                              IN      NUMBER
5559 ,p_task_version_id                      IN      NUMBER
5560 ,p_as_of_date                           IN      DATE
5561 ,p_structure_version_id                 IN      NUMBER
5562 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
5563 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5564 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
5565 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5566 )
5567  IS
5568 
5569    l_api_name                   CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT'                           ;
5570    l_api_version                CONSTANT NUMBER      := 1.0                                                     ;
5571    l_return_status              VARCHAR2(1)                                                                     ;
5572    l_msg_count                  NUMBER                                                                          ;
5573    l_msg_data                   VARCHAR2(250)                                                                   ;
5574    l_data                       VARCHAR2(250)                                                                   ;
5575    l_msg_index_out              NUMBER                                                                          ;
5576    l_error_msg_code             VARCHAR2(250)                                                                   ;
5577    l_user_id                    NUMBER := FND_GLOBAL.USER_ID                                                    ;
5578    l_login_id                   NUMBER := FND_GLOBAL.LOGIN_ID                                                   ;
5579    l_lowest_task                VARCHAR2(1)                                                                     ;
5580    l_published_structure        VARCHAR2(1)                                                                     ;
5581    l_task_version_id            NUMBER                                                                          ;
5582    l_rollup_table1              PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE                            ;
5583    l_index                      NUMBER   := 0                                                                   ;
5584    l_parent_count               NUMBER   := 0                                                                   ;
5585    l_process_number             NUMBER                                                                          ;
5586    j                            NUMBER                                                                          ;
5587    l_wbs_level                  NUMBER                                                                          ;
5588    l_action_allowed             VARCHAR2(1)                                                                     ;
5589    l_sharing_Enabled            VARCHAR2(1)                                                                     ;
5590    L_TASK_DERIVATION_CODE       pa_proj_elements.base_percent_comp_deriv_code%TYPE                              ;
5591    l_split_workplan             VARCHAR2(1)                                                                     ;
5592    l_structure_version_id       NUMBER                                                                          ;
5593    g1_debug_mode                VARCHAR2(1)                                                                     ;
5594    l_Rollup_Method              pa_proj_progress_attr.task_weight_basis_code%TYPE                               ;
5595 
5596 
5597    --This cursor selects the given task.
5598    CURSOR cur_tasks( c_task_ver_id NUMBER )
5599    IS
5600        SELECT     obj.object_id_from1
5601                 , obj.object_type_from parent_object_type
5602                 , ppev.wbs_level-1 parent_wbs_level
5603                 , ppev.element_version_id object_id_to1
5604                 , ppev.object_type object_type
5605                 , ppev.wbs_level wbs_level
5606                 , obj.weighting_percentage
5607                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5608                 , ppr.completed_percentage override_percent_complete
5609                 , ppr.base_percent_complete
5610                 , ppr.actual_start_date
5611                 , ppr.actual_finish_date
5612                 , ppr.estimated_start_date
5613                 , ppr.estimated_finish_date
5614                 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5615                 , pps2.project_status_weight override_weight2 ---override progress status code
5616                 , pps3.project_status_weight base_weight3     --base prog status
5617                 , ppr.ESTIMATED_REMAINING_EFFORT
5618                 , to_number( null ) task_weight4       --task status
5619                 , to_char(null) status_code
5620                 , ppev.proj_element_id
5621                 , ppr.STRUCTURE_TYPE
5622                 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5623                 , ppr.PPL_ACT_EFFORT_TO_DATE
5624                 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5625                 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5626                 , ppr.EQPMT_ETC_EFFORT
5627                 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5628                 , ppr.OTH_ACT_COST_TO_DATE_TC
5629                 , ppr.OTH_ACT_COST_TO_DATE_PC
5630                 , ppr.OTH_ACT_COST_TO_DATE_FC
5631                 , ppr.OTH_ETC_COST_TC
5632                 , ppr.OTH_ETC_COST_PC
5633                 , ppr.OTH_ETC_COST_FC
5634                 , ppr.PPL_ACT_COST_TO_DATE_TC
5635                 , ppr.PPL_ACT_COST_TO_DATE_PC
5636                 , ppr.PPL_ACT_COST_TO_DATE_FC
5637                 , ppr.PPL_ETC_COST_TC
5638                 , ppr.PPL_ETC_COST_PC
5639                 , ppr.PPL_ETC_COST_FC
5640                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5641                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5642                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5643                 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
5644                 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
5645                 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
5646                 , ppr.EQPMT_ETC_COST_TC
5647                 , ppr.EQPMT_ETC_COST_PC
5648                 , ppr.EQPMT_ETC_COST_FC
5649                 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5650                 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5651                 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5652 --Bug 3614828 Begin
5653                 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5654                 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5655                 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5656                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5657                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5658                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5659                 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5660                 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5661                 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5662                 , ppr.OTH_ETC_RAWCost_TC
5663                 , ppr.OTH_ETC_RAWCost_PC
5664                 , ppr.OTH_ETC_RAWCost_FC
5665                 , ppr.PPL_ETC_RAWCOST_TC
5666                 , ppr.PPL_ETC_RAWCOST_PC
5667                 , ppr.PPL_ETC_RAWCOST_FC
5668                 , ppr.EQPMT_ETC_RAWCOST_TC
5669                 , ppr.EQPMT_ETC_RAWCOST_PC
5670                 , ppr.EQPMT_ETC_RAWCOST_FC
5671 --Bug 3614828 End
5672                 , ppr.SUBPRJ_PPL_ACT_EFFORT
5673                 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5674                 , ppr.SUBPRJ_PPL_ETC_EFFORT
5675                 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5676                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
5677                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
5678                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
5679                 , ppr.SUBPRJ_PPL_ACT_COST_TC
5680                 , ppr.SUBPRJ_PPL_ACT_COST_FC
5681                 , ppr.SUBPRJ_PPL_ACT_COST_PC
5682                 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5683                 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5684                 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5685                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5686                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5687                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5688                 , ppr.SUBPRJ_OTH_ETC_COST_TC
5689                 , ppr.SUBPRJ_OTH_ETC_COST_FC
5690                 , ppr.SUBPRJ_OTH_ETC_COST_PC
5691                 , ppr.SUBPRJ_PPL_ETC_COST_TC
5692                 , ppr.SUBPRJ_PPL_ETC_COST_FC
5693                 , ppr.SUBPRJ_PPL_ETC_COST_PC
5694                 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5695                 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
5696                 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
5697                 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
5698                 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
5699                 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
5700                 , ppr.SUBPRJ_EARNED_VALUE
5701                 , ppr.CURRENT_FLAG
5702                 , ppr.PROJFUNC_COST_RATE_TYPE
5703                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
5704                 , ppr.PROJFUNC_COST_RATE_DATE
5705                 , ppr.PROJ_COST_RATE_TYPE
5706                 , ppr.PROJ_COST_EXCHANGE_RATE
5707                 , ppr.PROJ_COST_RATE_DATE
5708                 , ppr.TXN_CURRENCY_CODE
5709                 , ppr.PROG_PA_PERIOD_NAME
5710                 , ppr.PROG_GL_PERIOD_NAME
5711                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN') BAC_value
5712                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
5713                 , null earned_value
5714 		, ppr.Oth_quantity_to_date
5715 		, ppr.Oth_etc_quantity
5716 		-- 4533112 : Added base_progress_status_code
5717 		, decode(ppr.base_progress_status_code, 'Y' , 'Y', 'N') base_progress_status_code
5718        FROM pa_proj_element_versions ppev,
5719             pa_object_relationships  obj,
5720             pa_progress_rollup ppr,
5721             pa_project_statuses pps1,
5722             pa_project_statuses pps2,
5723             pa_project_statuses pps3,
5724         pa_proj_elements ppe -- 4392189
5725        WHERE ppev.element_version_id = c_task_ver_id
5726        AND ppev.element_version_id = obj.object_id_to1
5727        AND obj.relationship_type = 'S'
5728        AND ppev.object_type = 'PA_TASKS'
5729        AND ppev.proj_element_id = ppe.proj_element_id -- 4392189
5730        AND ppe.link_task_flag <> 'Y' -- 4392189
5731        AND ppr.project_id = ppev.project_id
5732        AND ppr.object_id = ppev.proj_element_id
5733        AND ppr.proj_element_id = ppev.proj_element_id -- Bug 3764224
5734 --       AND ppr.as_of_date = trunc(p_as_of_date)
5735        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
5736        -- It is to select only the rollup record till passed as of date
5737        AND ppr.as_of_date = (SELECT max(as_of_date)
5738                  FROM pa_progress_rollup
5739                  WHERE project_id = p_project_id
5740                  AND object_id = ppev.proj_element_id
5741                  AND proj_element_id = ppev.proj_element_id
5742                  AND object_type = 'PA_TASKS'
5743                  AND structure_type = 'WORKPLAN'
5744                  AND structure_version_id is null
5745                  AND as_of_date <= p_as_of_date
5746                 )
5747         AND (ppr.current_flag = 'W'
5748            OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
5749            AND NOT EXISTS (select 1
5750                            from pa_progress_rollup ppc1
5751                           where ppc1.project_id = p_project_id
5752                             and ppc1.object_id = ppev.proj_element_id
5753                             and ppc1.proj_element_id = ppev.proj_element_id
5754                             and ppc1.object_Type = 'PA_TASKS'
5755                             and ppc1.structure_type = 'WORKPLAN'
5756                 and ppc1.as_of_date <= p_as_of_date
5757                             and ppc1.structure_version_id is null
5758                             and ppc1.current_flag = 'W')))
5759 --       AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5760 --                              ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */)
5761          AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
5762          AND ppr.progress_status_code = pps2.project_status_code(+)
5763          AND ppr.base_progress_status_code = pps3.project_status_code(+)
5764          AND ppr.structure_type = 'WORKPLAN'
5765          AND ppr.structure_version_id is null
5766 --         AND ppr.current_flag = 'W'     --bug 3879461
5767 UNION ALL
5768        SELECT to_number(null) object_id_from1
5769                 , ppev.object_type parent_object_type
5770                 , wbs_level parent_wbs_level
5771                 , element_version_id object_id_to1
5772                 , ppev.object_type object_type
5773                 , wbs_level wbs_level
5774                 , to_number( null ) weighting_percentage
5775                 , to_number(null) rollup_completed_percentage
5776                 , to_number(null) override_percent_complete
5777                 , to_number(null) base_percent_complete
5778                 , to_date(null) actual_start_date
5779                 , to_date(null) actual_finish_date
5780                 , to_date(null) estimated_start_date
5781                 , to_date(null) estimated_finish_date
5782                 , to_number(null) rollup_weight1 ---rollup progress status code
5783                 , to_number(null) override_weight2 ---override progress status code
5784                 , to_number(null) base_weight3     --base prog status
5785                 , to_number(null) ESTIMATED_REMAINING_EFFORT
5786                 , to_number( null ) task_weight4       --task status
5787                 , to_char(null) status_code
5788                 , ppev.proj_element_id
5789                 , to_char(null) STRUCTURE_TYPE
5790                 , to_number(null) rollup_proj_element_id
5791                 , to_number(null) PPL_ACT_EFFORT_TO_DATE
5792                 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
5793                 , to_number(null) total_act_effort_to_date
5794                 , to_number(null) EQPMT_ETC_EFFORT
5795                 , to_number(null) total_etc_effort
5796                 , to_number(null) OTH_ACT_COST_TO_DATE_TC
5797                 , to_number(null) OTH_ACT_COST_TO_DATE_PC
5798                 , to_number(null) OTH_ACT_COST_TO_DATE_FC
5799                 , to_number(null) OTH_ETC_COST_TC
5800                 , to_number(null) OTH_ETC_COST_PC
5801                 , to_number(null) OTH_ETC_COST_FC
5802                 , to_number(null) PPL_ACT_COST_TO_DATE_TC
5803                 , to_number(null) PPL_ACT_COST_TO_DATE_PC
5804                 , to_number(null) PPL_ACT_COST_TO_DATE_FC
5805                 , to_number(null) PPL_ETC_COST_TC
5806                 , to_number(null) PPL_ETC_COST_PC
5807                 , to_number(null) PPL_ETC_COST_FC
5808                 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
5809                 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
5810                 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
5811                 , to_number(null) total_act_cost_to_date_tc
5812                 , to_number(null) total_act_cost_to_date_pc
5813                 , to_number(null) total_act_cost_to_date_fc
5814                 , to_number(null) EQPMT_ETC_COST_TC
5815                 , to_number(null) EQPMT_ETC_COST_PC
5816                 , to_number(null) EQPMT_ETC_COST_FC
5817                 , to_number(null) total_etc_cost_tc
5818                 , to_number(null) total_etc_cost_pc
5819                 , to_number(null) total_etc_cost_fc
5820 --Bug 3614828 Begin
5821                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
5822                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
5823                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
5824                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
5825                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
5826                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
5827                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
5828                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
5829                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
5830                 , to_number(null) OTH_ETC_RAWCost_TC
5831                 , to_number(null) OTH_ETC_RAWCost_PC
5832                 , to_number(null) OTH_ETC_RAWCost_FC
5833                 , to_number(null) PPL_ETC_RAWCOST_TC
5834                 , to_number(null) PPL_ETC_RAWCOST_PC
5835                 , to_number(null) PPL_ETC_RAWCOST_FC
5836                 , to_number(null) EQPMT_ETC_RAWCOST_TC
5837                 , to_number(null) EQPMT_ETC_RAWCOST_PC
5838                 , to_number(null) EQPMT_ETC_RAWCOST_FC
5839 --Bug 3614828 End
5840                 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
5841                 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
5842                 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
5843                 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
5844                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
5845                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
5846                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
5847                 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
5848                 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
5849                 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
5850                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
5851                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
5852                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
5853                 , to_number(null) total_subproj_act_cost_tc
5854                 , to_number(null) total_subproj_act_cost_pc
5855                 , to_number(null) total_subproj_act_cost_fc
5856                 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
5857                 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
5858                 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
5859                 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
5860                 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
5861                 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
5862                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
5863                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
5864                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
5865                 , to_number(null) total_subproj_etc_cost_tc
5866                 , to_number(null) total_subproj_etc_cost_pc
5867                 , to_number(null) total_subproj_etc_cost_fc
5868                 , to_number(null) SUBPRJ_EARNED_VALUE
5869                 , to_char(null) CURRENT_FLAG
5870                 , to_char(null) PROJFUNC_COST_RATE_TYPE
5871                 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
5872                 , to_date(null) PROJFUNC_COST_RATE_DATE
5873                 , to_char(null) PROJ_COST_RATE_TYPE
5874                 , to_number(null) PROJ_COST_EXCHANGE_RATE
5875                 , to_date(null) PROJ_COST_RATE_DATE
5876                 , to_char(null) TXN_CURRENCY_CODE
5877                 , to_char(null) PROG_PA_PERIOD_NAME
5878                 , to_char(null) PROG_GL_PERIOD_NAME
5879                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN') BAC_value
5880                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, p_wp_rollup_method, ppev.proj_element_id, ppev.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
5881                 , null earned_value
5882 		, to_number(null) Oth_quantity_to_date
5883 		, to_number(null) Oth_etc_quantity
5884 		-- 4533112 : Added base_progress_status_code
5885 		, 'N' base_progress_status_code
5886        FROM pa_proj_element_versions ppev
5887        WHERE ppev.element_version_id = c_task_ver_id
5888        AND ppev.object_type = 'PA_TASKS'
5889        -- Bug 3879461 Begin
5890        AND NOT EXISTS (SELECT 1
5891                  FROM pa_progress_rollup
5892                  WHERE project_id = p_project_id
5893                  AND object_id = ppev.proj_element_id
5894                  AND proj_element_id = ppev.proj_element_id
5895                  AND object_type = 'PA_TASKS'
5896                  AND structure_type = 'WORKPLAN'
5897                  AND structure_version_id is null
5898                  AND as_of_date <= p_as_of_date
5899                 )
5900 --       AND pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5901 --                              ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */) IS NULL
5902        -- Bug 3879461 End
5903 -- Begin fix for Bug # 4032987.
5904 -- This query returns the progress of immediate sub-tasks of the input task.
5905 UNION ALL
5906        SELECT     obj.object_id_from1
5907                 , obj.object_type_from parent_object_type
5908                 , ppev1.wbs_level-1 parent_wbs_level
5909                 , ppev2.element_version_id object_id_to1
5910                 , ppev2.object_type object_type
5911                 , ppev2.wbs_level wbs_level
5912                 , obj.weighting_percentage
5913                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5914                 , ppr.completed_percentage override_percent_complete
5915                 , ppr.base_percent_complete
5916                 , ppr.actual_start_date
5917                 , ppr.actual_finish_date
5918                 , ppr.estimated_start_date
5919                 , ppr.estimated_finish_date
5920                 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5921                 , pps2.project_status_weight override_weight2 ---override progress status code
5922                 , pps3.project_status_weight base_weight3     --base prog status
5923                 , ppr.ESTIMATED_REMAINING_EFFORT
5924                 , to_number( null ) task_weight4       --task status
5925                 , to_char(null) status_code
5926                 , ppev2.proj_element_id
5927                 , ppr.STRUCTURE_TYPE
5928                 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5929                 , ppr.PPL_ACT_EFFORT_TO_DATE
5930                 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5931                 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5932                 , ppr.EQPMT_ETC_EFFORT
5933                 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5934                 , ppr.OTH_ACT_COST_TO_DATE_TC
5935                 , ppr.OTH_ACT_COST_TO_DATE_PC
5936                 , ppr.OTH_ACT_COST_TO_DATE_FC
5937                 , ppr.OTH_ETC_COST_TC
5938                 , ppr.OTH_ETC_COST_PC
5939                 , ppr.OTH_ETC_COST_FC
5940                 , ppr.PPL_ACT_COST_TO_DATE_TC
5941                 , ppr.PPL_ACT_COST_TO_DATE_PC
5942                 , ppr.PPL_ACT_COST_TO_DATE_FC
5943                 , ppr.PPL_ETC_COST_TC
5944                 , ppr.PPL_ETC_COST_PC
5945                 , ppr.PPL_ETC_COST_FC
5946                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5947                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5948                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5949                 , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
5950                 , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
5951                 , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
5952                 , ppr.EQPMT_ETC_COST_TC
5953                 , ppr.EQPMT_ETC_COST_PC
5954                 , ppr.EQPMT_ETC_COST_FC
5955                 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5956                 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5957                 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5958                 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5959                 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5960                 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5961                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5962                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5963                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5964                 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5965                 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5966                 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5967                 , ppr.OTH_ETC_RAWCost_TC
5968                 , ppr.OTH_ETC_RAWCost_PC
5969                 , ppr.OTH_ETC_RAWCost_FC
5970                 , ppr.PPL_ETC_RAWCOST_TC
5971                 , ppr.PPL_ETC_RAWCOST_PC
5972                 , ppr.PPL_ETC_RAWCOST_FC
5973                 , ppr.EQPMT_ETC_RAWCOST_TC
5974                 , ppr.EQPMT_ETC_RAWCOST_PC
5975                 , ppr.EQPMT_ETC_RAWCOST_FC
5976                 , ppr.SUBPRJ_PPL_ACT_EFFORT
5977                 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5978                 , ppr.SUBPRJ_PPL_ETC_EFFORT
5979                 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5980                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC
5981                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC
5982                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC
5983                 , ppr.SUBPRJ_PPL_ACT_COST_TC
5984                 , ppr.SUBPRJ_PPL_ACT_COST_FC
5985                 , ppr.SUBPRJ_PPL_ACT_COST_PC
5986                 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5987                 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5988                 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5989                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5990                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5991                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DT_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5992                 , ppr.SUBPRJ_OTH_ETC_COST_TC
5993                 , ppr.SUBPRJ_OTH_ETC_COST_FC
5994                 , ppr.SUBPRJ_OTH_ETC_COST_PC
5995                 , ppr.SUBPRJ_PPL_ETC_COST_TC
5996                 , ppr.SUBPRJ_PPL_ETC_COST_FC
5997                 , ppr.SUBPRJ_PPL_ETC_COST_PC
5998                 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5999                 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
6000                 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
6001                 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
6002                 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
6003                 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
6004                 , ppr.SUBPRJ_EARNED_VALUE
6005                 , ppr.CURRENT_FLAG
6006                 , ppr.PROJFUNC_COST_RATE_TYPE
6007                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
6008                 , ppr.PROJFUNC_COST_RATE_DATE
6009                 , ppr.PROJ_COST_RATE_TYPE
6010                 , ppr.PROJ_COST_EXCHANGE_RATE
6011                 , ppr.PROJ_COST_RATE_DATE
6012                 , ppr.TXN_CURRENCY_CODE
6013                 , ppr.PROG_PA_PERIOD_NAME
6014                 , ppr.PROG_GL_PERIOD_NAME
6015                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN') BAC_value
6016                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
6017                 , null earned_value
6018 		, ppr.Oth_quantity_to_date
6019 		, ppr.Oth_etc_quantity
6020 		-- 4533112 : Added base_progress_status_code
6021 		, decode(ppr.base_progress_status_code,'Y','Y','N') base_progress_status_code
6022        FROM pa_proj_element_versions ppev1,
6023         pa_proj_element_versions ppev2,
6024             pa_object_relationships  obj,
6025             pa_progress_rollup ppr,
6026             pa_project_statuses pps1,
6027             pa_project_statuses pps2,
6028             pa_project_statuses pps3,
6029         pa_proj_elements ppe -- 4392189
6030        WHERE obj.object_id_from1 = c_task_ver_id
6031        AND obj.object_id_from1 = ppev1.element_version_id
6032        AND obj.object_id_to1 = ppev2.element_version_id
6033        AND obj.relationship_type = 'S'
6034        AND ppev1.object_type = 'PA_TASKS'
6035        AND ppev2.object_type = 'PA_TASKS'
6036        AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
6037        AND ppe.link_task_flag <> 'Y' -- 4392189
6038        AND ppr.project_id = ppev2.project_id
6039        AND ppr.object_id = ppev2.proj_element_id
6040        AND ppr.proj_element_id = ppev2.proj_element_id
6041        AND ppr.as_of_date = (SELECT max(as_of_date)
6042                  FROM pa_progress_rollup
6043                  WHERE project_id = p_project_id
6044                  AND object_id = ppev2.proj_element_id
6045                  AND proj_element_id = ppev2.proj_element_id
6046                  AND object_type = 'PA_TASKS'
6047                  AND structure_type = 'WORKPLAN'
6048                  AND structure_version_id is null
6049                  AND as_of_date <= p_as_of_date
6050                  )
6051         AND (ppr.current_flag = 'W'
6052            OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
6053            AND NOT EXISTS (select 1
6054                            from pa_progress_rollup ppc1
6055                           where ppc1.project_id = p_project_id
6056                             and ppc1.object_id = ppev2.proj_element_id
6057                             and ppc1.proj_element_id = ppev2.proj_element_id
6058                             and ppc1.object_Type = 'PA_TASKS'
6059                             and ppc1.structure_type = 'WORKPLAN'
6060                 and ppc1.as_of_date <= p_as_of_date
6061                             and ppc1.structure_version_id is null
6062                             and ppc1.current_flag = 'W')))
6063          AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
6064          AND ppr.progress_status_code = pps2.project_status_code(+)
6065          AND ppr.base_progress_status_code = pps3.project_status_code(+)
6066          AND ppr.structure_type = 'WORKPLAN'
6067          AND ppr.structure_version_id is null
6068 -- This query returns etc value = planned value when ther is no progress for the immediate sub-tasks.
6069 UNION ALL
6070        SELECT
6071         /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
6072          obj.object_id_from1 object_id_from1
6073                 , ppev1.object_type parent_object_type
6074                 , ppev1.wbs_level-1 parent_wbs_level
6075                 , ppev2.element_version_id object_id_to1
6076                 , ppev2.object_type object_type
6077                 , ppev2.wbs_level wbs_level
6078                 --, to_number( null ) weighting_percentage --bug 4191181
6079                 , obj.weighting_percentage weighting_percentage
6080                 , to_number(null) rollup_completed_percentage
6081                 , to_number(null) override_percent_complete
6082                 , to_number(null) base_percent_complete
6083                 , to_date(null) actual_start_date
6084                 , to_date(null) actual_finish_date
6085                 , to_date(null) estimated_start_date
6086                 , to_date(null) estimated_finish_date
6087                 , to_number(null) rollup_weight1 ---rollup progress status code
6088                 , to_number(null) override_weight2 ---override progress status code
6089                 , to_number(null) base_weight3     --base prog status
6090                 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) ESTIMATED_REMAINING_EFFORT
6091                 , to_number( null ) task_weight4       --task status
6092                 , to_char(null) status_code
6093                 , ppev2.proj_element_id
6094                 , to_char(null) STRUCTURE_TYPE
6095                 , to_number(null) rollup_proj_element_id
6096                 , to_number(null) PPL_ACT_EFFORT_TO_DATE
6097                 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
6098                 , to_number(null) total_act_effort_to_date
6099                 , pfxat.equipment_hours EQPMT_ETC_EFFORT
6100                 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) total_etc_effort
6101                 , to_number(null) OTH_ACT_COST_TO_DATE_TC
6102                 , to_number(null) OTH_ACT_COST_TO_DATE_PC
6103                 , to_number(null) OTH_ACT_COST_TO_DATE_FC
6104                 , (nvl(pfxat.txn_brdn_cost,0) - (nvl(pfxat.txn_labor_brdn_cost,0) + nvl(pfxat.txn_equip_brdn_cost,0))) OTH_ETC_COST_TC
6105                 , (nvl(pfxat.prj_brdn_cost,0) - (nvl(pfxat.prj_labor_brdn_cost,0) + nvl(pfxat.prj_equip_brdn_cost,0))) OTH_ETC_COST_PC
6106                 , (nvl(pfxat.pou_brdn_cost,0) - (nvl(pfxat.pou_labor_brdn_cost,0) + nvl(pfxat.pou_equip_brdn_cost,0))) OTH_ETC_COST_FC
6107                 , to_number(null) PPL_ACT_COST_TO_DATE_TC
6108                 , to_number(null) PPL_ACT_COST_TO_DATE_PC
6109                 , to_number(null) PPL_ACT_COST_TO_DATE_FC
6110                 , pfxat.txn_labor_brdn_cost PPL_ETC_COST_TC
6111                 , pfxat.prj_labor_brdn_cost PPL_ETC_COST_PC
6112                 , pfxat.pou_labor_brdn_cost PPL_ETC_COST_FC
6113                 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
6114                 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
6115                 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
6116                 , to_number(null) total_act_cost_to_date_tc
6117                 , to_number(null) total_act_cost_to_date_pc
6118                 , to_number(null) total_act_cost_to_date_fc
6119                 , pfxat.txn_equip_brdn_cost EQPMT_ETC_COST_TC
6120                 , pfxat.prj_equip_brdn_cost EQPMT_ETC_COST_PC
6121                 , pfxat.pou_equip_brdn_cost EQPMT_ETC_COST_FC
6122                 , pfxat.txn_brdn_cost total_etc_cost_tc
6123                 , pfxat.prj_brdn_cost total_etc_cost_pc
6124                 , pfxat.pou_brdn_cost total_etc_cost_fc
6125                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
6126                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
6127                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
6128                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
6129                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
6130                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
6131                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
6132                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
6133                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
6134                 , (nvl(pfxat.txn_raw_cost,0) - (nvl(pfxat.txn_labor_raw_cost,0) + nvl(pfxat.txn_equip_raw_cost,0))) OTH_ETC_RAWCost_TC
6135                 , (nvl(pfxat.prj_raw_cost,0) - (nvl(pfxat.prj_labor_raw_cost,0) + nvl(pfxat.prj_equip_raw_cost,0))) OTH_ETC_RAWCost_PC
6136                 , (nvl(pfxat.pou_raw_cost,0) - (nvl(pfxat.pou_labor_raw_cost,0) + nvl(pfxat.pou_equip_raw_cost,0))) OTH_ETC_RAWCost_FC
6137                 , pfxat.txn_labor_raw_cost PPL_ETC_RAWCOST_TC
6138                 , pfxat.prj_labor_raw_cost PPL_ETC_RAWCOST_PC
6139                 , pfxat.pou_labor_raw_cost PPL_ETC_RAWCOST_FC
6140                 , pfxat.txn_equip_raw_cost EQPMT_ETC_RAWCOST_TC
6141                 , pfxat.prj_equip_raw_cost EQPMT_ETC_RAWCOST_PC
6142                 , pfxat.pou_equip_raw_cost EQPMT_ETC_RAWCOST_FC
6143                 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
6144                 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
6145                 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
6146                 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
6147                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_TC
6148                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_FC
6149                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DT_PC
6150                 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
6151                 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
6152                 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
6153                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
6154                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
6155                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
6156                 , to_number(null) total_subproj_act_cost_tc
6157                 , to_number(null) total_subproj_act_cost_pc
6158                 , to_number(null) total_subproj_act_cost_fc
6159                 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
6160                 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
6161                 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
6162                 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
6163                 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
6164                 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
6165                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
6166                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
6167                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
6168                 , to_number(null) total_subproj_etc_cost_tc
6169                 , to_number(null) total_subproj_etc_cost_pc
6170                 , to_number(null) total_subproj_etc_cost_fc
6171                 , to_number(null) SUBPRJ_EARNED_VALUE
6172                 , to_char(null) CURRENT_FLAG
6173                 , to_char(null) PROJFUNC_COST_RATE_TYPE
6174                 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
6175                 , to_date(null) PROJFUNC_COST_RATE_DATE
6176                 , to_char(null) PROJ_COST_RATE_TYPE
6177                 , to_number(null) PROJ_COST_EXCHANGE_RATE
6178                 , to_date(null) PROJ_COST_RATE_DATE
6179                 , to_char(null) TXN_CURRENCY_CODE
6180                 , to_char(null) PROG_PA_PERIOD_NAME
6181                 , to_char(null) PROG_GL_PERIOD_NAME
6182                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN') BAC_value
6183                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, p_wp_rollup_method, ppev2.proj_element_id, ppev2.parent_structure_version_id, 'WORKPLAN','N','N') BAC_value_self -- bug 4493105
6184                 , null earned_value
6185 		, to_number(null) Oth_quantity_to_date
6186 		, to_number(null) Oth_etc_quantity
6187 		-- 4533112 : Added base_progress_status_code
6188 		, 'N' base_progress_status_code
6189        FROM pa_proj_element_versions ppev1,
6190         pa_proj_element_versions ppev2,
6191         pa_object_relationships  obj,
6192         pji_fm_xbs_accum_tmp1 pfxat,
6193         pa_proj_elements ppe -- 4392189
6194        WHERE obj.object_id_from1 = c_task_ver_id
6195        AND obj.object_id_from1 = ppev1.element_version_id
6196        AND obj.object_id_to1 = ppev2.element_version_id
6197        AND obj.relationship_type = 'S'
6198        AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
6199        AND ppe.link_task_flag <> 'Y' -- 4392189
6200        AND ppev1.object_type = 'PA_TASKS'
6201        AND ppev2.object_type = 'PA_TASKS'
6202        AND pfxat.project_id(+) = ppev2.project_id
6203        AND pfxat.struct_version_id(+) = ppev2.parent_structure_version_id
6204        AND pfxat.project_element_id(+) = ppev2.proj_element_id
6205        AND pfxat.calendar_type(+) = 'A'
6206        AND pfxat.plan_version_id(+) > 0
6207        AND pfxat.txn_currency_code(+) is null
6208        AND NOT EXISTS (SELECT 1
6209                  FROM pa_progress_rollup
6210                  WHERE project_id = p_project_id
6211                  AND object_id = ppev2.proj_element_id
6212                  AND proj_element_id = ppev2.proj_element_id
6213                  AND object_type = 'PA_TASKS'
6214                  AND structure_type = 'WORKPLAN'
6215                  AND structure_version_id is null
6216                  AND as_of_date <= p_as_of_date
6217             )
6218 -- End fix for Bug # 4032987.
6219 ;
6220 
6221    --This cursor selects the task assignments of a given task.
6222    --sql id:14905993  bug:4871809
6223    CURSOR cur_assgn( c_task_id NUMBER, c_task_ver_id NUMBER, c_task_per_comp_deriv_method VARCHAR2 )
6224    IS
6225      SELECT asgn.task_version_id
6226         , 'PA_TASKS' parent_object_type
6227         , asgn.resource_assignment_id object_id_to1
6228         , asgn.task_version_id object_id_from1
6229         , 'PA_ASSIGNMENTS' object_type
6230         , asgn.resource_class_code
6231         , asgn.rate_based_flag
6232         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST') assignment_type
6233         , ppr.actual_start_date
6234         , ppr.actual_finish_date
6235         , ppr.estimated_start_date
6236         , ppr.estimated_finish_date
6237         --, ppr.ESTIMATED_REMAINING_EFFORT --bug 3977167
6238         , nvl(ppr.ESTIMATED_REMAINING_EFFORT,
6239           decode(asgn.resource_class_code,'PEOPLE',
6240                             decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6241                             nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))
6242           , 0)) ESTIMATED_REMAINING_EFFORT
6243         , ppr.STRUCTURE_VERSION_ID
6244         , ppr.STRUCTURE_TYPE
6245         , ppr.PROJ_ELEMENT_ID
6246         , ppr.PPL_ACT_EFFORT_TO_DATE
6247         , ppr.EQPMT_ACT_EFFORT_TO_DATE
6248         , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
6249         --, ppr.EQPMT_ETC_EFFORT --bug 3977167
6250         , nvl(ppr.EQPMT_ETC_EFFORT,
6251             decode(asgn.resource_class_code,'EQUIPMENT',
6252                             decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6253                             nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0))
6254            , 0)) EQPMT_ETC_EFFORT
6255         , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
6256         , ppr.OTH_ACT_COST_TO_DATE_TC
6257         , ppr.OTH_ACT_COST_TO_DATE_PC
6258         , ppr.OTH_ACT_COST_TO_DATE_FC
6259         --, ppr.OTH_ETC_COST_TC  --bug 3977167
6260         --, ppr.OTH_ETC_COST_PC  --bug 3977167
6261         --, ppr.OTH_ETC_COST_FC  --bug 3977167
6262         , nvl(ppr.OTH_ETC_COST_TC,
6263               decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6264                      decode( sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6265                          nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0))
6266           )) OTH_ETC_COST_TC
6267         ,nvl(ppr.OTH_ETC_COST_PC,
6268              decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6269                    decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6270                    nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0))
6271           )) OTH_ETC_COST_PC
6272         , nvl(ppr.OTH_ETC_COST_FC,
6273             decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6274                 decode( sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6275                 nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0))
6276            )) OTH_ETC_COST_FC
6277         , ppr.PPL_ACT_COST_TO_DATE_TC
6278         , ppr.PPL_ACT_COST_TO_DATE_PC
6279         , ppr.PPL_ACT_COST_TO_DATE_FC
6280         --, ppr.PPL_ETC_COST_TC  --bug 3977167
6281         --, ppr.PPL_ETC_COST_PC  --bug 3977167
6282         --, ppr.PPL_ETC_COST_FC  --bug 3977167
6283         , nvl(ppr.PPL_ETC_COST_TC,
6284                  decode(asgn.resource_class_code,'PEOPLE',
6285                            decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6286                                nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0))
6287              ,0)) PPL_ETC_COST_TC
6288         , nvl(ppr.PPL_ETC_COST_PC,
6289                decode(asgn.resource_class_code,'PEOPLE',
6290                             decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6291                                nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0))
6292              ,0)) PPL_ETC_COST_PC
6293         , nvl(ppr.PPL_ETC_COST_FC,
6294                   decode(asgn.resource_class_code,'PEOPLE',
6295                             decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6296                                    nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0))
6297             ,0)) PPL_ETC_COST_FC
6298         , ppr.EQPMT_ACT_COST_TO_DATE_TC
6299         , ppr.EQPMT_ACT_COST_TO_DATE_PC
6300         , ppr.EQPMT_ACT_COST_TO_DATE_FC
6301         , ppr.OTH_ACT_COST_TO_DATE_TC + ppr.PPL_ACT_COST_TO_DATE_TC + ppr.EQPMT_ACT_COST_TO_DATE_TC total_act_cost_to_date_tc
6302         , ppr.OTH_ACT_COST_TO_DATE_PC + ppr.PPL_ACT_COST_TO_DATE_PC + ppr.EQPMT_ACT_COST_TO_DATE_PC total_act_cost_to_date_pc
6303         , ppr.OTH_ACT_COST_TO_DATE_FC + ppr.PPL_ACT_COST_TO_DATE_FC + ppr.EQPMT_ACT_COST_TO_DATE_FC total_act_cost_to_date_fc
6304         --, ppr.EQPMT_ETC_COST_TC  --bug 3977167
6305         --, ppr.EQPMT_ETC_COST_PC  --bug 3977167
6306         --, ppr.EQPMT_ETC_COST_FC  --bug 3977167
6307         , nvl(ppr.EQPMT_ETC_COST_TC,
6308              decode(asgn.resource_class_code,'EQUIPMENT',
6309                   decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6310                          nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0))
6311             ,0)) EQPMT_ETC_COST_TC
6312         , nvl(ppr.EQPMT_ETC_COST_PC,
6313                 decode(asgn.resource_class_code,'EQUIPMENT',
6314                             decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6315                                    nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0))
6316              ,0)) EQPMT_ETC_COST_PC
6317         , nvl(ppr.EQPMT_ETC_COST_FC,
6318                      decode(asgn.resource_class_code,'EQUIPMENT',
6319                               decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6320                                    nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0))
6321            ,0)) EQPMT_ETC_COST_FC
6322         , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
6323         , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
6324         , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
6325 --Bug 3614828 Begin
6326         , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6327         , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6328         , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6329         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6330         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6331         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6332         , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6333         , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6334         , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6335         --, ppr.OTH_ETC_RAWCost_TC  --bug 3977167
6336         --, ppr.OTH_ETC_RAWCost_PC  --bug 3977167
6337         --, ppr.OTH_ETC_RAWCost_FC  --bug 3977167
6338         , nvl(ppr.OTH_ETC_RAWCost_TC,
6339                          decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6340                                  decode( sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0)), -1, 0,
6341                                       nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0))
6342            )) OTH_ETC_RAWCost_TC
6343         , nvl(ppr.OTH_ETC_RAWCost_PC,
6344                       decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6345                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0)), -1, 0,
6346                                       nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0))
6347              )) OTH_ETC_RAWCost_PC
6348         , nvl(ppr.OTH_ETC_RAWCost_FC,
6349                          decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6350                                       decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0)), -1, 0,
6351                                              nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0))
6352              )) OTH_ETC_RAWCost_FC
6353         --, ppr.PPL_ETC_RAWCOST_TC  --bug 3977167
6354         --, ppr.PPL_ETC_RAWCOST_PC  --bug 3977167
6355         --, ppr.PPL_ETC_RAWCOST_FC  --bug 3977167
6356         , nvl(ppr.PPL_ETC_RAWCOST_TC,
6357                      decode(asgn.resource_class_code,'PEOPLE',
6358                        decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6359                                nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0))
6360                ,0)) PPL_ETC_RAWCOST_TC
6361         , nvl(ppr.PPL_ETC_RAWCOST_PC,
6362                    decode(asgn.resource_class_code,'PEOPLE',
6363                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6364                                         nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0))
6365             ,0)) PPL_ETC_RAWCOST_PC
6366         , nvl(ppr.PPL_ETC_RAWCOST_FC,
6367                   decode(asgn.resource_class_code,'PEOPLE',
6368                          decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6369                                  nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0))
6370            ,0)) PPL_ETC_RAWCOST_FC
6371         --, ppr.EQPMT_ETC_RAWCOST_TC  --bug 3977167
6372         --, ppr.EQPMT_ETC_RAWCOST_PC  --bug 3977167
6373         --, ppr.EQPMT_ETC_RAWCOST_FC  --bug 3977167
6374         , nvl(ppr.EQPMT_ETC_RAWCOST_TC,
6375                      decode(asgn.resource_class_code,'EQUIPMENT',
6376                        decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6377                                nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0))
6378                ,0)) EQPMT_ETC_RAWCOST_TC
6379         , nvl(ppr.EQPMT_ETC_RAWCOST_PC,
6380                    decode(asgn.resource_class_code,'EQUIPMENT',
6381                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6382                                         nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0))
6383             ,0)) EQPMT_ETC_RAWCOST_PC
6384         , nvl(ppr.EQPMT_ETC_RAWCOST_FC,
6385                   decode(asgn.resource_class_code,'EQUIPMENT',
6386                          decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6387                                  nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0))
6388            ,0)) EQPMT_ETC_RAWCOST_FC
6389 --Bug 3614828 End
6390         , ppr.CURRENT_FLAG
6391         , ppr.PROJFUNC_COST_RATE_TYPE
6392         , ppr.PROJFUNC_COST_EXCHANGE_RATE
6393         , ppr.PROJFUNC_COST_RATE_DATE
6394         , ppr.PROJ_COST_RATE_TYPE
6395         , ppr.PROJ_COST_EXCHANGE_RATE
6396         , ppr.PROJ_COST_RATE_DATE
6397         , ppr.TXN_CURRENCY_CODE
6398         , ppr.PROG_PA_PERIOD_NAME
6399         , ppr.PROG_GL_PERIOD_NAME
6400         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
6401             ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))  ) earned_value
6402         ,decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
6403                 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0)
6404                 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT', decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
6405                 + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,0) + nvl(ppr.estimated_remaining_effort,0)), 0) bac_value_in_rollup_method
6406 --bug 3815252
6407         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
6408                                         decode( asgn.resource_class_code,
6409                                             'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
6410                                               decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1, 0,
6411                                                  nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))),
6412                                             'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,
6413                                               decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1, 0,
6414                                                  nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0) -- Bug 4213130 nvl(asgn.planned_quantity,0))
6415                                    ),
6416                                  ( NVL( decode( asgn.resource_class_code,
6417                                        'FINANCIAL_ELEMENTS',
6418                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6419                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6420                                                  nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6421                                        'MATERIAL_ITEMS',
6422                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6423                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6424                                                  nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6425                                        'PEOPLE',
6426                                         nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,
6427                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
6428                                                        nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0))),
6429                                        'EQUIPMENT',
6430                                         nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
6431                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1, 0,
6432                                                        nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
6433                                     nvl(asgn.planned_bur_cost_proj_cur,0)
6434                                     ))
6435                                        ) bac_value_in_task_deriv
6436         , ppr.Oth_quantity_to_date
6437         , ppr.Oth_etc_quantity
6438     FROM
6439                pa_task_asgmts_v  asgn,
6440                pa_progress_rollup ppr
6441      WHERE asgn.task_version_id = c_task_ver_id
6442        AND asgn.task_id = c_task_id
6443        AND asgn.project_id = p_project_id
6444        AND asgn.project_id = ppr.project_id(+)
6445        AND asgn.RESOURCE_LIST_MEMBER_ID = ppr.object_id(+) -- Bug 3764224
6446        AND asgn.task_id = ppr.proj_element_id(+) -- Bug 3764224
6447        AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
6448        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6449        -- It is to select only the rollup record till passed as of date
6450        AND ppr.structure_type(+) = 'WORKPLAN'
6451        AND ppr.structure_version_id(+) is null
6452        AND ppr.as_of_date(+) <= p_as_of_date
6453        AND nvl(ppr.progress_rollup_id,-99) = pa_progress_utils.get_w_pub_prupid_asofdate(p_project_id,asgn.RESOURCE_LIST_MEMBER_ID,'PA_ASSIGNMENTS',asgn.task_id,p_as_of_date);
6454 
6455      /* (SELECT nvl(max(progress_rollup_id),-99)
6456                  FROM pa_progress_rollup
6457                  WHERE project_id = p_project_id
6458                  AND object_id = asgn.RESOURCE_LIST_MEMBER_ID
6459                  AND proj_element_id = asgn.task_id
6460                  AND object_type = 'PA_ASSIGNMENTS'
6461                  AND structure_type = 'WORKPLAN'
6462                  AND structure_version_id is null
6463                  AND as_of_date <= p_as_of_date
6464                  AND (ppr.current_flag = 'W'
6465                  --OR (ppr.current_flag ='Y' --bug 4183176
6466                  OR (ppr.current_flag IN ('Y', 'N')
6467                      AND NOT EXISTS (select 1
6468                            from pa_progress_rollup ppc1
6469                           where ppc1.project_id = p_project_id
6470                             and ppc1.object_id = asgn.RESOURCE_LIST_MEMBER_ID
6471                             and ppc1.proj_element_id = asgn.task_id
6472                             and ppc1.object_Type = 'PA_ASSIGNMENTS'
6473                             and ppc1.structure_type = 'WORKPLAN'
6474                             and ppc1.as_of_date <= p_as_of_date
6475                             and ppc1.structure_version_id is null
6476                             and ppc1.current_flag = 'W'))))
6477 --       AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(asgn.project_id,
6478 --                               asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS','WORKPLAN', null, asgn.task_id)  ---Bug 3764224
6479        --bug 3958686, hidden assignments should not to be selected
6480 --       AND asgn.ta_display_flag = 'Y' --   Bug 4323537
6481         ; */
6482 
6483 
6484    --sql id: 14906033  bug: 4871809
6485    --This cursor selects the deliverables of a given task.
6486    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
6487    IS
6488      SELECT obj.object_type_from
6489      , 'PA_TASKS' parent_object_type
6490      ,  obj.object_id_to2 object_id
6491      ,  obj.object_id_to1
6492      ,  obj.object_id_from1
6493      , 'PA_DELIVERABLES' object_type
6494      , ppr.actual_finish_date
6495      , ppr.completed_percentage
6496      , ppr.STRUCTURE_TYPE
6497      , ppr.PROJ_ELEMENT_ID
6498      , ppr.STRUCTURE_VERSION_ID
6499      , ppr.TASK_WT_BASIS_CODE
6500      , elem.progress_weight weighting_percentage
6501      , ppr.base_percent_complete
6502      , pps2.project_status_weight override_weight ---override progress status code
6503      , pps3.project_status_weight base_weight     --base prog status
6504     FROM pa_proj_elements elem
6505     , pa_object_relationships obj
6506     , pa_progress_rollup ppr
6507     , pa_project_statuses pps2
6508     , pa_project_statuses pps3
6509      WHERE  obj.object_id_from2= c_task_proj_elem_id
6510      ---AND obj.object_id_from1 = c_task_ver_id ---to get delv for specific task ver  , object_id_from1 is not populated in this case
6511      AND obj.object_type_from = 'PA_TASKS'
6512      AND obj.object_type_to = 'PA_DELIVERABLES'
6513      AND obj.relationship_type = 'A'
6514      AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
6515      AND elem.proj_element_id = obj.object_id_to2
6516      AND elem.object_type = 'PA_DELIVERABLES'
6517      and elem.project_id = c_project_id
6518      AND ppr.project_id(+) = c_project_id
6519      AND ppr.object_id(+) = obj.object_id_to2
6520      AND ppr.object_type(+) = 'PA_DELIVERABLES'
6521      AND ppr.as_of_date(+) <= p_as_of_date
6522        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6523        -- It is to select only the rollup record till passed as of date
6524      AND nvl(ppr.progress_rollup_id,-99) = pa_progress_utils.get_w_pub_prupid_asofdate(c_project_id,obj.object_id_to2,'PA_DELIVERABLES',obj.object_id_from2,p_as_of_date)
6525      AND ppr.base_progress_status_code = pps3.project_status_code(+)
6526      AND ppr.progress_status_code = pps2.project_status_code(+);
6527 
6528     /* (SELECT nvl(max(progress_rollup_id),-99)
6529                  FROM pa_progress_rollup
6530                  WHERE project_id = p_project_id
6531                  AND object_id = obj.object_id_to2
6532                  --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6533                  --AND proj_element_id = obj.object_id_from2
6534                  AND object_type = 'PA_DELIVERABLES'
6535                  AND structure_type = 'WORKPLAN'
6536                  AND structure_version_id is null
6537                  AND as_of_date <= p_as_of_date
6538     --bug 4182870, added for selecting only one record
6539                  AND (ppr.current_flag = 'W'
6540                       OR (ppr.current_flag IN ('Y', 'N')
6541                       AND NOT EXISTS (select 1
6542                            from pa_progress_rollup ppc1
6543                           where ppc1.project_id = p_project_id
6544                             and ppc1.object_id = obj.object_id_to2
6545                 --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6546                             --and ppc1.proj_element_id = obj.object_id_from2
6547                             and ppc1.object_Type = 'PA_DELIVERABLES'
6548                             and ppc1.structure_type = 'WORKPLAN'
6549                             and ppc1.as_of_date <= p_as_of_date
6550                             and ppc1.structure_version_id is null
6551                             and ppc1.current_flag = 'W'))))
6552 --     AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate2(c_project_id,
6553 --                               obj.object_id_to2, 'PA_DELIVERABLES','WORKPLAN', null, obj.object_id_from2 ) -- bug 3764224 Bug 3808044 : Changed to2 to from2
6554      AND ppr.structure_type(+) = 'WORKPLAN'
6555      AND ppr.structure_version_id(+) is null
6556 --     AND ppr.current_flag(+) = 'W'     --bug 3879461
6557      AND ppr.base_progress_status_code = pps3.project_status_code(+)
6558      AND ppr.progress_status_code = pps2.project_status_code(+)
6559      ; */
6560 
6561    CURSOR cur_base_p_comp_deriv_code(c_task_proj_elem_id NUMBER, c_project_id NUMBER)
6562    IS
6563    SELECT elem.status_code, stat.project_system_status_code, decode(elem.base_percent_comp_deriv_code, null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,elem.base_percent_comp_deriv_code), ttype.prog_entry_enable_flag
6564    FROM pa_proj_elements elem
6565    , pa_task_types ttype
6566    , pa_project_statuses stat
6567    where elem.proj_element_id = c_task_proj_elem_id
6568    AND elem.project_id = c_project_id
6569    AND elem.object_type ='PA_TASKS'
6570    AND elem.type_id = ttype.task_type_id
6571    AND elem.status_code = stat.project_status_code(+);
6572 
6573    CURSOR cur_status( c_status_weight VARCHAR2 )
6574    IS
6575      select lookup_code
6576        from fnd_lookup_values
6577       where attribute4 = c_status_weight
6578         and lookup_type = 'PROGRESS_SYSTEM_STATUS'
6579         and language = 'US'
6580 	AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
6581 
6582    CURSOR cur_task_status( c_status_weight VARCHAR2 )
6583    IS
6584      select project_status_code
6585        from pa_project_statuses
6586       where project_status_weight = c_status_weight
6587         and status_type = 'TASK'
6588         and predefined_flag = 'Y';
6589 
6590    CURSOR cur_rollup( c_progress_rollup_id NUMBER )
6591    IS
6592      SELECT * from pa_progress_rollup
6593        WHERE progress_rollup_id = c_progress_rollup_id;
6594 
6595    CURSOR cur_pa_rollup1( c_proj_element_id NUMBER )
6596    IS
6597      SELECT *
6598        FROM pa_progress_rollup
6599       WHERE project_id = p_project_id
6600         AND object_id = c_proj_element_id
6601         AND structure_type = 'WORKPLAN'
6602          AND structure_version_id is null
6603         AND as_of_date = ( SELECT max( as_of_date )
6604                              FROM pa_progress_rollup
6605                             WHERE project_id = p_project_id
6606                               AND object_id = c_proj_element_id
6607                               AND structure_type = 'WORKPLAN'
6608                               AND structure_version_id is null
6609                               AND as_of_date <= p_as_of_date );
6610 
6611 
6612 
6613         l_eff_rollup_status_code        VARCHAR2(150)                                   ;
6614         l_cur_rollup_rec                cur_rollup%ROWTYPE                              ;
6615         l_pev_schedule_id               NUMBER                                          ;
6616         l_sch_rec_ver_number            NUMBER                                          ;
6617         l_total_tasks                   NUMBER                                          ;
6618         l_PROGRESS_ROLLUP_ID            NUMBER                                          ;
6619         l_progress_exists_on_aod        VARCHAR2(15)                                    ;
6620         l_percent_complete_id           NUMBER                                          ;
6621         l_rollup_rec_ver_number         NUMBER                                          ;
6622         l_progress_status_code          VARCHAR2(150)                                   ;
6623         l_rolled_up_base_per_comp       NUMBER                                          ;
6624         l_rolled_up_base_prog_stat      VARCHAR2(150)                                   ;
6625         l_rolled_up_per_comp            NUMBER                                          ;
6626         l_rolled_up_prog_stat           VARCHAR2(150)                                   ;
6627         l_cur_pa_rollup1_rec            cur_pa_rollup1%ROWTYPE                          ;
6628         l_status_code                   VARCHAR2(150)                                   ;
6629         l_working_aod                   DATE                                            ;
6630         l_PROGRESS_ROLLUP_ID2           NUMBER                                          ;
6631         l_rollup_rec_ver_number2        NUMBER                                          ;
6632         l_cur_rollup_rec2               cur_rollup%ROWTYPE                              ;
6633         l_remaining_effort1             NUMBER                                          ;
6634         l_percent_complete1             NUMBER                                          ;
6635         l_percent_complete2             NUMBER                                          ;
6636         l_ETC_Cost_PC                   NUMBER                                          ;
6637         l_PPL_ETC_COST_PC               NUMBER                                          ;
6638         l_EQPMT_ETC_COST_PC             NUMBER                                          ;
6639         l_ETC_Cost_FC                   NUMBER                                          ;
6640         l_PPL_ETC_COST_FC               NUMBER                                          ;
6641         l_EQPMT_ETC_COST_FC             NUMBER                                          ;
6642         l_EQPMT_ETC_EFFORT              NUMBER                                          ;
6643         l_SUB_PRJ_ETC_COST_PC           NUMBER                                          ;
6644         l_SUB_PRJ_PPL_ETC_COST_PC       NUMBER                                          ;
6645         l_SUB_PRJ_EQPMT_ETC_COST_PC     NUMBER                                          ;
6646         l_SUB_PRJ_ETC_COST_FC           NUMBER                                          ;
6647         l_SUB_PRJ_PPL_ETC_COST_FC       NUMBER                                          ;
6648         l_SUB_PRJ_EQPMT_ETC_COST_FC     NUMBER                                          ;
6649         l_SUB_PRJ_PPL_ETC_EFFORT        NUMBER                                          ;
6650         l_SUB_PRJ_EQPMT_ETC_EFFORT      NUMBER                                          ;
6651         l_BAC_VALUE1                    NUMBER                                          ;
6652         l_EARNED_VALUE1                 NUMBER                                          ;
6653         l_bcwp                          NUMBER                                          ;
6654         l_OTH_ACT_COST_TO_DATE_PC       NUMBER                                          ;
6655         l_PPL_ACT_COST_TO_DATE_PC       NUMBER                                          ;
6656         l_EQPMT_ACT_COST_TO_DATE_PC     NUMBER                                          ;
6657         l_OTH_ACT_COST_TO_DATE_FC       NUMBER                                          ;
6658         l_PPL_ACT_COST_TO_DATE_FC       NUMBER                                          ;
6659         l_EQPMT_ACT_COST_TO_DATE_FC     NUMBER                                          ;
6660         l_PPL_ACT_EFFORT_TO_DATE        NUMBER                                          ;
6661         l_EQPMT_ACT_EFFORT_TO_DATE      NUMBER                                          ;
6662         l_PERIOD_NAME                   VARCHAR2(10)                                    ;
6663         l_project_ids                   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()      ;
6664         l_struture_version_ids          SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()      ;
6665         l_proj_thru_dates_tbl           SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type()     ;
6666         l_prog_pa_period_name           VARCHAR2(30)                                    ;
6667         l_prog_gl_period_name           VARCHAR2(30)                                    ;
6668         l_current_flag                  VARCHAR2(1):= 'W'               ;
6669         l_max_rollup_as_of_date2        DATE                                            ;
6670         l_structure_sharing_code        pa_projects_all.structure_sharing_code%TYPE     ;
6671         l_OTH_ACT_RAWCOST_TO_DATE_PC    NUMBER                                          ;
6672         l_PPL_ACT_RAWCOST_TO_DATE_PC    NUMBER                                          ;
6673         l_EQPMT_ACT_RAWCOST_TO_DATE_PC  NUMBER                                          ;
6674         l_OTH_ACT_RAWCOST_TO_DATE_FC    NUMBER                                          ;
6675         l_PPL_ACT_RAWCOST_TO_DATE_FC    NUMBER                                          ;
6676         l_EQPMT_ACT_RAWCOST_TO_DATE_FC  NUMBER                                          ;
6677         l_ETC_RAWCost_PC                NUMBER                                          ;
6678         l_PPL_ETC_RAWCOST_PC            NUMBER                                          ;
6679         l_EQPMT_ETC_RAWCOST_PC          NUMBER                                          ;
6680         l_ETC_RAWCost_FC                NUMBER                                          ;
6681         l_PPL_ETC_RAWCOST_FC            NUMBER                                          ;
6682         l_EQPMT_ETC_RAWCOST_FC          NUMBER                                          ;
6683         l_EQUIPMENT_HOURS               NUMBER                                          ;
6684         l_POU_LABOR_BRDN_COST           NUMBER                                          ;
6685         l_PRJ_LABOR_BRDN_COST           NUMBER                                          ;
6686         l_POU_EQUIP_BRDN_COST           NUMBER                                          ;
6687         l_PRJ_EQUIP_BRDN_COST           NUMBER                                          ;
6688         l_POU_LABOR_RAW_COST            NUMBER                                          ;
6689         l_PRJ_LABOR_RAW_COST            NUMBER                                          ;
6690         l_POU_EQUIP_RAW_COST            NUMBER                                          ;
6691         l_PRJ_EQUIP_RAW_COST            NUMBER                                          ;
6692         L_TASK_STATUS_CODE              pa_project_statuses.project_status_code%TYPE    ;
6693         l_task_system_status_code       pa_project_statuses.project_system_status_code%TYPE;
6694         L_TASK_WEIGHTING_PERCENTAGE     NUMBER                                          ;
6695         L_PROG_ENTRY_ENABLE_FLAG        VARCHAR2(1)                                     ;
6696         l_BASE_PERCENT_COMP_DERIV_CODE  VARCHAR2(30)                                    ;
6697         -- Bug 5675437
6698         l_PROGRESS_ROLLUP_ID3           NUMBER                                          ;
6699         l_cur_rollup_rec3               cur_rollup%ROWTYPE                              ;
6700         l_rollup_rec_ver_number3        NUMBER                                          ;
6701 
6702 -- Bug 3879461 Begin
6703 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
6704 IS
6705 SELECT STATUS_CODE
6706 FROM PA_PROJ_ELEMENTS
6707 WHERE PROJ_ELEMENT_ID=l_proj_element_id
6708 AND PROJECT_ID = l_project_id;
6709 
6710 L_EXISTING_OBJECT_STATUS        pa_project_statuses.project_status_code%TYPE    ;
6711 l_Oth_quantity_to_date NUMBER;
6712 l_Oth_etc_quantity NUMBER;
6713 
6714 -- Bug 3879461 End
6715 
6716 l_prj_currency_code VARCHAR2(15); --bug 3949093
6717 
6718 -- Bug 3956299 Begin
6719 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
6720 IS
6721 SELECT scheduled_start_date, scheduled_finish_date
6722 FROM pa_proj_elem_ver_schedule
6723 WHERE PROJECT_ID = c_project_id
6724 AND element_version_id = c_element_version_id;
6725 
6726 l_tsk_scheduled_start_date Date;
6727 l_tsk_scheduled_finish_date Date;
6728 l_actual_start_date Date;
6729 l_actual_finish_date Date;
6730 l_estimated_start_date Date;
6731 l_estimated_finish_date Date;
6732 -- Bug 3956299 End
6733 
6734 -- Bug 3922325 Begin
6735 CURSOR c_get_dlv_status IS
6736 SELECT 'Y' FROM DUAL
6737 WHERE EXISTS
6738 (SELECT 'xyz'
6739 FROM pa_percent_completes
6740 WHERE project_id = p_project_id
6741 AND task_id = p_task_id
6742 AND object_type = 'PA_DELIVERABLES'
6743 AND trunc(date_computed)<= trunc(p_as_of_date)
6744 AND structure_type = 'WORKPLAN'
6745 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
6746 );
6747 
6748 l_actual_exists VARCHAR2(1):='N';
6749 -- Bug 3922325 End
6750 
6751 -- Bug 4392189 Begin
6752 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
6753 SELECT
6754   ppv2.project_id                     sub_project_id
6755  ,ppv2.element_version_id             sub_structure_ver_id
6756  ,ppv2.proj_element_id                sub_proj_element_id
6757 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
6758                                     'WORKPLAN','N')    sub_project_bac_value
6759 FROM
6760      pa_proj_element_versions ppv2
6761     ,pa_proj_elem_ver_structure ppevs2
6762     ,pa_object_relationships por1
6763     ,pa_object_relationships por2
6764 WHERE
6765   por1.object_id_from1 = c_task_version_id
6766  AND por1.object_id_to1 = por2.object_id_from1
6767  AND por2.object_id_to1 = ppv2.element_version_id
6768  AND ppv2.object_type = 'PA_STRUCTURES'
6769 -- AND por2.relationship_type in ( 'LW', 'LF' )
6770  AND por2.relationship_type = 'LW'
6771  AND ppevs2.element_version_id = ppv2.element_version_id
6772  AND ppevs2.project_id = ppv2.project_id
6773  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
6774  AND ppevs2.latest_eff_published_flag = 'Y';
6775 
6776 l_sub_project_id    NUMBER;
6777 l_sub_structure_ver_id  NUMBER;
6778 l_sub_proj_element_id   NUMBER;
6779 l_sub_project_bac_value NUMBER;
6780 
6781 --- sql id: 14906260  bug 4871809
6782 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
6783 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
6784 SELECT /*+ index(pfxat pji_fm_xbs_accum_tmp1_n1) */
6785 ppr.progress_rollup_id
6786 , ppr.as_of_date
6787 , ppr.actual_start_date
6788 , ppr.actual_finish_date
6789 , ppr.estimated_start_date
6790 , ppr.estimated_finish_date
6791 , ppr.PPL_ACT_EFFORT_TO_DATE
6792 , ppr.PPL_ACT_COST_TO_DATE_TC
6793 , ppr.PPL_ACT_COST_TO_DATE_PC
6794 , ppr.PPL_ACT_COST_TO_DATE_FC
6795 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6796 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6797 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6798 , ppr.EQPMT_ACT_EFFORT_TO_DATE
6799 , ppr.EQPMT_ACT_COST_TO_DATE_TC
6800 , ppr.EQPMT_ACT_COST_TO_DATE_PC
6801 , ppr.EQPMT_ACT_COST_TO_DATE_FC
6802 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6803 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6804 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6805 , ppr.OTH_QUANTITY_TO_DATE
6806 , ppr.OTH_ACT_COST_TO_DATE_TC
6807 , ppr.OTH_ACT_COST_TO_DATE_PC
6808 , ppr.OTH_ACT_COST_TO_DATE_FC
6809 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6810 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6811 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6812 , decode(ppr.progress_rollup_id,null,pfxat.ETC_LABOR_HRS,ppr.ESTIMATED_REMAINING_EFFORT) ESTIMATED_REMAINING_EFFORT
6813 , ppr.PPL_ETC_COST_TC
6814 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_BRDN_COST,ppr.PPL_ETC_COST_PC) PPL_ETC_COST_PC
6815 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_BRDN_COST,ppr.PPL_ETC_COST_FC) PPL_ETC_COST_FC
6816 , ppr.PPL_ETC_RAWCOST_TC
6817 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_PC) PPL_ETC_RAWCOST_PC
6818 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_FC) PPL_ETC_RAWCOST_FC
6819 , decode(ppr.progress_rollup_id,null,pfxat.ETC_EQUIP_HRS,ppr.EQPMT_ETC_EFFORT) EQPMT_ETC_EFFORT
6820 , ppr.EQPMT_ETC_COST_TC
6821 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_PC) EQPMT_ETC_COST_PC
6822 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_FC) EQPMT_ETC_COST_FC
6823 , ppr.EQPMT_ETC_RAWCOST_TC
6824 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_PC) EQPMT_ETC_RAWCOST_PC
6825 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_FC) EQPMT_ETC_RAWCOST_FC
6826 , ppr.OTH_ETC_QUANTITY
6827 , ppr.OTH_ETC_COST_TC
6828 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_PRJ_BRDN_COST-nvl(pfxat.ETC_PRJ_EQUIP_BRDN_COST,0)-nvl(pfxat.ETC_PRJ_LABOR_BRDN_COST,0)),ppr.OTH_ETC_COST_PC) OTH_ETC_COST_PC
6829 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_POU_BRDN_COST-nvl(pfxat.ETC_POU_EQUIP_BRDN_COST,0)-nvl(pfxat.ETC_POU_LABOR_BRDN_COST,0)),ppr.OTH_ETC_COST_FC) OTH_ETC_COST_FC
6830 , ppr.OTH_ETC_RAWCost_TC
6831 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_PRJ_RAW_COST-nvl(pfxat.ETC_PRJ_EQUIP_RAW_COST,0)-nvl(pfxat.ETC_PRJ_LABOR_RAW_COST,0)),ppr.OTH_ETC_RAWCost_PC) OTH_ETC_RAWCost_PC
6832 , decode(ppr.progress_rollup_id,null,(pfxat.ETC_POU_RAW_COST-nvl(pfxat.ETC_POU_EQUIP_RAW_COST,0)-nvl(pfxat.ETC_POU_LABOR_RAW_COST,0)),ppr.OTH_ETC_RAWCost_FC) OTH_ETC_RAWCost_FC
6833 , pps1.project_status_weight rollup_weight1
6834 , pps2.project_status_weight override_weight2
6835 , pps3.project_status_weight base_weight3
6836 , pps4.project_status_weight task_weight4
6837 -- Bug 4506009, decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
6838 --                                    ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
6839 , decode(c_task_per_comp_deriv_method,'EFFORT', decode(nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,0),0,
6840      nvl(pfxat.ETC_LABOR_HRS,0) + nvl(pfxat.ETC_EQUIP_HRS,0),nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,0))
6841         , decode(nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +  nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) +  nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0),0,
6842         nvl(pfxat.ETC_PRJ_BRDN_COST,0), nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +  nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) +  nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0))) bac_value
6843 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage -- Bug 4506009
6844 FROM
6845 pa_progress_rollup ppr
6846 ,pa_project_statuses pps1
6847 ,pa_project_statuses pps2
6848 ,pa_project_statuses pps3
6849 ,pa_project_statuses pps4
6850 ,pa_proj_elements ppe
6851 ,pji_fm_xbs_accum_tmp1 pfxat
6852 WHERE
6853 ppr.project_id = c_sub_project_id
6854 AND ppe.project_id = c_sub_project_id
6855 AND ppe.object_type = 'PA_STRUCTURES'
6856 AND ppe.proj_element_id = c_sub_proj_element_id
6857 AND ppr.object_id(+) = c_sub_proj_element_id
6858 AND ppr.object_type(+) = 'PA_STRUCTURES'
6859 AND ppr.structure_version_id(+) is null
6860 AND ppr.structure_type(+) = 'WORKPLAN'
6861 AND ppr.current_flag(+) <> 'W'  ---IN ('Y', 'N')
6862 AND ppr.as_of_date(+) <= c_as_of_date
6863 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
6864 AND ppr.progress_status_code =  pps2.project_status_code(+)
6865 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6866 AND ppe.status_code = pps4.project_status_code(+)
6867 AND pfxat.project_id = ppe.project_id
6868 AND pfxat.struct_version_id = c_sub_str_version_id
6869 AND pfxat.project_element_id = ppe.proj_element_id
6870 AND pfxat.plan_version_id > 0
6871 AND pfxat.txn_currency_code is null
6872 AND pfxat.calendar_type = 'A'
6873 AND pfxat.res_list_member_id is null
6874 order by as_of_date desc
6875  ;
6876 
6877 l_sub_rec           c_get_sub_project_progress%ROWTYPE;
6878 l_subproj_prog_rollup_id    NUMBER;
6879 l_subproj_act_start_date    DATE;
6880 l_subproj_act_finish_date   DATE;
6881 l_subproj_est_start_date    DATE;
6882 l_subproj_est_finish_date   DATE;
6883 l_subproj_rollup_weight1    NUMBER;
6884 l_subproj_override_weight2  NUMBER;
6885 l_subproj_base_weight3      NUMBER;
6886 l_subproj_task_weight4      NUMBER;
6887 l_subproj_earned_value      NUMBER;
6888 l_subproj_bac_value     NUMBER;
6889 l_actual_lowest_task        VARCHAR2(1) := 'N';
6890 -- Bug 4392189 End
6891 
6892 -- Bug 4506461 Begin
6893 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
6894 SELECT 'Y'
6895 FROM pa_object_relationships
6896 WHERE --relationship_type in ( 'LW', 'LF' )
6897 relationship_type = 'LW'
6898 AND object_id_from1 IN
6899     (SELECT object_id_to1
6900     FROM pa_object_relationships
6901     START WITH  object_id_from1 = c_task_version_id
6902     AND relationship_type = 'S'
6903     CONNECT BY PRIOR object_id_to1 = object_id_from1
6904     AND relationship_type = 'S')
6905     ;
6906 l_subproject_found VARCHAR2(1):='N';
6907 l_rederive_base_pc VARCHAR2(1):='N';
6908 l_override_pc_temp NUMBER;
6909 l_base_pc_temp     NUMBER;
6910 -- Bug 4506461 End
6911 
6912 l_subproj_task_version_id NUMBER;--4582956
6913 
6914 BEGIN
6915 
6916         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
6917 
6918         IF g1_debug_mode  = 'Y' THEN
6919                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT');
6920         END IF;
6921 
6922         IF g1_debug_mode  = 'Y' THEN
6923                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
6924                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=> 3);
6925                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
6926                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=> 3);
6927                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
6928                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
6929                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
6930                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=> 3);
6931                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
6932                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
6933                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
6934                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
6935                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
6936                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
6937         END IF;
6938 
6939         IF p_structure_version_id IS NULL THEN
6940                 return;
6941         END IF;
6942 
6943         IF (p_commit = FND_API.G_TRUE) THEN
6944                 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT2;
6945         END IF;
6946 
6947         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
6948                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6949         END IF;
6950 
6951         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
6952                 FND_MSG_PUB.initialize;
6953         END IF;
6954 
6955         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
6956         l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
6957 
6958         --bug 3949093
6959         SELECT project_currency_code  INTO  l_prj_currency_code  FROM pa_projects_all WHERE project_id = p_project_id;
6960 
6961         IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) THEN
6962                 l_split_workplan := 'Y';
6963         ELSE
6964                 l_split_workplan := 'N';
6965         END IF;
6966 
6967         l_structure_version_id := null;
6968         l_task_version_id := p_task_version_id;
6969         l_rollup_method := p_wp_rollup_method;
6970 
6971         IF g1_debug_mode  = 'Y' THEN
6972                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled, x_Log_Level=> 3);
6973                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_structure_sharing_code='||l_structure_sharing_code, x_Log_Level=> 3);
6974                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
6975         END IF;
6976 
6977 
6978         l_task_derivation_code := null;
6979         l_task_status_code := null;
6980         l_task_weighting_percentage := 0;
6981 
6982         OPEN cur_base_p_comp_deriv_code(p_task_id, p_project_id);
6983         FETCH cur_base_p_comp_deriv_code INTO l_task_status_code, l_task_system_status_code, l_task_derivation_code, l_prog_entry_enable_flag;
6984         CLOSE cur_base_p_comp_deriv_code;
6985 
6986 
6987         IF g1_debug_mode  = 'Y' THEN
6988                pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_derivation_code='||l_task_derivation_code, x_Log_Level=> 3);
6989                pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_status_code='||l_task_status_code, x_Log_Level=> 3);
6990                pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_prog_entry_enable_flag='||l_prog_entry_enable_flag, x_Log_Level=> 3);
6991         END IF;
6992 
6993         -- Cursor: cur_tasks returns the input task and its immediate sub-tasks. -- Fix for Bug # 4032987.
6994         FOR cur_tasks_rec in cur_tasks(p_task_version_id) LOOP
6995 
6996                 IF g1_debug_mode  = 'Y' THEN
6997                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Inside Tasks Loop', x_Log_Level=> 3);
6998                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'cur_tasks_rec.base_progress_status_code='||cur_tasks_rec.base_progress_status_code, x_Log_Level=> 3);
6999                 END IF;
7000 
7001                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7002 
7003     -- We only populate the asssignment and deliverable records n the PL/SQL table for the input task
7004     -- , assignments and deliverables of the sub-tasks are not considered. -- Fix for Bug # 4032987.
7005 
7006     if (cur_tasks_rec.object_id_to1 = p_task_version_id) then -- Fix for Bug # 4032987.
7007 
7008         l_override_pc_temp := cur_tasks_rec.override_percent_complete; -- Bug 4506461
7009 
7010         -- Bug 4392189 : Program Changes Begin
7011         l_sub_project_id := null;
7012         l_sub_rec   := null;
7013 
7014         -- 4587527 : It was not supporting multiple sub projects at link task
7015         -- So converted it into FOR LOOP
7016 
7017         FOR rec_subproj IN c_get_sub_project(p_task_version_id, l_task_derivation_code) LOOP
7018             --OPEN c_get_sub_project (p_task_version_id, l_task_derivation_code);
7019             --FETCH c_get_sub_project INTO l_sub_project_id, l_sub_structure_ver_id, l_sub_proj_element_id,l_sub_project_bac_value;
7020             --CLOSE c_get_sub_project;
7021 
7022             --IF l_sub_project_id IS NOT NULL THEN
7023             IF g1_debug_mode = 'Y' THEN
7024                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
7025                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
7026                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
7027                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
7028             END IF;
7029             l_subproject_found := 'Y' ; -- Bug 4506461
7030             l_subproj_task_version_id := p_task_version_id;--4582956
7031 
7032             OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_task_derivation_code);
7033             FETCH c_get_sub_project_progress INTO l_sub_rec;
7034             CLOSE c_get_sub_project_progress;
7035 
7036             IF g1_debug_mode = 'Y' THEN
7037                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_sub_rec.progress_rollup_id, x_Log_Level=> 3);
7038             END IF;
7039 
7040             l_index := l_index + 1;
7041 
7042             l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
7043             l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
7044             l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
7045             l_rollup_table1(l_index).PARENT_OBJECT_ID               := p_task_version_id;
7046             l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
7047             l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
7048 
7049 	    -- 4533112 : Added following check
7050 	    IF nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN
7051 		l_rollup_table1(l_index).START_DATE1			:= l_sub_rec.actual_start_date;
7052 		l_rollup_table1(l_index).FINISH_DATE1                   := l_sub_rec.actual_finish_date;
7053 		l_rollup_table1(l_index).START_DATE2                    := l_sub_rec.estimated_start_date;
7054 		l_rollup_table1(l_index).FINISH_DATE2                   := l_sub_rec.estimated_finish_date;
7055 	    END IF;
7056 
7057 
7058             -- 4582956 Begin : LInk task should be treated as summaru task which means
7059             -- we should be passing % complete of sub project and bac value of sub project
7060             /*
7061 
7062             -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
7063             -- This is additional sefety fix
7064 
7065             -- Bug 4506009 : Deriving l_subproj_earned_value
7066             IF l_task_derivation_code = 'EFFORT' THEN
7067                 --l_subproj_earned_value := nvl(round((NVL(l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_sub_rec.completed_percentage,0)/100), 5),0);
7068                 -- 4579654 : For more accuracy, Do not round the earned value here.
7069                 --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100), 5),0);
7070                 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7071             ELSE
7072                 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0))*nvl(l_sub_rec.completed_percentage,0)/100), l_prj_currency_code),0);
7073                 -- 4579654 : For more accuracy, Do not round the earned value here.
7074                 --l_subproj_earned_value := nvl(pa_currency.round_trans_currency_amt((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100), l_prj_currency_code),0);
7075                 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7076             END IF;
7077 
7078             l_rollup_table1(l_index).EARNED_VALUE1                  := nvl(l_subproj_earned_value,0) ; --NVL( l_sub_rec.earned_value, 0 );
7079             --l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0) );
7080             l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_sub_project_bac_value, 0);
7081             */
7082 
7083             l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_sub_rec.completed_percentage, 0);
7084             l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
7085             -- 4582956 End
7086 
7087 
7088             --    Rollup Progress Status Rollup
7089             l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_sub_rec.rollup_weight1,0);       --rollup prog status
7090             l_rollup_table1(l_index).PROGRESS_override1              := l_sub_rec.override_weight2;    --override prg  status
7091 
7092             --    Base Progress Status Rollup
7093 	    -- 4533112 : Now base progress status is not used
7094             --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_sub_rec.base_weight3, 0 );  --base prog status
7095             --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
7096 
7097             --    Task Status Rollup
7098             l_rollup_table1(l_index).task_status1                    := nvl(l_sub_rec.task_weight4, 0 );  -- task status
7099 
7100 
7101             l_rollup_table1(l_index).REMAINING_EFFORT1              := NVL( l_sub_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7102             l_rollup_table1(l_index).EQPMT_ETC_EFFORT1              := NVL( l_sub_rec.EQPMT_ETC_EFFORT, 0 );
7103 
7104             -- ETC Burden Cost in Project Currency Rollup
7105             l_rollup_table1(l_index).ETC_COST1                      := NVL( l_sub_rec.OTH_ETC_COST_PC, 0 );
7106             l_rollup_table1(l_index).PPL_ETC_COST1                  := NVL( l_sub_rec.PPL_ETC_COST_PC, 0 );
7107             l_rollup_table1(l_index).EQPMT_ETC_COST1                := NVL( l_sub_rec.EQPMT_ETC_COST_PC, 0 );
7108 
7109             -- ETC Burden Cost in Project Functional Currency Rollup
7110             l_rollup_table1(l_index).ETC_COST2                      := NVL( l_sub_rec.OTH_ETC_COST_FC, 0 );
7111             l_rollup_table1(l_index).PPL_ETC_COST2                  := NVL( l_sub_rec.PPL_ETC_COST_FC, 0 );
7112             l_rollup_table1(l_index).EQPMT_ETC_COST2                := NVL( l_sub_rec.EQPMT_ETC_COST_FC, 0 );
7113 
7114 
7115 
7116             -- ETC Burden Cost in Transaction Currency Rollup
7117             l_rollup_table1(l_index).ETC_COST3                      := NVL( l_sub_rec.OTH_ETC_COST_TC, 0 );
7118             l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( l_sub_rec.PPL_ETC_COST_TC, 0 );
7119             l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( l_sub_rec.EQPMT_ETC_COST_TC, 0 );
7120 
7121             -- ETC Raw Cost in Transaction Currency Rollup
7122             -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7123             --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7124             --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7125             --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7126 
7127             l_rollup_table1(l_index).ETC_COST4                      := NVL( l_sub_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7128             l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( l_sub_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7129 
7130             -- ETC Raw Cost in Project Currency Rollup
7131             l_rollup_table1(l_index).ETC_COST5                      := NVL( l_sub_rec.OTH_ETC_RAWCost_PC, 0 );
7132             l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( l_sub_rec.PPL_ETC_RAWCOST_PC, 0 );
7133             l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7134 
7135             -- ETC Raw Cost in PRoject Functional Currency Rollup
7136             l_rollup_table1(l_index).ETC_COST6                      := NVL( l_sub_rec.OTH_ETC_RAWCost_FC, 0 );
7137             l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( l_sub_rec.PPL_ETC_RAWCOST_FC, 0 );
7138             l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7139 
7140             -- Actual Burden Cost in Transaction Currency Rollup
7141             l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7142             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7143             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7144             -- Actual Burden Cost in Project Currency Rollup
7145             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7146             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7147             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7148             -- Actual Burden Cost in Project Functional Currency Rollup
7149             l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7150             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7151             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7152 
7153             -- Actual Raw Cost in Transaction Currency Rollup
7154             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7155             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7156             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7157             -- Actual Raw Cost in Project Currency Rollup
7158             l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7159             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7160             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7161             -- Actual Raw Cost in Project Functional Currency Rollup
7162             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7163             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7164             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7165 
7166             l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( l_sub_rec.Oth_quantity_to_date, 0 );
7167             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( l_sub_rec.oth_etc_quantity, 0 );
7168 
7169 
7170             l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7171             l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7172             l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7173             l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7174             l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7175             l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7176 
7177             IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7178                 l_action_allowed := 'N';
7179             END IF;
7180 
7181             l_action_allowed := 'Y';   --temporarrily setting it to Y, need to investigate as why it is N
7182 
7183             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Assgn l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7184 
7185             l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
7186             l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
7187             l_rollup_table1(l_index).rollup_node3                       := l_action_allowed;
7188             l_rollup_table1(l_index).rollup_node4                       := l_action_allowed;
7189             l_rollup_table1(l_index).rollup_node5                       := l_action_allowed;
7190             l_rollup_table1(l_index).rollup_node6                       := l_action_allowed;
7191         END LOOP;
7192             --END IF;
7193             -- Bug 4392189 : Program Changes End
7194 
7195 
7196         -- Loop thru all task assignments of a passed task
7197                 FOR cur_assgn_rec in cur_assgn(p_task_id, p_task_version_id, l_task_derivation_code) LOOP
7198 
7199                         l_index := l_index + 1;
7200 
7201                         l_rollup_table1(l_index).OBJECT_TYPE                    := cur_assgn_rec.object_type;
7202                         l_rollup_table1(l_index).OBJECT_ID                      := cur_assgn_rec.object_id_to1; -- Reaource Assignment Id
7203                         l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := cur_assgn_rec.parent_object_type;
7204                         l_rollup_table1(l_index).PARENT_OBJECT_ID               := cur_assgn_rec.object_id_from1; -- Task Version Id
7205                         l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; -- Assigning some value so that order by in scheduling API works
7206 
7207                         -- Percent Complete needs to be derived using Earned Value and BAC Value
7208 
7209                         -- Percent Complete at Assignment level does not get calculated
7210 
7211 			-- 4533112 : Added following check for base_progress_status_code
7212 			    IF l_task_derivation_code IN ('EFFORT', 'COST') AND nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN -- Bug 3956299
7213 				-- Actual Date Rollup : Only Start Date gets rolls up.
7214 				l_rollup_table1(l_index).START_DATE1                    := cur_assgn_rec.actual_start_date;
7215 				l_rollup_table1(l_index).FINISH_DATE1                    := cur_assgn_rec.actual_finish_date;
7216 
7217 				-- Estimated Date Rollup  : Only Start Date gets rolls up.
7218 				l_rollup_table1(l_index).START_DATE2                    := cur_assgn_rec.estimated_start_date;
7219 				l_rollup_table1(l_index).FINISH_DATE2                    := cur_assgn_rec.estimated_finish_date;
7220 			    END IF;
7221 
7222 
7223                         -- Progress Status entry is not there at assignment level
7224 
7225                         -- Assignment Status entry is not there at assignment level
7226 
7227                         -- ETC Effort Rollup
7228                         l_rollup_table1(l_index).REMAINING_EFFORT1              := NVL( cur_assgn_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7229                         l_rollup_table1(l_index).EQPMT_ETC_EFFORT1              := NVL( cur_assgn_rec.EQPMT_ETC_EFFORT, 0 );
7230 
7231                         -- ETC Burden Cost in Project Currency Rollup
7232                         l_rollup_table1(l_index).ETC_COST1                      := NVL( cur_assgn_rec.OTH_ETC_COST_PC, 0 );
7233                         l_rollup_table1(l_index).PPL_ETC_COST1                  := NVL( cur_assgn_rec.PPL_ETC_COST_PC, 0 );
7234                         l_rollup_table1(l_index).EQPMT_ETC_COST1                := NVL( cur_assgn_rec.EQPMT_ETC_COST_PC, 0 );
7235 
7236                         -- ETC Burden Cost in Project Functional Currency Rollup
7237                         l_rollup_table1(l_index).ETC_COST2                      := NVL( cur_assgn_rec.OTH_ETC_COST_FC, 0 );
7238                         l_rollup_table1(l_index).PPL_ETC_COST2                  := NVL( cur_assgn_rec.PPL_ETC_COST_FC, 0 );
7239                         l_rollup_table1(l_index).EQPMT_ETC_COST2                := NVL( cur_assgn_rec.EQPMT_ETC_COST_FC, 0 );
7240 
7241                         -- Earned Value and BAC Rollup
7242                         l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7243                         l_rollup_table1(l_index).BAC_VALUE1                     := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7244 
7245 			-- 4392189 : Program Reporting Changes - Phase 2
7246 			-- Having Set2 columns to get Project level % complete
7247                         l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7248                         l_rollup_table1(l_index).BAC_VALUE2                     := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7249 
7250 
7251                         --Bug 3614828 Begin
7252 
7253                         -- ETC Burden Cost in Transaction Currency Rollup
7254                         l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_assgn_rec.OTH_ETC_COST_TC, 0 );
7255                         l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_assgn_rec.PPL_ETC_COST_TC, 0 );
7256                         l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_assgn_rec.EQPMT_ETC_COST_TC, 0 );
7257 
7258                         -- ETC Raw Cost in Transaction Currency Rollup
7259                         -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7260                         --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7261                         --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7262                         --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7263 
7264                         l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_assgn_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7265                         l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_assgn_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7266 
7267                         -- ETC Raw Cost in Project Currency Rollup
7268                         l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_assgn_rec.OTH_ETC_RAWCost_PC, 0 );
7269                         l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_PC, 0 );
7270                         l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7271 
7272                         -- ETC Raw Cost in PRoject Functional Currency Rollup
7273                         l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_assgn_rec.OTH_ETC_RAWCost_FC, 0 );
7274                         l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_FC, 0 );
7275                         l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7276 
7277                         -- Actual Burden Cost in Transaction Currency Rollup
7278                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7279                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7280                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7281                         -- Actual Burden Cost in Project Currency Rollup
7282                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7283                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7284                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7285                         -- Actual Burden Cost in Project Functional Currency Rollup
7286                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7287                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7288                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7289 
7290                         -- Actual Raw Cost in Transaction Currency Rollup
7291                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7292                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7293                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7294                         -- Actual Raw Cost in Project Currency Rollup
7295                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7296                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7297                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7298                         -- Actual Raw Cost in Project Functional Currency Rollup
7299                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7300                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7301                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7302 
7303 			-- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7304                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_assgn_rec.Oth_quantity_to_date, 0 );
7305                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_assgn_rec.oth_etc_quantity, 0 );
7306 
7307 
7308                         --Bug 3614828 End
7309 
7310 
7311                         l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7312                         l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7313                         l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7314                         l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7315                         l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7316                         l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7317 
7318                         IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7319                                 l_action_allowed := 'N';
7320                         END IF;
7321 
7322                         l_action_allowed := 'Y';   --temporarrily setting it to Y, need to investigate as why it is N
7323 
7324                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Assgn l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7325 
7326                         l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
7327                         l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
7328                         l_rollup_table1(l_index).rollup_node3                       := l_action_allowed;
7329                         l_rollup_table1(l_index).rollup_node4                       := l_action_allowed;
7330                         l_rollup_table1(l_index).rollup_node5                       := l_action_allowed;
7331                         l_rollup_table1(l_index).rollup_node6                       := l_action_allowed;
7332                 END LOOP; -- Assignments Loop cur_assgn_rec
7333 
7334 
7335                 IF l_task_derivation_code = 'DELIVERABLE' THEN
7336 
7337                         FOR cur_del_rec in cur_deliverables(p_task_id, p_task_version_id, p_project_id) LOOP
7338 
7339                                 l_index := l_index + 1;
7340 
7341                                 l_rollup_table1(l_index).OBJECT_TYPE          := cur_del_rec.object_type;
7342                                 l_rollup_table1(l_index).OBJECT_ID            := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
7343                                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE   := cur_del_rec.parent_object_type;
7344                                 l_rollup_table1(l_index).PARENT_OBJECT_ID     := p_task_version_id;
7345                                 l_rollup_table1(l_index).WBS_LEVEL            := 9999999;
7346 
7347                                 -- Rollup Percent Complete Rollup
7348                                 l_rollup_table1(l_index).task_weight1         := nvl( cur_del_rec.weighting_percentage, 0 );
7349                                 l_rollup_table1(l_index).PERCENT_COMPLETE1    := nvl( cur_del_rec.completed_percentage, 0 );
7350                                 --l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR 2
7351 
7352 				-- 4392189 : Program Reporting Changes - Phase 2
7353 				-- Having Set2 columns to get Project level % complete
7354                                 l_rollup_table1(l_index).task_weight2         := nvl( cur_del_rec.weighting_percentage, 0 );
7355                                 l_rollup_table1(l_index).PERCENT_COMPLETE2    := nvl( cur_del_rec.completed_percentage, 0 );
7356 
7357 
7358                                 -- Base Percent Complete Rollup
7359                                 -- l_rollup_table1(l_index).task_weight2      := nvl( cur_del_rec.weighting_percentage, 0 );
7360                                 -- l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.base_percent_complete, 0 );
7361                                 -- l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
7362 
7363                                 -- Dates will not get rolled up for deliverable
7364                                 -- Rollup Progress Status Rollup
7365 
7366                                 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0;    --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
7367                                 l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;    --override prg status
7368 
7369                                 -- Base Progress Status Rollup
7370 				-- 4533112 : Now base progress status weight is not used
7371                                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
7372                                 -- l_rollup_table1(l_index).PROGRESS_override2      := 0;
7373 
7374                                 l_rollup_table1(l_index).DIRTY_FLAG1      := 'Y';
7375                                 l_rollup_table1(l_index).DIRTY_FLAG2      := 'Y';
7376 
7377                                 -- Deliverable Status will not get rolled up for deliverable
7378 
7379                                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7380 
7381                                 IF nvl( l_task_weighting_percentage, 0 ) = 0 THEN
7382                                      l_action_allowed := 'N';
7383                                 END IF;
7384 
7385                                 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
7386                                      l_action_allowed := 'N';
7387                                 END IF;
7388 
7389                                 IF g1_debug_mode  = 'Y' THEN
7390                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7391                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
7392                                 END IF;
7393 
7394                                 l_rollup_table1(l_index).rollup_node1          := l_action_allowed;
7395                                 l_rollup_table1(l_index).rollup_node2          := l_action_allowed;
7396 
7397                                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7398                                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7399 
7400                         END LOOP; -- Delivertables Loop cur_del_rec
7401                 END IF; -- l_task_derivation_code = 'DELIVERABLES' THEN
7402 
7403     end if;  -- Fix for Bug # 4032987.
7404 
7405                 l_index := l_index + 1;
7406 
7407                 l_rollup_table1(l_index).OBJECT_TYPE                     := cur_tasks_rec.object_type;
7408                 l_rollup_table1(l_index).OBJECT_ID                       := cur_tasks_rec.object_id_to1;--Task Version Id
7409                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := cur_tasks_rec.parent_object_type;
7410                 l_rollup_table1(l_index).PARENT_OBJECT_ID                := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7411                 l_rollup_table1(l_index).WBS_LEVEL                       := NVL( cur_tasks_rec.wbs_level, 0 );
7412 
7413 		-- 4582956 Begin
7414                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG             := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);--4370746
7415 		IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789) THEN
7416 			-- 4586449 : Passing L for link tasks
7417 			l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
7418 			--l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
7419 		ELSE
7420 			l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);
7421 		END IF;
7422 		-- 4582956 end
7423 
7424                      -- Rollup Percent Complete Rollup
7425                 l_rollup_table1(l_index).task_weight1                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7426                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7427                 l_rollup_table1(l_index).PERCENT_OVERRIDE1               := cur_tasks_rec.override_percent_complete;
7428 
7429 		-- 4392189 : Program Reporting Changes - Phase 2
7430 		-- Having Set2 columns to get Project level % complete
7431                 l_rollup_table1(l_index).task_weight2                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7432                 l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( cur_tasks_rec.base_percent_complete, 0 );
7433 		--4557541 : For self % complete Override at tasks level would not be considered
7434                 --l_rollup_table1(l_index).PERCENT_OVERRIDE2               := cur_tasks_rec.override_percent_complete;
7435 		l_rollup_table1(l_index).PERCENT_OVERRIDE2               := null;
7436 
7437 
7438                      -- Base Percent Complete Rollup
7439                         -- l_rollup_table1(l_index).task_weight2            := nvl( cur_tasks_rec.weighting_percentage, 0 );
7440                         -- l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_tasks_rec.base_percent_complete, 0 );
7441                         -- l_rollup_table1(l_index).PERCENT_OVERRIDE2       := 0;
7442 
7443                      -- Actual Date Rollup
7444                 l_rollup_table1(l_index).START_DATE1                     := cur_tasks_rec.actual_start_date;
7445                 l_rollup_table1(l_index).FINISH_DATE1                    := cur_tasks_rec.actual_finish_date;
7446 
7447                      -- Estimated Date Rollup
7448                 l_rollup_table1(l_index).START_DATE2                     := cur_tasks_rec.estimated_start_date;
7449                 l_rollup_table1(l_index).FINISH_DATE2                    := cur_tasks_rec.estimated_finish_date;
7450 
7451                      -- Rollup Progress Status Rollup
7452                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
7453                 l_rollup_table1(l_index).PROGRESS_override1              := cur_tasks_rec.override_weight2;    --override prg status
7454 
7455                 -- Base Progress Status Rollup
7456 		-- 4533112 : Now base_progress_status_code is not used
7457                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 );  --base prog status
7458                 --l_rollup_table1(l_index).PROGRESS_override2              := 0;  -- FPM Dev CR 2
7459 
7460                      -- Task Status Rollup
7461                 l_rollup_table1(l_index).task_status1                    := nvl( cur_tasks_rec.task_weight4, 0 );  -- task status
7462 
7463                      -- ETC Effort Rollup
7464                 l_rollup_table1(l_index).REMAINING_EFFORT1               := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7465                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1               := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7466 
7467                      -- ETC Burden Cost in Project Currency Rollup
7468                 l_rollup_table1(l_index).ETC_COST1                       := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7469                 l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7470                 l_rollup_table1(l_index).EQPMT_ETC_COST1                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7471 
7472                 -- ETC Burden Cost in Project Functional Currency Rollup
7473                 l_rollup_table1(l_index).ETC_COST2                       := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7474                 l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7475                 l_rollup_table1(l_index).EQPMT_ETC_COST2                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7476 
7477                      -- Sub Project ETC Effort Rollup
7478                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7479                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7480 
7481                      -- Sub Project ETC Cost in Project Currency Rollup
7482                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7483                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7484                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7485 
7486                 -- Sub Project ETC Cost in Project Functional Currency Rollup
7487                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7488                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7489                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7490 
7491 		-- 4392189 : Program Reporting Changes - Phase 2
7492 		-- Having Set2 columns to get Project level % complete
7493 
7494                  -- Earned Value and BAC Rollup
7495                 l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7496 		l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7497 
7498 		-- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
7499 		-- in EARNED_VALUE1
7500 		IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789)
7501 		AND cur_tasks_rec.object_id_to1 = p_task_version_id
7502 		THEN
7503 
7504 			l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
7505 				, l_task_derivation_code, p_task_id,  p_structure_version_id,
7506 				'WORKPLAN','N','Y');
7507 			-- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
7508 			--l_rollup_table1(l_index).EARNED_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 );
7509 			l_rollup_table1(l_index).EARNED_VALUE2 := 1;
7510 		END IF;
7511 
7512 		l_rollup_table1(l_index).BAC_VALUE1              := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7513 
7514 		IF g1_debug_mode = 'Y' THEN
7515 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1,     x_Log_Level=> 3);
7516 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
7517 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
7518                 END IF;
7519 		-- 4586449 End
7520 
7521 
7522                 l_rollup_table1(l_index).BAC_VALUE2              := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
7523 
7524 
7525                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7526                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_task_derivation_code;
7527 
7528                 --Bug 3614828 Begin
7529                         -- ETC Burden Cost in Transaction Currency Rollup
7530                 l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7531                 l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7532                 l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7533 
7534                 -- ETC Raw Cost in Transaction Currency Rollup
7535                 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7536                 --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7537                 --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7538                 --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7539 
7540                 l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7541                 l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7542 
7543                 -- ETC Raw Cost in Project Currency Rollup
7544                 l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7545                 l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7546                 l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7547 
7548                 -- ETC Raw Cost in PRoject Functional Currency Rollup
7549                 l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7550                 l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7551                 l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7552 
7553 
7554                 -- Actual Burden Cost in Transaction Currency Rollup
7555                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7556                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7557                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7558                 -- Actual Burden Cost in Project Currency Rollup
7559                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7560                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7561                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7562                 -- Actual Burden Cost in Project Functional Currency Rollup
7563                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7564                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7565                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7566 
7567                 -- Actual Raw Cost in Transaction Currency Rollup
7568                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7569                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7570                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7571                 -- Actual Raw Cost in Project Currency Rollup
7572                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7573                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7574                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7575                 -- Actual Raw Cost in Project Functional Currency Rollup
7576                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7577                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7578                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7579 
7580                 --Bug 3614828 End
7581 
7582         -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7583                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7584                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7585 
7586 
7587 
7588                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7589                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7590                 l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7591                 l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7592                 l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7593                 l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7594 
7595                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7596                         l_action_allowed := 'N';
7597                 END IF;
7598 
7599                 IF g1_debug_mode  = 'Y' THEN
7600                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7601                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
7602                 END IF;
7603 
7604                 l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
7605                 l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
7606                 l_rollup_table1(l_index).rollup_node3                    := l_action_allowed;
7607                 l_rollup_table1(l_index).rollup_node4                    := l_action_allowed;
7608                 l_rollup_table1(l_index).rollup_node5                    := l_action_allowed;
7609                 l_rollup_table1(l_index).rollup_node6                    := l_action_allowed;
7610 
7611                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7612                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7613                 l_rollup_table1(l_index).rollup_node3          := 'Y';
7614                 l_rollup_table1(l_index).rollup_node4          := 'Y';
7615                 l_rollup_table1(l_index).rollup_node5          := 'Y';
7616                 l_rollup_table1(l_index).rollup_node6          := 'Y';
7617 
7618         END LOOP; -- Tasks Loop
7619 
7620 /*
7621         --bug 3951982
7622         --populate scheduling pl/sql table with sub-tasks of a summary tasks if it has assignments.
7623         IF PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_task_version_id ) = 'N'
7624            AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
7625         THEN
7626             -- Loop thru all tasks of a passed task
7627             FOR cur_tasks_rec in cur_tasks( p_task_version_id ) LOOP
7628               IF cur_tasks_rec.object_type = 'PA_TASKS'
7629               THEN
7630                 IF g1_debug_mode  = 'Y' THEN
7631                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Inside Tasks Loop: Second pass', x_Log_Level=> 3);
7632                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id, x_Log_Level=> 3);
7633                 END IF;
7634 
7635                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7636 
7637                 IF g1_debug_mode  = 'Y' THEN
7638                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_index='||l_index, x_Log_Level=> 3);
7639                 END IF;
7640 
7641                 l_index := l_index + 1;
7642 
7643                 l_rollup_table1(l_index).OBJECT_TYPE                     := cur_tasks_rec.object_type;
7644                 l_rollup_table1(l_index).OBJECT_ID                       := cur_tasks_rec.object_id_to1;--Task Version Id
7645                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := cur_tasks_rec.parent_object_type;
7646                 l_rollup_table1(l_index).PARENT_OBJECT_ID                := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7647                 l_rollup_table1(l_index).WBS_LEVEL                       := NVL( cur_tasks_rec.wbs_level, 0 );
7648 
7649                      -- Rollup Percent Complete Rollup
7650                 l_rollup_table1(l_index).task_weight1                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7651                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7652                 l_rollup_table1(l_index).PERCENT_OVERRIDE1               := cur_tasks_rec.override_percent_complete;
7653 
7654                      -- Base Percent Complete Rollup
7655                         -- l_rollup_table1(l_index).task_weight2            := nvl( cur_tasks_rec.weighting_percentage, 0 );
7656                         -- l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_tasks_rec.base_percent_complete, 0 );
7657                         -- l_rollup_table1(l_index).PERCENT_OVERRIDE2       := 0;
7658 
7659                      -- Actual Date Rollup
7660                 l_rollup_table1(l_index).START_DATE1                     := cur_tasks_rec.actual_start_date;
7661                 l_rollup_table1(l_index).FINISH_DATE1                    := cur_tasks_rec.actual_finish_date;
7662 
7663                      -- Estimated Date Rollup
7664                 l_rollup_table1(l_index).START_DATE2                     := cur_tasks_rec.estimated_start_date;
7665                 l_rollup_table1(l_index).FINISH_DATE2                    := cur_tasks_rec.estimated_finish_date;
7666 
7667                      -- Rollup Progress Status Rollup
7668                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
7669                 l_rollup_table1(l_index).PROGRESS_override1              := cur_tasks_rec.override_weight2;    --override prg status
7670 
7671                      -- Base Progress Status Rollup
7672                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 );  --base prog status
7673                 --l_rollup_table1(l_index).PROGRESS_override2              := 0;  -- FPM Dev CR 2
7674 
7675                      -- Task Status Rollup
7676                 l_rollup_table1(l_index).task_status1                    := nvl( cur_tasks_rec.task_weight4, 0 );  -- task status
7677 
7678                      -- ETC Effort Rollup
7679                 l_rollup_table1(l_index).REMAINING_EFFORT1               := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7680                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1               := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7681 
7682                      -- ETC Burden Cost in Project Currency Rollup
7683                 l_rollup_table1(l_index).ETC_COST1                       := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7684                 l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7685                 l_rollup_table1(l_index).EQPMT_ETC_COST1                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7686 
7687                 -- ETC Burden Cost in Project Functional Currency Rollup
7688                 l_rollup_table1(l_index).ETC_COST2                       := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7689                 l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7690                 l_rollup_table1(l_index).EQPMT_ETC_COST2                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7691 
7692                      -- Sub Project ETC Effort Rollup
7693                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7694                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7695 
7696                      -- Sub Project ETC Cost in Project Currency Rollup
7697                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7698                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7699                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7700 
7701                 -- Sub Project ETC Cost in Project Functional Currency Rollup
7702                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7703                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7704                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7705 
7706                        -- Earned Value and BAC Rollup
7707                 l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7708                 l_rollup_table1(l_index).BAC_VALUE1              := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7709 
7710                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7711 
7712                 --Bug 3614828 Begin
7713                         -- ETC Burden Cost in Transaction Currency Rollup
7714                 l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7715                 l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7716                 l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7717 
7718                 -- ETC Raw Cost in Transaction Currency Rollup
7719                 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7720                 --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7721                 --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7722                 --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7723 
7724                 l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7725                 l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7726 
7727                 -- ETC Raw Cost in Project Currency Rollup
7728                 l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7729                 l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7730                 l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7731 
7732                 -- ETC Raw Cost in PRoject Functional Currency Rollup
7733                 l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7734                 l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7735                 l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7736 
7737 
7738                 -- Actual Burden Cost in Transaction Currency Rollup
7739                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7740                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7741                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7742                 -- Actual Burden Cost in Project Currency Rollup
7743                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7744                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7745                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7746                 -- Actual Burden Cost in Project Functional Currency Rollup
7747                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7748                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7749                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7750 
7751                 -- Actual Raw Cost in Transaction Currency Rollup
7752                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7753                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7754                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7755                 -- Actual Raw Cost in Project Currency Rollup
7756                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7757                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7758                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7759                 -- Actual Raw Cost in Project Functional Currency Rollup
7760                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7761                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7762                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7763 
7764                 --Bug 3614828 End
7765 
7766         -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7767                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7768                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7769 
7770 
7771 
7772                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7773                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7774                 l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7775                 l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7776                 l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7777                 l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7778 
7779                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7780                         l_action_allowed := 'N';
7781                 END IF;
7782 
7783                 IF g1_debug_mode  = 'Y' THEN
7784                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
7785                      pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
7786                 END IF;
7787 
7788                 l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
7789                 l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
7790                 l_rollup_table1(l_index).rollup_node3                    := l_action_allowed;
7791                 l_rollup_table1(l_index).rollup_node4                    := l_action_allowed;
7792                 l_rollup_table1(l_index).rollup_node5                    := l_action_allowed;
7793                 l_rollup_table1(l_index).rollup_node6                    := l_action_allowed;
7794 
7795                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7796                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7797                 l_rollup_table1(l_index).rollup_node3          := 'Y';
7798                 l_rollup_table1(l_index).rollup_node4          := 'Y';
7799                 l_rollup_table1(l_index).rollup_node5          := 'Y';
7800                 l_rollup_table1(l_index).rollup_node6          := 'Y';
7801 
7802               END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
7803             END LOOP;
7804         END IF;
7805         --end bug 3951982
7806 */
7807 
7808         IF g1_debug_mode  = 'Y' THEN
7809                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
7810                 FOR i IN 1..l_rollup_table1.count LOOP
7811                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
7812                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
7813                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
7814                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
7815                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
7816                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7817                                 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7818                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7819                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7820                                 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7821                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
7822                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7823                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7824                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7825                                 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7826                                         ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7827                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7828                                 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7829                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7830                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7831                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7832                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7833                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7834                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7835                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7836                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7837                                 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7838                                         ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7839                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
7840                                 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
7841                         ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
7842                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7843             x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
7844                                 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7845                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7846             x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
7847                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2|| ' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7848                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='
7849                                 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7850                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4||' PPL_ETC_COST4 ='
7851                                 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7852                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
7853                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7854                 END LOOP;
7855         END IF;
7856     -- Bug 4207995 : Commented partial_flags in the below call
7857         --Call generate schedule with the second table.
7858         PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
7859                  p_commit                                => p_commit
7860                 ,p_debug_mode                           => 'Y'
7861                 ,x_return_status                        => l_return_status
7862                 ,x_msg_count                            => l_msg_count
7863                 ,x_msg_data                             => l_msg_data
7864                 ,x_process_number                       => l_process_number
7865 		,p_number_digit                         => 2               --bug 3941447
7866                 ,p_data_structure                       => l_rollup_table1
7867                 ,p_process_flag1                        => 'Y'
7868                 ,p_process_rollup_flag1                 => 'Y'
7869                 ,p_process_progress_flag1               => 'Y'
7870                 ,p_process_percent_flag1                => 'Y'
7871                 ,p_process_effort_flag1                 => 'Y'
7872                 ,p_process_task_status_flag1            => 'Y'
7873                 ,p_process_flag2                        => 'Y'
7874                 ,p_process_rollup_flag2                 => 'Y'
7875                 ,p_process_progress_flag2               => 'Y'
7876                 ,p_process_percent_flag2                => 'Y'
7877 --                ,p_partial_process_flag1                => 'Y'
7878 --                ,p_partial_process_flag2                => 'Y'
7879 --                ,p_partial_dates_flag1                  => 'Y'
7880 --                ,p_partial_dates_flag2                  => 'Y'
7881 --                ,p_partial_progress_flag1               => 'Y'
7882 --                ,p_partial_progress_flag2               => 'Y'
7883 --                ,p_partial_task_status_flag1            => 'N'
7884 --                ,p_partial_effort_flag1                 => 'Y'
7885 --                ,p_partial_percent_flag1                => 'Y'
7886 --                ,p_partial_percent_flag2                => 'Y'
7887 --                ,p_process_ETC_Flag1                    => 'Y'
7888 --                ,p_partial_ETC_Flag1                    => 'Y'
7889 --                ,p_process_ETC_Flag2                    => 'Y'
7890 --                ,p_partial_ETC_Flag2                    => 'Y'
7891                 --Bug 3614828 Begin
7892                 ,p_process_flag3                        => 'Y'
7893                 ,p_process_rollup_flag3                 => 'Y'
7894                 ,p_process_progress_flag3               => 'Y'
7895                 ,p_process_percent_flag3                => 'Y'
7896                 ,p_process_effort_flag3                 => 'Y'
7897                 ,p_process_task_status_flag3            => 'Y'
7898                 ,p_process_ETC_Flag3                    => 'Y'
7899 --                ,p_partial_ETC_Flag3                    => 'Y'
7900                 ,p_process_flag4                        => 'Y'
7901                 ,p_process_rollup_flag4                 => 'Y'
7902                 ,p_process_progress_flag4               => 'Y'
7903                 ,p_process_percent_flag4                => 'Y'
7904                 ,p_process_effort_flag4                 => 'Y'
7905                 ,p_process_task_status_flag4            => 'Y'
7906                 ,p_process_ETC_Flag4                    => 'Y'
7907 --                ,p_partial_ETC_Flag4                    => 'Y'
7908                 ,p_process_flag5                        => 'Y'
7909                 ,p_process_rollup_flag5                 => 'Y'
7910                 ,p_process_progress_flag5               => 'Y'
7911                 ,p_process_percent_flag5                => 'Y'
7912                 ,p_process_effort_flag5                 => 'Y'
7913                 ,p_process_task_status_flag5            => 'Y'
7914                 ,p_process_ETC_Flag5                    => 'Y'
7915 --                ,p_partial_ETC_Flag5                    => 'Y'
7916                 ,p_process_flag6                        => 'Y'
7917                 ,p_process_rollup_flag6                 => 'Y'
7918                 ,p_process_progress_flag6               => 'Y'
7919                 ,p_process_percent_flag6                => 'Y'
7920                 ,p_process_effort_flag6                 => 'Y'
7921                 ,p_process_task_status_flag6            => 'Y'
7922                 ,p_process_ETC_Flag6                    => 'Y'
7923 --                ,p_partial_ETC_Flag6                    => 'Y'
7924                 --Bug 3614828 End
7925                 ,p_Rollup_Method                        => l_Rollup_Method
7926                 );
7927 
7928         IF g1_debug_mode  = 'Y' THEN
7929                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=> 3);
7930         END IF;
7931 
7932         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7933                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7934                                            p_msg_name       => l_msg_data
7935                                 );
7936                 x_msg_data := l_msg_data;
7937           x_return_status := 'E';
7938           RAISE  FND_API.G_EXC_ERROR;
7939         END IF;
7940 
7941         -- Updating the Rolled up Task Record
7942         IF g1_debug_mode  = 'Y' THEN
7943                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '******Returned from Genertate Schedule ***', x_Log_Level=> 3);
7944                 FOR i IN 1..l_rollup_table1.count LOOP
7945                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
7946                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'OBJECT_ID ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
7947                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
7948                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
7949                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'WBS_LEVEL ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
7950                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7951                                 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7952                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7953                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7954                                 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7955                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
7956                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7957                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7958                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7959                                 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7960                                         ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7961                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7962                                 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7963                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7964                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7965                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7966                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7967                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7968                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7969                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7970                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7971                                 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7972                                         ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7973                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
7974                                 ' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
7975                         ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
7976                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7977 			x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
7978                                 ' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7979                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7980 			x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
7981                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7982                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='
7983                                 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7984                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4||' PPL_ETC_COST4 ='
7985                                 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7986                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
7987                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7988                 END LOOP;
7989     END IF;
7990 
7991         l_percent_complete_id := null;
7992 
7993         l_total_tasks := l_rollup_table1.count; -- Actually it is not the tasks count, it is count of all the objects.
7994 
7995         IF g1_debug_mode  = 'Y' THEN
7996                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
7997                 FOR i IN 1..l_total_tasks LOOP
7998                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id ='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
7999                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_type ='||l_rollup_table1(i).object_type, x_Log_Level=> 3);
8000                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
8001                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
8002                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).ETC_COST4 ='||l_rollup_table1(i).ETC_COST4, x_Log_Level=> 3);
8003                 END LOOP;
8004         END IF;
8005 
8006         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
8007         BEGIN
8008                 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date),null);
8009                 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date),null);
8010         EXCEPTION
8011                 WHEN OTHERS THEN
8012                         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8013                                     p_msg_name       => 'PA_FP_INVALID_DATE_RANGE');
8014                         x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
8015                         x_return_status := 'E';
8016                         x_msg_count := fnd_msg_pub.count_msg;
8017                         RAISE  FND_API.G_EXC_ERROR;
8018         END ;
8019 
8020         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
8021 
8022 
8023         IF l_total_tasks > 0 THEN
8024                 FOR i in 1..l_total_tasks LOOP
8025                         IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
8026                         THEN
8027                                 IF g1_debug_mode  = 'Y' THEN
8028                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
8029                                 END IF;
8030 
8031                                 l_BASE_PERCENT_COMP_DERIV_CODE := l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1;
8032                                 l_eff_rollup_status_code := null;
8033                                 l_progress_status_code := null;
8034 
8035                                 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
8036                                 FETCH cur_status INTO l_eff_rollup_status_code;
8037                                 CLOSE cur_status;
8038 
8039                                 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
8040                                 FETCH cur_status INTO l_progress_status_code;
8041                                 CLOSE cur_status;
8042 
8043                                 IF g1_debug_mode  = 'Y' THEN
8044                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
8045                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code, x_Log_Level=> 3);
8046                                 END IF;
8047 
8048 
8049 
8050                                 l_rolled_up_per_comp := null;
8051                                 l_rolled_up_prog_stat := null;
8052                                 l_rolled_up_base_prog_stat := null;
8053                                 l_rolled_up_prog_stat := null;
8054                                 l_remaining_effort1 := null;
8055                                 l_percent_complete1 := null;
8056                                 l_ETC_Cost_PC    := null;
8057                                 l_PPL_ETC_COST_PC := null;
8058                                 l_EQPMT_ETC_COST_PC := null;
8059                                 l_ETC_Cost_FC       := null;
8060                                 l_PPL_ETC_COST_FC   := null;
8061                                 l_EQPMT_ETC_COST_FC := null;
8062                                 l_EQPMT_ETC_EFFORT := null;
8063                                 l_SUB_PRJ_ETC_COST_PC := null;
8064                                 l_SUB_PRJ_PPL_ETC_COST_PC := null;
8065                                 l_SUB_PRJ_EQPMT_ETC_COST_PC := null;
8066                                 l_SUB_PRJ_ETC_COST_FC := null;
8067                                 l_SUB_PRJ_PPL_ETC_COST_FC := null;
8068                                 l_SUB_PRJ_EQPMT_ETC_COST_FC := null;
8069                                 l_SUB_PRJ_PPL_ETC_EFFORT := null;
8070                                 l_SUB_PRJ_EQPMT_ETC_EFFORT := null;
8071                                 l_BAC_VALUE1 := null;
8072                                 l_EARNED_VALUE1 := null;
8073                                 l_remaining_effort1 := null;
8074                                 l_EQPMT_ETC_EFFORT := null;
8075                                 l_OTH_ACT_COST_TO_DATE_PC := null;
8076                                 l_PPL_ACT_COST_TO_DATE_PC := null;
8077                                 l_EQPMT_ACT_COST_TO_DATE_PC := null;
8078                                 l_OTH_ACT_COST_TO_DATE_FC := null;
8079                                 l_PPL_ACT_COST_TO_DATE_FC := null;
8080                                 l_EQPMT_ACT_COST_TO_DATE_FC := null;
8081                                 l_PPL_ACT_EFFORT_TO_DATE := null;
8082                                 l_EQPMT_ACT_EFFORT_TO_DATE := null;
8083                                 l_cur_pa_rollup1_rec := null;
8084                                 l_cur_rollup_rec := null;
8085                                 -- Bug 3621404 : Raw Cost Changes
8086                                 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
8087                                 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
8088                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
8089                                 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
8090                                 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
8091                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
8092                                 l_ETC_RAWCost_PC := null;
8093                                 l_PPL_ETC_RAWCOST_PC := null;
8094                                 l_EQPMT_ETC_RAWCOST_PC := null;
8095                                 l_ETC_RAWCost_FC := null;
8096                                 l_PPL_ETC_RAWCOST_FC := null;
8097                                 l_EQPMT_ETC_RAWCOST_FC := null;
8098 				-- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8099 				l_Oth_quantity_to_date := null;
8100 				l_oth_etc_quantity := null;
8101 				-- Bug 3956299 Begin
8102 				l_actual_start_date := l_rollup_table1(i).start_date1;
8103 				l_actual_finish_date := l_rollup_table1(i).finish_date1;
8104 				l_estimated_start_date := l_rollup_table1(i).start_date2;
8105 				l_estimated_finish_date := l_rollup_table1(i).finish_date2;
8106 				-- Bug 3956299 End
8107 
8108                                 -- Bug 5675437
8109                                 l_cur_rollup_rec3 := null;
8110 
8111                                 OPEN cur_pa_rollup1(p_task_id);
8112                                 FETCH  cur_pa_rollup1 INTO l_cur_pa_rollup1_rec;
8113                                 CLOSE cur_pa_rollup1;
8114 
8115                                 l_rolled_up_per_comp :=  l_cur_pa_rollup1_rec.completed_percentage;
8116                                 l_rolled_up_prog_stat := l_cur_pa_rollup1_rec.progress_status_code;
8117                                 IF g1_debug_mode  = 'Y' THEN
8118                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
8119                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat, x_Log_Level=> 3);
8120                                 END IF;
8121                                 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
8122 				-- 4533112 : Now base_progress_status_code is not used
8123 				/*
8124                                 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_task_version_id )= 'Y'
8125                                 THEN
8126                                         -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
8127                                         l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8128                                 ELSE
8129 					-- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
8130                                         l_rolled_up_base_prog_stat := l_progress_status_code;
8131                                 END IF;
8132 				*/
8133 				l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8134 
8135                                 --Check whether there exists any rollup record for the task.
8136                                 --if exists then update otherwise create.
8137                                 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
8138                                                    p_project_id                 => p_project_id
8139                                                   ,p_object_id                  => p_task_id
8140                                                   ,p_object_type                => 'PA_TASKS'
8141                                                   ,p_object_version_id          => p_task_version_id
8142                                                   ,p_as_of_date                 => p_as_of_date
8143                                                   ,p_structure_type             => 'WORKPLAN'
8144                                                   ,p_structure_version_id       => l_structure_version_id
8145 						  ,p_proj_element_id            => p_task_id
8146 						  ,p_action                     => 'SAVE' -- Bug 3879461
8147                                                   ,x_record_version_number      => l_rollup_rec_ver_number
8148                                                 );
8149 
8150                                 IF g1_debug_mode  = 'Y' THEN
8151                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
8152                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
8153                                 END IF;
8154 
8155 
8156 				--bug 3949093, round the values
8157                                 --l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
8158                                 --l_remaining_effort1 := nvl(l_rollup_table1(i).remaining_effort1,0);
8159 
8160 				-- 4392189 : Program Reporting Changes - Phase 2
8161 				-- Having Set2 columns to get Project level % complete
8162 
8163                                 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
8164                                 -- 4506461 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,2),0);
8165                                 l_base_pc_temp      := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
8166                                 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
8167                                 --bug 3949093, end
8168 
8169 				-- Bug 4506461 Begin
8170 				l_percent_complete2 := nvl(l_override_pc_temp,l_percent_complete1);
8171 				-- 4540890 : Removed l_subproject_found check from below
8172 				--IF  l_subproject_found = 'Y' THEN
8173 				l_rederive_base_pc := 'N';
8174 				OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
8175 				FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
8176 				CLOSE c_get_any_childs_have_subprj;
8177 				IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
8178 					l_percent_complete2 := l_base_pc_temp;
8179 				END IF;
8180                 --END IF;
8181                 -- Bug 4506461 End
8182 
8183 
8184                                 --do not rollup on-hold task status. We dont need to worry about
8185                                 --cancelled bcoz they are not selected.
8186                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
8187                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
8188 
8189                 -- Bug 3922325 : Moved the code for status defaulting and updating after Actual is derived
8190 
8191                 --Bug 3614828 Begin
8192 
8193                                 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0); -- Bug 3764224
8194                 --bug 3949093, rund the earned value
8195                                 --l_EARNED_VALUE1 := nvl(l_rollup_table1(i).EARNED_VALUE1,0); -- Bug 3764224
8196 
8197                 IF g1_debug_mode  = 'Y' THEN
8198                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
8199                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
8200                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
8201                 END IF;
8202 
8203                 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
8204 
8205                 IF p_wp_rollup_method = 'EFFORT'
8206                 THEN
8207                     l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
8208                 ELSE
8209                     l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
8210                 END IF;
8211                 --bug 3949093, end
8212 
8213                                 l_OTH_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT3;
8214                                 l_PPL_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT3;
8215                                 l_EQPMT_ACT_COST_TO_DATE_PC := l_rollup_table1(i).PPL_UNPLAND_EFFORT3;
8216                                 l_OTH_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_ETC_COST4;
8217                                 l_PPL_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST4;
8218                                 l_EQPMT_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST4;
8219                                 l_PPL_ACT_EFFORT_TO_DATE := l_rollup_table1(i).ETC_COST4;
8220                                 l_EQPMT_ACT_EFFORT_TO_DATE := l_rollup_table1(i).PPL_ETC_COST4;
8221                                 l_ETC_Cost_PC := l_rollup_table1(i).ETC_COST1;
8222                                 l_PPL_ETC_COST_PC := l_rollup_table1(i).PPL_ETC_COST1;
8223                                 l_EQPMT_ETC_COST_PC := l_rollup_table1(i).EQPMT_ETC_COST1;
8224                                 l_ETC_Cost_FC := l_rollup_table1(i).ETC_COST2;
8225                                 l_PPL_ETC_COST_FC := l_rollup_table1(i).PPL_ETC_COST2;
8226                                 l_EQPMT_ETC_COST_FC := l_rollup_table1(i).EQPMT_ETC_COST2;
8227                                 l_remaining_effort1 := l_rollup_table1(i).REMAINING_EFFORT1;
8228                                 l_EQPMT_ETC_EFFORT := l_rollup_table1(i).EQPMT_ETC_EFFORT1;
8229                                 l_OTH_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_ETC_COST5;
8230                                 l_PPL_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST5;
8231                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST5;
8232                                 l_OTH_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT5;
8233                                 l_PPL_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT5;
8234                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).PPL_UNPLAND_EFFORT5;
8235                                 l_ETC_RAWCost_PC := l_rollup_table1(i).ETC_COST5;
8236                                 l_PPL_ETC_RAWCOST_PC := l_rollup_table1(i).PPL_ETC_COST5;
8237                                 l_EQPMT_ETC_RAWCOST_PC := l_rollup_table1(i).EQPMT_ETC_COST5;
8238                                 l_ETC_RAWCost_FC := l_rollup_table1(i).ETC_COST6;
8239                                 l_PPL_ETC_RAWCOST_FC := l_rollup_table1(i).PPL_ETC_COST6;
8240                                 l_EQPMT_ETC_RAWCOST_FC := l_rollup_table1(i).EQPMT_ETC_COST6;
8241                 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8242                 l_Oth_quantity_to_date := l_rollup_table1(i).SUB_PRJ_ETC_COST6;
8243                 l_oth_etc_quantity := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST6;
8244 
8245 
8246                                 --Bug 3614828 End
8247 
8248                 -- Bug 3922325 : Moved here the code from above
8249                 -- Begin
8250 
8251 
8252                 -- Bug 3879461 Begin : Commented this logic for defaulting status and added new
8253                                 /*IF (l_percent_complete1 > 0) THEN
8254                                         l_status_code := null;
8255 
8256                                         OPEN cur_task_status( to_char(l_rollup_table1(i).task_status1) );
8257                                         FETCH cur_task_status INTO l_status_code;
8258                                         CLOSE cur_task_status;
8259 
8260                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
8261 
8262                                         IF (l_percent_complete1 = 100 AND l_task_system_status_code = 'NOT_STARTED')
8263                                         THEN
8264                                                 l_status_code := '127';
8265                                         ELSIF (l_percent_complete1 > 0 AND l_task_system_status_code = 'NOT_STARTED')
8266                                         THEN
8267                                                 l_status_code := '125';
8268                                         END IF;
8269 
8270 
8271                                         UPDATE pa_percent_completes
8272                                         SET status_code = l_status_code
8273                                         WHERE object_id = p_task_id
8274                                         AND project_id = p_project_id
8275                                         AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8276                                         AND structure_type = 'WORKPLAN'
8277                                         AND current_flag = 'N' and published_flag = 'N';
8278 
8279                                 END IF;*/
8280                 -- If Actual Exists or Deliverable is in progress then task shd be In PRogress
8281                 l_actual_exists := 'N';
8282                 ---5726773  changed '>0' to '<>0'
8283  	        IF (l_PPL_ACT_EFFORT_TO_DATE <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
8284                                     IF g1_debug_mode  = 'Y' THEN
8285                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
8286                     END IF;
8287                     l_actual_exists := 'Y';
8288                 END IF;
8289                 OPEN c_get_dlv_status;
8290                 FETCH c_get_dlv_status INTO l_actual_exists;
8291                 CLOSE c_get_dlv_status;
8292 
8293                                 IF g1_debug_mode  = 'Y' THEN
8294                                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
8295                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Defaulting Status and Actual Dates', x_Log_Level=> 3);
8296                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_percent_complete1='||l_percent_complete1, x_Log_Level=> 3);
8297                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=> 3);
8298                                 END IF;
8299 
8300 
8301                                 IF  (  ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8302                                        OR
8303                                       ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
8304                       OR l_actual_exists = 'Y'
8305                                      ) THEN
8306 
8307                                         OPEN  c_get_object_status ( p_project_id, p_task_id);
8308                                         FETCH c_get_object_status INTO l_existing_object_status;
8309                                         CLOSE c_get_object_status;
8310 
8311                     l_status_code := l_existing_object_status;
8312 
8313                                         IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8314                                         THEN
8315                         OPEN  cur_task_status ( to_char(l_rollup_table1(i).task_status1) );
8316                                                 FETCH cur_task_status INTO l_status_code;
8317                                                 CLOSE cur_task_status;
8318                                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
8319                     END IF; -- Bug 3956299 : Reduced scope of IF.
8320                         -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
8321                                         --ELSE
8322                                         --l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_existing_object_status );  Bug 3956299
8323                                         l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
8324 
8325                                     IF g1_debug_mode  = 'Y' THEN
8326                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
8327                                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
8328                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_task_system_status_code='||l_task_system_status_code, x_Log_Level=> 3);
8329                     END IF;
8330 
8331 
8332                                     IF ( NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_task_system_status_code <> 'COMPLETED')
8333                                         THEN
8334                                             l_status_code := '127';
8335                         l_task_system_status_code := 'COMPLETED';
8336                     -- In the below check, Completed is also added as Scheduling API may return status as COMPLETED but % complete may not be as 100
8337                             ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100)) AND l_task_system_status_code IN ('NOT_STARTED','COMPLETED'))
8338                                         THEN
8339                                             l_status_code := '125';
8340                         l_task_system_status_code := 'IN_PROGRESS';
8341                         l_actual_finish_date := null;
8342                     -- This is done to first time make task In Progress if any sub-objects are in Progress
8343                             ELSIF (l_actual_exists ='Y' AND l_task_system_status_code = 'NOT_STARTED')
8344                                         THEN
8345                                             l_status_code := '125';
8346 						l_task_system_status_code := 'IN_PROGRESS';
8347                         l_actual_finish_date := null;
8348                                         END IF;
8349                                         --END IF;
8350 
8351                                     IF g1_debug_mode  = 'Y' THEN
8352                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
8353                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Defaulting l_task_system_status_code='||l_task_system_status_code, x_Log_Level=> 3);
8354                     END IF;
8355 
8356 
8357                     -- Bug 3956299 Begin
8358                     OPEN c_get_dates (p_project_id, p_task_version_id);
8359                     FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
8360                     CLOSE c_get_dates;
8361                     /* Bug 3922325  : Date defaulting should be based on Status rather % complete
8362                     IF l_actual_start_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 THEN
8363                          l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8364                     END IF;
8365                     IF l_actual_start_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1) < 100 THEN
8366                          l_actual_finish_date := null;
8367                     END IF;
8368                     IF l_actual_finish_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 THEN
8369                          l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8370                     END IF;
8371                     */
8372                     IF l_actual_start_date IS NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8373                         l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8374                         l_actual_finish_date := to_date(null);
8375                     END IF;
8376                     -- Bug 4232099 : added folling IF
8377                     IF l_actual_finish_date IS NOT NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8378                         l_actual_finish_date := to_date(null);
8379                     END IF;
8380                     IF l_actual_start_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8381                         l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8382                     END IF;
8383                     IF l_actual_finish_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8384                         l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8385                     END IF;
8386 
8387                     IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
8388                         IF l_actual_finish_date < l_actual_start_date THEN
8389                             IF TRUNC(SYSDATE) < l_actual_start_date THEN
8390                                 l_actual_finish_date := l_actual_start_date;
8391                             ELSE
8392                                 l_actual_finish_date := TRUNC(SYSDATE);
8393                             END IF;
8394                         END IF;
8395                     END IF;
8396                 -- Bug 3956299 End
8397 
8398                                         UPDATE pa_percent_completes
8399                                         SET status_code = l_status_code
8400                     , actual_start_date = l_actual_start_date -- Bug 3956299
8401                     , actual_finish_date = l_actual_finish_date -- Bug 3956299
8402                                         WHERE object_id = p_task_id
8403                                         AND project_id = p_project_id
8404                                         AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8405                                         AND structure_type = 'WORKPLAN'
8406                                         AND current_flag = 'N' and published_flag = 'N';
8407                                 END IF;
8408                 -- Bug 3879461 End
8409                 -- Bug 3922325 End
8410 
8411 
8412                                 --Bug 3614828 Begin
8413                                 /* In Save action, Actuals and ETC is not to be read from PJI.
8414                                 BEGIN
8415                                        SELECT
8416                         PERIOD_NAME
8417                                                 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
8418                                                 , ACT_PRJ_LABOR_BRDN_COST
8419                                                 , ACT_PRJ_EQUIP_BRDN_COST
8420                                                 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
8421                                                 , ACT_POU_LABOR_BRDN_COST
8422                                                 , ACT_POU_EQUIP_BRDN_COST
8423                                                 , ACT_LABOR_HRS
8424                                                 , ACT_EQUIP_HRS
8425                                                 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
8426                                                 , ETC_PRJ_LABOR_BRDN_COST
8427                                                 , ETC_PRJ_EQUIP_BRDN_COST
8428                                                 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
8429                                                 , ETC_POU_LABOR_BRDN_COST
8430                                                 , ETC_POU_EQUIP_BRDN_COST
8431                                                 , ETC_LABOR_HRS
8432                                                 , ETC_EQUIP_HRS
8433                                                 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
8434                                                 , ACT_PRJ_LABOR_RAW_COST
8435                                                 , ACT_PRJ_EQUIP_RAW_COST
8436                                                 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
8437                                                 , ACT_POU_LABOR_RAW_COST
8438                                                 , ACT_POU_EQUIP_RAW_COST
8439                                                 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
8440                                                 , ETC_PRJ_LABOR_RAW_COST
8441                                                 , ETC_PRJ_EQUIP_RAW_COST
8442                                                 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
8443                                                 , ETC_POU_LABOR_RAW_COST
8444                                                 , ETC_POU_EQUIP_RAW_COST
8445                                                 ,EQUIPMENT_HOURS
8446                                                 ,POU_LABOR_BRDN_COST
8447                                                 ,PRJ_LABOR_BRDN_COST
8448                                                 ,POU_EQUIP_BRDN_COST
8449                                                 ,PRJ_EQUIP_BRDN_COST
8450                                                 ,POU_LABOR_RAW_COST
8451                                                 ,PRJ_LABOR_RAW_COST
8452                                                 ,POU_EQUIP_RAW_COST
8453                                                 ,PRJ_EQUIP_RAW_COST
8454                                         INTO    l_PERIOD_NAME
8455                                                 , l_OTH_ACT_COST_TO_DATE_PC
8456                                                 , l_PPL_ACT_COST_TO_DATE_PC
8457                                                 , l_EQPMT_ACT_COST_TO_DATE_PC
8458                                                 , l_OTH_ACT_COST_TO_DATE_FC
8459                                                 , l_PPL_ACT_COST_TO_DATE_FC
8460                                                 , l_EQPMT_ACT_COST_TO_DATE_FC
8461                                                 , l_PPL_ACT_EFFORT_TO_DATE
8462                                                 , l_EQPMT_ACT_EFFORT_TO_DATE
8463                                                 , l_ETC_Cost_PC
8464                                                 , l_PPL_ETC_COST_PC
8465                                                 , l_EQPMT_ETC_COST_PC
8466                                                 , l_ETC_Cost_FC
8467                                                 , l_PPL_ETC_COST_FC
8468                                                 , l_EQPMT_ETC_COST_FC
8469                                                 , l_remaining_effort1
8470                                                 , l_EQPMT_ETC_EFFORT
8471                                                 , l_OTH_ACT_RAWCOST_TO_DATE_PC
8472                                                 , l_PPL_ACT_RAWCOST_TO_DATE_PC
8473                                                 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8474                                                 , l_OTH_ACT_RAWCOST_TO_DATE_FC
8475                                                 , l_PPL_ACT_RAWCOST_TO_DATE_FC
8476                                                 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8477                                                 , l_ETC_RAWCost_PC
8478                                                 , l_PPL_ETC_RAWCOST_PC
8479                                                 , l_EQPMT_ETC_RAWCOST_PC
8480                                                 , l_ETC_RAWCost_FC
8481                                                 , l_PPL_ETC_RAWCOST_FC
8482                                                 , l_EQPMT_ETC_RAWCOST_FC
8483                                                 ,l_EQUIPMENT_HOURS
8484                                                 ,l_POU_LABOR_BRDN_COST
8485                                                 ,l_PRJ_LABOR_BRDN_COST
8486                                                 ,l_POU_EQUIP_BRDN_COST
8487                                                 ,l_PRJ_EQUIP_BRDN_COST
8488                                                 ,l_POU_LABOR_RAW_COST
8489                                                 ,l_PRJ_LABOR_RAW_COST
8490                                                 ,l_POU_EQUIP_RAW_COST
8491                                                 ,l_PRJ_EQUIP_RAW_COST
8492                                          FROM PJI_FM_XBS_ACCUM_TMP1
8493                                          WHERE project_id = p_project_id
8494                                          AND struct_version_id = p_structure_version_id
8495                                          AND project_element_id = p_task_id
8496                                          AND plan_version_id > 0
8497                                          AND txn_currency_code is null
8498                                          AND calendar_type = 'A'
8499                                          AND res_list_member_id is null;
8500                                 EXCEPTION
8501                                          WHEN NO_DATA_FOUND THEN
8502                                               null;
8503                                          WHEN OTHERS THEN
8504                                               fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8505                                                                    p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
8506                                                                    p_error_text     => SUBSTRB('PJI_FM_XBS_ACCUM_TMP1:'||SQLERRM,1,120));
8507                                              RAISE FND_API.G_EXC_ERROR;
8508                                 END;
8509                                 */
8510                                 --Bug 3614828 End
8511 
8512 
8513                                 IF l_PROGRESS_ROLLUP_ID IS NOT NULL
8514                                 THEN
8515                                         --update
8516                                         OPEN cur_rollup( l_PROGRESS_ROLLUP_ID );
8517                                         FETCH cur_rollup INTO l_cur_rollup_rec;
8518                                         CLOSE cur_rollup;
8519                                         /* Do not update actuals if the project is of shared type. */
8520                                         -- 4623833 : Added l_subproj_task_version_id check
8521 					-- update_task_progress makes equip amount as null for link task
8522 					-- This should be updated back with the rolled amounts from sub projects
8523 					-- Ideally, the below code should not be there at all and alwsy values shd rollup
8524 					-- but for precuations at this last stage of build, just including link task check here
8525 
8526                                         IF l_split_workplan = 'N' AND l_subproj_task_version_id IS NULL
8527                                         THEN
8528                                            /* Start of changes for bug 5675437*/
8529                                              -- For hidden assignment case, we need to get the actuals from submitted record rather than current working one
8530 
8531                                              IF l_rollup_table1(i).SUMMARY_OBJECT_FLAG = 'N' AND PA_PROGRESS_UTILS.check_assignment_exists(p_project_id, p_task_version_id, 'PA_TASKS') = 'N' THEN
8532 
8533                                                 l_PROGRESS_ROLLUP_ID3 := PA_PROGRESS_UTILS.get_prog_rollup_id(
8534                                                      p_project_id                 => p_project_id
8535                                                     ,p_object_id                  => p_task_id
8536                                                     ,p_object_type                => 'PA_TASKS'
8537                                                     ,p_object_version_id          => p_task_version_id
8538                                                     ,p_as_of_date                 => p_as_of_date
8539                                                     ,p_structure_type             => 'WORKPLAN'
8540                                                     ,p_structure_version_id       => l_structure_version_id
8541                                                     ,p_proj_element_id            => p_task_id
8542                                                     ,x_record_version_number      => l_rollup_rec_ver_number3
8543                                                   );
8544                                                 OPEN cur_rollup( l_PROGRESS_ROLLUP_ID3 );
8545                                                  FETCH cur_rollup INTO l_cur_rollup_rec3;
8546                                                  CLOSE cur_rollup;
8547 
8548                                                  l_PPL_ACT_EFFORT_TO_DATE         :=     l_cur_rollup_rec3.PPL_ACT_EFFORT_TO_DATE;
8549                                                  l_EQPMT_ACT_EFFORT_TO_DATE       :=     l_cur_rollup_rec3.EQPMT_ACT_EFFORT_TO_DATE;
8550                                                  l_OTH_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_FC;
8551                                                  l_OTH_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_PC;
8552                                                  l_PPL_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_FC;
8553                                                  l_PPL_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_PC;
8554                                                  l_EQPMT_ACT_COST_TO_DATE_FC      :=     l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_FC;
8555                                                  l_EQPMT_ACT_COST_TO_DATE_PC      :=     l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_PC;
8556                                                  l_OTH_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_FC;
8557                                                  l_OTH_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_PC;
8558                                                  l_PPL_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_FC;
8559                                                  l_PPL_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_PC;
8560                                                  l_EQPMT_ACT_RAWCOST_TO_DATE_FC   :=     l_cur_rollup_rec3.EQPMT_ACT_RAWCOST_TO_DATE_FC;l_EQPMT_ACT_RAWCOST_TO_DATE_PC   :=     l_cur_rollup_rec3.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8561                                                  l_Oth_quantity_to_date           :=     l_cur_rollup_rec3.Oth_quantity_to_date;
8562 
8563                                              ELSE
8564 
8565                                              /* End of changes for bug 5675437*/
8566 
8567                                                 l_PPL_ACT_EFFORT_TO_DATE         :=     l_cur_rollup_rec.PPL_ACT_EFFORT_TO_DATE;
8568                                                 l_EQPMT_ACT_EFFORT_TO_DATE       :=     l_cur_rollup_rec.EQPMT_ACT_EFFORT_TO_DATE;
8569                                                 l_OTH_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_FC;
8570                                                 l_OTH_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_PC;
8571                                                 l_PPL_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_FC;
8572                                                 l_PPL_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_PC;
8573                                                 l_EQPMT_ACT_COST_TO_DATE_FC      :=     l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_FC;
8574                                                 l_EQPMT_ACT_COST_TO_DATE_PC      :=     l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_PC;
8575                                                 l_OTH_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
8576                                                 l_OTH_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
8577                                                 l_PPL_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
8578                                                 l_PPL_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
8579                                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC   :=     l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
8580                                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC   :=     l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8581                         l_Oth_quantity_to_date           :=     l_cur_rollup_rec.Oth_quantity_to_date;
8582                                             END IF;  --5675437
8583 
8584                                         END IF;
8585 
8586 
8587                                         /* if etc values are null, set them as planned - actual. */
8588 
8589                                                         PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
8590                                                                     X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
8591                                                                    ,X_PROJECT_ID                      => p_project_id
8592                                                                    ,X_OBJECT_ID                       => p_task_id
8593                                                                    ,X_OBJECT_TYPE                     => l_rollup_table1(i).object_type
8594                                                                    ,X_AS_OF_DATE                      => p_as_of_date
8595                                                                    ,X_OBJECT_VERSION_ID               => l_rollup_table1(i).object_id
8596                                                                    ,X_LAST_UPDATE_DATE                => SYSDATE
8597                                                                    ,X_LAST_UPDATED_BY                 => l_user_id
8598                                                                    ,X_PROGRESS_STATUS_CODE            => l_cur_rollup_rec.progress_status_code
8599                                                                    ,X_LAST_UPDATE_LOGIN               => l_login_id
8600                                                                    ,X_INCREMENTAL_WORK_QTY            => l_cur_rollup_rec.incremental_work_quantity
8601                                                                    ,X_CUMULATIVE_WORK_QTY             => l_cur_rollup_rec.cumulative_work_quantity
8602                                                                    ,X_BASE_PERCENT_COMPLETE           => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8603                                                                    ,X_EFF_ROLLUP_PERCENT_COMP         => l_percent_complete1
8604                                                                    ,X_COMPLETED_PERCENTAGE            => l_cur_rollup_rec.completed_percentage
8605                                                                    ,X_ESTIMATED_START_DATE            => l_rollup_table1(i).start_date2
8606                                                                    ,X_ESTIMATED_FINISH_DATE           => l_rollup_table1(i).finish_date2
8607                                                                    ,X_ACTUAL_START_DATE               => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8608                                                                    ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8609                                                                    ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
8610                                                                    ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
8611                                                                    ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_cur_rollup_rec.BASE_PERCENT_COMP_DERIV_CODE
8612                                                                    ,X_BASE_PROGRESS_STATUS_CODE       => l_rolled_up_base_prog_stat
8613                                                                    ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_status_code
8614                                                                    ,x_percent_complete_id             => null
8615                                                                    ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
8616                                                                    ,X_PROJ_ELEMENT_ID                 => p_task_id
8617                                                                    ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
8618                                                                    ,X_PPL_ACT_EFFORT_TO_DATE          => l_PPL_ACT_EFFORT_TO_DATE
8619                                                                    ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_EQPMT_ACT_EFFORT_TO_DATE
8620                                                                    ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
8621                                                                    ,X_OTH_ACT_COST_TO_DATE_TC         => null
8622                                                                    ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
8623                                                                    ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
8624                                                                    ,X_OTH_ETC_COST_TC                 => null
8625                                                                    ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
8626                                                                    ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
8627                                                                    ,X_PPL_ACT_COST_TO_DATE_TC         => null
8628                                                                    ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
8629                                                                    ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
8630                                                                    ,X_PPL_ETC_COST_TC                 => null
8631                                                                    ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
8632                                                                    ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
8633                                                                    ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
8634                                                                    ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
8635                                                                    ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
8636                                                                    ,X_EQPMT_ETC_COST_TC               => null
8637                                                                    ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
8638                                                                    ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
8639                                                                    ,X_EARNED_VALUE                    => l_earned_value1
8640                                                                    ,X_TASK_WT_BASIS_CODE              => l_rollup_method
8641                                                                    ,X_SUBPRJ_PPL_ACT_EFFORT           => l_cur_rollup_rec.SUBPRJ_PPL_ACT_EFFORT
8642                                                                    ,X_SUBPRJ_EQPMT_ACT_EFFORT         => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_EFFORT
8643                                                                    ,X_SUBPRJ_PPL_ETC_EFFORT           => l_cur_rollup_rec.SUBPRJ_PPL_ETC_EFFORT
8644                                                                    ,X_SUBPRJ_EQPMT_ETC_EFFORT         => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_EFFORT
8645                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
8646                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC
8647                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC
8648                                                                    ,X_SUBPRJ_PPL_ACT_COST_TC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_TC
8649                                                                    ,X_SUBPRJ_PPL_ACT_COST_FC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_FC
8650                                                                    ,X_SUBPRJ_PPL_ACT_COST_PC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_PC
8651                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_TC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_TC
8652                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_FC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_FC
8653                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_PC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_PC
8654                                                                    ,X_SUBPRJ_OTH_ETC_COST_TC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_TC
8655                                                                    ,X_SUBPRJ_OTH_ETC_COST_FC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_FC
8656                                                                    ,X_SUBPRJ_OTH_ETC_COST_PC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_PC
8657                                                                    ,X_SUBPRJ_PPL_ETC_COST_TC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_TC
8658                                                                    ,X_SUBPRJ_PPL_ETC_COST_FC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_FC
8659                                                                    ,X_SUBPRJ_PPL_ETC_COST_PC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_PC
8660                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_TC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_TC
8661                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_FC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_FC
8662                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_PC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_PC
8663                                                                    ,X_SUBPRJ_EARNED_VALUE             => l_cur_rollup_rec.SUBPRJ_EARNED_VALUE
8664                                                                    ,X_CURRENT_FLAG                    => l_cur_rollup_rec.CURRENT_FLAG
8665                                                                    ,X_PROJFUNC_COST_RATE_TYPE         => l_cur_rollup_rec.PROJFUNC_COST_RATE_TYPE
8666                                                                    ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_cur_rollup_rec.PROJFUNC_COST_EXCHANGE_RATE
8667                                                                    ,X_PROJFUNC_COST_RATE_DATE         => l_cur_rollup_rec.PROJFUNC_COST_RATE_DATE
8668                                                                    ,X_PROJ_COST_RATE_TYPE             => l_cur_rollup_rec.PROJ_COST_RATE_TYPE
8669                                                                    ,X_PROJ_COST_EXCHANGE_RATE         => l_cur_rollup_rec.PROJ_COST_EXCHANGE_RATE
8670                                                                    ,X_PROJ_COST_RATE_DATE             => l_cur_rollup_rec.PROJ_COST_RATE_DATE
8671                                                                    ,X_TXN_CURRENCY_CODE               => l_cur_rollup_rec.TXN_CURRENCY_CODE
8672                                                                    ,X_PROG_PA_PERIOD_NAME             => l_cur_rollup_rec.PROG_PA_PERIOD_NAME
8673                                                                    ,X_PROG_GL_PERIOD_NAME             => l_cur_rollup_rec.PROG_GL_PERIOD_NAME
8674                                                                    ,X_OTH_QUANTITY_TO_DATE            => l_Oth_quantity_to_date
8675                                                                    ,X_OTH_ETC_QUANTITY                => l_Oth_etc_quantity
8676                                                                    -- Bug 3621404 : Raw Cost Changes
8677                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
8678                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
8679                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
8680                                                                    ,X_OTH_ETC_RAWCOST_TC              => null
8681                                                                    ,X_OTH_ETC_RAWCOST_FC              => l_ETC_RAWCost_FC
8682                                                                    ,X_OTH_ETC_RAWCOST_PC              => l_ETC_RAWCost_PC
8683                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
8684                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
8685                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
8686                                                                    ,X_PPL_ETC_RAWCOST_TC              => null
8687                                                                    ,X_PPL_ETC_RAWCOST_FC              => l_PPL_ETC_RAWCOST_FC
8688                                                                    ,X_PPL_ETC_RAWCOST_PC              => l_PPL_ETC_RAWCOST_PC
8689                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
8690                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8691                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8692                                                                    ,X_EQPMT_ETC_RAWCOST_TC            => null
8693                                                                    ,X_EQPMT_ETC_RAWCOST_FC            => l_EQPMT_ETC_RAWCOST_FC
8694                                                                    ,X_EQPMT_ETC_RAWCOST_PC            => l_EQPMT_ETC_RAWCOST_PC
8695                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
8696                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
8697                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
8698                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8699                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8700                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8701                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8702                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8703                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8704                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8705                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8706                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8707                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8708                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8709                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8710                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8711                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8712                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8713                                                              );
8714                                                                 -- FPM Dev CR 6
8715                                                                 IF Fnd_Msg_Pub.count_msg > 0 THEN
8716                                                                         RAISE  FND_API.G_EXC_ERROR;
8717                                                                 END IF;
8718 
8719                                                 --update progress_outdated_flag for summary tasks if there exists any ppc record
8720                                                 --for the summary task
8721 
8722                                                 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8723                                                       p_task_id          => p_task_id
8724                               ,p_object_id       => p_task_id -- Bug 3764224
8725                                                      ,p_as_of_date         => p_as_of_date
8726                                                      ,p_project_id         => p_project_id
8727                                                      ,p_object_version_id  => l_rollup_table1(i).object_id
8728                                                      ,p_object_type        => l_rollup_table1(i).object_type
8729                                                   ,p_structure_type     => 'WORKPLAN'
8730                                                     );
8731 
8732                                        /* commenting out the code for bug   3851528
8733                                         IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8734                                                 UPDATE pa_proj_elements
8735                                                 SET progress_outdated_flag = 'Y'
8736                                                 WHERE proj_element_id = p_task_id
8737                                                 AND project_id = p_project_id
8738                                                 AND object_type = l_rollup_table1(i).object_type;
8739                                         END IF;
8740                                        */
8741                                 ELSE --l_PROGRESS_ROLLUP_ID IS NOT NULL
8742                                         -- get percent_complete_id
8743                                         BEGIN
8744                                                 SELECT percent_complete_id
8745                                                 INTO l_percent_complete_id
8746                                                 FROM pa_percent_completes
8747                                                 WHERE project_id = p_project_id
8748                                                 AND object_id =  p_task_id
8749                                                 AND object_Type = l_rollup_table1(i).object_Type
8750                                                 AND structure_type = 'WORKPLAN'
8751                                                 AND date_computed = ( SELECT max(date_computed)
8752                                                                 FROM pa_percent_completes
8753                                                                 WHERE project_id = p_project_id
8754                                                                 AND object_id =  p_task_id
8755                                                                 AND object_Type = l_rollup_table1(i).object_Type
8756                                                                 AND structure_type = 'WORKPLAN'
8757                                                                 AND date_computed <= p_as_of_date
8758                                                                 );
8759                                         EXCEPTION WHEN OTHERS THEN
8760                                                 l_percent_complete_id := null;
8761                                         END;
8762 
8763                     -- Bug 3879461 Begin : Code Not Required now
8764                     /*
8765                                         l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
8766                                                                 (p_project_id   => p_project_id,
8767                                                                  p_object_id    => p_task_id,
8768                                                                  p_object_type  => l_rollup_table1(i).object_type,
8769                                                                  p_structure_type => 'WORKPLAN',
8770                                                                  p_structure_version_id => l_structure_version_id,
8771                                  p_proj_element_id => p_task_id -- Bug 3764224
8772                                                                  );
8773 
8774 
8775                                         IF l_max_rollup_as_of_date2 > p_as_of_date
8776                                         THEN
8777                                                 l_current_flag := 'N';  --this means that there is a future record than the current one.
8778                                         ELSE
8779                                                 l_current_flag := 'Y';
8780                                         END IF;
8781                     */
8782                     -- Bug 3879461 End
8783 
8784                                         -- This code is not required if we do not do partail rollup from assignmnet progress details page
8785 
8786                                                          PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
8787                                                                           X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
8788                                                                          ,X_PROJECT_ID                      => p_project_id
8789                                                                          ,X_OBJECT_ID                       => p_task_id
8790                                                                          ,X_OBJECT_TYPE                     => l_rollup_table1(i).object_type
8791                                                                          ,X_AS_OF_DATE                      => p_as_of_date
8792                                                                          ,X_OBJECT_VERSION_ID               => l_rollup_table1(i).object_id
8793                                                                          ,X_LAST_UPDATE_DATE                => SYSDATE
8794                                                                          ,X_LAST_UPDATED_BY                 => l_user_id
8795                                                                          ,X_CREATION_DATE                   => SYSDATE
8796                                                                          ,X_CREATED_BY                      => l_user_id
8797                                                                          ,X_PROGRESS_STATUS_CODE            => l_rolled_up_prog_stat
8798                                                                          ,X_LAST_UPDATE_LOGIN               => l_login_id
8799                                                                          ,X_INCREMENTAL_WORK_QTY            => null
8800                                                                          ,X_CUMULATIVE_WORK_QTY             => null
8801                                                                          ,X_BASE_PERCENT_COMPLETE           => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8802                                                                          ,X_EFF_ROLLUP_PERCENT_COMP         => l_percent_complete1
8803                                                                          ,X_COMPLETED_PERCENTAGE            => l_rolled_up_per_comp
8804                                                                          ,X_ESTIMATED_START_DATE            => l_rollup_table1(i).start_date2
8805                                                                          ,X_ESTIMATED_FINISH_DATE           => l_rollup_table1(i).finish_date2
8806                                                                          ,X_ACTUAL_START_DATE               => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8807                                                                          ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8808                                                                          ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
8809                                                                          ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
8810                                                                          ,X_BASE_PROGRESS_STATUS_CODE       => l_rolled_up_base_prog_stat
8811                                                                          ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_status_code
8812                                                                          ,x_percent_complete_id             => l_percent_complete_id
8813                                                                          ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
8814                                                                          ,X_PROJ_ELEMENT_ID                 => p_task_id
8815                                                                          ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
8816                                                                          ,X_PPL_ACT_EFFORT_TO_DATE          => l_PPL_ACT_EFFORT_TO_DATE
8817                                                                          ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_EQPMT_ACT_EFFORT_TO_DATE
8818                                                                          ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
8819                                                                          ,X_OTH_ACT_COST_TO_DATE_TC         => null
8820                                                                          ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
8821                                                                          ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
8822                                                                          ,X_OTH_ETC_COST_TC                 => null
8823                                                                          ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
8824                                                                          ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
8825                                                                          ,X_PPL_ACT_COST_TO_DATE_TC         => null
8826                                                                          ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
8827                                                                          ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
8828                                                                          ,X_PPL_ETC_COST_TC                 => null
8829                                                                          ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
8830                                                                          ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
8831                                                                          ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
8832                                                                          ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
8833                                                                          ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
8834                                                                          ,X_EQPMT_ETC_COST_TC               => null
8835                                                                          ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
8836                                                                          ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
8837                                                                          ,X_EARNED_VALUE                    => l_earned_value1
8838                                                                          ,X_TASK_WT_BASIS_CODE              => l_rollup_method
8839                                                                          ,X_SUBPRJ_PPL_ACT_EFFORT           => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_EFFORT
8840                                                                          ,X_SUBPRJ_EQPMT_ACT_EFFORT         => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_EFFORT
8841                                                                          ,X_SUBPRJ_PPL_ETC_EFFORT           => l_SUB_PRJ_PPL_ETC_EFFORT
8842                                                                          ,X_SUBPRJ_EQPMT_ETC_EFFORT         => l_SUB_PRJ_EQPMT_ETC_EFFORT
8843                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
8844                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DT_FC
8845                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DT_PC
8846                                                                          ,X_SUBPRJ_PPL_ACT_COST_TC          => null
8847                                                                          ,X_SUBPRJ_PPL_ACT_COST_FC          => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_FC
8848                                                                          ,X_SUBPRJ_PPL_ACT_COST_PC          => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_PC
8849                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
8850                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_FC        => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_FC
8851                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_PC        => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_PC
8852                                                                          ,X_SUBPRJ_OTH_ETC_COST_TC          => null
8853                                                                          ,X_SUBPRJ_OTH_ETC_COST_FC          => l_SUB_PRJ_ETC_COST_FC
8854                                                                          ,X_SUBPRJ_OTH_ETC_COST_PC          => l_SUB_PRJ_ETC_COST_PC
8855                                                                          ,X_SUBPRJ_PPL_ETC_COST_TC          => null
8856                                                                          ,X_SUBPRJ_PPL_ETC_COST_FC          => l_SUB_PRJ_PPL_ETC_COST_FC
8857                                                                          ,X_SUBPRJ_PPL_ETC_COST_PC          => l_SUB_PRJ_PPL_ETC_COST_PC
8858                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
8859                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_FC        => l_SUB_PRJ_EQPMT_ETC_COST_FC
8860                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_PC        => l_SUB_PRJ_EQPMT_ETC_COST_PC
8861                                                                          ,X_SUBPRJ_EARNED_VALUE             => l_cur_pa_rollup1_rec.SUBPRJ_EARNED_VALUE
8862                                                                          ,X_CURRENT_FLAG                    => l_current_flag --maaansari FPM Dev CR2
8863                                                                          ,X_PROJFUNC_COST_RATE_TYPE         => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_TYPE
8864                                                                          ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_cur_pa_rollup1_rec.PROJFUNC_COST_EXCHANGE_RATE
8865                                                                          ,X_PROJFUNC_COST_RATE_DATE         => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_DATE
8866                                                                          ,X_PROJ_COST_RATE_TYPE             => l_cur_pa_rollup1_rec.PROJ_COST_RATE_TYPE
8867                                                                          ,X_PROJ_COST_EXCHANGE_RATE         => l_cur_pa_rollup1_rec.PROJ_COST_EXCHANGE_RATE
8868                                                                          ,X_PROJ_COST_RATE_DATE             => l_cur_pa_rollup1_rec.PROJ_COST_RATE_DATE
8869                                                                          ,X_TXN_CURRENCY_CODE               => l_cur_pa_rollup1_rec.TXN_CURRENCY_CODE
8870                                                                          ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
8871                                                                          ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
8872                                                                        ,X_OTH_QUANTITY_TO_DATE            => l_Oth_quantity_to_date
8873                                                                    ,X_OTH_ETC_QUANTITY                => l_Oth_etc_quantity
8874                                                                            -- Bug 3621404 : Raw Cost Changes
8875                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
8876                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
8877                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
8878                                                                            ,X_OTH_ETC_RAWCOST_TC              => null
8879                                                                            ,X_OTH_ETC_RAWCOST_FC              => l_ETC_RAWCost_FC
8880                                                                            ,X_OTH_ETC_RAWCOST_PC              => l_ETC_RAWCost_PC
8881                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
8882                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
8883                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
8884                                                                            ,X_PPL_ETC_RAWCOST_TC              => null
8885                                                                            ,X_PPL_ETC_RAWCOST_FC              => l_PPL_ETC_RAWCOST_FC
8886                                                                            ,X_PPL_ETC_RAWCOST_PC              => l_PPL_ETC_RAWCOST_PC
8887                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
8888                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8889                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8890                                                                            ,X_EQPMT_ETC_RAWCOST_TC            => null
8891                                                                            ,X_EQPMT_ETC_RAWCOST_FC            => l_EQPMT_ETC_RAWCOST_FC
8892                                                                            ,X_EQPMT_ETC_RAWCOST_PC            => l_EQPMT_ETC_RAWCOST_PC
8893                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_TC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_TC
8894                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_FC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_FC
8895                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_PC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DT_PC
8896                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8897                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8898                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8899                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8900                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8901                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8902                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8903                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8904                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8905                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8906                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8907                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8908                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8909                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8910                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8911                                                        );
8912                     -- Bug 3879461 Begin : Code nOt required now
8913                     /*
8914                                          --update all previous record current flag to 'N'
8915                                         IF l_max_rollup_as_of_date2 < p_as_of_date --creating a new progress record.
8916                                         THEN
8917                                                 UPDATE pa_progress_rollup
8918                                                 SET current_flag = 'N'
8919                                                 WHERE progress_rollup_id <> l_progress_rollup_id
8920                                                 AND project_id = p_project_id
8921                                                 AND object_id = p_task_id
8922                                                 AND object_type = l_rollup_table1(i).object_type
8923                                                 AND structure_type = 'WORKPLAN'
8924                                                 AND structure_version_id is null
8925                                                            ;
8926                                         END IF;
8927 
8928 
8929                                         --update progress_outdated_flag for summary tasks if there exists any ppc record
8930                                         --for the summary task
8931 
8932                                         l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8933                                                       p_task_id          => p_task_id
8934                               ,p_object_id       => p_task_id -- Bug 3764224
8935                                                      ,p_as_of_date         => p_as_of_date
8936                                                      ,p_project_id         => p_project_id
8937                                                      ,p_object_version_id  => l_rollup_table1(i).object_id
8938                                                      ,p_object_type        => l_rollup_table1(i).object_type
8939                                                      ,p_structure_type     => 'WORKPLAN'
8940                                                    );
8941                            */
8942                     -- Bug 3879461 End
8943 
8944                                       /* commenting out the code for bug    3851528
8945                                         IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8946                                                 UPDATE pa_proj_elements
8947                                                 SET progress_outdated_flag = 'Y'
8948                                                 WHERE proj_element_id = p_task_id
8949                                                 AND project_id = p_project_id
8950                                                 AND object_type = l_rollup_table1(i).object_type;
8951                                         END IF;
8952                                       */
8953                                 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL
8954                         END IF; -- IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
8955                         END LOOP;
8956                 END IF;  --<< l_total_tasks >>
8957 
8958                 /* We need to confirm that whether this needs to be called for working progress rollup or not
8959                 IF l_split_workplan =  'Y'
8960                 THEN
8961                 BEGIN
8962                         l_project_ids.extend(1);
8963                         l_project_ids(1) := p_project_id;
8964                         l_struture_version_ids.extend(1);
8965                         l_struture_version_ids(1) := p_structure_version_id;
8966                         l_proj_thru_dates_tbl.extend(1);
8967                         l_proj_thru_dates_tbl(1) := p_as_of_date;
8968                         PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
8969                           (P_PROJECT_ID_TAB                   => l_project_ids,
8970                            P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
8971                            P_ACTUALS_THRU_DATE     => l_proj_thru_dates_tbl,
8972                            P_CALLING_CONTEXT                  => 'WP_PROGRESS',
8973                            X_RETURN_STATUS                    => l_return_status,
8974                            X_MSG_COUNT                        => l_msg_count,
8975                            X_MSG_DATA                         => l_msg_data
8976                         );
8977 
8978 
8979                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8980                                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8981                                         p_msg_name       => l_msg_data);
8982                                        x_msg_data := l_msg_data;
8983                                        x_return_status := 'E';
8984                                        x_msg_count := l_msg_count;
8985                                        RAISE  FND_API.G_EXC_ERROR;
8986                         END IF;
8987                 EXCEPTION
8988                  WHEN OTHERS THEN
8989                      fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8990                                    p_procedure_name => 'update_ASGN_DLV_TO_TASK_ROLLUP_PVT',
8991                      p_error_text     => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
8992                      RAISE FND_API.G_EXC_ERROR;
8993                 END;
8994                 END IF;*/
8995 
8996 
8997         x_return_status := FND_API.G_RET_STS_SUCCESS;
8998 
8999         IF (p_commit = FND_API.G_TRUE) THEN
9000                 COMMIT;
9001         END IF;
9002 
9003         IF g1_debug_mode  = 'Y' THEN
9004                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT End', x_Log_Level=> 3);
9005         END IF;
9006 
9007 
9008         x_return_status := FND_API.G_RET_STS_SUCCESS;
9009 
9010         IF (p_commit = FND_API.G_TRUE) THEN
9011                 COMMIT;
9012         END IF;
9013 
9014 
9015         IF g1_debug_mode  = 'Y' THEN
9016                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT END', x_Log_Level=> 3);
9017         END IF;
9018 
9019 EXCEPTION
9020         WHEN FND_API.G_EXC_ERROR THEN
9021                 IF p_commit = FND_API.G_TRUE THEN
9022                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9023                 END IF;
9024                 x_return_status := FND_API.G_RET_STS_ERROR;
9025         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9026                 IF p_commit = FND_API.G_TRUE THEN
9027                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9028                 END IF;
9029                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9030                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9031                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
9032                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9033         WHEN OTHERS THEN
9034                 IF p_commit = FND_API.G_TRUE THEN
9035                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9036                 END IF;
9037                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9038                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9039                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
9040                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9041                 raise;
9042 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
9043 
9044 
9045  --bug 3935699
9046 
9047 
9048 PROCEDURE convert_task_prog_to_assgn
9049 (
9050  p_api_version                          IN      NUMBER          :=1.0
9051 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_FALSE -- Since it is a private API so false
9052 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
9053 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
9054 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
9055 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
9056 ,p_debug_mode                           IN      VARCHAR2        :='N'
9057 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
9058 ,p_resource_list_mem_id         IN      NUMBER
9059 ,p_project_id               IN      NUMBER
9060 ,p_task_id              IN      NUMBER
9061 ,p_structure_version_id         IN      NUMBER
9062 ,p_as_of_date               IN      DATE -- Bug 3958686
9063 ,p_action               IN      VARCHAR2 -- Bug 3958686
9064 ,p_subprj_actual_exists         IN      VARCHAR2 := 'N' -- Bug 4490532
9065 ,p_object_version_id            IN      NUMBER := null -- Bug 4490532
9066 ,x_return_status            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9067 ,x_msg_count                OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
9068 ,x_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9069 ) IS
9070 
9071    g1_debug_mode                VARCHAR2(1);
9072    l_version_enabled_flag        VARCHAR2(1);
9073 
9074    x_percent_complete_id     NUMBER;
9075    X_PROGRESS_ROLLUP_ID      NUMBER;
9076 
9077    l_api_name                   CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT'                           ;
9078    l_api_version                CONSTANT NUMBER      := 1.0                                                     ;
9079    l_return_status              VARCHAR2(1)                                                                     ;
9080    l_msg_count                  NUMBER                                                                          ;
9081    l_msg_data                   VARCHAR2(250)                                                                   ;
9082    l_data                       VARCHAR2(250)                                                                   ;
9083    l_msg_index_out              NUMBER                                                                          ;
9084    l_error_msg_code             VARCHAR2(250)                                                                   ;
9085    l_user_id                    NUMBER          := FND_GLOBAL.USER_ID                                           ;
9086    l_login_id                   NUMBER          := FND_GLOBAL.LOGIN_ID                                          ;
9087 
9088    -- Bug 3958686 : Commented
9089    /*
9090    CURSOR cur_chk_asgn
9091    IS
9092      SELECT 'x'
9093       FROM pa_progress_rollup
9094      WHERE object_id = p_resource_list_mem_id
9095        and structure_version_id = p_structure_version_id
9096        and proj_element_id = p_task_id
9097        and structure_type = 'WORKPLAN'
9098        and object_type = 'PA_ASSIGNMENTS'
9099        and current_flag = 'Y';
9100    */
9101 
9102 -- Bug 4490532 Begin
9103 CURSOR c_get_subproject IS
9104 SELECT obj2.object_id_to1 subprj_str_ver_id
9105 , obj2.object_id_to2 subprj_id
9106 , ver.proj_element_id subprj_proj_elem_id
9107 from pa_object_relationships obj1
9108 , pa_object_relationships obj2
9109 , pa_proj_element_versions ver
9110 WHERE obj1.object_id_from1 = p_object_version_id
9111 AND obj1.relationship_type = 'S'
9112 AND obj1.object_id_to1 = obj2.object_id_from1
9113 AND obj2.relationship_type = 'LW'
9114 AND obj2.object_id_to1 = ver.element_version_id
9115 ;
9116 l_subprj_str_ver_id NUMBER;
9117 l_subprj_id NUMBER;
9118 l_subprj_proj_elem_id NUMBER;
9119 
9120 -- We canot use directly the parent project
9121 -- from pji_fm_xbs_accum_tmp1 table
9122 -- because PJI table stores self amounts p_xxx
9123 -- only for PC and not for PFC.
9124 
9125 CURSOR c_get_subproj_act(c_str_version_id NUMBER, c_project_id NUMBER, c_proj_element_id NUMBER) IS
9126   SELECT
9127        ETC_LABOR_HRS ESTIMATED_REMAINING_EFFORT
9128       ,ACT_LABOR_HRS PPL_ACT_EFFORT_TO_DATE
9129       ,ACT_EQUIP_HRS EQPMT_ACT_EFFORT_TO_DATE
9130       ,ETC_EQUIP_HRS EQPMT_ETC_EFFORT
9131       ,ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST OTH_ACT_COST_TO_DATE_FC
9132       ,ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST  OTH_ACT_COST_TO_DATE_PC
9133       ,ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST OTH_ETC_COST_FC
9134       ,ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST OTH_ETC_COST_PC
9135       ,ACT_POU_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_FC
9136       ,ACT_PRJ_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_PC
9137       ,ETC_POU_LABOR_BRDN_COST PPL_ETC_COST_FC
9138       ,ETC_PRJ_LABOR_BRDN_COST PPL_ETC_COST_PC
9139       ,ACT_POU_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_FC
9140       ,ACT_PRJ_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_PC
9141       ,ETC_POU_EQUIP_BRDN_COST EQPMT_ETC_COST_FC
9142       ,ETC_PRJ_EQUIP_BRDN_COST EQPMT_ETC_COST_PC
9143       ,ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST OTH_ACT_RAWCOST_TO_DATE_FC
9144       ,ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST OTH_ACT_RAWCOST_TO_DATE_PC
9145       ,ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST OTH_ETC_RAWCOST_FC
9146       ,ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST OTH_ETC_RAWCOST_PC
9147       ,ACT_POU_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_FC
9148       ,ACT_PRJ_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_PC
9149       ,ETC_POU_LABOR_RAW_COST PPL_ETC_RAWCOST_FC
9150       ,ETC_PRJ_LABOR_RAW_COST PPL_ETC_RAWCOST_PC
9151       ,ACT_POU_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_FC
9152       ,ACT_PRJ_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_PC
9153       ,ETC_POU_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_FC
9154       ,ETC_PRJ_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_PC
9155   FROM pji_fm_xbs_accum_tmp1 pjitmp
9156  WHERE pjitmp.project_id  = c_project_id
9157 AND struct_version_id = c_str_version_id
9158 AND project_element_id =  c_proj_element_id
9159 AND plan_version_id > 0
9160 AND txn_currency_code is null
9161 AND calendar_type = 'A'
9162 AND res_list_member_id is null;
9163 l_subproj_rec  c_get_subproj_act%ROWTYPE;
9164 -- Bug 4490532 End
9165 
9166 -- Bug 4661350 begin : Introduced local variables for sum of subprojects values
9167 sp_ESTIMATED_REMAINING_EFFORT		NUMBER;
9168 sp_PPL_ACT_EFFORT_TO_DATE		NUMBER;
9169 sp_EQPMT_ACT_EFFORT_TO_DATE		NUMBER;
9170 sp_EQPMT_ETC_EFFORT			NUMBER;
9171 sp_OTH_ACT_COST_TO_DATE_FC		NUMBER;
9172 sp_OTH_ACT_COST_TO_DATE_PC		NUMBER;
9173 sp_OTH_ETC_COST_FC			NUMBER;
9174 sp_OTH_ETC_COST_PC			NUMBER;
9175 sp_PPL_ACT_COST_TO_DATE_FC		NUMBER;
9176 sp_PPL_ACT_COST_TO_DATE_PC		NUMBER;
9177 sp_PPL_ETC_COST_FC			NUMBER;
9178 sp_PPL_ETC_COST_PC			NUMBER;
9179 sp_EQPMT_ACT_COST_TO_DATE_FC		NUMBER;
9180 sp_EQPMT_ACT_COST_TO_DATE_PC		NUMBER;
9181 sp_EQPMT_ETC_COST_FC			NUMBER;
9182 sp_EQPMT_ETC_COST_PC			NUMBER;
9183 sp_OTH_ACT_RAWCOST_TO_DATE_FC		NUMBER;
9184 sp_OTH_ACT_RAWCOST_TO_DATE_PC		NUMBER;
9185 sp_OTH_ETC_RAWCOST_FC			NUMBER;
9186 sp_OTH_ETC_RAWCOST_PC			NUMBER;
9187 sp_PPL_ACT_RAWCOST_TO_DATE_FC		NUMBER;
9188 sp_PPL_ACT_RAWCOST_TO_DATE_PC		NUMBER;
9189 sp_PPL_ETC_RAWCOST_FC			NUMBER;
9190 sp_PPL_ETC_RAWCOST_PC			NUMBER;
9191 sp_EQPMT_ACT_RAWCOST_TODATE_FC		NUMBER;
9192 sp_EQPMT_ACT_RAWCOST_TODATE_PC		NUMBER;
9193 sp_EQPMT_ETC_RAWCOST_FC			NUMBER;
9194 sp_EQPMT_ETC_RAWCOST_PC			NUMBER;
9195 -- Bug 4661350 end
9196 
9197 BEGIN
9198 
9199         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9200 
9201         IF g1_debug_mode  = 'Y' THEN
9202                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.convert_task_prog_to_assgn');
9203         END IF;
9204 
9205         IF (p_commit = FND_API.G_TRUE) THEN
9206                 savepoint convert_task_prog_to_assgn;
9207         END IF;
9208 
9209         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9210                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9211         END IF;
9212 
9213         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9214                 FND_MSG_PUB.initialize;
9215         END IF;
9216 
9217      IF g1_debug_mode  = 'Y' THEN
9218 
9219          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_resource_list_mem_id='||p_resource_list_mem_id, x_Log_Level=> 3);
9220          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
9221          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
9222          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_task_id='||p_task_id, x_Log_Level=> 3);
9223          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
9224          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
9225      END IF;
9226 
9227      --bug 3958686, start
9228 
9229        IF p_action = 'SAVE' THEN
9230      delete from pa_percent_completes
9231          where project_id= p_project_id
9232          and task_id = p_task_id
9233          and object_id = p_resource_list_mem_id
9234      and object_type = 'PA_ASSIGNMENTS'
9235          and published_flag = 'N'
9236          and structure_type = 'WORKPLAN'
9237          ;
9238 
9239          delete from pa_progress_rollup
9240          where project_id= p_project_id
9241          and proj_element_id = p_task_id
9242          and object_id = p_resource_list_mem_id
9243          and current_flag = 'W'
9244      and object_type = 'PA_ASSIGNMENTS'
9245          and structure_type = 'WORKPLAN'
9246          and structure_version_id is null
9247          ;
9248        END IF;
9249 
9250 
9251     IF  p_action = 'PUBLISH' THEN
9252          delete from pa_percent_completes
9253          where project_id= p_project_id
9254          and task_id = p_task_id
9255          and object_id = p_resource_list_mem_id
9256      and object_type = 'PA_ASSIGNMENTS'
9257          and published_flag = 'N'
9258          and date_computed <= p_as_of_date
9259          and structure_type = 'WORKPLAN'
9260          ;
9261 
9262      delete from pa_percent_completes
9263      WHERE project_id = p_project_id
9264          and object_id = p_resource_list_mem_id
9265      and task_id = p_task_id
9266      and trunc(date_computed) = trunc(p_as_of_date)
9267      and structure_type = 'WORKPLAN'
9268      and object_type = 'PA_ASSIGNMENTS'
9269      and published_flag = 'Y';
9270 
9271 
9272          delete from pa_progress_rollup
9273          where project_id= p_project_id
9274          and proj_element_id = p_task_id
9275          and object_id = p_resource_list_mem_id
9276      and object_type = 'PA_ASSIGNMENTS'
9277          and current_flag = 'W'
9278          and as_of_date <= p_as_of_date
9279          and structure_type = 'WORKPLAN'
9280          and structure_version_id is null
9281          ;
9282 
9283          delete from pa_progress_rollup
9284          WHERE project_id = p_project_id
9285          and object_id = p_resource_list_mem_id
9286      and structure_version_id is null
9287          and proj_element_id = p_task_id
9288          and trunc(as_of_date) = trunc(p_as_of_date)
9289          and structure_type = 'WORKPLAN'
9290          and object_type = 'PA_ASSIGNMENTS'
9291          and current_flag in ('Y', 'N');
9292 
9293     end if;
9294 
9295      --bug 3958686, end
9296 
9297        --Create records in percent completes and rollup table for new assignment.
9298 
9299 
9300 -- Added update code to set current_flag as N otherwise upon publishinh it will give error
9301 -- ORA-00001: unique constraint (PA.PA_BUDGET_LINES_U1) violated in Package PA_FP_MAINTAIN_ACTUAL_PUB Procedure MAINTAIN_ACTUAL_AMT_RA
9302 -- Patched thru Bug 4183307
9303 IF  p_action = 'PUBLISH' THEN
9304   UPDATE pa_percent_completes
9305         SET current_flag = 'N'
9306         WHERE project_id = p_project_id
9307         AND object_id = p_resource_list_mem_id
9308         AND task_id = p_task_id
9309         AND current_flag = 'Y'
9310         AND object_type =  'PA_ASSIGNMENTS';
9311 
9312  UPDATE pa_progress_rollup
9313         SET current_flag = 'N'
9314         WHERE project_id = p_project_id
9315         AND object_id = p_resource_list_mem_id
9316         AND proj_element_id = p_task_id
9317         AND current_flag = 'Y'
9318         AND object_type = 'PA_ASSIGNMENTS'
9319     AND structure_version_id is null
9320     AND structure_type = 'WORKPLAN'
9321     ;
9322  END IF;
9323 
9324     -- Bug 4490532 Begin
9325     IF g1_debug_mode  = 'Y' THEN
9326         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_subprj_actual_exists='||p_subprj_actual_exists, x_Log_Level=> 3);
9327         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
9328     END IF;
9329     l_subproj_rec := null;
9330     IF p_subprj_actual_exists = 'Y' THEN
9331 	-- Bug 4661350 : Converted to FOR loop to support multiple sub projects
9332         --OPEN c_get_subproject;
9333         --FETCH c_get_subproject INTO l_subprj_str_ver_id, l_subprj_id, l_subprj_proj_elem_id;
9334         --CLOSE c_get_subproject;
9335 
9336 		FOR l_rec IN c_get_subproject LOOP
9337 
9338 			l_subproj_rec := null;
9339 
9340 			OPEN c_get_subproj_act(l_rec.subprj_str_ver_id, l_rec.subprj_id, l_rec.subprj_proj_elem_id);
9341 			FETCH c_get_subproj_act INTO l_subproj_rec;
9342 			CLOSE c_get_subproj_act;
9343 			-- Bug 4661350 : introduced local variable to store subprojects sum value
9344 
9345 			sp_ESTIMATED_REMAINING_EFFORT	:= nvl(sp_ESTIMATED_REMAINING_EFFORT,0) + nvl(l_subproj_rec.ESTIMATED_REMAINING_EFFORT,0);
9346 			sp_PPL_ACT_EFFORT_TO_DATE	:= nvl(sp_PPL_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.PPL_ACT_EFFORT_TO_DATE,0);
9347 			sp_EQPMT_ACT_EFFORT_TO_DATE	:= nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
9348 			sp_EQPMT_ETC_EFFORT		:= nvl(sp_EQPMT_ETC_EFFORT,0) + nvl(l_subproj_rec.EQPMT_ETC_EFFORT,0);
9349 			sp_OTH_ACT_COST_TO_DATE_FC	:= nvl(sp_OTH_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.OTH_ACT_COST_TO_DATE_FC,0);
9350 			sp_OTH_ACT_COST_TO_DATE_PC	:= nvl(sp_OTH_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.OTH_ACT_COST_TO_DATE_PC,0);
9351 			sp_OTH_ETC_COST_FC		:= nvl(sp_OTH_ETC_COST_FC,0) + nvl(l_subproj_rec.OTH_ETC_COST_FC,0);
9352 			sp_OTH_ETC_COST_PC		:= nvl(sp_OTH_ETC_COST_PC,0) + nvl(l_subproj_rec.OTH_ETC_COST_PC,0);
9353 			sp_PPL_ACT_COST_TO_DATE_FC	:= nvl(sp_PPL_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.PPL_ACT_COST_TO_DATE_FC,0);
9354 			sp_PPL_ACT_COST_TO_DATE_PC	:= nvl(sp_PPL_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.PPL_ACT_COST_TO_DATE_PC,0);
9355 			sp_PPL_ETC_COST_FC		:= nvl(sp_PPL_ETC_COST_FC,0) + nvl(l_subproj_rec.PPL_ETC_COST_FC,0);
9356 			sp_PPL_ETC_COST_PC		:= nvl(sp_PPL_ETC_COST_PC,0) + nvl(l_subproj_rec.PPL_ETC_COST_PC,0);
9357 			sp_EQPMT_ACT_COST_TO_DATE_FC	:= nvl(sp_EQPMT_ACT_COST_TO_DATE_FC,0) + nvl(l_subproj_rec.EQPMT_ACT_COST_TO_DATE_FC,0);
9358 			sp_EQPMT_ACT_COST_TO_DATE_PC	:= nvl(sp_EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(l_subproj_rec.EQPMT_ACT_COST_TO_DATE_PC,0);
9359 			sp_EQPMT_ETC_COST_FC		:= nvl(sp_EQPMT_ETC_COST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_FC,0);
9360 			sp_EQPMT_ETC_COST_PC		:= nvl(sp_EQPMT_ETC_COST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_PC,0);
9361 			sp_OTH_ACT_RAWCOST_TO_DATE_FC	:= nvl(sp_OTH_ACT_RAWCOST_TO_DATE_FC,0) + nvl(l_subproj_rec.OTH_ACT_RAWCOST_TO_DATE_FC,0);
9362 			sp_OTH_ACT_RAWCOST_TO_DATE_PC	:= nvl(sp_OTH_ACT_RAWCOST_TO_DATE_PC,0) + nvl(l_subproj_rec.OTH_ACT_RAWCOST_TO_DATE_PC,0);
9363 			sp_OTH_ETC_RAWCOST_FC		:= nvl(sp_OTH_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_FC,0);
9364 			sp_OTH_ETC_RAWCOST_PC		:= nvl(sp_OTH_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_PC,0);
9365 			sp_PPL_ACT_RAWCOST_TO_DATE_FC	:= nvl(sp_PPL_ACT_RAWCOST_TO_DATE_FC,0) + nvl(l_subproj_rec.PPL_ACT_RAWCOST_TO_DATE_FC,0);
9366 			sp_PPL_ACT_RAWCOST_TO_DATE_PC	:= nvl(sp_PPL_ACT_RAWCOST_TO_DATE_PC,0) + nvl(l_subproj_rec.PPL_ACT_RAWCOST_TO_DATE_PC,0);
9367 			sp_PPL_ETC_RAWCOST_FC		:= nvl(sp_PPL_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_FC,0);
9368 			sp_PPL_ETC_RAWCOST_PC		:= nvl(sp_PPL_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_PC,0);
9369 			sp_EQPMT_ACT_RAWCOST_TODATE_FC	:= nvl(sp_EQPMT_ACT_RAWCOST_TODATE_FC,0) + nvl(l_subproj_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC,0);
9370 			sp_EQPMT_ACT_RAWCOST_TODATE_PC	:= nvl(sp_EQPMT_ACT_RAWCOST_TODATE_PC,0) + nvl(l_subproj_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC,0);
9371 			sp_EQPMT_ETC_RAWCOST_FC		:= nvl(sp_EQPMT_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_FC,0);
9372 			sp_EQPMT_ETC_RAWCOST_PC		:= nvl(sp_EQPMT_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_PC,0);
9373 		END LOOP;
9374 
9375     END IF;
9376     -- Bug 4490532 End
9377 
9378 
9379         select PA_PERCENT_COMPLETES_S.nextval
9380           into x_percent_complete_id
9381         from dual;
9382 
9383         select PA_PROGRESS_ROLLUP_S.nextval
9384           into X_PROGRESS_ROLLUP_ID
9385           from dual;
9386      IF g1_debug_mode  = 'Y' THEN
9387          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Before Inserting into pa_percent_completes', x_Log_Level=> 3);
9388      END IF;
9389         INSERT INTO pa_percent_completes(
9390                   TASK_ID
9391                  ,DATE_COMPUTED
9392                  ,LAST_UPDATE_DATE
9393                  ,LAST_UPDATED_BY
9394                  ,CREATION_DATE
9395                  ,CREATED_BY
9396                  ,LAST_UPDATE_LOGIN
9397                  ,COMPLETED_PERCENTAGE
9398                  ,DESCRIPTION
9399                  ,PROJECT_ID
9400                  ,PM_PRODUCT_CODE
9401                  ,CURRENT_FLAG
9402                  ,PERCENT_COMPLETE_ID
9403                  ,OBJECT_ID
9404                  ,OBJECT_VERSION_ID
9405                  ,OBJECT_TYPE
9406                  ,STATUS_CODE
9407                  ,PROGRESS_STATUS_CODE
9408                  ,ESTIMATED_START_DATE
9409                  ,ESTIMATED_FINISH_DATE
9410                  ,ACTUAL_START_DATE
9411                  ,ACTUAL_FINISH_DATE
9412                  ,PUBLISHED_FLAG
9413                  ,PUBLISHED_BY_PARTY_ID
9414                  ,RECORD_VERSION_NUMBER
9415                  ,PROGRESS_COMMENT
9416                  ,HISTORY_FLAG
9417                  ,ATTRIBUTE_CATEGORY
9418                  ,ATTRIBUTE1
9419                  ,ATTRIBUTE2
9420                  ,ATTRIBUTE3
9421                  ,ATTRIBUTE4
9422                  ,ATTRIBUTE5
9423                  ,ATTRIBUTE6
9424                  ,ATTRIBUTE7
9425                  ,ATTRIBUTE8
9426                  ,ATTRIBUTE9
9427                  ,ATTRIBUTE10
9428                  ,ATTRIBUTE11
9429                  ,ATTRIBUTE12
9430                  ,ATTRIBUTE13
9431                  ,ATTRIBUTE14
9432                  ,ATTRIBUTE15
9433                  ,STRUCTURE_TYPE
9434                  )
9435           SELECT
9436                   TASK_ID
9437                  ,DATE_COMPUTED
9438                  ,SYSDATE
9439                  ,l_user_id
9440                  ,SYSDATE
9441                  ,l_user_id
9442                  ,l_login_id
9443                  ,null   --COMPLETED_PERCENTAGE
9444                  ,null   --DESCRIPTION
9445                  ,PROJECT_ID
9446                  ,PM_PRODUCT_CODE
9447                  ,CURRENT_FLAG
9448                  ,x_PERCENT_COMPLETE_ID
9449                  ,p_resource_list_mem_id  --OBJECT_ID
9450                  ,OBJECT_VERSION_ID
9451                  ,'PA_ASSIGNMENTS'  --OBJECT_TYPE
9452                  ,null              --STATUS_CODE
9453                  ,PROGRESS_STATUS_CODE
9454                  ,ESTIMATED_START_DATE
9455                  ,ESTIMATED_FINISH_DATE
9456                  ,ACTUAL_START_DATE
9457                  ,ACTUAL_FINISH_DATE
9458                  ,PUBLISHED_FLAG
9459                  ,PUBLISHED_BY_PARTY_ID
9460                  ,RECORD_VERSION_NUMBER
9461                  ,PROGRESS_COMMENT
9462                  ,HISTORY_FLAG
9463                  ,ATTRIBUTE_CATEGORY
9464                  ,ATTRIBUTE1
9465                  ,ATTRIBUTE2
9466                  ,ATTRIBUTE3
9467                  ,ATTRIBUTE4
9468                  ,ATTRIBUTE5
9469                  ,ATTRIBUTE6
9470                  ,ATTRIBUTE7
9471                  ,ATTRIBUTE8
9472                  ,ATTRIBUTE9
9473                  ,ATTRIBUTE10
9474                  ,ATTRIBUTE11
9475                  ,ATTRIBUTE12
9476                  ,ATTRIBUTE13
9477                  ,ATTRIBUTE14
9478                  ,ATTRIBUTE15
9479                  ,STRUCTURE_TYPE
9480            FROM pa_percent_completes
9481           WHERE project_id = p_project_id
9482               and object_id = p_task_id
9483               and task_id = p_task_id
9484               and structure_type = 'WORKPLAN'
9485           and trunc(date_computed) = trunc(p_as_of_date)
9486               --and published_flag = 'Y' --bug 3958686
9487               --and current_flag = 'Y'
9488               and ((p_action = 'SAVE' and published_flag = 'N')
9489                 or (p_action = 'PUBLISH' and published_flag = 'Y' and current_flag = 'Y'))
9490               ;
9491 
9492      IF g1_debug_mode  = 'Y' THEN
9493          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Done Inserting into pa_percent_completes', x_Log_Level=> 3);
9494      END IF;
9495          -- Bug 4490532 : Subtracting the subproject amounts if available.
9496 	 -- Bug 4661350 : Using newly introduced local variable to store subprojects sum value
9497           INSERT INTO pa_progress_rollup(
9498                PROGRESS_ROLLUP_ID
9499               ,PERCENT_COMPLETE_ID
9500               ,PROJECT_ID
9501               ,OBJECT_ID
9502               ,OBJECT_TYPE
9503               ,AS_OF_DATE
9504               ,OBJECT_VERSION_ID
9505               ,LAST_UPDATE_DATE
9506               ,LAST_UPDATED_BY
9507               ,CREATION_DATE
9508               ,CREATED_BY
9509               ,PROGRESS_STATUS_CODE
9510               ,LAST_UPDATE_LOGIN
9511               ,INCREMENTAL_WORK_QUANTITY
9512               ,CUMULATIVE_WORK_QUANTITY
9513               ,BASE_PERCENT_COMPLETE
9514               ,EFF_ROLLUP_PERCENT_COMP
9515               ,COMPLETED_PERCENTAGE
9516               ,ESTIMATED_START_DATE
9517               ,ESTIMATED_FINISH_DATE
9518               ,ACTUAL_START_DATE
9519               ,ACTUAL_FINISH_DATE
9520               ,ESTIMATED_REMAINING_EFFORT
9521               ,RECORD_VERSION_NUMBER
9522               ,BASE_PERCENT_COMP_DERIV_CODE
9523               ,BASE_PROGRESS_STATUS_CODE
9524               ,EFF_ROLLUP_PROG_STAT_CODE
9525               ,STRUCTURE_TYPE
9526               ,PROJ_ELEMENT_ID
9527               ,STRUCTURE_VERSION_ID
9528               ,PPL_ACT_EFFORT_TO_DATE
9529               ,EQPMT_ACT_EFFORT_TO_DATE
9530               ,EQPMT_ETC_EFFORT
9531               ,OTH_ACT_COST_TO_DATE_TC
9532               ,OTH_ACT_COST_TO_DATE_FC
9533               ,OTH_ACT_COST_TO_DATE_PC
9534               ,OTH_ETC_COST_TC
9535               ,OTH_ETC_COST_FC
9536               ,OTH_ETC_COST_PC
9537               ,PPL_ACT_COST_TO_DATE_TC
9538               ,PPL_ACT_COST_TO_DATE_FC
9539               ,PPL_ACT_COST_TO_DATE_PC
9540               ,PPL_ETC_COST_TC
9541               ,PPL_ETC_COST_FC
9542               ,PPL_ETC_COST_PC
9543               ,EQPMT_ACT_COST_TO_DATE_TC
9544               ,EQPMT_ACT_COST_TO_DATE_FC
9545               ,EQPMT_ACT_COST_TO_DATE_PC
9546               ,EQPMT_ETC_COST_TC
9547               ,EQPMT_ETC_COST_FC
9548               ,EQPMT_ETC_COST_PC
9549               ,EARNED_VALUE
9550               ,TASK_WT_BASIS_CODE
9551               ,CURRENT_FLAG
9552               ,PROJFUNC_COST_RATE_TYPE
9553               ,PROJFUNC_COST_EXCHANGE_RATE
9554               ,PROJFUNC_COST_RATE_DATE
9555               ,PROJ_COST_RATE_TYPE
9556               ,PROJ_COST_EXCHANGE_RATE
9557               ,PROJ_COST_RATE_DATE
9558               ,TXN_CURRENCY_CODE
9559               ,PROG_PA_PERIOD_NAME
9560               ,PROG_GL_PERIOD_NAME
9561               ,OTH_QUANTITY_TO_DATE
9562               ,OTH_ETC_QUANTITY
9563               ,OTH_ACT_RAWCOST_TO_DATE_TC
9564               ,OTH_ACT_RAWCOST_TO_DATE_FC
9565               ,OTH_ACT_RAWCOST_TO_DATE_PC
9566               ,OTH_ETC_RAWCOST_TC
9567               ,OTH_ETC_RAWCOST_FC
9568               ,OTH_ETC_RAWCOST_PC
9569               ,PPL_ACT_RAWCOST_TO_DATE_TC
9570               ,PPL_ACT_RAWCOST_TO_DATE_FC
9571               ,PPL_ACT_RAWCOST_TO_DATE_PC
9572               ,PPL_ETC_RAWCOST_TC
9573               ,PPL_ETC_RAWCOST_FC
9574               ,PPL_ETC_RAWCOST_PC
9575               ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9576               ,EQPMT_ACT_RAWCOST_TO_DATE_FC
9577               ,EQPMT_ACT_RAWCOST_TO_DATE_PC
9578               ,EQPMT_ETC_RAWCOST_TC
9579               ,EQPMT_ETC_RAWCOST_FC
9580               ,EQPMT_ETC_RAWCOST_PC
9581               )
9582           SELECT
9583                X_PROGRESS_ROLLUP_ID
9584               ,x_percent_complete_id
9585               ,PROJECT_ID
9586               ,p_resource_list_mem_id
9587               ,'PA_ASSIGNMENTS'
9588               ,AS_OF_DATE
9589               ,OBJECT_VERSION_ID
9590               ,SYSDATE
9591               ,LAST_UPDATED_BY
9592               ,SYSDATE
9593               ,CREATED_BY
9594               ,PROGRESS_STATUS_CODE
9595               ,LAST_UPDATE_LOGIN
9596               ,null                 --INCREMENTAL_WORK_QUANTITY
9597               ,null                 --CUMULATIVE_WORK_QUANTITY
9598               ,null                 --BASE_PERCENT_COMPLETE
9599               ,null                 --EFF_ROLLUP_PERCENT_COMP
9600               ,null                 --COMPLETED_PERCENTAGE
9601               ,ESTIMATED_START_DATE
9602               ,ESTIMATED_FINISH_DATE
9603               ,ACTUAL_START_DATE
9604               ,ACTUAL_FINISH_DATE
9605               ,ESTIMATED_REMAINING_EFFORT - nvl(sp_ESTIMATED_REMAINING_EFFORT,0)
9606               ,1
9607               ,null                --BASE_PERCENT_COMP_DERIV_CODE
9608               ,BASE_PROGRESS_STATUS_CODE
9609               ,null                --EFF_ROLLUP_PROG_STAT_CODE
9610               ,STRUCTURE_TYPE
9611               ,PROJ_ELEMENT_ID
9612               ,STRUCTURE_VERSION_ID
9613               ,PPL_ACT_EFFORT_TO_DATE- nvl(sp_PPL_ACT_EFFORT_TO_DATE,0)
9614               ,EQPMT_ACT_EFFORT_TO_DATE- nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0)
9615               ,EQPMT_ETC_EFFORT- nvl(sp_EQPMT_ETC_EFFORT,0)
9616               ,OTH_ACT_COST_TO_DATE_TC
9617               ,OTH_ACT_COST_TO_DATE_FC- nvl(sp_OTH_ACT_COST_TO_DATE_FC,0)
9618               ,OTH_ACT_COST_TO_DATE_PC- nvl(sp_OTH_ACT_COST_TO_DATE_PC,0)
9619               ,OTH_ETC_COST_TC
9620               ,OTH_ETC_COST_FC- nvl(sp_OTH_ETC_COST_FC,0)
9621               ,OTH_ETC_COST_PC- nvl(sp_OTH_ETC_COST_PC,0)
9622               ,PPL_ACT_COST_TO_DATE_TC
9623               ,PPL_ACT_COST_TO_DATE_FC- nvl(sp_PPL_ACT_COST_TO_DATE_FC,0)
9624               ,PPL_ACT_COST_TO_DATE_PC- nvl(sp_PPL_ACT_COST_TO_DATE_PC,0)
9625               ,PPL_ETC_COST_TC
9626               ,PPL_ETC_COST_FC- nvl(sp_PPL_ETC_COST_FC,0)
9627               ,PPL_ETC_COST_PC- nvl(sp_PPL_ETC_COST_PC,0)
9628               ,EQPMT_ACT_COST_TO_DATE_TC
9629               ,EQPMT_ACT_COST_TO_DATE_FC- nvl(sp_EQPMT_ACT_COST_TO_DATE_FC,0)
9630               ,EQPMT_ACT_COST_TO_DATE_PC- nvl(sp_EQPMT_ACT_COST_TO_DATE_PC,0)
9631               ,EQPMT_ETC_COST_TC
9632               ,EQPMT_ETC_COST_FC- nvl(sp_EQPMT_ETC_COST_FC,0)
9633               ,EQPMT_ETC_COST_PC- nvl(sp_EQPMT_ETC_COST_PC,0)
9634               ,EARNED_VALUE
9635               ,TASK_WT_BASIS_CODE
9636               ,CURRENT_FLAG
9637               ,PROJFUNC_COST_RATE_TYPE
9638               ,PROJFUNC_COST_EXCHANGE_RATE
9639               ,PROJFUNC_COST_RATE_DATE
9640               ,PROJ_COST_RATE_TYPE
9641               ,PROJ_COST_EXCHANGE_RATE
9642               ,PROJ_COST_RATE_DATE
9643               ,TXN_CURRENCY_CODE
9644               ,PROG_PA_PERIOD_NAME
9645               ,PROG_GL_PERIOD_NAME
9646               ,OTH_QUANTITY_TO_DATE
9647               ,OTH_ETC_QUANTITY
9648               ,OTH_ACT_RAWCOST_TO_DATE_TC
9649               ,OTH_ACT_RAWCOST_TO_DATE_FC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_FC,0)
9650               ,OTH_ACT_RAWCOST_TO_DATE_PC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_PC,0)
9651               ,OTH_ETC_RAWCOST_TC
9652               ,OTH_ETC_RAWCOST_FC- nvl(sp_OTH_ETC_RAWCOST_FC,0)
9653               ,OTH_ETC_RAWCOST_PC- nvl(sp_OTH_ETC_RAWCOST_PC,0)
9654               ,PPL_ACT_RAWCOST_TO_DATE_TC
9655               ,PPL_ACT_RAWCOST_TO_DATE_FC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_FC,0)
9656               ,PPL_ACT_RAWCOST_TO_DATE_PC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_PC,0)
9657               ,PPL_ETC_RAWCOST_TC
9658               ,PPL_ETC_RAWCOST_FC- nvl(sp_PPL_ETC_RAWCOST_FC,0)
9659               ,PPL_ETC_RAWCOST_PC- nvl(sp_PPL_ETC_RAWCOST_PC,0)
9660               ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9661               ,EQPMT_ACT_RAWCOST_TO_DATE_FC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_FC,0)
9662               ,EQPMT_ACT_RAWCOST_TO_DATE_PC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_PC,0)
9663               ,EQPMT_ETC_RAWCOST_TC
9664               ,EQPMT_ETC_RAWCOST_FC- nvl(sp_EQPMT_ETC_RAWCOST_FC,0)
9665               ,EQPMT_ETC_RAWCOST_PC- nvl(sp_EQPMT_ETC_RAWCOST_PC,0)
9666           FROM pa_progress_rollup
9667          WHERE project_id = p_project_id
9668            and object_id = p_task_id
9669            and structure_version_id is NULL
9670            and proj_element_id = p_task_id
9671            and structure_type = 'WORKPLAN'
9672            --and current_flag = 'Y'; --bug 3958686
9673 	   and trunc(as_of_date) = trunc(p_as_of_date)
9674            and ((p_action = 'SAVE' and current_flag = 'W')
9675              or (p_action = 'PUBLISH' and current_flag in ('Y', 'N')));
9676 
9677 
9678      IF g1_debug_mode  = 'Y' THEN
9679          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'Done Inserting into pa_progress_rollup', x_Log_Level=> 3);
9680      END IF;
9681 
9682     -- END IF;
9683 
9684      x_return_status :=  FND_API.G_RET_STS_SUCCESS;
9685 
9686 EXCEPTION
9687         WHEN FND_API.G_EXC_ERROR THEN
9688                 IF p_commit = FND_API.G_TRUE THEN
9689                         rollback to convert_task_prog_to_assgn;
9690                 END IF;
9691                 x_return_status := FND_API.G_RET_STS_ERROR;
9692         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9693                 IF p_commit = FND_API.G_TRUE THEN
9694                         rollback to convert_task_prog_to_assgn;
9695                 END IF;
9696                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9697                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9698                               p_procedure_name => 'convert_task_prog_to_assgn',
9699                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9700         WHEN OTHERS THEN
9701                 IF p_commit = FND_API.G_TRUE THEN
9702                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9703                 END IF;
9704                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9705                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9706                               p_procedure_name => 'convert_task_prog_to_assgn',
9707                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9708                 raise;
9709 
9710 END convert_task_prog_to_assgn;
9711 
9712 
9713 --bug 4046422, moved this api from PAFPCPFB.pls to this package
9714 /*=============================================================================
9715  This is a private api that copies progress/actuals from one workplan version
9716  to another with in the project. Functionally this is called to copy progress
9717  from last published version while publishing a new version
9718 
9719   p_calling_context will have values WP_PROGRESS and WP_APPLY_PROGRESS_TO_WORKING.
9720 ==============================================================================*/
9721 
9722 PROCEDURE copy_actuals_for_workplan(
9723            p_calling_context            IN   VARCHAR2 DEFAULT 'WP_PROGRESS'
9724           ,p_project_id                 IN   pa_projects_all.project_id%TYPE
9725           ,p_source_struct_ver_id       IN   pa_proj_element_versions.element_version_id%TYPE
9726           ,p_target_struct_ver_id       IN   pa_proj_element_versions.element_version_id%TYPE
9727           ,x_return_status              OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9728           ,x_msg_count                  OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
9729           ,x_msg_data                   OUT  NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
9730 AS
9731 
9732     --Start of variables used for debugging
9733 
9734     l_return_status      VARCHAR2(1);
9735     l_msg_count          NUMBER := 0;
9736     l_msg_data           VARCHAR2(2000);
9737     l_data               VARCHAR2(2000);
9738     l_msg_index_out      NUMBER;
9739     l_debug_mode         VARCHAR2(30);
9740 
9741     --End of variables used for debugging
9742 
9743     l_res_list_mismatch_flag        VARCHAR2(1);
9744     l_target_people_rlm_id          pa_resource_list_members.resource_list_member_id%TYPE;
9745 
9746     CURSOR budget_version_info_cur(c_str_ver_id NUMBER) IS
9747     SELECT resource_list_id,
9748            etc_start_date,
9749            budget_version_id
9750     FROM   pa_budget_versions
9751     WHERE  project_id = p_project_id
9752     AND    wp_version_flag = 'Y'
9753     AND    project_structure_version_id = c_str_ver_id;
9754 
9755     l_source_str_ver_info_rec    budget_version_info_cur%ROWTYPE;
9756     l_target_str_ver_info_rec    budget_version_info_cur%ROWTYPE;
9757 
9758     l_project_ids                 SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9759     l_struture_version_ids        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9760     l_proj_thru_dates_tbl         SYSTEM.PA_DATE_TBL_TYPE:= SYSTEM.PA_DATE_TBL_TYPE();
9761     l_no_of_recs_for_processing   NUMBER;--Bug 3953743
9762 
9763     /* Begin code to fix Bug # 4144300. */
9764 
9765     CURSOR cur_ppabpt(c_budget_version_id NUMBER, t_budget_version_id NUMBER) IS
9766     SELECT source.project_id               PROJECT_ID
9767            ,p_target_struct_ver_id         STRUCTURE_VERSION_ID
9768            ,source.task_id                 TASK_ID
9769            ,target.resource_assignment_id  RESOURCE_ASSIGNMENT_ID
9770            ,bl.txn_init_burdened_cost      ACTUAL_COST
9771            ,bl.init_quantity               ACTUAL_EFFORT
9772            ,bl.period_name                 PERIOD_NAME
9773            ,bl.txn_currency_code           TXN_CURRENCY_CODE
9774            ,bl.project_init_burdened_cost  ACTUAL_COST_PC
9775            ,bl.init_burdened_cost          ACTUAL_COST_FC
9776            ,bl.txn_init_raw_cost           ACTUAL_RAWCOST
9777            ,bl.project_init_raw_cost       ACTUAL_RAWCOST_PC
9778            ,bl.init_raw_cost               ACTUAL_RAWCOST_FC
9779            ,bl.start_date                  START_DATE
9780            ,bl.end_date                    END_DATE
9781            ,source.resource_list_member_id RESOURCE_LIST_MEMBER_ID
9782 		   ,source.cbs_element_id CBS_ELEMENT_ID
9783     FROM  pa_resource_assignments source,
9784           pa_resource_assignments target,
9785           pa_budget_lines bl
9786     WHERE bl.resource_assignment_id = source.resource_assignment_id
9787     and   source.budget_version_id =  c_budget_version_id
9788     and   target.budget_version_id = t_budget_version_id
9789     and   target.resource_list_member_id = decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id, l_target_people_rlm_id)
9790 	AND   NVL(source.cbs_element_id,-1) = NVL(target.cbs_element_id,-1)-- Added for bug 16895485
9791     and   source.task_id = target.task_id
9792     and   source.project_id = target.project_id
9793     and   bl.budget_version_id = c_budget_version_id
9794     and   (bl.init_quantity is not null or
9795            bl.txn_init_raw_cost is not null);
9796 
9797     cur_ppabpt_rec cur_ppabpt%ROWTYPE;
9798 
9799     I_PROJECT_ID        PA_PLSQL_DATATYPES.Num15TabTyp;
9800     I_STRUCTURE_VERSION_ID  PA_PLSQL_DATATYPES.Num15TabTyp;
9801     I_TASK_ID           PA_PLSQL_DATATYPES.Num15TabTyp;
9802     I_RESOURCE_ASSIGNMENT_ID    PA_PLSQL_DATATYPES.Num15TabTyp;
9803     I_ACTUAL_COST       PA_PLSQL_DATATYPES.AmtTabTyp;
9804     I_ACTUAL_EFFORT     PA_PLSQL_DATATYPES.QtyTabtyp;
9805     I_PERIOD_NAME       PA_PLSQL_DATATYPES.Char30TabTyp;
9806     I_TXN_CURRENCY_CODE     PA_PLSQL_DATATYPES.Char15TabTyp;
9807     I_ACTUAL_COST_PC        PA_PLSQL_DATATYPES.AmtTabTyp;
9808     I_ACTUAL_COST_FC        PA_PLSQL_DATATYPES.AmtTabTyp;
9809     I_ACTUAL_RAWCOST        PA_PLSQL_DATATYPES.AmtTabTyp;
9810     I_ACTUAL_RAWCOST_PC     PA_PLSQL_DATATYPES.AmtTabTyp;
9811     I_ACTUAL_RAWCOST_FC     PA_PLSQL_DATATYPES.AmtTabTyp;
9812     I_RESOURCE_LIST_MEMBER_ID   PA_PLSQL_DATATYPES.Num15TabTyp;
9813     I_START_DATE                PA_PLSQL_DATATYPES.DateTabTyp;
9814     I_END_DATE                  PA_PLSQL_DATATYPES.DateTabTyp;
9815 
9816     l_index NUMBER := null;
9817     i       NUMBER := null;
9818 
9819     /* End code to fix Bug # 4144300. */
9820 
9821    /* Begin code to fix Bug # 4141850. */
9822 
9823    cursor cur_as_of_date(p_project_id NUMBER) is
9824    select max(as_of_date)
9825    from pa_progress_rollup ppr
9826    where ppr.project_id = p_project_id
9827    and ppr.structure_version_id is null
9828    and ppr.structure_type = 'WORKPLAN'
9829    and ppr.current_flag <> 'W';
9830 
9831    /* End code to fix Bug # 4141850. */
9832 
9833 --bug 4255329
9834    l_as_of_date      DATE;
9835    l_bv_id           NUMBER;
9836 --end bug 4255329
9837 BEGIN
9838     x_msg_count := 0;
9839     x_return_status := FND_API.G_RET_STS_SUCCESS;
9840 
9841     l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9842 
9843     -- Set curr function
9844     pa_debug.set_curr_function(
9845                 p_function   =>'pa_fp_copy_from_pkg.copy_actuals_for_workplan'
9846                ,p_debug_mode => l_debug_mode );
9847 
9848     -- Check for business rules violations
9849     IF l_debug_mode = 'Y' THEN
9850     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Validating input parameters', x_Log_Level=> 3);
9851     END IF;
9852 
9853     IF (p_project_id IS NULL) OR
9854        (p_source_struct_ver_id IS NULL) OR
9855        (p_target_struct_ver_id IS NULL)
9856     THEN
9857 
9858         IF l_debug_mode = 'Y' THEN
9859        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Project_id = '||p_project_id, x_Log_Level=> 3);
9860        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'p_source_struct_ver_id = '||p_source_struct_ver_id, x_Log_Level=> 3);
9861        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'p_target_struct_ver_id = '||p_target_struct_ver_id, x_Log_Level=> 3);
9862         END IF;
9863 
9864         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
9865                               p_msg_name       => 'PA_FP_INV_PARAM_PASSED',
9866                               p_token1         => 'PROCEDURENAME',
9867                               p_value1         => 'pa_progress_pvt.copy_actuals_for_workplan');
9868 
9869         RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
9870 
9871     END IF;
9872 
9873     -- Fetch resource lists for both source and target structure versions
9874     OPEN budget_version_info_cur(p_source_struct_ver_id);
9875     FETCH budget_version_info_cur INTO l_source_str_ver_info_rec;
9876     CLOSE budget_version_info_cur;
9877 
9878     OPEN budget_version_info_cur(p_target_struct_ver_id);
9879     FETCH budget_version_info_cur INTO l_target_str_ver_info_rec;
9880     CLOSE budget_version_info_cur;
9881 
9882     -- If resource lists are different as of now the only possible case is that
9883     -- source resource list is uncategorized res list and target res list is a
9884     -- categorized res list in which case all the actuals from source would get
9885     -- mapped to the 'PEOPLE' res class rlm id of target res list
9886 
9887     IF l_source_str_ver_info_rec.resource_list_id <> l_target_str_ver_info_rec.resource_list_id THEN
9888         l_res_list_mismatch_flag := 'Y';
9889 
9890         BEGIN
9891             -- Fetch PEOPLE res class member id for the target target res list
9892             SELECT resource_list_member_id
9893             INTO   l_target_people_rlm_id
9894             FROM   pa_resource_list_members rlm,
9895                    pa_resource_lists_all_bg rl
9896             WHERE  rl.resource_list_id = l_target_str_ver_info_rec.resource_list_id
9897             AND    rl.resource_list_id = rlm.resource_list_id
9898             AND    object_type = Decode(control_flag, 'Y','RESOURCE_LIST','PROJECT')
9899             AND    object_id = Decode(control_flag, 'Y',rl.resource_list_id,p_project_id)
9900             AND    rlm.resource_class_flag = 'Y' -- Added for 13535688 CBS
9901             AND    resource_class_code = 'PEOPLE';
9902         EXCEPTION
9903           WHEN OTHERS THEN
9904              RAISE;
9905         END;
9906     ELSE
9907         l_res_list_mismatch_flag := 'N';
9908     END IF;
9909 
9910     -- Delete any existing records from the table first
9911     DELETE FROM PA_PROG_ACT_BY_PERIOD_TEMP;
9912 
9913     -- Populate the PA_PROG_ACT_BY_PERIOD_TEMP table from pa_budget_lines init columns data
9914     -- Using task_id and resource list member id fetch mapping target resource assignment id
9915 
9916     /* Begin code to fix Bug # 4144300. */
9917 
9918     -- Populate the PL/SQL tables that will be used for the Bulk insert.
9919 
9920     l_index := 0;
9921 
9922     for cur_ppabpt_rec in cur_ppabpt(l_source_str_ver_info_rec.budget_version_id, l_target_str_ver_info_rec.budget_version_id)
9923     loop
9924 
9925     l_index := l_index+1;
9926 
9927     I_PROJECT_ID(l_index) := cur_ppabpt_rec.PROJECT_ID;
9928     I_STRUCTURE_VERSION_ID(l_index) := cur_ppabpt_rec.STRUCTURE_VERSION_ID;
9929     I_TASK_ID(l_index) := cur_ppabpt_rec.TASK_ID;
9930     I_RESOURCE_ASSIGNMENT_ID(l_index) := cur_ppabpt_rec.RESOURCE_ASSIGNMENT_ID;
9931     I_ACTUAL_COST(l_index) := cur_ppabpt_rec.ACTUAL_COST;
9932     I_ACTUAL_EFFORT(l_index) := cur_ppabpt_rec.ACTUAL_EFFORT;
9933     I_PERIOD_NAME(l_index) := cur_ppabpt_rec.PERIOD_NAME;
9934     I_TXN_CURRENCY_CODE(l_index) := cur_ppabpt_rec.TXN_CURRENCY_CODE;
9935     I_ACTUAL_COST_PC(l_index) := cur_ppabpt_rec.ACTUAL_COST_PC;
9936     I_ACTUAL_COST_FC(l_index) := cur_ppabpt_rec.ACTUAL_COST_FC;
9937     I_ACTUAL_RAWCOST(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST;
9938     I_ACTUAL_RAWCOST_PC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_PC;
9939     I_ACTUAL_RAWCOST_FC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_FC;
9940     I_RESOURCE_LIST_MEMBER_ID(l_index) := cur_ppabpt_rec.RESOURCE_LIST_MEMBER_ID;
9941     I_START_DATE(l_index) := cur_ppabpt_rec.start_date;
9942     I_END_DATE(l_index) := cur_ppabpt_rec.end_date;
9943 
9944     end loop;
9945 
9946     -- Bulk insert the PL/SQL tables into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
9947 
9948     forall i in 1..l_index
9949 
9950         INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
9951             (
9952             PROJECT_ID
9953             ,STRUCTURE_VERSION_ID
9954             ,TASK_ID
9955             ,RESOURCE_ASSIGNMENT_ID
9956             ,AS_OF_DATE
9957             ,ACTUAL_COST
9958             ,ACTUAL_EFFORT
9959             ,PERIOD_NAME
9960             ,TXN_CURRENCY_CODE
9961             ,ACTUAL_COST_PC
9962             ,ACTUAL_COST_FC
9963             ,ACTUAL_RAWCOST
9964             ,ACTUAL_RAWCOST_PC
9965             ,ACTUAL_RAWCOST_FC
9966             ,RESOURCE_LIST_MEMBER_ID
9967             ,HIDDEN_RES_ASSGN_ID
9968             ,CURRENT_FLAG
9969             ,OBJECT_TYPE
9970             ,PERCENT_COMPLETE_ID
9971             ,ATTRIBUTE1
9972             ,ATTRIBUTE2
9973             ,ATTRIBUTE3
9974             ,ATTRIBUTE4
9975             ,ATTRIBUTE5
9976             ,ATTRIBUTE6
9977             ,start_date
9978             ,finish_date
9979             )
9980     VALUES
9981         (
9982         I_PROJECT_ID(i)
9983         ,I_STRUCTURE_VERSION_ID(i)
9984         ,I_TASK_ID(i)
9985         ,I_RESOURCE_ASSIGNMENT_ID(i)
9986         ,to_date(null)
9987         ,I_ACTUAL_COST(i)
9988         ,I_ACTUAL_EFFORT(i)
9989         ,I_PERIOD_NAME(i)
9990         ,I_TXN_CURRENCY_CODE(i)
9991         ,I_ACTUAL_COST_PC(i)
9992         ,I_ACTUAL_COST_FC(i)
9993         ,I_ACTUAL_RAWCOST(i)
9994         ,I_ACTUAL_RAWCOST_PC(i)
9995         ,I_ACTUAL_RAWCOST_FC(i)
9996         ,I_RESOURCE_LIST_MEMBER_ID(i)
9997         ,to_number(null)
9998         ,to_char(null)
9999         ,to_char(null)
10000         ,to_number(null)
10001         ,to_char(null)
10002         ,to_char(null)
10003         ,to_char(null)
10004         ,to_number(null)
10005         ,to_number(null)
10006         ,to_number(null)
10007         ,I_START_DATE(i)
10008         ,I_END_DATE(i)
10009         );
10010 
10011     /* End code to fix Bug # 4144300. */
10012 
10013     /* Begin commenting out the following code to fix Bug # 4144300.
10014 
10015     INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
10016     (
10017         PROJECT_ID
10018         ,STRUCTURE_VERSION_ID
10019         ,TASK_ID
10020         ,RESOURCE_ASSIGNMENT_ID
10021         ,AS_OF_DATE
10022         ,ACTUAL_COST
10023         ,ACTUAL_EFFORT
10024         ,PERIOD_NAME
10025         ,TXN_CURRENCY_CODE
10026         ,ACTUAL_COST_PC
10027         ,ACTUAL_COST_FC
10028         ,ACTUAL_RAWCOST
10029         ,ACTUAL_RAWCOST_PC
10030         ,ACTUAL_RAWCOST_FC
10031         ,RESOURCE_LIST_MEMBER_ID
10032         ,HIDDEN_RES_ASSGN_ID
10033         ,CURRENT_FLAG
10034         ,OBJECT_TYPE
10035         ,PERCENT_COMPLETE_ID
10036         ,ATTRIBUTE1
10037         ,ATTRIBUTE2
10038         ,ATTRIBUTE3
10039         ,ATTRIBUTE4
10040         ,ATTRIBUTE5
10041         ,ATTRIBUTE6
10042     )
10043     SELECT   target.project_id               PROJECT_ID
10044              ,p_target_struct_ver_id         STRUCTURE_VERSION_ID
10045              ,target.task_id                 TASK_ID
10046              ,target.resource_assignment_id  RESOURCE_ASSIGNMENT_ID
10047              ,NULL                           AS_OF_DATE
10048              ,bl.txn_init_burdened_cost      ACTUAL_COST
10049              ,bl.init_quantity               ACTUAL_EFFORT
10050              ,bl.period_name                 PERIOD_NAME
10051              ,bl.txn_currency_code           TXN_CURRENCY_CODE
10052              ,bl.project_init_burdened_cost  ACTUAL_COST_PC
10053              ,bl.init_burdened_cost          ACTUAL_COST_FC
10054              ,bl.txn_init_raw_cost           ACTUAL_RAWCOST
10055              ,bl.project_init_raw_cost       ACTUAL_RAWCOST_PC
10056              ,bl.init_raw_cost               ACTUAL_RAWCOST_FC
10057              ,target.resource_list_member_id RESOURCE_LIST_MEMBER_ID
10058              ,NULL                           HIDDEN_RES_ASSGN_ID
10059              ,NULL                           CURRENT_FLAG
10060              ,NULL                           OBJECT_TYPE
10061              ,NULL                           PERCENT_COMPLETE_ID
10062              ,NULL                           ATTRIBUTE1
10063              ,NULL                           ATTRIBUTE2
10064              ,NULL                           ATTRIBUTE3
10065              ,NULL                           ATTRIBUTE4
10066              ,NULL                           ATTRIBUTE5
10067              ,NULL                           ATTRIBUTE6
10068     FROM  pa_resource_assignments source,
10069           pa_budget_lines bl,
10070           pa_resource_assignments target
10071     WHERE bl.budget_version_id = l_source_str_ver_info_rec.budget_version_id
10072     and   bl.resource_assignment_id = source.resource_assignment_id
10073     AND   target.budget_version_id = l_target_str_ver_info_rec.budget_version_id
10074     AND   target.task_id = source.task_id
10075     AND   target.resource_list_member_id =
10076                 decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id,
10077                                                  l_target_people_rlm_id)
10078     --bug 3956258
10079     AND   'Y' = PA_PROGRESS_UTILS.check_object_has_prog(
10080                                      source.project_id   --p_project_id
10081                                     ,source.task_id      --p_proj_element_id
10082                                     -- ,decode( source.ta_display_flag, 'N', source.task_id,source.resource_list_member_id) --p_object_id -- Fix for Bug # 4112283.
10083                     ,source.resource_list_member_id -- Fix for Bug # 4112283.
10084                                     -- ,decode( source.ta_display_flag, 'N','PA_TASKS', 'PA_ASSIGNMENTS') --p_object_type -- Fix for Bug # 4112283.
10085                     ,'PA_ASSIGNMENTS' -- Fix for Bug # 4112283.
10086                                     ,'WORKPLAN') --p_structure_type
10087 
10088     --end bug 3956258
10089     ;
10090 
10091     End commenting out the following code to fix Bug # 4144300. */
10092 
10093     l_no_of_recs_for_processing := SQL%ROWCOUNT;
10094 
10095     IF l_debug_mode = 'Y' THEN
10096     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'No of records inserted into PA_PROG_ACT_BY_PERIOD_TEMP '||l_no_of_recs_for_processing, x_Log_Level=> 3);
10097     END IF;
10098 
10099     --Bug 3953743. If No records are inserted into the tmp table then the API need not be called at all.
10100     IF l_no_of_recs_for_processing > 0 THEN
10101 
10102         -- Call api that either creates/updates existing budget lines using the temp table
10103         l_project_ids.extend(1);
10104         l_project_ids(1) := p_project_id;
10105         l_struture_version_ids.extend(1);
10106         l_struture_version_ids(1) := p_target_struct_ver_id;
10107         l_proj_thru_dates_tbl.extend(1);
10108 
10109         /* Begin code to fix Bug # 4141850. */
10110 
10111         -- l_proj_thru_dates_tbl(1) := (l_source_str_ver_info_rec.etc_start_date - 1);
10112 
10113     open cur_as_of_date(p_project_id);
10114     fetch cur_as_of_date into l_proj_thru_dates_tbl(1);
10115     close cur_as_of_date;
10116 
10117         /* End code to fix Bug # 4141850. */
10118         PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
10119               (P_PROJECT_ID_TAB                   => l_project_ids,
10120                P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
10121                P_ACTUALS_THRU_DATE                => l_proj_thru_dates_tbl,
10122                P_CALLING_CONTEXT                  => p_calling_context,
10123                X_RETURN_STATUS                    => l_return_status,
10124                X_MSG_COUNT                        => l_msg_count,
10125                X_MSG_DATA                         => l_msg_data
10126              );
10127 
10128         IF l_return_status <> 'S' THEN
10129             IF l_debug_mode = 'Y' THEN
10130            pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Called API MAINTAIN_ACTUAL_AMT_WRP api returned error', x_Log_Level=> 3);
10131             END IF;
10132 
10133             RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
10134         END IF;
10135 
10136    --bug 4255329
10137     ELSE
10138 
10139        IF l_debug_mode = 'Y' THEN
10140           pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Opening cursor cur_as_of_date before updating BV etc start date', x_Log_Level=> 3);
10141        END IF;
10142 
10143        open cur_as_of_date(p_project_id);
10144        fetch cur_as_of_date into l_as_of_date;
10145        close cur_as_of_date;
10146 
10147        IF l_debug_mode = 'Y' THEN
10148           pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'l_as_of_date='||l_as_of_date, x_Log_Level=> 3);
10149        END IF;
10150 
10151        SELECT budget_version_id into l_bv_id
10152          FROM PA_BUDGET_VERSIONS
10153         WHERE project_id = P_PROJECT_ID
10154           AND project_structure_version_id = p_target_struct_ver_id
10155           AND nvl(wp_version_flag,'N')  = 'Y';
10156 
10157        IF l_debug_mode = 'Y' THEN
10158           pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'l_bv_id='||l_bv_id, x_Log_Level=> 3);
10159        END IF;
10160 
10161        UPDATE  pa_budget_versions
10162           SET  etc_start_date = l_as_of_date + 1
10163         WHERE  budget_version_id = l_bv_id;
10164 
10165        IF l_debug_mode = 'Y' THEN
10166           pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Done with updating pa_budget_versions ETC start date', x_Log_Level=> 3);
10167        END IF;
10168 
10169    --bug 4255329
10170 
10171     END IF;--IF l_no_of_recs_for_processing > 0 THEN
10172 
10173     IF l_debug_mode = 'Y' THEN
10174     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Exiting copy_actuals_for_workplan', x_Log_Level=> 3);
10175     END IF;
10176 
10177     -- reset curr function
10178     pa_debug.reset_curr_function();
10179 
10180 EXCEPTION
10181 
10182    WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
10183        l_msg_count := FND_MSG_PUB.count_msg;
10184        IF l_msg_count = 1 THEN
10185            PA_INTERFACE_UTILS_PUB.get_messages
10186                  (p_encoded        => FND_API.G_TRUE
10187                   ,p_msg_index      => 1
10188                   ,p_msg_count      => l_msg_count
10189                   ,p_msg_data       => l_msg_data
10190                   ,p_data           => l_data
10191                   ,p_msg_index_out  => l_msg_index_out);
10192 
10193            x_msg_data := l_data;
10194            x_msg_count := l_msg_count;
10195        ELSE
10196            x_msg_count := l_msg_count;
10197        END IF;
10198 
10199        x_return_status := FND_API.G_RET_STS_ERROR;
10200 
10201        IF l_debug_mode = 'Y' THEN
10202       pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Invalid Arguments Passed Or called api raised an error', x_Log_Level=> 3);
10203        END IF;
10204 
10205        -- reset curr function
10206        pa_debug.reset_curr_function();
10207 
10208        RETURN;
10209    WHEN Others THEN
10210        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10211        x_msg_count     := 1;
10212        x_msg_data      := SQLERRM;
10213 
10214        FND_MSG_PUB.add_exc_msg( p_pkg_name        => 'pa_fp_copy_from_pkg'
10215                                ,p_procedure_name  => 'copy_actuals_for_workplan');
10216 
10217        IF l_debug_mode = 'Y' THEN
10218        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Unexpected Error'||SQLERRM, x_Log_Level=> 3);
10219        END IF;
10220 
10221        -- reset curr function
10222        pa_debug.Reset_Curr_Function();
10223 
10224        RAISE;
10225 END copy_actuals_for_workplan;
10226 
10227 -- Bug 4575855 : Added rollup_prog_from_subprojs
10228 PROCEDURE ROLLUP_PROG_FROM_SUBPROJS(
10229   p_api_version                 IN      NUMBER          :=1.0
10230  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
10231  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
10232  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
10233  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10234  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
10235  ,p_debug_mode                  IN      VARCHAR2        :='N'
10236  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10237  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10238  ,p_structure_version_id        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10239  ,x_return_status               OUT  NOCOPY VARCHAR2  -- 4565506 Added while merging
10240  ,x_msg_count                   OUT  NOCOPY NUMBER    -- 4565506 Added while merging
10241  ,x_msg_data                    OUT  NOCOPY VARCHAR2 -- 4565506 Added while merging
10242 )
10243 IS
10244 
10245 l_api_name           CONSTANT   VARCHAR2(30)    := 'ROLLUP_PROG_FROM_SUBPROJS';
10246 l_api_version        CONSTANT   NUMBER          := p_api_version;
10247 l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
10248 l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
10249 l_return_status                 VARCHAR2(1);
10250 l_msg_count                     NUMBER;
10251 l_msg_data                      VARCHAR2(250);
10252 g1_debug_mode           VARCHAR2(1);
10253 /*
10254 CURSOR cur_select_grid
10255 IS
10256 SELECT distinct -- 4600547 Added distinct
10257 a.project_id
10258 , a.element_version_id
10259 , a.prg_level
10260 , ppr.as_of_date
10261 FROM pa_proj_element_versions a,
10262 pa_proj_elem_ver_structure b,
10263 pa_proj_structure_types ppst,
10264 pa_proj_element_versions c,
10265 pa_progress_rollup ppr
10266 WHERE
10267 c.project_id = p_project_id
10268 AND c.element_version_id = p_structure_version_id  ---5095632
10269 AND c.prg_group = a.prg_group
10270 AND a.project_id = b.project_id
10271 AND a.element_version_id = b.element_version_id
10272 AND b.status_code = 'STRUCTURE_PUBLISHED'
10273 AND b.latest_eff_published_flag = 'Y'
10274 AND a.proj_element_id = ppst.proj_element_id
10275 AND ppst.structure_type_id =1
10276 AND a.prg_level > 1
10277 AND a.proj_element_id = ppr.object_id
10278 AND a.project_id = ppr.project_id
10279 AND ppr.object_type = 'PA_STRUCTURES'
10280 AND ppr.structure_version_id is null
10281 AND ppr.structure_type = 'WORKPLAN'
10282 AND ppr.current_flag = 'Y'
10283 order by a.prg_level desc;    --select the lowest level of projects first.
10284 */
10285 
10286 CURSOR cur_select_grid
10287 IS
10288 SELECT distinct -- 4600547 Added distinct
10289 a.project_id
10290 , a.element_version_id
10291 , a.prg_level
10292 , ppr.as_of_date
10293 FROM pa_proj_element_versions a,
10294 pa_proj_elem_ver_structure b,
10295 pa_proj_structure_types ppst,
10296 pa_proj_element_versions c,
10297 pa_progress_rollup ppr
10298 WHERE
10299 c.project_id = p_project_id
10300 AND c.element_version_id = p_structure_version_id  -- Backported performance fix from R12 bug 5095632
10301 AND c.prg_group = a.prg_group
10302 AND a.project_id = b.project_id
10303 AND a.element_version_id = b.element_version_id
10304 AND b.status_code = 'STRUCTURE_PUBLISHED'
10305 AND b.latest_eff_published_flag = 'Y'
10306 AND a.proj_element_id = ppst.proj_element_id
10307 AND ppst.structure_type_id =1
10308 AND a.prg_level > 1
10309 AND a.proj_element_id = ppr.object_id
10310 AND a.project_id = ppr.project_id
10311 AND ppr.object_type = 'PA_STRUCTURES'
10312 AND ppr.structure_version_id is null
10313 AND ppr.structure_type = 'WORKPLAN'
10314 AND ppr.current_flag = 'Y'
10315 AND c.prg_group is not null --Bug 7607077
10316 AND (a.project_id = p_project_id OR a.project_id IN (
10317       -- Bottom up
10318       SELECT object_id_from2
10319       FROM pa_object_relationships
10320       START with object_id_to2 = p_project_id and relationship_type = 'LW'
10321       CONNECT BY PRIOR object_id_from2 = object_id_to2
10322 	  AND PRIOR relationship_type = relationship_type
10323       UNION
10324       -- Top down
10325       SELECT object_id_to2
10326       FROM pa_object_relationships
10327       START with object_id_from2 = p_project_id and relationship_type = 'LW'
10328       CONNECT BY PRIOR object_id_to2 = object_id_from2
10329 	  AND PRIOR relationship_type = relationship_type
10330 ))
10331 order by a.prg_level desc;    --select the lowest level of projects first.
10332 
10333 BEGIN
10334 
10335     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10336 
10337         IF g1_debug_mode  = 'Y' THEN
10338                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10339         END IF;
10340 
10341         IF g1_debug_mode  = 'Y' THEN
10342                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS Start : Passed Parameters :', x_Log_Level=> 3);
10343                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10344                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'p_structure_version_id='||p_structure_version_id, x_Log_Level=> 3);
10345         END IF;
10346 
10347     IF g1_debug_mode  = 'Y' THEN
10348                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10349         END IF;
10350 
10351         IF (p_commit = FND_API.G_TRUE) THEN
10352                 savepoint rollup_prog_from_subprojs2;
10353         END IF;
10354 
10355         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10356                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10357         END IF;
10358 
10359         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10360                 FND_MSG_PUB.initialize;
10361         END IF;
10362 
10363         x_return_status := FND_API.G_RET_STS_SUCCESS;
10364 
10365     FOR rec_subprojs IN cur_select_grid LOOP
10366         IF g1_debug_mode  = 'Y' THEN
10367             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.project_id='||rec_subprojs.project_id, x_Log_Level=> 3);
10368             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.element_version_id='||rec_subprojs.element_version_id, x_Log_Level=> 3);
10369             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'rec_subprojs.as_of_date='||rec_subprojs.as_of_date, x_Log_Level=> 3);
10370             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling populate_pji_tab_for_plan', x_Log_Level=> 3);
10371         END IF;
10372 
10373         pa_progress_pub.populate_pji_tab_for_plan(
10374             p_init_msg_list     => FND_API.G_FALSE
10375             ,p_commit       => FND_API.G_FALSE
10376             ,p_calling_module   => p_calling_module
10377             ,p_project_id       => rec_subprojs.project_id
10378             ,p_structure_version_id => rec_subprojs.element_version_id
10379             ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec_subprojs.project_id)
10380             ,p_structure_type       => 'WORKPLAN'
10381             ,p_program_rollup_flag  => 'Y'
10382             ,p_calling_context  => 'SUMMARIZE'
10383             ,p_as_of_date       => rec_subprojs.as_of_date
10384             ,x_return_status        => x_return_status
10385             ,x_msg_count            => x_msg_count
10386             ,x_msg_data             => x_msg_data);
10387 
10388         IF g1_debug_mode  = 'Y' THEN
10389             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'After Calling populate_pji_tab_for_plan x_return_status='||x_return_status, x_Log_Level=> 3);
10390         END IF;
10391 
10392 
10393         IF x_return_status <> 'S' THEN
10394             RAISE FND_API.G_EXC_ERROR;
10395         END IF;
10396 
10397         IF g1_debug_mode  = 'Y' THEN
10398             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
10399         END IF;
10400 
10401         pa_progress_pvt.program_rollup_pvt(
10402             p_init_msg_list         => FND_API.G_FALSE
10403             ,p_commit               => FND_API.G_FALSE
10404             ,p_validate_only        => FND_API.G_FALSE
10405             ,p_project_id           => rec_subprojs.project_id
10406             ,p_as_of_date           => rec_subprojs.as_of_date
10407             ,p_structure_type       => 'WORKPLAN'
10408             ,p_structure_ver_id     => rec_subprojs.element_version_id
10409             ,x_return_status        => x_return_status
10410             ,x_msg_count            => x_msg_count
10411             ,x_msg_data             => x_msg_data);
10412 
10413         IF g1_debug_mode  = 'Y' THEN
10414             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'After Calling program_rollup_pvt x_return_status='||x_return_status, x_Log_Level=> 3);
10415         END IF;
10416 
10417         IF x_return_status <> 'S' THEN
10418             RAISE FND_API.G_EXC_ERROR;
10419         END IF;
10420     END LOOP;
10421 
10422         IF (p_commit = FND_API.G_TRUE) THEN
10423                 COMMIT;
10424         END IF;
10425 EXCEPTION
10426     when FND_API.G_EXC_ERROR then
10427       if p_commit = FND_API.G_TRUE then
10428          rollback to rollup_prog_from_subprojs2;
10429       end if;
10430       x_return_status := FND_API.G_RET_STS_ERROR;
10431     when FND_API.G_EXC_UNEXPECTED_ERROR then
10432       if p_commit = FND_API.G_TRUE then
10433          rollback to rollup_prog_from_subprojs2;
10434       end if;
10435       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10436       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10437                               p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10438                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10439     when OTHERS then
10440       if p_commit = FND_API.G_TRUE then
10441          rollback to rollup_prog_from_subprojs2;
10442       end if;
10443       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10444       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10445                               p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10446                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10447       raise;
10448 END ROLLUP_PROG_FROM_SUBPROJS;
10449 
10450 --Added following procedure for MRup3 merge
10451 PROCEDURE UPD_PROG_RECS_STR_DELETE(p_project_id         IN  NUMBER,
10452                                    p_str_ver_id_to_del  IN  NUMBER,
10453                                    x_return_status      OUT NOCOPY VARCHAR2,
10454                                    x_msg_count          OUT NOCOPY NUMBER,
10455                                    x_msg_data           OUT NOCOPY VARCHAR2) IS
10456 
10457 cursor new_str_version_id is
10458 select ppevs.element_version_id
10459   from pa_proj_elem_ver_structure ppevs, pa_proj_structure_types ppst
10460  where ppevs.project_id = p_project_id
10461    and ppevs.proj_element_id = ppst.proj_element_id
10462    and ppst.structure_type_id = 1
10463    and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10464    and ppevs.PUBLISHED_DATE = (select min(ppevs.published_date)
10465                                from pa_proj_elem_ver_structure ppevs,
10466                                     pa_proj_structure_types ppst
10467                                where ppevs.project_id = p_project_id
10468                                and ppevs.proj_element_id = ppst.proj_element_id
10469                                and ppst.structure_type_id = 1
10470                                and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10471                                and ppevs.published_date > (select published_date
10472                                                 from pa_proj_elem_ver_structure
10473                                                 where project_id = p_project_id
10474                                                 and element_version_id = p_str_ver_id_to_del));
10475 
10476 l_str_ver_id   number;
10477   -- Begin. Bug 5452282
10478   cursor obj_version_id (x_str_ver_id  pa_proj_element_versions.element_version_id%type)is
10479     select ppev.element_version_id  old_element_version_id,
10480            ppev1.element_version_id new_element_version_id,
10481            ppev.proj_element_id
10482       from pa_proj_element_versions ppev,
10483            pa_proj_element_versions ppev1
10484      where ppev.project_id = p_project_id
10485        and ppev.parent_structure_version_id = p_str_ver_id_to_del
10486        and ppev.proj_element_id = ppev1.proj_element_id
10487        and ppev1.parent_structure_version_id = x_str_ver_id;
10488 
10489   l_old_element_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10490   l_new_element_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10491   l_proj_element_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10492   -- End. Bug 5452282
10493 
10494 BEGIN
10495 x_return_status := 'S';
10496   open new_str_version_id;
10497   fetch new_str_version_id into l_str_ver_id;
10498   close new_str_version_id;
10499 
10500   if (l_str_ver_id is null) then
10501      raise FND_API.G_EXC_ERROR;
10502   end if;
10503 
10504   -- Begin bug 5452282
10505   open obj_version_id(l_str_ver_id);
10506   fetch obj_version_id bulk collect into l_old_element_version_id_tab,
10507                                          l_new_element_version_id_tab,
10508                                          l_proj_element_id_tab;
10509   close obj_version_id;
10510 
10511   --- update pa_percent_completes table with new object_version_ids
10512   IF l_new_element_version_id_tab.count > 0 THEN
10513   --- update pa_percent_completes table with new object_version_ids
10514   Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10515     update pa_percent_completes  ppc
10516        set object_version_id = l_new_element_version_id_tab(i)
10517      where project_id = p_project_id
10518        and task_id = l_proj_element_id_tab(i)
10519        and structure_type = 'WORKPLAN'
10520        and object_version_id = l_old_element_version_id_tab(i);
10521 
10522   --- update pa_progress_rollup table with new object_version_ids
10523   Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10524     update pa_progress_rollup ppr
10525        set object_version_id = l_new_element_version_id_tab(i)
10526       where project_id = p_project_id
10527        and proj_element_id = l_proj_element_id_tab(i)
10528        and structure_type = 'WORKPLAN'
10529        and structure_version_id is null
10530        and object_version_id = l_old_element_version_id_tab(i);
10531   End if;
10532 
10533 exception
10534 when FND_API.G_EXC_ERROR then
10535   x_return_status := 'E';
10536   fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10537                           p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10538                           p_error_text     => 'This workplan structure cannot be deleted.');
10539 
10540 when OTHERS then
10541   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10542   fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10543                           p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10544                           p_error_text     => SUBSTRB(SQLERRM,1,120));
10545   raise;
10546 
10547 END UPD_PROG_RECS_STR_DELETE;
10548 
10549 PROCEDURE ROLLUP_PVT(
10550  p_api_version                          IN      NUMBER          :=1.0
10551 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_TRUE
10552 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
10553 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
10554 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10555 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
10556 ,p_calling_mode                         IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10557 ,p_debug_mode                           IN      VARCHAR2        :='N'
10558 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10559 ,p_progress_mode                        IN      VARCHAR2        := 'FUTURE'
10560 ,p_project_id                           IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10561 ,p_object_type                          IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
10562 ,p_object_id                            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10563 ,p_object_version_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10564 ,p_task_version_id                      IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10565 ,p_as_of_date                           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
10566 ,p_lowest_level_task                    IN      VARCHAR2        := 'N'
10567 ,p_process_whole_tree                   IN      VARCHAR2        := 'Y'
10568 ,p_structure_version_id                 IN      NUMBER
10569 ,p_structure_type                       IN      VARCHAR2        := 'WORKPLAN'
10570 ,p_fin_rollup_method                    IN      VARCHAR2        := 'COST'
10571 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
10572 ,p_rollup_entire_wbs                    IN      VARCHAR2        := 'N'
10573 ,p_task_version_id_tbl                  IN      SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
10574 ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --maansari7/18  to be passed form apply lp progress to  select regular  planned amounts to send to schduling api for    percent comnplete and earned    value calculations.
10575 ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, 3951024
10576 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10577 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
10578 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
10579 )
10580  IS
10581 
10582 l_api_name                      CONSTANT VARCHAR(30) := 'ROLLUP_PVT';
10583 l_api_version                   CONSTANT NUMBER         :=      1.0                     ;
10584 l_return_status                 VARCHAR2(1)                                     ;
10585 l_msg_count                     NUMBER                                          ;
10586 l_msg_data                      VARCHAR2(250)                                   ;
10587 l_data                          VARCHAR2(250)                                   ;
10588 l_msg_index_out                 NUMBER                                          ;
10589 l_error_msg_code                VARCHAR2(250)                                   ;
10590 l_user_id                       NUMBER :=       FND_GLOBAL.USER_ID                      ;
10591 l_login_id                      NUMBER :=       FND_GLOBAL.LOGIN_ID                     ;
10592 l_lowest_task                   VARCHAR2(1)                                     ;
10593 l_published_structure           VARCHAR2(1)                                     ;
10594 l_task_version_id               NUMBER                                          ;
10595 l_rollup_table1                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
10596 l_rollup_table2                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
10597 l_index                         NUMBER   := 0;
10598 l_parent_count                  NUMBER   := 0;
10599 l_process_number                NUMBER;
10600 l_wbs_level                     NUMBER                                                                           ;
10601 l_action_allowed                VARCHAR2(1)                                                                      ;
10602 l_sharing_Enabled               VARCHAR2(1)                                                                      ;
10603 l_split_workplan                VARCHAR2(1)                                                                      ;
10604 l_structure_version_id          NUMBER                                                                           ;
10605 g1_debug_mode                   VARCHAR2(1)                                                                      ;
10606 l_Rollup_Method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                                ;
10607 
10608 
10609    -- Rollup Cases
10610    -- 1. Workplan Publsihed Version Rollup.
10611    -- 2. Workplan Working Version Rollup.
10612    -- 3. Financial Structure Rollup.
10613    -- 4. Entire WBS using       structure       version id.
10614    -- 5. Program Rollup
10615 
10616    --This       cursor selects  the parents of  a given task.
10617 
10618 
10619 CURSOR cur_reverse_tree_update IS
10620 SELECT proj_element_id, object_id_to1, object_type
10621 FROM
10622         ( select object_id_from1, object_id_to1
10623         from pa_object_relationships
10624         where relationship_type ='S'
10625         and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
10626         and object_type_to = 'PA_TASKS'
10627         and p_rollup_entire_wbs='N'
10628         start with object_id_to1 = p_task_version_id
10629         and relationship_type = 'S'
10630         connect by prior object_id_from1 = object_id_to1
10631         and relationship_type =     'S'
10632         ) pobj
10633         , pa_proj_element_versions ppev
10634 WHERE element_version_id = object_id_to1
10635 and p_rollup_entire_wbs='N'
10636 --select        structure
10637 UNION
10638 SELECT proj_element_id, element_version_id, object_type
10639 FROM pa_proj_element_versions
10640 WHERE element_version_id = p_structure_version_id
10641 and project_id = p_project_id
10642 and object_type = 'PA_STRUCTURES'
10643 and p_rollup_entire_wbs='N'
10644 UNION
10645 SELECT proj_element_id, element_version_id, object_type
10646 FROM pa_proj_element_versions
10647 WHERE project_id = p_project_id
10648 and parent_structure_version_id = p_structure_version_id
10649 and object_type IN ('PA_TASKS','PA_STRUCTURES')
10650 and p_rollup_entire_wbs='Y'
10651 ;
10652 
10653 
10654 l_mass_rollup_prog_exists_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10655 l_mass_rollup_prog_rec_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10656 
10657 l_tsk_object_id_from1_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10658 l_tsk_parent_object_type_tab        SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10659 l_tsk_object_id_to1_tab         SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10660 l_tsk_object_type_tab           SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10661 l_tsk_wbs_level_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10662 l_tsk_weighting_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10663 l_tsk_roll_comp_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10664 l_tsk_over_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10665 l_tsk_as_of_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
10666 l_tsk_actual_start_date_tab     SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
10667 l_tsk_actual_finish_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
10668 l_tsk_est_start_date_tab                SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
10669 l_tsk_est_finish_date_tab       SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
10670 l_tsk_rollup_weight1_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10671 l_tsk_override_weight2_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10672 l_tsk_base_weight3_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10673 l_tsk_task_weight4_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10674 l_tsk_status_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10675 l_tsk_object_id_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10676 l_tsk_proj_element_id_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10677 l_tsk_ppl_act_eff_tab           SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10678 l_tsk_ppl_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10679 l_tsk_ppl_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10680 l_tsk_ppl_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10681 l_tsk_ppl_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10682 l_tsk_ppl_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10683 l_tsk_ppl_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10684 l_tsk_est_rem_effort_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10685 l_tsk_ppl_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10686 l_tsk_ppl_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10687 l_tsk_ppl_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10688 l_tsk_ppl_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10689 l_tsk_ppl_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10690 l_tsk_ppl_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10691 l_tsk_eqpmt_act_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10692 l_tsk_eqpmt_act_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10693 l_tsk_eqpmt_act_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10694 l_tsk_eqpmt_act_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10695 l_tsk_eqpmt_act_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10696 l_tsk_eqpmt_act_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10697 l_tsk_eqpmt_act_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10698 l_tsk_eqpmt_etc_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10699 l_tsk_eqpmt_etc_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10700 l_tsk_eqpmt_etc_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10701 l_tsk_eqpmt_etc_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10702 l_tsk_eqpmt_etc_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10703 l_tsk_eqpmt_etc_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10704 l_tsk_eqpmt_etc_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10705 l_tsk_oth_quantity_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10706 l_tsk_oth_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10707 l_tsk_oth_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10708 l_tsk_oth_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10709 l_tsk_oth_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10710 l_tsk_oth_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10711 l_tsk_oth_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10712 l_tsk_oth_etc_quantity_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10713 l_tsk_oth_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10714 l_tsk_oth_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10715 l_tsk_oth_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10716 l_tsk_oth_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10717 l_tsk_oth_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10718 l_tsk_oth_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10719 l_tsk_current_flag_tab          SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10720 l_tsk_pf_cost_rate_type_tab     SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10721 l_tsk_pf_cost_exc_rate_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10722 l_tsk_pf_cost_rate_date_tab     SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
10723 l_tsk_p_cost_rate_type_tab      SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10724 l_tsk_p_cost_exc_rate_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10725 l_tsk_p_cost_rate_date_tab      SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
10726 l_tsk_txn_currency_code_tab     SYSTEM.PA_VARCHAR2_15_TBL_TYPE  := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
10727 l_tsk_prog_pa_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10728 l_tsk_prog_gl_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10729 l_tsk_bac_value_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10730 l_tsk_bac_self_value_tab        SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
10731 l_tsk_earned_value_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10732 l_tsk_deriv_method_tab          SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10733 l_tsk_progress_rollup_id_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10734 l_tsk_rollup_rec_ver_num_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10735 l_tsk_object_version_id_tab             SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10736 l_tsk_progress_stat_code_tab            SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10737 l_tsk_incremental_wq_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10738 l_tsk_cumulative_wq_tab                 SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10739 l_tsk_base_prog_stat_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10740 l_tsk_eff_roll_prg_st_code_tab          SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
10741 l_tsk_percent_complete_id_tab           SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10742 l_tsk_task_wt_basis_code_tab            SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
10743 l_tsk_base_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
10744 l_tsk_structure_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
10745 
10746 l_tsk_create_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10747 l_tsk_update_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
10748 
10749 
10750 l_prj_currency_code             VARCHAR2(15);
10751 l_total_tasks                   NUMBER;
10752 l_prog_pa_period_name           VARCHAR2(30);
10753 l_prog_gl_period_name           VARCHAR2(30);
10754 task_index                      NUMBER;
10755 l_task_id                       NUMBER;
10756 l_child_rollup_rec_exists       VARCHAR2(1);
10757 l_sch_rec_ver_number            NUMBER;
10758 
10759 l_equipment_hours               NUMBER;
10760 l_pou_labor_brdn_cost           NUMBER;
10761 l_prj_labor_brdn_cost           NUMBER;
10762 l_pou_equip_brdn_cost           NUMBER;
10763 l_prj_equip_brdn_cost           NUMBER;
10764 l_pou_labor_raw_cost            NUMBER;
10765 l_prj_labor_raw_cost            NUMBER;
10766 l_pou_equip_raw_cost            NUMBER;
10767 l_prj_equip_raw_cost            NUMBER;
10768 l_labor_hours                   NUMBER;
10769 l_pou_oth_brdn_cost             NUMBER;
10770 l_prj_oth_brdn_cost             NUMBER;
10771 l_pou_oth_raw_cost              NUMBER;
10772 l_prj_oth_raw_cost              NUMBER;
10773 l_remaining_effort1             NUMBER;
10774 l_percent_complete1             NUMBER;
10775 l_percent_complete2             NUMBER;
10776 l_etc_cost_pc                   NUMBER;
10777 l_ppl_etc_cost_pc               NUMBER;
10778 l_eqpmt_etc_cost_pc             NUMBER;
10779 l_etc_cost_fc                   NUMBER;
10780 l_ppl_etc_cost_fc               NUMBER;
10781 l_eqpmt_etc_cost_fc             NUMBER;
10782 l_bac_value1                    NUMBER;
10783 l_ppl_act_cost_to_date_pc       NUMBER;
10784 l_eqpmt_act_cost_to_date_pc     NUMBER;
10785 l_oth_act_cost_to_date_fc       NUMBER;
10786 l_ppl_act_cost_to_date_fc       NUMBER;
10787 l_eqpmt_act_cost_to_date_fc     NUMBER;
10788 l_ppl_act_effort_to_date        NUMBER;
10789 l_oth_act_rawcost_to_date_pc    NUMBER;
10790 l_ppl_act_rawcost_to_date_pc    NUMBER;
10791 l_eqpmt_act_rawcost_to_date_pc  NUMBER;
10792 l_etc_rawcost_pc                NUMBER;
10793 l_ppl_etc_rawcost_pc            NUMBER;
10794 l_eqpmt_act_rawcost_to_date_fc  NUMBER;
10795 l_ppl_act_rawcost_to_date_fc    NUMBER;
10796 l_oth_act_rawcost_to_date_fc    NUMBER;
10797 l_eqpmt_act_effort_to_date      NUMBER;
10798 l_eqpmt_etc_effort              NUMBER;
10799 l_earned_value1                 NUMBER;
10800 l_oth_act_cost_to_date_pc       NUMBER;
10801 l_percent_complete_id           NUMBER;
10802 l_progress_rollup_id            NUMBER;
10803 l_rollup_rec_ver_number         NUMBER;
10804 l_eqpmt_etc_rawcost_fc          NUMBER;
10805 l_ppl_etc_rawcost_fc            NUMBER;
10806 l_etc_rawcost_fc                NUMBER;
10807 l_eqpmt_etc_rawcost_pc          NUMBER;
10808 l_period_name                   VARCHAR2(30);
10809 l_existing_object_status        VARCHAR2(150);
10810 l_status_code                   VARCHAR2(150);
10811 l_system_status_code            VARCHAR2(150);
10812 l_status_code_temp              VARCHAR2(150); --Bug#5374114
10813 l_system_status_code_temp       VARCHAR2(150); --Bug#5374114
10814 l_max_rollup_as_of_date2        DATE;
10815 l_current_flag                  VARCHAR2(1);
10816 l_pev_schedule_id               NUMBER;
10817 l_actual_exists                 VARCHAR2(1):='N';
10818 l_tsk_scheduled_start_date      Date;
10819 l_tsk_scheduled_finish_date     Date;
10820 l_actual_start_date             Date;
10821 l_actual_finish_date            Date;
10822 l_estimated_start_date          Date;
10823 l_estimated_finish_date         Date;
10824 l_eff_rollup_status_code        VARCHAR2(150);
10825 l_progress_status_code          VARCHAR2(150);
10826 l_rolled_up_base_per_comp       NUMBER;
10827 l_rolled_up_base_prog_stat      VARCHAR2(150);
10828 l_rolled_up_per_comp            NUMBER;
10829 l_rolled_up_prog_stat           VARCHAR2(150);
10830 
10831 
10832 CURSOR cur_sch_id( c_object_version_id NUMBER )
10833 IS
10834 SELECT pev_schedule_id, record_version_number
10835 FROM pa_proj_elem_ver_schedule
10836 WHERE project_id = p_project_id
10837 AND element_version_id = c_object_version_id;
10838 
10839 
10840 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
10841 IS
10842 SELECT scheduled_start_date, scheduled_finish_date
10843 FROM pa_proj_elem_ver_schedule
10844 WHERE PROJECT_ID = c_project_id
10845 AND element_version_id = c_element_version_id;
10846 
10847 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
10848 SELECT 'Y' FROM DUAL
10849 WHERE EXISTS
10850 (SELECT 'xyz'
10851 FROM    pa_percent_completes
10852 WHERE project_id = p_project_id
10853 AND task_id = c_task_id
10854 AND object_type = 'PA_DELIVERABLES'
10855 AND trunc(date_computed)<= trunc(p_as_of_date)
10856 AND structure_type = 'WORKPLAN'
10857 AND published_flag = 'Y'
10858 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
10859 );
10860 
10861 
10862 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
10863 IS
10864 SELECT STATUS_CODE
10865 FROM PA_PROJ_ELEMENTS
10866 WHERE PROJ_ELEMENT_ID = l_proj_element_id
10867 AND PROJECT_ID = l_project_id;
10868 
10869 CURSOR cur_status( c_status_weight      VARCHAR2 )
10870 IS
10871 select lookup_code
10872 from fnd_lookup_values
10873 where attribute4 = c_status_weight
10874 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
10875 and language = 'US'
10876 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
10877 
10878 CURSOR cur_task_status( c_status_weight VARCHAR2 )
10879 IS
10880 select project_status_code
10881 from pa_project_statuses
10882 where project_status_weight =   c_status_weight
10883 and status_type = 'TASK'
10884 and predefined_flag = 'Y';
10885 
10886 l_process_number_temp   NUMBER;
10887 
10888    --This cursor selects the immediate child taks of a given task.
10889    CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
10890    IS
10891           --select      structure
10892     SELECT to_number(null) object_id_from1
10893                 , ppev.object_type parent_object_type
10894                 , element_version_id object_id_to1
10895                 , ppev.object_type object_type
10896                 , ppev.wbs_level wbs_level
10897                 , to_number( null ) weighting_percentage
10898                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
10899                 , ppr.completed_percentage override_percent_complete
10900 		, ppr.as_of_date
10901                 , ppr.actual_start_date
10902                 , ppr.actual_finish_date
10903                 , ppr.estimated_start_date
10904                 , ppr.estimated_finish_date
10905                 , pps1.project_status_weight rollup_weight1 ---rollup progress status   code
10906                 , pps2.project_status_weight override_weight2 ---override progress status code
10907                 , pps3.project_status_weight base_weight3        --base prog status
10908                 , to_number( null )     task_weight4        --task status
10909                 , to_char(null) status_code
10910                 , ppev.proj_element_id object_id
10911                 , ppev.proj_element_id
10912 		, ppr.PPL_ACT_EFFORT_TO_DATE
10913                 , ppr.PPL_ACT_COST_TO_DATE_TC
10914                 , ppr.PPL_ACT_COST_TO_DATE_PC
10915                 , ppr.PPL_ACT_COST_TO_DATE_FC
10916 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
10917 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
10918 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
10919                 , ppr.ESTIMATED_REMAINING_EFFORT
10920                 , ppr.PPL_ETC_COST_TC
10921                 , ppr.PPL_ETC_COST_PC
10922                 , ppr.PPL_ETC_COST_FC
10923                 , ppr.PPL_ETC_RAWCOST_TC
10924                 , ppr.PPL_ETC_RAWCOST_PC
10925                 , ppr.PPL_ETC_RAWCOST_FC
10926 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
10927                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
10928                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
10929                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
10930 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
10931 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
10932 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
10933                 , ppr.EQPMT_ETC_EFFORT
10934                 , ppr.EQPMT_ETC_COST_TC
10935                 , ppr.EQPMT_ETC_COST_PC
10936                 , ppr.EQPMT_ETC_COST_FC
10937                 , ppr.EQPMT_ETC_RAWCOST_TC
10938                 , ppr.EQPMT_ETC_RAWCOST_PC
10939                 , ppr.EQPMT_ETC_RAWCOST_FC
10940 		, ppr.OTH_QUANTITY_TO_DATE
10941                 , ppr.OTH_ACT_COST_TO_DATE_TC
10942                 , ppr.OTH_ACT_COST_TO_DATE_PC
10943                 , ppr.OTH_ACT_COST_TO_DATE_FC
10944 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
10945 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
10946 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
10947 		, ppr.OTH_ETC_QUANTITY
10948                 , ppr.OTH_ETC_COST_TC
10949                 , ppr.OTH_ETC_COST_PC
10950                 , ppr.OTH_ETC_COST_FC
10951                 , ppr.OTH_ETC_RAWCOST_TC
10952                 , ppr.OTH_ETC_RAWCOST_PC
10953                 , ppr.OTH_ETC_RAWCOST_FC
10954                 , ppr.CURRENT_FLAG
10955                 , ppr.PROJFUNC_COST_RATE_TYPE
10956                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
10957                 , ppr.PROJFUNC_COST_RATE_DATE
10958                 , ppr.PROJ_COST_RATE_TYPE
10959                 , ppr.PROJ_COST_EXCHANGE_RATE
10960                 , ppr.PROJ_COST_RATE_DATE
10961                 , ppr.TXN_CURRENCY_CODE
10962                 , ppr.PROG_PA_PERIOD_NAME
10963                 , ppr.PROG_GL_PERIOD_NAME
10964                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
10965                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
10966                   BAC_value_self -- bug 4493105
10967                 , null earned_value
10968 		, to_char(null) task_derivation_method
10969 		, ppr.progress_rollup_id
10970 		, ppr.record_version_number
10971 	--	, element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
10972 		, ppr.object_version_id -- Bug 4651304
10973                 , ppr.progress_status_code
10974                 , ppr.incremental_work_quantity
10975                 , ppr.cumulative_work_quantity
10976 		-- 4533112 : Added decode to select N and Y only
10977                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
10978                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
10979                 , ppr.percent_complete_id
10980                 , ppr.TASK_WT_BASIS_CODE
10981                 , ppr.structure_version_id
10982                 ,'N' create_required
10983                 ,'N' update_required
10984         , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
10985     FROM pa_proj_element_versions ppev,
10986             pa_progress_rollup ppr,
10987             pa_project_statuses pps1,
10988             pa_project_statuses pps2,
10989             pa_project_statuses pps3 ,
10990             pa_proj_rollup_temp temp
10991     WHERE  --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
10992                --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
10993                temp.object_id = ppev.element_version_id
10994         AND    temp.process_number = l_process_number_temp
10995 	AND    ppev.object_type = 'PA_STRUCTURES'
10996         AND    ppr.project_id  = ppev.project_id
10997         AND    ppr.object_id = ppev.proj_element_id
10998         AND    ppr.object_type =  'PA_STRUCTURES'
10999         AND    ppr.as_of_date  = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
11000                                  ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
11001         AND    ppr.current_flag <>     'W'
11002         AND    ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11003         AND    ppr.progress_status_code = pps2.project_status_code(+)
11004         AND    ppr.base_progress_status_code = pps3.project_status_code(+)
11005         AND    ppr.structure_type = p_structure_type
11006         AND    ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11007 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
11008         UNION
11009         --      select tasks
11010         SELECT pobj.object_id_from1
11011                 , ppev1.object_type     parent_object_type
11012                 , pobj.object_id_to1
11013                 , ppev2.object_type     object_type
11014                 , ppev2.wbs_level wbs_level
11015                 , pobj.weighting_percentage
11016                 , ppr.EFF_ROLLUP_PERCENT_COMP   rollup_completed_percentage
11017                 , ppr.completed_percentage override_percent_complete
11018 		, ppr.as_of_date
11019                 , ppr.actual_start_date
11020                 , ppr.actual_finish_date
11021                 , ppr.estimated_start_date
11022                 , ppr.estimated_finish_date
11023                 , pps1.project_status_weight rollup_weight1     ---rollup       progress        status code
11024                 , pps2.project_status_weight override_weight2 ---override progress status code
11025                 , pps3.project_status_weight base_weight3        ---base prog status
11026                 , pps4.project_status_weight    task_weight4
11027                 , ppe.status_code
11028                 , ppev2.proj_element_id object_id
11029                 , ppev2.proj_element_id
11030 		, ppr.PPL_ACT_EFFORT_TO_DATE
11031                 , ppr.PPL_ACT_COST_TO_DATE_TC
11032                 , ppr.PPL_ACT_COST_TO_DATE_PC
11033                 , ppr.PPL_ACT_COST_TO_DATE_FC
11034 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
11035 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
11036 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
11037                 , ppr.ESTIMATED_REMAINING_EFFORT
11038                 , ppr.PPL_ETC_COST_TC
11039                 , ppr.PPL_ETC_COST_PC
11040                 , ppr.PPL_ETC_COST_FC
11041                 , ppr.PPL_ETC_RAWCOST_TC
11042                 , ppr.PPL_ETC_RAWCOST_PC
11043                 , ppr.PPL_ETC_RAWCOST_FC
11044 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
11045 		, ppr.EQPMT_ACT_COST_TO_DATE_TC
11046                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
11047                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
11048 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
11049 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
11050 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
11051                 , ppr.EQPMT_ETC_EFFORT
11052                 , ppr.EQPMT_ETC_COST_TC
11053                 , ppr.EQPMT_ETC_COST_PC
11054                 , ppr.EQPMT_ETC_COST_FC
11055                 , ppr.EQPMT_ETC_RAWCOST_TC
11056                 , ppr.EQPMT_ETC_RAWCOST_PC
11057                 , ppr.EQPMT_ETC_RAWCOST_FC
11058 		, ppr.OTH_QUANTITY_TO_DATE
11059                 , ppr.OTH_ACT_COST_TO_DATE_TC
11060                 , ppr.OTH_ACT_COST_TO_DATE_PC
11061                 , ppr.OTH_ACT_COST_TO_DATE_FC
11062 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
11063 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
11064 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
11065 		, ppr.OTH_ETC_QUANTITY
11066                 , ppr.OTH_ETC_COST_TC
11067                 , ppr.OTH_ETC_COST_PC
11068                 , ppr.OTH_ETC_COST_FC
11069                 , ppr.OTH_ETC_RAWCOST_TC
11070                 , ppr.OTH_ETC_RAWCOST_PC
11071                 , ppr.OTH_ETC_RAWCOST_FC
11072                 , ppr.CURRENT_FLAG
11073                 , ppr.PROJFUNC_COST_RATE_TYPE
11074                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
11075                 , ppr.PROJFUNC_COST_RATE_DATE
11076                 , ppr.PROJ_COST_RATE_TYPE
11077                 , ppr.PROJ_COST_EXCHANGE_RATE
11078                 , ppr.PROJ_COST_RATE_DATE
11079                 , ppr.TXN_CURRENCY_CODE
11080                 , ppr.PROG_PA_PERIOD_NAME
11081                 , ppr.PROG_GL_PERIOD_NAME
11082                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
11083                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11084                                          p_structure_type,p_working_wp_prog_flag) BAC_value
11085                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
11086                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
11087                                          p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
11088                 , null earned_value
11089 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
11090 		, ppr.progress_rollup_id
11091 		, ppr.record_version_number
11092 	--	, pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
11093 		, ppr.object_version_id -- Bug 4651304
11094                 , ppr.progress_status_code
11095                 , ppr.incremental_work_quantity
11096                 , ppr.cumulative_work_quantity
11097 		-- 4533112 : Added decode to select N and Y only
11098                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
11099                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
11100                 , ppr.percent_complete_id
11101                 , ppr.TASK_WT_BASIS_CODE
11102                 , ppr.structure_version_id
11103                 ,'N' create_required
11104                 ,'N' update_required
11105 		, ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11106           FROM
11107                   pa_object_relationships       pobj,
11108                   pa_proj_element_versions      ppev1,
11109                   pa_proj_element_versions      ppev2,
11110                   pa_progress_rollup ppr,
11111                   pa_proj_elements      ppe,
11112                   pa_project_statuses pps1,
11113                   pa_project_statuses pps2,
11114                   pa_project_statuses pps3,
11115                   pa_project_statuses pps4,
11116             pa_task_types ttype ,
11117             pa_proj_rollup_temp temp
11118         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11119           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11120               temp.object_id = pobj.object_id_from1
11121           AND temp.process_number = l_process_number_temp
11122           AND pobj.object_id_from1 = ppev1.element_version_id
11123           AND pobj.object_id_to1 = ppev2.element_version_id
11124           AND pobj.relationship_type = 'S'
11125           AND ppr.project_id = ppev2.project_id
11126           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
11127                                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
11128           AND ppr.current_flag <> 'W'
11129           AND ppr.object_id     = ppev2.proj_element_id
11130           AND ppr.project_id = ppev2.project_id
11131           AND ppr.object_type = 'PA_TASKS'
11132           AND ppe.proj_element_id = ppev2.proj_element_id
11133           AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11134           AND ppr.progress_status_code = pps2.project_status_code(+)
11135           AND ppr.base_progress_status_code = pps3.project_status_code(+)
11136           AND ppe.status_code = pps4.project_status_code(+)
11137           AND ppe.project_id = ppev2.project_id
11138           AND ppe.object_type = ppev2.object_type
11139           AND ppev2.object_type = 'PA_TASKS'
11140           AND ppe.object_type = 'PA_TASKS'
11141           AND ppe.link_task_flag <> 'Y' -- 4392189
11142           AND pobj.object_type_to = 'PA_TASKS'
11143           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
11144           AND ppe.type_id = ttype.task_type_id
11145           AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11146           AND ppr.structure_type = p_structure_type
11147 	  AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
11148 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
11149 UNION ALL
11150           SELECT to_number(null)        object_id_from1
11151                 , ppev.object_type parent_object_type
11152                 , element_version_id object_id_to1
11153                 , ppev.object_type object_type
11154                 , ppev.wbs_level wbs_level
11155                 , to_number( null )     weighting_percentage
11156                 , to_number(null) rollup_completed_percentage
11157                 , to_number(null) override_percent_complete
11158 		, to_date(null) as_of_date
11159                 , to_date(null) actual_start_date
11160                 , to_date(null) actual_finish_date
11161                 , to_date(null) estimated_start_date
11162                 , to_date(null) estimated_finish_date
11163                 , to_number(null) rollup_weight1 ---rollup progress status code
11164                 , to_number(null) override_weight2      ---override progress    status code
11165                 , to_number(null) base_weight3     --base       prog    status
11166                 , to_number( null )     task_weight4        --task status
11167                 , to_char(null) status_code
11168                 , ppev.proj_element_id object_id
11169                 , ppev.proj_element_id
11170 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
11171                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
11172                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
11173                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
11174 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
11175 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
11176 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
11177                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
11178                 , to_number( null )     PPL_ETC_COST_TC
11179                 , to_number( null )     PPL_ETC_COST_PC
11180                 , to_number( null )     PPL_ETC_COST_FC
11181                 , to_number( null )     PPL_ETC_RAWCOST_TC
11182                 , to_number( null )     PPL_ETC_RAWCOST_PC
11183                 , to_number( null )     PPL_ETC_RAWCOST_FC
11184 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
11185                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
11186                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
11187                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
11188 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
11189 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
11190 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
11191                 , to_number( null )     EQPMT_ETC_EFFORT
11192                 , to_number( null )     EQPMT_ETC_COST_TC
11193                 , to_number( null )     EQPMT_ETC_COST_PC
11194                 , to_number( null )     EQPMT_ETC_COST_FC
11195                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
11196                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
11197                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
11198 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
11199                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
11200                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
11201                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
11202 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
11203 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
11204 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
11205 		, to_number(  null    ) OTH_ETC_QUANTITY
11206                 , to_number( null )     OTH_ETC_COST_TC
11207                 , to_number( null )     OTH_ETC_COST_PC
11208                 , to_number( null )     OTH_ETC_COST_FC
11209                 , to_number( null )     OTH_ETC_RAWCOST_TC
11210                 , to_number( null )     OTH_ETC_RAWCOST_PC
11211                 , to_number( null )     OTH_ETC_RAWCOST_FC
11212                 , to_char(null) CURRENT_FLAG
11213                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
11214                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
11215                 , to_date(null) PROJFUNC_COST_RATE_DATE
11216                 , to_char(null) PROJ_COST_RATE_TYPE
11217                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
11218                 , to_date(null) PROJ_COST_RATE_DATE
11219                 , to_char(null) TXN_CURRENCY_CODE
11220                 , to_char(null) PROG_PA_PERIOD_NAME
11221                 , to_char(null) PROG_GL_PERIOD_NAME
11222                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
11223                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
11224                    BAC_value_self -- bug 4493105
11225                 , null earned_value
11226 		, to_char(null) task_derivation_method
11227 		, to_number(null)     progress_rollup_id
11228 		, to_number(null)     record_version_number
11229                 , element_version_id object_version_id
11230                 , to_char(null) progress_status_code
11231                 , to_number(null) incremental_work_quantity
11232                 , to_number(null) cumulative_work_quantity
11233 		-- 4533112 : Added N only
11234                 , 'N' base_progress_status_code
11235                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
11236                 , to_number(null) percent_complete_id
11237                 , to_char(null) TASK_WT_BASIS_CODE
11238                 , to_number(null) structure_version_id
11239                 ,'N'    create_required
11240                 ,'N'    update_required
11241 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11242           FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
11243           WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11244             --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11245             element_version_id  = temp.object_id
11246                 AND temp.process_number = l_process_number_temp
11247          AND    ppev.object_type =      'PA_STRUCTURES'
11248          AND    pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
11249                         ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
11250                         IS      NULL
11251 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
11252         UNION
11253         --      select tasks
11254         SELECT pobj.object_id_from1
11255                 , ppev1.object_type     parent_object_type
11256                 , pobj.object_id_to1
11257                 , ppev2.object_type     object_type
11258                 , ppev2.wbs_level wbs_level
11259                 , pobj.weighting_percentage
11260                 , to_number(null) rollup_completed_percentage
11261                 , to_number(null) override_percent_complete
11262 		, to_date(null) as_of_date
11263                 , to_date(null) actual_start_date
11264                 , to_date(null) actual_finish_date
11265                 , to_date(null) estimated_start_date
11266                 , to_date(null) estimated_finish_date
11267                 , to_number(null) rollup_weight1 ---rollup progress status code
11268                 , to_number(null) override_weight2      ---override progress    status code
11269                 , to_number(null) base_weight3     --base       prog    status
11270                 , to_number( null )     task_weight4        --task status
11271                 , to_char(null) status_code
11272                 , ppev2.proj_element_id object_id
11273                 , ppev2.proj_element_id
11274 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
11275                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
11276                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
11277                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
11278 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
11279 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
11280 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
11281                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
11282                 , to_number( null )     PPL_ETC_COST_TC
11283                 , to_number( null )     PPL_ETC_COST_PC
11284                 , to_number( null )     PPL_ETC_COST_FC
11285                 , to_number( null )     PPL_ETC_RAWCOST_TC
11286                 , to_number( null )     PPL_ETC_RAWCOST_PC
11287                 , to_number( null )     PPL_ETC_RAWCOST_FC
11288 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
11289                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
11290                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
11291                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
11292 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
11293 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
11294 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
11295                 , to_number( null )     EQPMT_ETC_EFFORT
11296                 , to_number( null )     EQPMT_ETC_COST_TC
11297                 , to_number( null )     EQPMT_ETC_COST_PC
11298                 , to_number( null )     EQPMT_ETC_COST_FC
11299                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
11300                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
11301                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
11302 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
11303                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
11304                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
11305                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
11306 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
11307 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
11308 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
11309 		, to_number(  null    ) OTH_ETC_QUANTITY
11310                 , to_number( null )     OTH_ETC_COST_TC
11311                 , to_number( null )     OTH_ETC_COST_PC
11312                 , to_number( null )     OTH_ETC_COST_FC
11313                 , to_number( null )     OTH_ETC_RAWCOST_TC
11314                 , to_number( null )     OTH_ETC_RAWCOST_PC
11315                 , to_number( null )     OTH_ETC_RAWCOST_FC
11316                 , to_char(null) CURRENT_FLAG
11317                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
11318                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
11319                 , to_date(null) PROJFUNC_COST_RATE_DATE
11320                 , to_char(null) PROJ_COST_RATE_TYPE
11321                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
11322                 , to_date(null) PROJ_COST_RATE_DATE
11323                 , to_char(null) TXN_CURRENCY_CODE
11324                 , to_char(null) PROG_PA_PERIOD_NAME
11325                 , to_char(null) PROG_GL_PERIOD_NAME
11326                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
11327                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
11328                                     p_structure_type,p_working_wp_prog_flag) BAC_value
11329                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
11330                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
11331                                     p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
11332                 , null earned_value
11333 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
11334 		, to_number(null) progress_rollup_id
11335 		, to_number(null) record_version_number
11336                 , pobj.object_id_to1 object_version_id
11337                 , to_char(null) progress_status_code
11338                 , to_number(null) incremental_work_quantity
11339                 , to_number(null) cumulative_work_quantity
11340 		-- 4533112 : Added N only
11341                 , 'N' base_progress_status_code
11342                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
11343                 , to_number(null) percent_complete_id
11344                 , to_char(null) TASK_WT_BASIS_CODE
11345                 , to_number(null) structure_version_id
11346                 ,'N' create_required
11347                 ,'N' update_required
11348 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
11349           FROM
11350                   pa_object_relationships       pobj,
11351                   pa_proj_element_versions      ppev1,
11352                   pa_proj_element_versions      ppev2,
11353                   pa_proj_elements      ppe,
11354                   pa_project_statuses pps4,
11355             pa_task_types ttype ,
11356             pa_proj_rollup_temp temp
11357         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
11358           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
11359           pobj.object_id_from1  = temp.object_id
11360           AND temp.process_number = l_process_number_temp
11361           AND pobj.object_id_from1 = ppev1.element_version_id
11362           AND pobj.object_id_to1 = ppev2.element_version_id
11363           AND pobj.relationship_type = 'S'
11364           AND ppe.proj_element_id = ppev2.proj_element_id
11365           AND ppe.status_code = pps4.project_status_code(+)
11366           AND ppe.project_id = ppev2.project_id
11367           AND ppe.object_type = ppev2.object_type
11368           AND ppev2.object_type = 'PA_TASKS'
11369           AND ppe.object_type = 'PA_TASKS'
11370           AND ppe.link_task_flag <> 'Y' -- 4392189
11371           AND pobj.object_type_to = 'PA_TASKS'
11372           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
11373           AND ppe.type_id = ttype.task_type_id
11374           AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
11375                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id,     ppev2.proj_element_id/*Bug      3764224 */)
11376                   IS NULL
11377       AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
11378 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
11379       ;
11380 
11381    -- FPM       Dev CR 6 : Added Union ALL
11382 
11383    l_asgn_task_version_id_tab                    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
11384    l_asgn_rate_based_flag_tab                    SYSTEM.PA_VARCHAR2_1_TBL_TYPE    :=    SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
11385    l_asgn_resource_class_code_tab                SYSTEM.PA_VARCHAR2_30_TBL_TYPE :=      SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
11386    l_asgn_res_assignment_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
11387    l_asgn_planned_quantity_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
11388    l_asgn_plan_bur_cost_pc_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
11389    l_asgn_res_list_member_id_tab                SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
11390 
11391    CURSOR       cur_assgn_rec_bulk(     c_task_ver_id NUMBER, c_task_id NUMBER )        IS
11392    SELECT       a.wbs_element_version_id
11393    ,    a.rate_based_flag
11394    ,    a.resource_class_code
11395    ,    a.resource_assignment_id
11396    ,    a.total_plan_quantity planned_quantity
11397    ,    a.total_project_burdened_cost   planned_bur_cost_proj_cur
11398    ,    a.resource_list_member_id
11399    from pa_resource_assignments a
11400    WHERE a.wbs_element_version_id = c_task_ver_id
11401    AND a.project_id     = p_project_id
11402    AND a.task_id = c_task_id
11403 --   AND a.ta_display_flag        = 'Y' --Bug 4323537
11404 ;
11405 
11406 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER)      IS
11407 SELECT ppr.*
11408 FROM    pa_progress_rollup      ppr
11409 WHERE ppr.project_id = p_project_id
11410 AND ppr.object_id =     c_object_id
11411 AND ppr.proj_element_id = c_proj_element_id
11412 AND ppr.object_type     = 'PA_ASSIGNMENTS'
11413 AND ppr.current_flag <> 'W'
11414 AND ppr.structure_type =        p_structure_type
11415 AND ppr.as_of_date <= p_as_of_date
11416 AND ((l_published_structure =   'Y' AND ppr.structure_version_id is null)       OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
11417 AND rownum =1
11418 ORDER BY as_of_date     desc
11419 ;
11420 
11421 l_asgn_progress_rec     cur_get_asgn_progress%ROWTYPE;
11422 l_asgn_act_start_date    DATE;
11423 l_asgn_act_finish_date   DATE;
11424 l_asgn_est_start_date    DATE;
11425 l_asgn_est_finish_date   DATE;
11426 l_asgn_as_of_date       DATE;
11427 l_asgn_ppl_act_eff      NUMBER;
11428 l_asgn_eqp_act_eff      NUMBER;
11429 l_asgn_ppl_act_cost     NUMBER;
11430 l_asgn_eqp_act_cost     NUMBER;
11431 l_asgn_oth_act_cost     NUMBER;
11432 l_asgn_ppl_etc_eff      NUMBER;
11433 l_asgn_eqp_etc_eff      NUMBER;
11434 l_asgn_ppl_etc_cost     NUMBER;
11435 l_asgn_eqp_etc_cost     NUMBER;
11436 l_asgn_oth_etc_cost     NUMBER;
11437 l_asgn_earned_value     NUMBER;
11438 l_asgn_bac_value        NUMBER;
11439 
11440 -- FPM Dev CR 5 : Reverted back the outer       join
11441 -- FPM Dev CR 4 : Removed       Outer   Join    from    rollup table.   No need to select       deliverables which do   not have rollup records
11442    --This       cursor selects  the deliverables of     a given task.
11443    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER,    c_task_ver_id NUMBER, c_project_id      NUMBER)
11444    IS
11445         SELECT obj.object_type_from
11446         , 'PA_TASKS' parent_object_type
11447         ,       obj.object_id_to2 object_id
11448         ,       obj.object_id_to1
11449         ,       obj.object_id_from1
11450         , 'PA_DELIVERABLES'     object_type
11451         , ppr.actual_finish_date
11452         , ppr.as_of_date
11453         , ppr.completed_percentage
11454         , ppr.STRUCTURE_TYPE
11455         , ppr.PROJ_ELEMENT_ID
11456         , ppr.STRUCTURE_VERSION_ID
11457         , ppr.TASK_WT_BASIS_CODE
11458         , elem.progress_weight weighting_percentage
11459         , ppr.base_percent_complete
11460         , pps2.project_status_weight override_weight    ---override progress status code
11461         , pps3.project_status_weight base_weight          --base prog status
11462     FROM pa_proj_elements elem
11463     , pa_object_relationships   obj
11464     , pa_progress_rollup        ppr
11465     , pa_project_statuses pps2
11466     , pa_project_statuses pps3
11467         WHERE  obj.object_id_from2= c_task_proj_elem_id
11468         AND obj.object_type_from        =       'PA_TASKS'
11469         AND obj.object_type_to =        'PA_DELIVERABLES'
11470         AND obj.relationship_type = 'A'
11471         AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
11472         AND elem.proj_element_id        =       obj.object_id_to2
11473         AND elem.object_type = 'PA_DELIVERABLES'
11474         and elem.project_id     = p_project_id
11475 --        AND obj.object_id_to1 = ppr.object_version_id(+)
11476         AND ppr.object_type(+) =        'PA_DELIVERABLES'
11477         AND ppr.project_id(+) = c_project_id
11478         AND ppr.object_id(+) = obj.object_id_to2
11479         AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
11480                                   obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug     3764224 */) --  FPM Dev CR 3
11481         AND ppr.structure_type(+) = p_structure_type
11482         AND ppr.structure_version_id is null -- deliverable progress for        working version is not allowed
11483         AND ppr.base_progress_status_code = pps3.project_status_code(+)
11484         AND ppr.progress_status_code = pps2.project_status_code(+)
11485         AND ppr.current_flag(+) <>      'W'
11486         ;
11487 
11488     CURSOR c_mass_rollup_tasks IS
11489     select distinct object_id_from1
11490     from    pa_object_relationships
11491     start with  object_id_to1 IN (select object_id from pa_proj_rollup_temp  where process_number = l_process_number_temp)
11492     and relationship_type = 'S'
11493     connect by prior object_id_from1 = object_id_to1
11494     and relationship_type = 'S'
11495     MINUS
11496     select object_id object_id_from1 from pa_proj_rollup_temp  where process_number = l_process_number_temp
11497     ;
11498 
11499     CURSOR c_mass_rollup_tasks_temp IS
11500     select object_id
11501     from pa_proj_rollup_temp where process_number = l_process_number_temp
11502         ;
11503 
11504    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
11505    IS
11506    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
11507    FROM pa_proj_elem_ver_structure str
11508    ,    pa_project_statuses     status
11509    where str.element_version_id = c_structure_version_id
11510    AND str.project_id = c_project_id
11511    AND str.status_code =        status.project_status_code;
11512 
11513    CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
11514    IS
11515    SELECT element_version_id
11516    FROM pa_proj_element_versions
11517    where project_id = c_project_id
11518    and object_type = 'PA_TASKS'
11519    AND parent_structure_version_id      = c_structure_version_id
11520    AND wbs_level = (Select max(wbs_level)
11521                   From pa_proj_element_versions
11522                   where project_id = c_project_id
11523                   and object_type =     'PA_TASKS'
11524                   AND parent_structure_version_id = c_structure_version_id);
11525 
11526 l_track_wp_cost_flag            VARCHAR2(1) :=  'Y';    --bug 3830434
11527 l_assignment_exists      VARCHAR2(1) ;  -- Bug 3830673
11528 l_digit_number           number; --BUG  3950574,        rtarway
11529 
11530 --bug 4045979,  start
11531 l_base_struct_ver_id NUMBER;
11532 
11533 CURSOR check_task_baselined(c_structure_ver_id NUMBER,  c_task_version_id NUMBER)
11534 IS
11535   select 'Y' from pa_proj_element_versions ppev1
11536   where ppev1.parent_structure_version_id = c_structure_ver_id
11537   and ppev1.proj_element_id =   (select proj_element_id from pa_proj_element_versions ppev2
11538                                   where ppev2.element_version_id =      c_task_version_id
11539                                   and ppev2.project_id =        p_project_id);
11540 
11541 l_task_baselined VARCHAR2(1) := 'N';
11542 l_parent_task_baselined VARCHAR2(1) :=  'N';
11543 
11544 --bug 4045979,  end
11545 
11546 l_tsk_progress_exists VARCHAR2(1);
11547 l_mapping_tasks_to_rollup_tab   PA_PLSQL_DATATYPES.NumTabTyp;
11548 
11549 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
11550 CURSOR cur_tree_rollup_dates
11551 IS
11552 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
11553 from pa_object_relationships obj
11554 , pa_proj_element_versions ver
11555 , pa_progress_rollup ppr
11556 , pa_proj_rollup_temp rollup
11557 , pa_proj_element_versions ver2
11558 where rollup.object_id = obj.object_id_to1
11559 AND rollup.process_number = l_process_number_temp
11560 AND obj.relationship_type = 'S'
11561 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
11562 AND obj.object_type_to = 'PA_TASKS'
11563 AND obj.object_id_from1= ver.element_version_id
11564 AND ver.project_id = p_project_id
11565 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
11566 AND ver.project_id = ppr.project_id
11567 AND ppr.as_of_date > p_as_of_date
11568 AND ppr.object_id = ver.proj_element_id
11569 AND ppr.current_flag = 'Y'
11570 AND ppr.proj_element_id = ver.proj_element_id
11571 AND ppr.structure_type = p_structure_type
11572 AND ppr.structure_version_id is null
11573 AND obj.object_id_to1 = ver2.element_version_id
11574 AND ver2.project_id = p_project_id
11575 AND ver2.object_type = 'PA_TASKS'
11576 AND rollup.object_type = 'PA_TASKS' --  cklee bug: 6610612
11577 order by ppr.as_of_date;
11578 
11579 
11580 -- Bug 4392189 Begin
11581 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
11582 SELECT
11583   ppv2.project_id                     sub_project_id
11584  ,ppv2.element_version_id             sub_structure_ver_id
11585  ,ppv2.proj_element_id                sub_proj_element_id
11586 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
11587                                     'WORKPLAN','N')    sub_project_bac_value
11588 FROM
11589      pa_proj_element_versions ppv2
11590     ,pa_proj_elem_ver_structure ppevs2
11591     ,pa_object_relationships por1
11592     ,pa_object_relationships por2
11593 WHERE
11594   por1.object_id_from1 = c_task_version_id
11595  AND por1.object_id_to1 = por2.object_id_from1
11596  AND por2.object_id_to1 = ppv2.element_version_id
11597  AND ppv2.object_type = 'PA_STRUCTURES'
11598 -- AND por2.relationship_type in ( 'LW', 'LF' )
11599  AND por2.relationship_type = 'LW'
11600  AND ppevs2.element_version_id = ppv2.element_version_id
11601  AND ppevs2.project_id = ppv2.project_id
11602  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
11603  AND ppevs2.latest_eff_published_flag = 'Y';
11604 
11605 l_sub_project_id    NUMBER;
11606 l_sub_structure_ver_id  NUMBER;
11607 l_sub_proj_element_id   NUMBER;
11608 l_sub_project_bac_value NUMBER;
11609 
11610 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
11611 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
11612 SELECT
11613 ppr.progress_rollup_id
11614 ,ppr.actual_start_date
11615 ,ppr.actual_finish_date
11616 ,ppr.estimated_start_date
11617 ,ppr.estimated_finish_date
11618 ,pps1.project_status_weight rollup_weight1
11619 ,pps2.project_status_weight override_weight2
11620 ,pps3.project_status_weight base_weight3
11621 ,pps4.project_status_weight task_weight4
11622 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
11623 --                                    ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
11624 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,0)
11625         , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +  nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) +  nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
11626 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
11627 FROM
11628 pa_progress_rollup ppr
11629 ,pa_project_statuses pps1
11630 ,pa_project_statuses pps2
11631 ,pa_project_statuses pps3
11632 ,pa_project_statuses pps4
11633 ,pa_proj_elements ppe
11634 WHERE
11635 ppr.project_id = c_sub_project_id
11636 AND ppe.project_id = c_sub_project_id
11637 AND ppe.object_type = 'PA_STRUCTURES'
11638 AND ppe.proj_element_id = c_sub_proj_element_id
11639 AND ppr.object_id = c_sub_proj_element_id
11640 AND ppr.object_type = 'PA_STRUCTURES'
11641 AND ppr.structure_version_id is null
11642 AND ppr.structure_type = 'WORKPLAN'
11643 AND ppr.current_flag IN ('Y', 'N')
11644 AND ppr.as_of_date <= c_as_of_date
11645 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
11646 AND ppr.progress_status_code =  pps2.project_status_code(+)
11647 AND ppr.base_progress_status_code = pps3.project_status_code(+)
11648 AND ppe.status_code = pps4.project_status_code(+)
11649 order by as_of_date desc
11650  ;
11651 
11652 
11653 l_subproj_prog_rollup_id    NUMBER;
11654 l_subproj_act_start_date    DATE;
11655 l_subproj_act_finish_date   DATE;
11656 l_subproj_est_start_date    DATE;
11657 l_subproj_est_finish_date   DATE;
11658 l_subproj_rollup_weight1    NUMBER;
11659 l_subproj_override_weight2  NUMBER;
11660 l_subproj_base_weight3      NUMBER;
11661 l_subproj_task_weight4      NUMBER;
11662 l_subproj_earned_value      NUMBER;
11663 l_subproj_bac_value     NUMBER;
11664 l_subproj_comp_percentage       NUMBER; --Bug 4506009
11665 l_actual_lowest_task        VARCHAR2(1) := 'N';
11666 -- Bug 4392189 End
11667 
11668 l_summary_object_flag       VARCHAR2(1); -- 4370746
11669 l_wp_version_enabled_flag   VARCHAR2(1); -- Bug#12393400
11670 
11671 -- Bug 4506461 Begin
11672 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
11673 SELECT 'Y'
11674 FROM pa_object_relationships
11675 WHERE --relationship_type in ( 'LW', 'LF' )
11676 relationship_type = 'LW'
11677 AND object_id_from1 IN
11678     (SELECT object_id_to1
11679     FROM pa_object_relationships
11680     START WITH  object_id_from1 = c_task_version_id
11681     AND relationship_type = 'S'
11682     CONNECT BY PRIOR object_id_to1 = object_id_from1
11683     AND relationship_type = 'S')
11684     ;
11685 l_subproject_found VARCHAR2(1):='N';
11686 l_rederive_base_pc VARCHAR2(1):='N';
11687 -- Bug 4506461 End
11688 
11689 l_last_as_of_date   DATE;--4573257
11690 l_subproj_task_version_id NUMBER;--4582956
11691 l_org_id NUMBER; -- 4746476
11692 
11693 CURSOR c1_rolldates(c_task_ver_id NUMBER, c_task_id NUMBER)        IS
11694       select scheduled_start_date, scheduled_finish_date from pa_proj_elem_ver_schedule a
11695 	  where a.project_id     = p_project_id
11696       AND a.proj_element_id = c_task_id and a.element_version_id = c_task_ver_id;
11697 
11698 l_tsk_sch_start_date        pa_proj_elem_ver_schedule.scheduled_start_date%TYPE;
11699 l_tsk_sch_finish_date       pa_proj_elem_ver_schedule.scheduled_finish_date%TYPE;
11700 l_cnt number := 0;
11701 
11702 cursor c_progress_parent(c_project_id number)
11703 IS
11704      SELECT object_id_from1
11705          FROM pa_object_relationships
11706          WHERE relationship_type = 'S'
11707          START WITH object_id_to1 in (select p.element_version_id
11708 		 from PA_PROJ_ELEMENT_VERSIONS p where p.project_id =  c_project_id and defer_code in ( 'P','S'))
11709          AND relationship_type = 'S'
11710          CONNECT BY PRIOR object_id_from1 = object_id_to1
11711          AND relationship_type = 'S';
11712 
11713 type NumberArray
11714 IS
11715   TABLE OF NUMBER INDEX BY binary_integer;
11716 
11717 l_prog_obj      NumberArray;
11718 l_tmp_prog      NumberArray;
11719 BEGIN
11720 	-- Rollup       Cases
11721 	-- 1. Workplan  Publsihed       Version Rollup.
11722 	-- 2. Workplan  Working Version Rollup.
11723 	-- 3. Financial Structure       Rollup.
11724 	-- 4. Entire WBS using structure version id.
11725 	-- 5. Program Rollup
11726 
11727 	g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
11728 
11729 	IF g1_debug_mode  = 'Y' THEN
11730 			pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PVT');
11731 	END IF;
11732 
11733 	IF g1_debug_mode  = 'Y' THEN
11734 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
11735 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=>     3);
11736 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
11737 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=>     3);
11738 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
11739 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
11740 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
11741 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
11742 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=>     3);
11743 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
11744 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
11745 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
11746 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
11747 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id,       x_Log_Level=>   3);
11748 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
11749 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
11750 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
11751 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id,     x_Log_Level=> 3);
11752 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
11753 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
11754 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
11755 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
11756 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
11757 	END IF;
11758 
11759 	l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
11760 
11761 	-- 20 May : Amit : If Structure_version_id is null, then no rocessing shd  be done
11762 	-- Bug 3856161 : Added     p_as_of_date check also
11763 	IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
11764 		return;
11765 	END IF;
11766 
11767 	--bug 4045979
11768 	l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
11769 
11770 	--BUG 4355204, rtarway
11771 	--IF (p_commit =  FND_API.G_TRUE) THEN
11772 		savepoint ROLLUP_PVT2;
11773 	--END IF;
11774 
11775 	IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
11776 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11777 	END IF;
11778 
11779 	IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE))     THEN
11780 			FND_MSG_PUB.initialize;
11781 	END IF;
11782 
11783 	PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
11784 			p_calling_module        => 'AMG'
11785 			,p_project_id           => p_project_id
11786 			,p_structure_version_id => p_structure_version_id
11787 			,p_baselined_str_ver_id => pa_project_structure_utils.get_baseline_struct_ver(p_project_id)
11788 			,p_program_rollup_flag  => 'Y'
11789 			,p_calling_context      => 'SUMMARIZE'
11790 			,p_as_of_date           => p_as_of_date -- Fix for Bug # 4251406.
11791 			,x_return_status        => l_return_status
11792 			,x_msg_count            => l_msg_count
11793 			,x_msg_data             => l_msg_data
11794 	);
11795 
11796 	l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
11797 	l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --bug 3830434
11798     -- 4746476 : added org_id in below select
11799     SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
11800 
11801 	IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
11802 			l_split_workplan := 'Y';
11803 	ELSE
11804 			l_split_workplan := 'N';
11805 	END IF;
11806 
11807 	-- Bug 4938333
11808 	-- In case of financial struture, no need to check for published version
11809 	-- populate structure_version_id always null.
11810 	IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
11811 		-- This is to find out  whether passed  struture version id     is published or not.
11812 		-- bcoz progress for workplna workplan version also exists
11813 		OPEN  cur_check_published_version(p_structure_version_id, p_project_id);
11814 		FETCH cur_check_published_version INTO l_published_structure;
11815 		CLOSE cur_check_published_version;
11816 
11817 		IF l_published_structure = 'Y' THEN
11818 			l_structure_version_id := null;
11819 		ELSE
11820 			l_structure_version_id := p_structure_version_id;
11821 		END IF;
11822 	ELSE -- Bug 4938333
11823 		l_published_structure := 'Y'; -- Bug 4938333
11824         l_structure_version_id := null; -- Bug 4938333
11825 	END IF;
11826 
11827 	l_task_version_id := p_task_version_id;
11828 
11829 	IF p_structure_type = 'WORKPLAN' THEN
11830 		l_rollup_method := p_wp_rollup_method;
11831 	ELSE
11832 		l_rollup_method := p_fin_rollup_method;
11833 	END IF;
11834 
11835 	IF g1_debug_mode  =     'Y'     THEN
11836 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled,       x_Log_Level=>   3);
11837 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
11838 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
11839 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_task_version_id='||l_task_version_id,       x_Log_Level=>   3);
11840 	END IF;
11841 
11842 	--l_lowest_task := p_lowest_task;
11843 	-- Loop thru all the parents of the passed task
11844 
11845 	SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
11846 	INTO  l_process_number_temp FROM dual;
11847 
11848     IF p_rollup_entire_wbs = 'N' THEN
11849 		INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11850 		SELECT distinct l_process_number_temp, object_id_from1, 'PA_TASKS', 1
11851 		FROM pa_object_relationships
11852 		WHERE relationship_type = 'S'
11853 		START WITH object_id_to1 = l_task_version_id
11854 		AND relationship_type = 'S'
11855 		CONNECT BY PRIOR object_id_from1 = object_id_to1
11856 		AND relationship_type = 'S'
11857 		UNION ALL -- 4563049 : Rollup Structure also if passed, so that it can populate ETC from PJI
11858 		SELECT distinct l_process_number_temp, l_task_version_id object_id_from1, 'PA_TASKS', 1
11859 		FROM dual
11860 		WHERE l_task_version_id = p_structure_version_id;
11861     ELSE
11862         IF g1_debug_mode = 'Y' THEN
11863             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
11864             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
11865             FOR i in 1..p_task_version_id_tbl.count LOOP
11866                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
11867             END LOOP;
11868         END IF;
11869 
11870         IF p_task_version_id_tbl.count > 0 THEN
11871 			FORALL i in 1..p_task_version_id_tbl.count
11872 				INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11873 				VALUES(l_process_number_temp,p_task_version_id_tbl(i),  'PA_TASKS',1 );
11874 
11875 			l_mass_rollup_prog_rec_tab.delete;
11876 			OPEN  c_mass_rollup_tasks;
11877 			FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
11878 			CLOSE c_mass_rollup_tasks;
11879 
11880             FORALL i IN 1..l_mass_rollup_prog_rec_tab.COUNT
11881               INSERT INTO PA_PROJ_ROLLUP_TEMP(
11882                 PROCESS_NUMBER,
11883                 OBJECT_TYPE,
11884                 OBJECT_ID,
11885                 wbs_level)
11886               VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_rec_tab(i), 1);
11887 
11888             l_mass_rollup_prog_rec_tab.delete;
11889         ELSE
11890 			INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
11891 			SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
11892 			FROM pa_proj_element_versions
11893 			WHERE project_id = p_project_id
11894 			AND parent_structure_version_id = p_structure_version_id
11895 			AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
11896 			AND object_type = 'PA_TASKS'
11897 			UNION
11898 			SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
11899 			FROM dual;
11900 
11901 
11902 			l_tmp_prog.delete;
11903 			OPEN  c_progress_parent(p_project_id);
11904 		    FETCH c_progress_parent BULK COLLECT INTO l_tmp_prog;
11905 		    CLOSE c_progress_parent;
11906 
11907 			l_prog_obj.delete;
11908 			FOR  i in 1..l_tmp_prog.count loop
11909 				l_prog_obj(l_tmp_prog(i) ) := l_tmp_prog(i);
11910             end loop;
11911 
11912 
11913         END IF;
11914     END IF;
11915 
11916     IF g1_debug_mode = 'Y' THEN
11917         l_mass_rollup_prog_rec_tab.delete;
11918 		OPEN  c_mass_rollup_tasks_temp;
11919 		FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
11920 		CLOSE c_mass_rollup_tasks_temp;
11921 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
11922         FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
11923             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
11924         END LOOP;
11925         l_mass_rollup_prog_rec_tab.delete;
11926     END IF;
11927 
11928     OPEN cur_tasks(1);
11929     FETCH cur_tasks BULK COLLECT INTO
11930     l_tsk_object_id_from1_tab
11931     ,l_tsk_parent_object_type_tab
11932     ,l_tsk_object_id_to1_tab
11933     ,l_tsk_object_type_tab
11934     ,l_tsk_wbs_level_tab
11935     ,l_tsk_weighting_percent_tab
11936     ,l_tsk_roll_comp_percent_tab
11937     ,l_tsk_over_percent_comp_tab
11938     ,l_tsk_as_of_date_tab
11939     ,l_tsk_actual_start_date_tab
11940     ,l_tsk_actual_finish_date_tab
11941     ,l_tsk_est_start_date_tab
11942     ,l_tsk_est_finish_date_tab
11943     ,l_tsk_rollup_weight1_tab
11944     ,l_tsk_override_weight2_tab
11945     ,l_tsk_base_weight3_tab
11946     ,l_tsk_task_weight4_tab
11947     ,l_tsk_status_code_tab
11948     ,l_tsk_object_id_tab
11949     ,l_tsk_proj_element_id_tab
11950     ,l_tsk_PPL_ACT_EFF_tab
11951     ,l_tsk_PPL_ACT_COST_TC_tab
11952     ,l_tsk_PPL_ACT_COST_PC_tab
11953     ,l_tsk_PPL_ACT_COST_FC_tab
11954     ,l_tsk_PPL_ACT_RAWCOST_TC_tab
11955     ,l_tsk_PPL_ACT_RAWCOST_PC_tab
11956     ,l_tsk_PPL_ACT_RAWCOST_FC_tab
11957     ,l_tsk_EST_REM_EFFORT_tab
11958     ,l_tsk_PPL_ETC_COST_TC_tab
11959     ,l_tsk_PPL_ETC_COST_PC_tab
11960     ,l_tsk_PPL_ETC_COST_FC_tab
11961     ,l_tsk_PPL_ETC_RAWCOST_TC_tab
11962     ,l_tsk_PPL_ETC_RAWCOST_PC_tab
11963     ,l_tsk_PPL_ETC_RAWCOST_FC_tab
11964     ,l_tsk_EQPMT_ACT_EFFORT_tab
11965     ,l_tsk_EQPMT_ACT_COST_TC_tab
11966     ,l_tsk_EQPMT_ACT_COST_PC_tab
11967     ,l_tsk_EQPMT_ACT_COST_FC_tab
11968     ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
11969     ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
11970     ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
11971     ,l_tsk_EQPMT_ETC_EFFORT_tab
11972     ,l_tsk_EQPMT_ETC_COST_TC_tab
11973     ,l_tsk_EQPMT_ETC_COST_PC_tab
11974     ,l_tsk_EQPMT_ETC_COST_FC_tab
11975     ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
11976     ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
11977     ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
11978     ,l_tsk_OTH_QUANTITY_tab
11979     ,l_tsk_OTH_ACT_COST_TC_tab
11980     ,l_tsk_OTH_ACT_COST_PC_tab
11981     ,l_tsk_OTH_ACT_COST_FC_tab
11982     ,l_tsk_OTH_ACT_RAWCOST_TC_tab
11983     ,l_tsk_OTH_ACT_RAWCOST_PC_tab
11984     ,l_tsk_OTH_ACT_RAWCOST_FC_tab
11985     ,l_tsk_OTH_ETC_QUANTITY_tab
11986     ,l_tsk_OTH_ETC_COST_TC_tab
11987     ,l_tsk_OTH_ETC_COST_PC_tab
11988     ,l_tsk_OTH_ETC_COST_FC_tab
11989     ,l_tsk_OTH_ETC_RAWCOST_TC_tab
11990     ,l_tsk_OTH_ETC_RAWCOST_PC_tab
11991     ,l_tsk_OTH_ETC_RAWCOST_FC_tab
11992     ,l_tsk_CURRENT_FLAG_tab
11993     ,l_tsk_PF_COST_RATE_TYPE_tab
11994     ,l_tsk_PF_COST_EXC_RATE_tab
11995     ,l_tsk_PF_COST_RATE_DATE_tab
11996     ,l_tsk_P_COST_RATE_TYPE_tab
11997     ,l_tsk_P_COST_EXC_RATE_tab
11998     ,l_tsk_P_COST_RATE_DATE_tab
11999     ,l_tsk_TXN_CURRENCY_CODE_tab
12000     ,l_tsk_PROG_PA_PERIOD_NAME_tab
12001     ,l_tsk_PROG_GL_PERIOD_NAME_tab
12002     ,l_tsk_bac_value_tab
12003     ,l_tsk_bac_self_value_tab -- Bug 4493105
12004     ,l_tsk_earned_value_tab
12005     ,l_tsk_deriv_method_tab
12006     ,l_tsk_progress_rollup_id_tab
12007     ,l_tsk_rollup_rec_ver_num_tab
12008     ,l_tsk_object_version_id_tab
12009     ,l_tsk_progress_stat_code_tab
12010     ,l_tsk_incremental_wq_tab
12011     ,l_tsk_cumulative_wq_tab
12012     ,l_tsk_base_prog_stat_code_tab
12013     ,l_tsk_eff_roll_prg_st_code_tab
12014     ,l_tsk_percent_complete_id_tab
12015     ,l_tsk_task_wt_basis_code_tab
12016     ,l_tsk_structure_version_id_tab
12017     ,l_tsk_create_required
12018     ,l_tsk_update_required
12019     ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
12020          ;
12021     CLOSE cur_tasks;
12022 
12023 
12024     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
12025 
12026     IF g1_debug_mode = 'Y' THEN
12027         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
12028     END IF;
12029 
12030     FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
12031 		-- Bug 4636100 Issue 2 : Added following if
12032 		-- The intention of this IF is to just pass the structure level record
12033 		-- to scheduling API. Note that in structure case, we just pass one level
12034 		-- records below say task A, and if that below task A has an assignment, it will calculate
12035 		-- wrong % complete because we are not sending A's childs
12036 		IF ((nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
12037 			 OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
12038 			 OR (p_rollup_entire_wbs = 'Y'))
12039 		THEN
12040 				IF g1_debug_mode = 'Y' THEN
12041                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
12042                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
12043                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
12044                 END IF;
12045                 l_tsk_progress_exists := 'N';
12046                 l_parent_count := l_parent_count + 1;
12047                 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12048                 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
12049 
12050                 IF g1_debug_mode = 'Y' THEN
12051 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12052 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
12053                 END IF;
12054 
12055                 -- Bug 4392189 : Program Changes Begin
12056 				IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
12057 					l_sub_project_id := null;
12058 					l_subproj_prog_rollup_id := null;
12059 					l_subproj_act_start_date := null;
12060 					l_subproj_act_finish_date := null;
12061 					l_subproj_est_start_date := null;
12062 					l_subproj_est_finish_date := null;
12063 					l_subproj_rollup_weight1 := null;
12064 					l_subproj_override_weight2 := null;
12065 					l_subproj_base_weight3 := null;
12066 					l_subproj_task_weight4 := null;
12067 					l_subproj_earned_value := null;
12068 					l_subproj_bac_value := null;
12069 
12070 					-- 4587527 : It was not supporting multiple sub projects at link task
12071 					-- So converted it into FOR LOOP
12072 					FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
12073 						--IF l_sub_project_id IS NOT NULL THEN
12074 						IF g1_debug_mode = 'Y' THEN
12075 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
12076 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
12077 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
12078 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
12079 						END IF;
12080 						l_subproject_found := 'Y'; -- Bug 4506461
12081 						l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
12082 						IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
12083 							l_actual_lowest_task := 'Y';
12084 						END IF;
12085 
12086 						l_subproj_prog_rollup_id    := null;
12087 						l_subproj_act_start_date    := null;
12088 						l_subproj_act_finish_date   := null;
12089 						l_subproj_est_start_date    := null;
12090 						l_subproj_est_finish_date   := null;
12091 						l_subproj_rollup_weight1    := null;
12092 						l_subproj_override_weight2  := null;
12093 						l_subproj_base_weight3      := null;
12094 						l_subproj_task_weight4      := null;
12095 						l_subproj_bac_value     := null;
12096 						l_subproj_comp_percentage   := null;
12097 
12098 						OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
12099 						FETCH c_get_sub_project_progress INTO
12100 						  l_subproj_prog_rollup_id
12101 						, l_subproj_act_start_date
12102 						, l_subproj_act_finish_date
12103 						, l_subproj_est_start_date
12104 						, l_subproj_est_finish_date
12105 						, l_subproj_rollup_weight1
12106 						, l_subproj_override_weight2
12107 						, l_subproj_base_weight3
12108 						, l_subproj_task_weight4
12109 						--, l_subproj_earned_value Bug 4506009
12110 						, l_subproj_bac_value
12111 						, l_subproj_comp_percentage -- Bug 4506009
12112 						;
12113 						CLOSE c_get_sub_project_progress;
12114 
12115 						IF g1_debug_mode = 'Y' THEN
12116 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
12117 						END IF;
12118 
12119 						l_index := l_index + 1;
12120 
12121 						l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
12122 						l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
12123 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
12124 						l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_tsk_object_id_to1_tab(k);
12125 						l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
12126 						l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
12127 
12128 						-- 4533112 : Added following check
12129 						IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
12130 							l_rollup_table1(l_index).START_DATE1			:= l_subproj_act_start_date;
12131 							l_rollup_table1(l_index).FINISH_DATE1                   := l_subproj_act_finish_date;
12132 							l_rollup_table1(l_index).START_DATE2                    := l_subproj_est_start_date;
12133 							l_rollup_table1(l_index).FINISH_DATE2                   := l_subproj_est_finish_date;
12134 						END IF;
12135 						l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_subproj_comp_percentage, 0);
12136 						l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
12137 						-- 4582956 End
12138 
12139 						--    Rollup Progress Status Rollup
12140 						l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_subproj_rollup_weight1,0);       --rollup prog status
12141 						l_rollup_table1(l_index).PROGRESS_override1              := l_subproj_override_weight2;    --override prg  status
12142 
12143 						--    Base Progress Status Rollup
12144 						-- 4533112 : Base progress status is not used
12145 						--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2     := nvl( l_subproj_base_weight3, 0 );  --base prog status
12146 						--l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
12147 
12148 						--    Task Status Rollup
12149 						l_rollup_table1(l_index).task_status1                    := nvl( l_subproj_task_weight4, 0 );  -- task status
12150 						l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
12151 						l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
12152 						l_action_allowed                := 'Y';
12153 						l_rollup_table1(l_index).rollup_node1           := l_action_allowed;
12154 						l_rollup_table1(l_index).rollup_node2           := l_action_allowed;
12155 
12156 						IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
12157 							-- This means  Progress exists for the  corresponding task
12158 							l_tsk_progress_exists := 'Y';
12159 						END IF;
12160 						--END IF; -- l_sub_project_id IS NOT NULL THEN
12161 					END LOOP;
12162 				END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
12163                 -- Bug 4392189 : Program Changes End
12164 
12165                 -- Loop thru all task assignments of a passed parent
12166 				IF p_structure_type = 'WORKPLAN'
12167 				THEN
12168 					l_asgn_task_version_id_tab.delete;
12169 					l_asgn_rate_based_flag_tab.delete;
12170 					l_asgn_resource_class_code_tab.delete;
12171 					l_asgn_res_assignment_id_tab.delete;
12172 					l_asgn_planned_quantity_tab.delete;
12173 					l_asgn_plan_bur_cost_pc_tab.delete;
12174 					l_asgn_res_list_member_id_tab.delete;
12175 
12176 					OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
12177 					FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
12178 					, l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
12179 					, l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
12180 					CLOSE cur_assgn_rec_bulk;
12181 
12182 					IF g1_debug_mode = 'Y' THEN
12183 						pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
12184 					END IF;
12185 
12186 					FOR i in 1..l_asgn_task_version_id_tab.count LOOP
12187 						IF g1_debug_mode = 'Y' THEN
12188 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
12189 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
12190 						END IF;
12191 
12192 						l_asgn_progress_rec := null;
12193 						l_asgn_act_start_date := null;
12194 						l_asgn_act_finish_date := null;
12195 						l_asgn_est_start_date := null;
12196 						l_asgn_est_finish_date := null;
12197 						l_asgn_as_of_date := null;
12198 						l_asgn_ppl_act_eff := null;
12199 						l_asgn_eqp_act_eff := null;
12200 						l_asgn_ppl_act_cost := null;
12201 						l_asgn_eqp_act_cost := null;
12202 						l_asgn_oth_act_cost := null;
12203 						l_asgn_ppl_etc_eff := null;
12204 						l_asgn_eqp_etc_eff := null;
12205 						l_asgn_ppl_etc_cost := null;
12206 						l_asgn_eqp_etc_cost := null;
12207 						l_asgn_oth_etc_cost := null;
12208 
12209 						OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
12210 						FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
12211 						CLOSE cur_get_asgn_progress;
12212 
12213 						IF g1_debug_mode  = 'Y' THEN
12214 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
12215 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
12216 						END IF;
12217 
12218 						IF l_asgn_progress_rec.object_id is not null THEN
12219 							l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
12220 							l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
12221 							l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
12222 							l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
12223 							l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
12224 
12225 							l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
12226 							l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
12227 							l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
12228 							l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
12229 							l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
12230 
12231 							l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
12232 							l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
12233 							l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
12234 							l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
12235 							l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
12236 
12237 							 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
12238 								 l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) +  nvl(l_asgn_eqp_act_eff,0);
12239 								 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
12240 									IF l_asgn_ppl_etc_eff IS NULL THEN
12241 										l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12242 									ELSE
12243 										l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
12244 									END IF;
12245 								 ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
12246 									IF l_asgn_eqp_etc_eff IS NULL THEN
12247 										l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12248 									ELSE
12249 										l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
12250 									END IF;
12251 								 ELSE
12252 									l_asgn_bac_value := 0;
12253 								 END IF;
12254 							 ELSE
12255 								 l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
12256 								 IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
12257 									IF l_asgn_ppl_etc_cost IS NULL THEN
12258 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12259 									ELSE
12260 										l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
12261 									END IF;
12262 								 ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
12263 									   IF l_asgn_eqp_etc_cost IS NULL THEN
12264 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12265 									   ELSE
12266 										l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
12267 									   END IF;
12268 								 ELSE
12269 									   IF l_asgn_oth_etc_cost IS NULL THEN
12270 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12271 									   ELSE
12272 										l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
12273 									   END IF;
12274 								 END IF;
12275 							 END IF;
12276 						ELSE
12277 							l_asgn_earned_value := 0;
12278 							IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
12279 								IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
12280 									l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
12281 								ELSE
12282 									l_asgn_bac_value := 0;
12283 								END IF;
12284 							ELSE
12285 								l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
12286 							END IF;
12287 						END IF;
12288 
12289 						l_index := l_index + 1;
12290 
12291 						l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_ASSIGNMENTS';
12292 						l_rollup_table1(l_index).OBJECT_ID                      := l_asgn_res_assignment_id_tab(i);
12293 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
12294 						l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_asgn_task_version_id_tab(i);
12295 						l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning       some    value so that order     by in   scheduling API  works
12296 						l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
12297 
12298 						-- Percent Complete needs to be derived using Earned Value and BAC Value
12299 
12300 						-- Percent Complete at Assignment level does not get calculated
12301 						-- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
12302 
12303 						--Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
12304 						--  and child task actual dates, regardless of the PPC Method.
12305 						-- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
12306 						IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
12307 							 -- Actual Date Rollup : Only Start     Date    gets    rolls up.
12308 							 l_rollup_table1(l_index).START_DATE1                    := l_asgn_act_start_date;
12309 							 l_rollup_table1(l_index).FINISH_DATE1                    := l_asgn_act_finish_date;
12310 
12311 							 -- Estimated Date Rollup  : Only Start Date    gets    rolls   up.
12312 							 l_rollup_table1(l_index).START_DATE2                    := l_asgn_est_start_date;
12313 							 l_rollup_table1(l_index).FINISH_DATE2                    := l_asgn_est_finish_date;
12314 						END IF;
12315 
12316 						-- Progress Status entry is not  there at assignment     level
12317 						-- Assignment Status entry is not there at assignment level
12318 						-- Earned Value and BAC Rollup
12319 						IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
12320 							l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
12321 							l_rollup_table1(l_index).BAC_VALUE1                     := 1;
12322 							-- 4392189 : Program Reporting Changes - Phase 2
12323 							-- Having Set2 columns to get Project level % complete
12324 							l_rollup_table1(l_index).EARNED_VALUE2                  := 0;
12325 							l_rollup_table1(l_index).BAC_VALUE2                     := 1;
12326 						ELSE
12327 							l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_asgn_earned_value, 0 );
12328 							l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_asgn_bac_value, 0 );
12329 							-- 4392189 : Program Reporting Changes - Phase 2
12330 							-- Having Set2 columns to get Project level % complete
12331 							l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( l_asgn_earned_value, 0 );
12332 							l_rollup_table1(l_index).BAC_VALUE2                     := NVL( l_asgn_bac_value, 0 );
12333 						END IF;
12334 
12335 						l_rollup_table1(l_index).DIRTY_FLAG1            :=      'Y';
12336 						l_rollup_table1(l_index).DIRTY_FLAG2            :=      'Y';
12337 						l_action_allowed :=     'Y';
12338 						l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
12339 						l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
12340 
12341 						IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS   NOT NULL THEN
12342 							-- This means  Progress exists for the  corresponding task
12343 							l_tsk_progress_exists := 'Y';
12344 						END IF;
12345 
12346 						--Bug#12393400 - Added - Begin
12347 						-- For resource assignments in working version,
12348 						-- the actual_finish_date should be NULL in case actual effort is not same as planned
12349 
12350 						IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
12351 						AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
12352 						AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
12353 						  -- Update to happen only version is disabled or on a working version when version enabled
12354 						  IF (l_wp_version_enabled_flag = 'N'
12355 							 OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
12356 							UPDATE PA_PROGRESS_ROLLUP
12357 							 SET ACTUAL_FINISH_DATE = NULL
12358 							 WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
12359 						  END IF;
12360 						END IF; -- end check for
12361 						--Bug#12393400 - Added - End
12362 
12363 					END LOOP;       -- Assignments  Loop
12364 				END IF;
12365 
12366                 -- Bug 3957792 : Added check for Cancelled tasks
12367 				IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k)   = 'DELIVERABLE'
12368 				   AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
12369 				THEN
12370 					FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id)   LOOP    -- FPM Change
12371 						IF g1_debug_mode  = 'Y' THEN
12372 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
12373 						END IF;
12374 
12375 						l_index := l_index + 1;
12376 
12377 						l_rollup_table1(l_index).OBJECT_TYPE             := cur_del_rec.object_type;
12378 						l_rollup_table1(l_index).OBJECT_ID               := cur_del_rec.object_id_to1;--Object Version Id       of Deliverable
12379 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE      := cur_del_rec.parent_object_type;
12380 						l_rollup_table1(l_index).PARENT_OBJECT_ID        := l_tsk_object_id_to1_tab(k);--Object Version Id      of Task
12381 						l_rollup_table1(l_index).WBS_LEVEL               := 9999999;
12382 						l_rollup_table1(l_index).CALENDAR_ID             := l_index;
12383 
12384 						-- Rollup       Percent Complete Rollup
12385 						l_rollup_table1(l_index).task_weight1            := nvl( cur_del_rec.weighting_percentage, 0 );
12386 						l_rollup_table1(l_index).PERCENT_COMPLETE1       := nvl( cur_del_rec.completed_percentage, 0 );
12387 						-- 4392189 : Program Reporting Changes - Phase 2
12388 						-- Having Set2 columns to get Project level % complete
12389 						l_rollup_table1(l_index).task_weight2            := nvl( cur_del_rec.weighting_percentage, 0 );
12390 						l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_del_rec.completed_percentage, 0 );
12391 
12392 						--l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR     2
12393 
12394 						-- Base Percent Complete Rollup
12395 
12396 						-- Dates will not get rolled up for deliverable
12397 
12398 						-- Rollup       Progress Status Rollup
12399 
12400 						-- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 :=  0;       --rollup       prog    status is       0 for deliverable as it is      lowest --       FPM Dev CR 2
12401 						l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;         --override prg status
12402 
12403 						-- Base Progress Status Rollup
12404 						-- 4533112 : Now base progress status is not used
12405 						--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
12406 						-- l_rollup_table1(l_index).PROGRESS_override2      := 0;        -- FPM Dev CR  2
12407 
12408 						l_rollup_table1(l_index).DIRTY_FLAG1      :=    'Y';
12409 						l_rollup_table1(l_index).DIRTY_FLAG2      :=    'Y';
12410 
12411 						-- Deliverable Status will not      get rolled up for deliverable
12412 
12413 						l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12414 
12415 						IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
12416 							l_action_allowed := 'N';
12417 						END IF;
12418 
12419 						IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
12420 							l_action_allowed := 'N';
12421 						END IF;
12422 
12423 						IF g1_debug_mode  =     'Y'     THEN
12424 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed,     x_Log_Level=> 3);
12425 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
12426 						END IF;
12427 
12428 						l_rollup_table1(l_index).rollup_node1             :=    l_action_allowed;
12429 						l_rollup_table1(l_index).rollup_node2             :=    l_action_allowed;
12430 
12431 						--maansari4/10  temporarily passing     'Y' to rollup node.
12432 						-- need to investigate  why l_action_allowed is coming always as        'N'
12433 
12434 						l_rollup_table1(l_index).rollup_node1             :=    'Y';
12435 						l_rollup_table1(l_index).rollup_node2             :=    'Y';
12436 
12437 						IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL     THEN
12438 						  -- This means  Progress        exists for the  corresponding task
12439 						  l_tsk_progress_exists := 'Y';
12440 						END IF;
12441 					END LOOP;       -- Delivertables Loop
12442 				END IF;       -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES'   THEN
12443 
12444 			    l_index := l_index + 1;
12445 
12446 				l_rollup_table1(l_index).OBJECT_TYPE                     := l_tsk_object_type_tab(k);
12447 				l_rollup_table1(l_index).OBJECT_ID                       := l_tsk_object_id_to1_tab(k);--Task Version Id
12448 				l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := l_tsk_parent_object_type_tab(k);
12449 				l_rollup_table1(l_index).PARENT_OBJECT_ID                := l_tsk_object_id_from1_tab(k); --Parent    Task    Version Id
12450 				l_rollup_table1(l_index).WBS_LEVEL                       := NVL( l_tsk_wbs_level_tab(k),      0 );
12451 				l_rollup_table1(l_index).CALENDAR_ID                     := l_index;
12452                 -- 4582956 Begin
12453                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG      := l_summary_object_flag; -- 4370746
12454 				IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
12455 					-- 4586449 : Passing L for link tasks
12456 					--l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
12457 					l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
12458 				ELSE
12459 					l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := l_summary_object_flag;
12460 				END IF;
12461                 -- 4582956 end
12462 
12463 				-- Rollup Percent  Complete Rollup
12464 				l_rollup_table1(l_index).task_weight1                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
12465 				l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( l_tsk_roll_comp_percent_tab(k), 0    );
12466 				-- 4392189 : Program Reporting Changes - Phase 2
12467 				-- Having Set2 columns to get Project level % complete
12468 				l_rollup_table1(l_index).task_weight2                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
12469 				l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( l_tsk_base_percent_comp_tab(k), 0    );
12470 
12471 				--bug 4045979, start
12472 				l_task_baselined := 'N';
12473 				l_parent_task_baselined := 'N';
12474 				-- added if condition for bug 13923366 Huawei by skkoppul
12475 				-- In version disabled and shared structures, there will only be one occurence and hence no need to check
12476 				IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
12477 				   l_task_baselined := 'Y';
12478 				   l_parent_task_baselined := 'Y';
12479 				ELSE
12480 				   OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
12481 				   FETCH check_task_baselined INTO l_task_baselined;
12482 				   CLOSE check_task_baselined;
12483 
12484 				   OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
12485 				   FETCH check_task_baselined INTO l_parent_task_baselined;
12486 				   CLOSE check_task_baselined;
12487 				END IF;
12488 
12489 				OPEN c1_rolldates(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
12490 				FETCH c1_rolldates INTO l_tsk_sch_start_date, l_tsk_sch_finish_date;
12491 				CLOSE c1_rolldates;
12492 
12493 				-- 4392189 : Program Reporting Changes - Phase 2
12494 				-- Having Set2 columns to get Project level % complete
12495 
12496 				IF p_structure_type = 'WORKPLAN' AND  l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
12497 				THEN
12498 					l_rollup_table1(l_index).PERCENT_OVERRIDE1        := 0;
12499 					l_rollup_table1(l_index).PERCENT_OVERRIDE2        := 0;
12500 				ELSE
12501 					l_rollup_table1(l_index).PERCENT_OVERRIDE1        := l_tsk_over_percent_comp_tab(k);
12502 					--4557541 : For self % complete Override at tasks level would not be considered
12503 					--l_rollup_table1(l_index).PERCENT_OVERRIDE2        := l_tsk_over_percent_comp_tab(k);
12504 					l_rollup_table1(l_index).PERCENT_OVERRIDE2        := null;
12505 				END IF;
12506 
12507 				-- Bug 4284353 : Added below code
12508 				IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
12509 					l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
12510 					l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
12511 				END IF;
12512 
12513 				--    Actual Date Rollup
12514 				l_rollup_table1(l_index).START_DATE1                     := l_tsk_actual_start_date_tab(k);
12515 				l_rollup_table1(l_index).FINISH_DATE1                    := l_tsk_actual_finish_date_tab(k);
12516 
12517 				--    Estimated Date Rollup
12518 				l_rollup_table1(l_index).START_DATE2                     := l_tsk_est_start_date_tab(k);
12519 				l_rollup_table1(l_index).FINISH_DATE2                    := l_tsk_est_finish_date_tab(k);
12520 
12521 				--    Rollup Progress Status Rollup
12522 				l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_tsk_rollup_weight1_tab(k),0);       --rollup prog status
12523 				l_rollup_table1(l_index).PROGRESS_override1              := l_tsk_override_weight2_tab(k);    --override prg  status
12524 
12525 				--    Base Progress Status Rollup
12526 				-- 4533112 : base progress status is not used
12527 				--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 );  --base prog status
12528 				--l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
12529 
12530 				--    Task Status Rollup
12531 				l_rollup_table1(l_index).task_status1                    := nvl( l_tsk_task_weight4_tab(k), 0 );  -- task status
12532 				-- 4392189 : Program Reporting Changes - Phase 2
12533 				-- Having Set2 columns to get Project level % complete
12534 				l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12535 				l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
12536 
12537 				--END IF;
12538 
12539 				-- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
12540 				-- in earned_value1 set
12541 				IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
12542 
12543 					l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
12544 							, l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k),  p_structure_version_id,
12545 							'WORKPLAN','N','Y');
12546 					-- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
12547 					--l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
12548 					l_rollup_table1(l_index).EARNED_VALUE2 := 1;
12549 				END IF;
12550 
12551 				l_rollup_table1(l_index).BAC_VALUE1              := NVL( l_tsk_bac_value_tab(k), 0 );
12552 
12553 				IF g1_debug_mode = 'Y' THEN
12554 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1,     x_Log_Level=> 3);
12555 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
12556 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
12557                 END IF;
12558 
12559 				-- 4586449 End
12560 
12561 				l_rollup_table1(l_index).BAC_VALUE2              := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k),      0 );
12562 
12563 				-- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
12564 				-- Otheriwse it will look for deliverables and will result in 0 % complete
12565 				IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
12566 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
12567 				ELSE
12568 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
12569 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
12570 				END IF;
12571 
12572 				--    Bug 4207995 : Passing Dirty_flags always Y
12573 				--               IF (cur_tasks_rec.object_id_to1 =      p_object_version_id)    THEN
12574 				l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
12575 				l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
12576 				--               ELSE
12577 				--                       l_rollup_table1(l_index).DIRTY_FLAG1      := 'N';
12578 				--                       l_rollup_table1(l_index).DIRTY_FLAG2      := 'N';
12579 				--               END    IF;
12580 
12581 				l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
12582 
12583 				IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
12584 					l_action_allowed :=     'N';
12585 				END IF;
12586 
12587 				IF g1_debug_mode   = 'Y' THEN
12588 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed,    x_Log_Level=> 3);
12589                 END IF;
12590 
12591 				l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
12592 				l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
12593 
12594                 --maansari4/10  temporarily passing     'Y' to rollup node.
12595                 -- need to investigate  why l_action_allowed is coming always as        'N'
12596                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
12597                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
12598 
12599 				l_rollup_table1(l_index).START_DATE3 := l_tsk_sch_start_date;
12600 				l_rollup_table1(l_index).FINISH_DATE3 := l_tsk_sch_finish_date;
12601 
12602 				IF p_rollup_entire_wbs = 'Y' THEN
12603 					--    This    means Progress  exists for the  corresponding task
12604 					IF l_tsk_progress_exists        = 'Y' THEN
12605 						l_mass_rollup_prog_exists_tab.extend(1);
12606 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12607 					ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
12608 						l_mass_rollup_prog_exists_tab.extend(1);
12609 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12610 					ELSE --Amit Added on 20-Sep
12611 						l_mass_rollup_prog_exists_tab.extend(1);
12612 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
12613 					END IF;
12614 				END IF;
12615 				l_mapping_tasks_to_rollup_tab(l_index):= k;
12616 				--IF (p_process_whole_tree = 'N' and l_parent_count  = 2) THEN
12617 					--        exit;
12618                 --END IF;
12619 		END IF; -- Bug 4636100 Issue 2 : Added Endif
12620     END LOOP;       -- End Tasks Loop
12621 
12622     --begin bug 3951982
12623     IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
12624           AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
12625           AND l_actual_lowest_task = 'N' -- Bug 4392189
12626     THEN
12627         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
12628         SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS',  1
12629         FROM dual;
12630 
12631         FOR cur_tasks_rec in cur_tasks(1) LOOP
12632             IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
12633                 IF g1_debug_mode  = 'Y' THEN
12634                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second task cursor for summary task with assignments',        x_Log_Level=>   3);
12635                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1,   x_Log_Level=> 3);
12636                 END IF;
12637                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(  cur_tasks_rec.status_code, 'PROGRESS_ROLLUP'    );
12638 
12639                 l_index := l_index + 1;
12640 
12641                 l_rollup_table1(l_index).OBJECT_TYPE                        :=      cur_tasks_rec.object_type;
12642                 l_rollup_table1(l_index).OBJECT_ID                          :=      cur_tasks_rec.object_id_to1;--Task      Version Id
12643                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE                 :=      cur_tasks_rec.parent_object_type;
12644                 l_rollup_table1(l_index).PARENT_OBJECT_ID                   :=      cur_tasks_rec.object_id_from1; --Parent Task    Version Id
12645                 l_rollup_table1(l_index).WBS_LEVEL                          :=      NVL( cur_tasks_rec.wbs_level, 0 );
12646                 l_rollup_table1(l_index).CALENDAR_ID                        :=      l_index;
12647                 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG            :=      'Y'; -- 4370746
12648 
12649                 -- Rollup Percent Complete Rollup
12650                 l_rollup_table1(l_index).task_weight1                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
12651                 l_rollup_table1(l_index).PERCENT_COMPLETE1                  :=      nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
12652                 -- 4392189 : Program Reporting Changes - Phase 2
12653                 -- Having Set2 columns to get Project level % complete
12654                 l_rollup_table1(l_index).task_weight2                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
12655                 l_rollup_table1(l_index).PERCENT_COMPLETE2                  :=      nvl( cur_tasks_rec.base_percent_complete, 0 );
12656 
12657                 --bug 4045979, start
12658                 l_task_baselined := 'N';
12659                 l_parent_task_baselined := 'N';
12660                 -- added if condition for bug 13923366 by skkoppul
12661                 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
12662                 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
12663                    l_task_baselined := 'Y';
12664                    l_parent_task_baselined := 'Y';
12665                 ELSE
12666                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
12667                    FETCH check_task_baselined INTO l_task_baselined;
12668                    CLOSE check_task_baselined;
12669 
12670                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
12671                    FETCH check_task_baselined INTO l_parent_task_baselined;
12672                    CLOSE check_task_baselined;
12673                 END IF;
12674 
12675                 -- 4392189 : Program Reporting Changes - Phase 2
12676                 -- Having Set2 columns to get Project level % complete
12677 
12678                 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
12679                 THEN
12680                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := 0;
12681                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := 0;
12682                 ELSE
12683                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := cur_tasks_rec.override_percent_complete;
12684                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := null;
12685                 END IF;
12686                 --bug   4045979, end
12687                 -- Actual Date Rollup
12688                 l_rollup_table1(l_index).START_DATE1                        :=      cur_tasks_rec.actual_start_date;
12689                 l_rollup_table1(l_index).FINISH_DATE1                       :=      cur_tasks_rec.actual_finish_date;
12690 
12691                 -- Estimated Date Rollup
12692                 l_rollup_table1(l_index).START_DATE2                        :=      cur_tasks_rec.estimated_start_date;
12693                 l_rollup_table1(l_index).FINISH_DATE2                       :=      cur_tasks_rec.estimated_finish_date;
12694 
12695                 -- Rollup Progress Status   Rollup
12696                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1            :=      nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
12697                 l_rollup_table1(l_index).PROGRESS_override1                 :=      cur_tasks_rec.override_weight2;    --override prg status
12698 
12699                 -- Base Progress Status Rollup
12700 		        -- 4533112 : Base Progress Status is not used
12701                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl(    cur_tasks_rec.base_weight3, 0   );  --base prog status
12702                 --l_rollup_table1(l_index).PROGRESS_override2                 :=    0;  -- FPM Dev  CR 2
12703 
12704                 -- Task Status Rollup
12705                 l_rollup_table1(l_index).task_status1                       :=      nvl(    cur_tasks_rec.task_weight4, 0   );  -- task status
12706 
12707                 -- ETC Effort Rollup
12708                 l_rollup_table1(l_index).REMAINING_EFFORT1                  :=      NVL(    cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
12709                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                  :=      NVL(    cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
12710 
12711                 -- ETC Cost in Project Currency     Rollup
12712                 l_rollup_table1(l_index).ETC_COST1                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_PC, 0 );
12713                 l_rollup_table1(l_index).PPL_ETC_COST1                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_PC, 0 );
12714                 l_rollup_table1(l_index).EQPMT_ETC_COST1                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_PC, 0      );
12715 
12716                 -- ETC Cost in Project Functional Currency Rollup
12717                 l_rollup_table1(l_index).ETC_COST2                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_FC, 0 );
12718                 l_rollup_table1(l_index).PPL_ETC_COST2                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_FC, 0 );
12719                 l_rollup_table1(l_index).EQPMT_ETC_COST2                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_FC, 0      );
12720 
12721                 -- Sub Project ETC Effort   Rollup
12722                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
12723                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT,        0 );
12724 
12725                   --    Sub Project ETC Cost in Project Currency Rollup
12726                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
12727                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
12728                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
12729 
12730                   --    Sub Project ETC Cost in Project Functional      Currency Rollup
12731                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
12732                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
12733                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
12734 
12735                 -- 4392189 : Program Reporting Changes - Phase 2
12736                 -- Having Set2 columns to get Project level % complete
12737 
12738                 l_rollup_table1(l_index).EARNED_VALUE1              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
12739                 l_rollup_table1(l_index).BAC_VALUE1                 :=      NVL( cur_tasks_rec.BAC_VALUE, 0 );
12740 
12741                 l_rollup_table1(l_index).EARNED_VALUE2              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
12742                 l_rollup_table1(l_index).BAC_VALUE2                 :=      NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
12743 
12744                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
12745                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
12746                 -- Bug 4207995 : Passing Dirty_flags always Y
12747                 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
12748                  l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
12749                  l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
12750                 -- ELSE
12751                 --      l_rollup_table1(l_index).DIRTY_FLAG1         := 'N';
12752                 --      l_rollup_table1(l_index).DIRTY_FLAG2         := 'N';
12753                 -- END IF;
12754 
12755                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
12756 
12757                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
12758                     l_action_allowed := 'N';
12759                 END IF;
12760 
12761                 IF g1_debug_mode  = 'Y' THEN
12762                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
12763                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
12764                 END IF;
12765 
12766                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
12767                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
12768 
12769                 --maansari4/10 temporarily passing 'Y' to rollup node.
12770                 -- need to  investigate why l_action_allowed        is coming       always as       'N'
12771                 l_rollup_table1(l_index).rollup_node1 := 'Y';
12772                 l_rollup_table1(l_index).rollup_node2 := 'Y';
12773             END IF;       --<<cur_tasks_rec.object_type   = 'PA_TASKS'
12774         END LOOP;
12775     END IF; --  p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
12776     --end bug 3951982
12777 
12778     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
12779 
12780     IF g1_debug_mode = 'Y' THEN
12781         FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
12782             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
12783         END LOOP;
12784     END IF;
12785 
12786     IF p_rollup_entire_wbs = 'Y' THEN
12787         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
12788 			INSERT INTO PA_PROJ_ROLLUP_TEMP(
12789 			PROCESS_NUMBER,
12790 			OBJECT_TYPE,
12791 			OBJECT_ID,
12792 			wbs_level)
12793 			VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
12794 
12795         l_mass_rollup_prog_exists_tab.delete;
12796 
12797         OPEN c_mass_rollup_tasks;
12798         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
12799         CLOSE c_mass_rollup_tasks;
12800 
12801         IF g1_debug_mode = 'Y' THEN
12802             FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
12803                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
12804             END LOOP;
12805         END IF;
12806 
12807         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
12808 			INSERT INTO PA_PROJ_ROLLUP_TEMP(
12809 			PROCESS_NUMBER,
12810 			OBJECT_TYPE,
12811 			OBJECT_ID,
12812 			wbs_level)
12813 			VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
12814 
12815     END IF;
12816 
12817 	-- FPM Dev CR 2 : Printing the  Rollup Table before     calling Generate Schedule
12818 	IF g1_debug_mode  =     'Y'     THEN
12819 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
12820 		FOR i IN 1..l_rollup_table1.count LOOP
12821 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
12822 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
12823 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
12824 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
12825 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
12826 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
12827 						' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
12828 						' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
12829 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
12830 						' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
12831 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
12832 						' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
12833 								' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
12834 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
12835 						' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
12836 								' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
12837 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
12838 						' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
12839 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
12840 						' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
12841 								' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
12842 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
12843 						' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
12844 								' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
12845 										' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
12846 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
12847 						' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
12848 								' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12849 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
12850 						' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
12851 				  ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
12852 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
12853 						' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12854 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
12855 						' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
12856 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
12857 					x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
12858 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
12859 		END LOOP;
12860 	END IF;
12861 
12862 	IF l_rollup_table1.count <= 0 THEN
12863         return;
12864     END IF;
12865 
12866 	--Added by rtarway for  bug 3950574
12867 	IF p_structure_type = 'WORKPLAN' THEN
12868 		l_digit_number := 8;  --Bug 6854114
12869 	ELSE
12870 		l_digit_number := 8;  --Bug 6854114
12871 	END IF;
12872 
12873     --  Bug 4207995 : Commented partial_flags in the below call
12874 
12875 	PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
12876 	 p_commit                               => p_commit
12877 	,p_debug_mode                           => 'Y'
12878 	,x_return_status                        => l_return_status
12879 	,x_msg_count                            => l_msg_count
12880 	,x_msg_data                             => l_msg_data
12881 	,x_process_number                       => l_process_number
12882 	,p_data_structure                       => l_rollup_table1
12883 	,p_number_digit                         => l_digit_number
12884 	,p_process_flag1                        => 'Y'
12885 	,p_process_rollup_flag1                 => 'Y'
12886 	,p_process_progress_flag1               => 'Y'
12887 	,p_process_percent_flag1                => 'Y'
12888 	,p_process_effort_flag1                 => 'Y'
12889 	,p_process_task_status_flag1            => 'Y'
12890 	,p_process_flag2                        => 'Y'
12891 	,p_process_rollup_flag2                 => 'Y'
12892 	,p_process_progress_flag2               => 'Y'
12893 	,p_process_percent_flag2                => 'Y'
12894 	,p_process_ETC_Flag1                    => 'Y'
12895 	,p_process_ETC_Flag2                    => 'Y'
12896 	,p_partial_process_flag3                => 'Y'
12897 	,p_partial_dates_flag3                  => 'Y'
12898 	,p_process_flag3                        => 'Y'
12899 	,p_partial_effort_flag3                 => 'Y'
12900 	,p_process_rollup_flag3                 => 'Y'
12901 	,p_process_effort_flag3                 => 'Y'
12902 	,p_Rollup_Method                        => l_Rollup_Method
12903 	,p_calling_module                       => 'ROLLUP_API'
12904 	);
12905 
12906     IF g1_debug_mode = 'Y' THEN
12907         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=>      3);
12908     END IF;
12909 
12910 	IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12911 	    PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
12912 								 p_msg_name       => l_msg_data);
12913 		x_msg_data := l_msg_data;
12914 	    x_return_status := 'E';
12915 	    RAISE  FND_API.G_EXC_ERROR;
12916 	END IF;
12917 
12918 	IF g1_debug_mode = 'Y' THEN
12919 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Doing  UPDATE_ROLLUP_PVT',   x_Log_Level=> 3);
12920 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
12921 	END IF;
12922 
12923     ----    **************  Updation Starts  ******************  ----------
12924 
12925     IF g1_debug_mode = 'Y' THEN
12926 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
12927 		FOR i IN 1..l_rollup_table1.count LOOP
12928 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
12929 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
12930 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
12931 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
12932 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
12933 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
12934 				' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
12935 				' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
12936 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
12937 				' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
12938 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
12939 				' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
12940 					' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
12941 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
12942 				' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
12943 					' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
12944 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
12945 				' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
12946 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
12947 				' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
12948 					' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
12949 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
12950 				' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
12951 					' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
12952 						' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
12953 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
12954 				' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
12955 					' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12956 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
12957 				' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
12958 			  ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
12959 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
12960 				' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
12961 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
12962 			||l_rollup_table1(i).EARNED_VALUE2||
12963 				' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
12964 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
12965 			  x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
12966 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
12967 		END LOOP;
12968 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'Getting Periods', x_Log_Level=> 3);
12969 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
12970      END IF;
12971 
12972     BEGIN
12973 	  -- 4746476 : Added org_id in functions call below
12974         l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
12975         l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
12976     EXCEPTION
12977         WHEN OTHERS THEN
12978             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
12979                                 p_msg_name               => 'PA_FP_INVALID_DATE_RANGE');
12980 		    x_msg_data :=  'PA_FP_INVALID_DATE_RANGE';
12981 		    x_return_status :=     'E';
12982 		    x_msg_count := fnd_msg_pub.count_msg;
12983 		    RAISE  FND_API.G_EXC_ERROR;
12984     END ;
12985 
12986     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'After Getting Periods', x_Log_Level=> 3);
12987 
12988 
12989     FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
12990         IF g1_debug_mode   = 'Y' THEN
12991             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1,      x_Log_Level=> 3);
12992             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
12993         END IF;
12994 
12995         FOR i in 1..l_rollup_table1.count LOOP
12996             IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
12997                   (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
12998 			THEN
12999 				-- Find the corresponding task rollup record data position
13000 				task_index  := l_mapping_tasks_to_rollup_tab(i);
13001 
13002 				IF g1_debug_mode  = 'Y' THEN
13003 					 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
13004 					 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=>       3);
13005 				END IF;
13006 				-- Bug 3919211      Begin
13007 				IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
13008 					 l_task_id := 0;
13009 				ELSE
13010 					 l_task_id := cur_reverse_tree_rec.proj_element_id;
13011 				END IF;
13012 				-- Bug 3919211 End
13013 
13014 				l_child_rollup_rec_exists := 'N';
13015 				IF p_rollup_entire_wbs='Y' THEN
13016 					BEGIN
13017 					    SELECT 'Y' into l_child_rollup_rec_exists
13018 							 FROM dual
13019 							 WHERE exists
13020 							 (
13021 							   SELECT       'xyz'
13022 							   from pa_proj_rollup_temp
13023 							   WHERE object_id = cur_reverse_tree_rec.object_id_to1
13024 							   and process_number = l_process_number_temp
13025 							 );
13026 					EXCEPTION
13027 					    WHEN OTHERS THEN
13028 							l_child_rollup_rec_exists := 'N';
13029 					END;
13030 				END IF;
13031 
13032                 IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
13033 
13034 
13035                          l_eff_rollup_status_code := null;
13036                          l_progress_status_code := null;
13037 
13038                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
13039                          FETCH cur_status INTO l_eff_rollup_status_code;
13040                          CLOSE cur_status;
13041 
13042                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
13043                          FETCH cur_status INTO l_progress_status_code;
13044                          CLOSE cur_status;
13045 
13046                          IF g1_debug_mode  = 'Y' THEN
13047                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
13048                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code,     x_Log_Level=>   3);
13049                          END IF;
13050 
13051 
13052                          -- FPM dev CR 4 : Initialized the values to null
13053                          l_rolled_up_per_comp :=        null;
13054                          l_rolled_up_prog_stat := null;
13055                          l_rolled_up_base_prog_stat := null;
13056                          l_rolled_up_prog_stat := null;
13057                          l_remaining_effort1 := null;
13058                          l_percent_complete1 := null;
13059                          l_ETC_Cost_PC    :=    null;
13060                          l_PPL_ETC_COST_PC := null;
13061                          l_EQPMT_ETC_COST_PC := null;
13062                          l_ETC_Cost_FC          :=      null;
13063                          l_PPL_ETC_COST_FC       :=     null;
13064                          l_EQPMT_ETC_COST_FC := null;
13065                          l_EQPMT_ETC_EFFORT     := null;
13066                          l_BAC_VALUE1 := null;
13067                          l_EARNED_VALUE1 :=     null;
13068                          l_remaining_effort1 := null;
13069                          l_EQPMT_ETC_EFFORT     := null;
13070                          l_OTH_ACT_COST_TO_DATE_PC :=   null;
13071                          l_PPL_ACT_COST_TO_DATE_PC :=   null;
13072                          l_EQPMT_ACT_COST_TO_DATE_PC := null;
13073                          l_OTH_ACT_COST_TO_DATE_FC :=   null;
13074                          l_PPL_ACT_COST_TO_DATE_FC :=   null;
13075                          l_EQPMT_ACT_COST_TO_DATE_FC := null;
13076                          l_PPL_ACT_EFFORT_TO_DATE := null;
13077                          l_EQPMT_ACT_EFFORT_TO_DATE := null;
13078                          -- Bug 3621404 : Raw Cost Changes
13079                          l_OTH_ACT_RAWCOST_TO_DATE_PC   := null;
13080                          l_PPL_ACT_RAWCOST_TO_DATE_PC   := null;
13081                          l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
13082                          l_OTH_ACT_RAWCOST_TO_DATE_FC   := null;
13083                          l_PPL_ACT_RAWCOST_TO_DATE_FC   := null;
13084                          l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
13085                          l_ETC_RAWCost_PC := null;
13086                          l_PPL_ETC_RAWCOST_PC :=        null;
13087                          l_EQPMT_ETC_RAWCOST_PC := null;
13088                          l_ETC_RAWCost_FC := null;
13089                          l_PPL_ETC_RAWCOST_FC :=        null;
13090                          l_EQPMT_ETC_RAWCOST_FC := null;
13091                          l_actual_start_date := l_rollup_table1(i).start_date1;
13092                          l_actual_finish_date :=        l_rollup_table1(i).finish_date1;
13093                          l_estimated_start_date := l_rollup_table1(i).start_date2;
13094                          l_estimated_finish_date        := l_rollup_table1(i).finish_date2;
13095 
13096                          l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
13097                          l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
13098 
13099 
13100                          IF g1_debug_mode  = 'Y' THEN
13101 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=>   3);
13102 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat,       x_Log_Level=> 3);
13103                          END IF;
13104 
13105                          IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task    value, we       shd get it for  each    task
13106                          THEN
13107 							 -- l_rolled_up_base_per_comp   := nvl(l_rollup_table1(i).percent_complete2,0);
13108 							 l_rolled_up_base_prog_stat := l_progress_status_code;
13109                          ELSE
13110 							 -- l_rolled_up_base_per_comp   := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
13111 							 l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
13112                          END IF;
13113 
13114                          l_PROGRESS_ROLLUP_ID := null;
13115                          l_rollup_rec_ver_number := null;
13116                          l_percent_complete_id := null;
13117                          IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
13118 							 l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
13119 							 l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
13120                          END IF;
13121 
13122 						IF g1_debug_mode  = 'Y' THEN
13123 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
13124 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
13125 						END IF;
13126 
13127 						-- 4392189 : Program Reporting Changes - Phase 2
13128 						-- Having Set2 columns to get Project level % complete
13129 
13130 						IF p_structure_type = 'WORKPLAN' THEN
13131 							 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
13132 							 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
13133 						ELSE
13134 							 l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
13135 							 l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
13136 						END IF;
13137 
13138                         l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
13139 						l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
13140 
13141 						IF g1_debug_mode  = 'Y' THEN
13142 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
13143 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
13144 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
13145 						END IF;
13146 
13147 						l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
13148 
13149 						IF p_wp_rollup_method = 'EFFORT' THEN
13150 							 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
13151 						ELSE
13152 							 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
13153 						END IF;
13154 
13155 						--bug 4317491, added a check of WORKPLAN
13156 						IF p_structure_type = 'WORKPLAN' THEN
13157 							BEGIN
13158                                  SELECT
13159 
13160                                  /*+    INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
13161                                         PERIOD_NAME
13162                                  ,      ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
13163                                  ,      ACT_PRJ_LABOR_BRDN_COST
13164                                  ,      ACT_PRJ_EQUIP_BRDN_COST
13165                                  ,      ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
13166                                  ,      ACT_POU_LABOR_BRDN_COST
13167                                  ,      ACT_POU_EQUIP_BRDN_COST
13168                                  ,      ACT_LABOR_HRS
13169                                  ,      ACT_EQUIP_HRS
13170                                  ,      ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
13171                                  ,      ETC_PRJ_LABOR_BRDN_COST
13172                                  ,      ETC_PRJ_EQUIP_BRDN_COST
13173                                  ,      ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
13174                                  ,      ETC_POU_LABOR_BRDN_COST
13175                                  ,      ETC_POU_EQUIP_BRDN_COST
13176                                  ,      ETC_LABOR_HRS
13177                                  ,      ETC_EQUIP_HRS
13178                                  ,      ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
13179                                  ,      ACT_PRJ_LABOR_RAW_COST
13180                                  ,      ACT_PRJ_EQUIP_RAW_COST
13181                                  ,      ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
13182                                  ,      ACT_POU_LABOR_RAW_COST
13183                                  ,      ACT_POU_EQUIP_RAW_COST
13184                                  ,      ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
13185                                  ,      ETC_PRJ_LABOR_RAW_COST
13186                                  ,      ETC_PRJ_EQUIP_RAW_COST
13187                                  ,      ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
13188                                  ,      ETC_POU_LABOR_RAW_COST
13189                                  ,      ETC_POU_EQUIP_RAW_COST
13190                                  ,      LABOR_HOURS
13191                                  ,      EQUIPMENT_HOURS
13192                                  ,  	POU_LABOR_BRDN_COST
13193                                  ,  	PRJ_LABOR_BRDN_COST
13194                                  ,  	POU_EQUIP_BRDN_COST
13195                                  ,  	PRJ_EQUIP_BRDN_COST
13196                                  ,  	POU_BRDN_COST - (     POU_EQUIP_BRDN_COST     + POU_LABOR_BRDN_COST )
13197                                  ,  	PRJ_BRDN_COST - (     PRJ_EQUIP_BRDN_COST     + PRJ_LABOR_BRDN_COST )
13198                                  ,  	POU_LABOR_RAW_COST
13199                                  ,  	PRJ_LABOR_RAW_COST
13200                                  ,  	POU_EQUIP_RAW_COST
13201                                  ,  	PRJ_EQUIP_RAW_COST
13202                                  ,  	POU_RAW_COST  - (     POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
13203                                  ,  	PRJ_RAW_COST  - (     PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
13204                                  INTO
13205 									    l_PERIOD_NAME
13206                                  ,      l_OTH_ACT_COST_TO_DATE_PC
13207                                  ,      l_PPL_ACT_COST_TO_DATE_PC
13208                                  ,      l_EQPMT_ACT_COST_TO_DATE_PC
13209                                  ,      l_OTH_ACT_COST_TO_DATE_FC
13210                                  ,      l_PPL_ACT_COST_TO_DATE_FC
13211                                  ,      l_EQPMT_ACT_COST_TO_DATE_FC
13212                                  ,      l_PPL_ACT_EFFORT_TO_DATE
13213                                  ,      l_EQPMT_ACT_EFFORT_TO_DATE
13214                                  ,      l_ETC_Cost_PC
13215                                  ,      l_PPL_ETC_COST_PC
13216                                  ,      l_EQPMT_ETC_COST_PC
13217                                  ,      l_ETC_Cost_FC
13218                                  ,      l_PPL_ETC_COST_FC
13219                                  ,      l_EQPMT_ETC_COST_FC
13220                                  ,      l_remaining_effort1
13221                                  ,      l_EQPMT_ETC_EFFORT
13222                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_PC
13223                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_PC
13224                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_PC
13225                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_FC
13226                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_FC
13227                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_FC
13228                                  ,      l_ETC_RAWCost_PC
13229                                  ,      l_PPL_ETC_RAWCOST_PC
13230                                  ,      l_EQPMT_ETC_RAWCOST_PC
13231                                  ,      l_ETC_RAWCost_FC
13232                                  ,      l_PPL_ETC_RAWCOST_FC
13233                                  ,      l_EQPMT_ETC_RAWCOST_FC
13234                                  ,      l_LABOR_HOURS
13235                                  ,      l_EQUIPMENT_HOURS
13236                                  ,      l_POU_LABOR_BRDN_COST
13237                                  ,      l_PRJ_LABOR_BRDN_COST
13238                                  ,      l_POU_EQUIP_BRDN_COST
13239                                  ,      l_PRJ_EQUIP_BRDN_COST
13240                                  ,      l_POU_OTH_BRDN_COST
13241                                  ,      l_PRJ_OTH_BRDN_COST
13242                                  ,      l_POU_LABOR_RAW_COST
13243                                  ,      l_PRJ_LABOR_RAW_COST
13244                                  ,      l_POU_EQUIP_RAW_COST
13245                                  ,      l_PRJ_EQUIP_RAW_COST
13246                                  ,      l_POU_OTH_RAW_COST
13247                                  ,      l_PRJ_OTH_RAW_COST
13248                                  FROM PJI_FM_XBS_ACCUM_TMP1
13249                                   WHERE project_id      = p_project_id
13250                                   AND struct_version_id = p_structure_version_id
13251                                   AND project_element_id        =       cur_reverse_tree_rec.proj_element_id
13252                                   AND plan_version_id > 0
13253                                   AND txn_currency_code is      null
13254                                   AND calendar_type     = 'A'
13255                                   AND res_list_member_id        is null;
13256 							EXCEPTION
13257                                  WHEN NO_DATA_FOUND     THEN
13258                                    null;
13259                                  WHEN OTHERS THEN
13260                                    fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
13261                                                                    p_procedure_name     => 'ROLLUP_PVT',
13262                                                                    p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
13263                                    RAISE FND_API.G_EXC_ERROR;
13264 							END;
13265 
13266 							IF g1_debug_mode  = 'Y'        THEN
13267 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
13268 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
13269 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
13270 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=>    3);
13271 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
13272 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
13273 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=>    3);
13274 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE,        x_Log_Level=> 3);
13275 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
13276 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_PC:        '||l_ETC_Cost_PC, x_Log_Level=> 3);
13277 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=>        3);
13278 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC,  x_Log_Level=> 3);
13279 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_FC:        '||l_ETC_Cost_FC, x_Log_Level=> 3);
13280 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=>        3);
13281 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC,  x_Log_Level=> 3);
13282 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1,  x_Log_Level=> 3);
13283 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT:   '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
13284 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13285 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13286 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
13287 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13288 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13289 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
13290 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
13291 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC,        x_Log_Level=> 3);
13292 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=>      3);
13293 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
13294 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC,        x_Log_Level=> 3);
13295 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=>      3);
13296 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_LABOR_HOURS:        '||l_LABOR_HOURS, x_Log_Level=> 3);
13297 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=>        3);
13298 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
13299 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
13300 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
13301 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
13302 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST,  x_Log_Level=> 3);
13303 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST,  x_Log_Level=> 3);
13304 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST,        x_Log_Level=> 3);
13305 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST,        x_Log_Level=> 3);
13306 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST,        x_Log_Level=> 3);
13307 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST,        x_Log_Level=> 3);
13308 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_RAW_COST:   '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
13309 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST:   '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
13310 							END IF;
13311 
13312 							IF p_working_wp_prog_flag = 'Y' OR l_published_structure =     'N'
13313 							 --for working  version p_working_wp_prog_flag may      not be 'Y' because of   bug 3846353
13314 							THEN
13315 									 l_EQPMT_ETC_EFFORT     := null;
13316 									 l_remaining_effort1:= null;
13317 									 l_ETC_Cost_FC:= null;
13318 									 l_ETC_Cost_PC:= null;
13319 									 l_PPL_ETC_COST_FC:= null;
13320 									 l_PPL_ETC_COST_PC      := null;
13321 									 l_EQPMT_ETC_COST_FC:= null;
13322 									 l_EQPMT_ETC_COST_PC:= null;
13323 									 l_ETC_RAWCost_FC:=     null;
13324 									 l_ETC_RAWCost_PC := null;
13325 									 l_PPL_ETC_RAWCOST_FC:= null;
13326 									 l_PPL_ETC_RAWCOST_PC:= null;
13327 									 l_EQPMT_ETC_RAWCOST_FC:= null;
13328 									 l_EQPMT_ETC_RAWCOST_PC:= null;
13329 							END IF;
13330 
13331 							-- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
13332 							IF g1_debug_mode  = 'Y' THEN
13333 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
13334 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl       ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
13335 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
13336 							END IF;
13337 
13338 							IF cur_reverse_tree_rec.object_type = 'PA_TASKS'
13339 							THEN
13340                                  --do not rollup on-hold task status. We dont need to worry   about
13341                                  --cancelled bcoz they are not selected.
13342 
13343                                  -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
13344                                  l_actual_exists := 'N';
13345                                  ---5726773  changed '>0' to '<>0'
13346  	                             IF (l_PPL_ACT_EFFORT_TO_DATE   <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
13347                                    IF g1_debug_mode      = 'Y' THEN
13348                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
13349                                    END IF;
13350                                    l_actual_exists := 'Y';
13351                                  END IF;
13352 
13353                                  IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
13354                                    -- 14-Feb-2005 Patched thru Bug      4180026
13355                                    OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id);
13356                                    FETCH c_get_dlv_status INTO l_actual_exists;
13357                                    CLOSE c_get_dlv_status;
13358                                  END IF;
13359 
13360                                  IF g1_debug_mode = 'Y' THEN
13361                                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
13362                                  END IF;
13363 
13364                                  IF(( nvl(l_rollup_table1(i).task_status1,0) <> 0)
13365                                    OR
13366                                    ( l_percent_complete1 > 0 OR  l_rolled_up_per_comp > 0 )
13367                                    OR l_actual_exists = 'Y')
13368 								 THEN
13369                                    -- Bug        3842084 : Initilaized l_status_code with l_existing_object_status
13370                                    --get the existing      status
13371                                    OPEN  c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);
13372                                          FETCH c_get_object_status INTO l_existing_object_status;
13373                                          CLOSE c_get_object_status;
13374 
13375                                    l_status_code := l_existing_object_status;
13376                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
13377                                    l_status_code_temp := l_status_code; --Bug#5374114
13378                                    l_system_status_code_temp := l_system_status_code; --Bug#5374114
13379 
13380                                    IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0)
13381                                    THEN
13382                                         OPEN cur_task_status (to_char(l_rollup_table1(i).task_status1));
13383                                         FETCH cur_task_status INTO l_status_code;
13384                                         CLOSE cur_task_status;
13385                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
13386                                    END IF;
13387                                    -- Now Defaulting of   Status will happen even if the status is returned by Scheuling API, but it is wrong
13388 
13389                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
13390                                    IF g1_debug_mode      = 'Y' THEN
13391                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
13392                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
13393                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
13394                                    END IF;
13395 
13396                                    IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
13397                                    THEN
13398                                         l_status_code := '127';
13399                                         l_system_status_code := 'COMPLETED';
13400                                    ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1)  < 100)) AND l_system_status_code        IN ('NOT_STARTED','COMPLETED'))
13401                                    THEN
13402                                         l_status_code := '125';
13403                                         l_system_status_code := 'IN_PROGRESS';
13404                                         l_actual_finish_date := null;
13405                                         -- This is done to first time make task In Progress  if any sub-objects are in Progress
13406                                    ELSIF (l_actual_exists ='Y' AND      l_system_status_code    = 'NOT_STARTED')
13407                                    THEN
13408                                         l_status_code := '125';
13409                                         l_system_status_code := 'IN_PROGRESS';
13410                                         l_actual_finish_date := null;
13411                                    END IF;
13412 
13413 								   /* Changes by shanif for bug#5374114 - START */
13414 
13415 								   IF (l_system_status_code = l_system_status_code_temp) THEN
13416 										l_system_status_code := l_system_status_code_temp;
13417 										l_status_code  := l_status_code_temp;
13418 								   END IF;
13419 
13420 								   /* Changes by shanif for bug#5374114 - END */
13421 
13422                                    IF g1_debug_mode      = 'Y' THEN
13423                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
13424                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
13425                                    END IF;
13426 
13427                                    IF l_structure_version_id IS NULL THEN -- Bug 3922325  : This  does    not make sense  for     working wp version rollup
13428                                         UPDATE pa_proj_elements
13429                                         SET status_code = l_status_code
13430                                         WHERE project_id = p_project_id
13431                                         AND proj_element_id     = cur_reverse_tree_rec.proj_element_id;
13432                                    END IF;
13433 
13434 
13435                                    IF p_structure_type = 'WORKPLAN' THEN
13436                                         OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1);
13437                                         FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
13438                                         CLOSE c_get_dates;
13439                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
13440                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
13441                                                 l_actual_finish_date := to_date(null);
13442                                         END IF;
13443 										-- Bug 4232099 : added folling IF
13444 										IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
13445 											l_actual_finish_date := to_date(null);
13446 										END IF;
13447                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
13448                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
13449                                         END IF;
13450                                         IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
13451                                                 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
13452                                         END IF;
13453 
13454                                         IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL     THEN
13455 											IF l_actual_finish_date < l_actual_start_date THEN
13456 											  IF TRUNC(SYSDATE)  < l_actual_start_date THEN
13457 													  l_actual_finish_date := l_actual_start_date;
13458 											  ELSE
13459 													  l_actual_finish_date := TRUNC(SYSDATE);
13460 											  END IF;
13461 											END IF;
13462                                         END IF;
13463                                    END IF;
13464 
13465                                    UPDATE pa_percent_completes
13466                                    SET status_code = l_status_code
13467                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
13468                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
13469                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
13470                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
13471                                    AND project_id = p_project_id
13472                                    --AND PA_PROGRESS_UTILS.get_system_task_status( status_code )        NOT IN  ( 'CANCELLED',  'COMPLETED' )
13473                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
13474                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
13475                                    AND current_flag = 'N' and published_flag  = 'N';
13476 
13477                                    -- 14-Feb-2005 :     Added Patched thru Bug 4180026
13478                                    UPDATE pa_percent_completes
13479                                    SET status_code = l_status_code
13480                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
13481                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
13482                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
13483                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
13484                                    AND project_id = p_project_id
13485                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
13486                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
13487                                    AND published_flag = 'Y' ---4743866
13488                                    AND current_flag = 'Y'
13489                                    AND trunc(date_computed) = trunc(p_as_of_date);
13490                                  END IF;
13491                             END IF;
13492 
13493 							IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
13494 								l_ETC_Cost_FC:= null;
13495 								l_ETC_Cost_PC:= null;
13496 								l_PPL_ETC_COST_FC:= null;
13497 								l_PPL_ETC_COST_PC      := null;
13498 								l_EQPMT_ETC_COST_FC:= null;
13499 								l_EQPMT_ETC_COST_PC:= null;
13500 								l_ETC_RAWCost_FC:=     null;
13501 								l_ETC_RAWCost_PC := null;
13502 								l_PPL_ETC_RAWCOST_FC:= null;
13503 								l_PPL_ETC_RAWCOST_PC:= null;
13504 								l_EQPMT_ETC_RAWCOST_FC:= null;
13505 								l_EQPMT_ETC_RAWCOST_PC:= null;
13506 								l_OTH_ACT_COST_TO_DATE_PC:= null;
13507 								l_OTH_ACT_COST_TO_DATE_FC:= null;
13508 								l_PPL_ACT_COST_TO_DATE_PC:= null;
13509 								l_PPL_ACT_COST_TO_DATE_FC:= null;
13510 								l_EQPMT_ACT_COST_TO_DATE_PC:= null;
13511 								l_EQPMT_ACT_COST_TO_DATE_FC:= null;
13512 								l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
13513 								l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
13514 								l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
13515 								l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
13516 								l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
13517 								l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
13518 							END IF;
13519 						END IF; -- IF  p_structure_type = 'WORKPLAN' --bug 4317491
13520 
13521 
13522 						-- Bug 4651304 Begin
13523 						-- One solution for this issue could be to pass
13524 						-- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
13525 						-- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
13526 						-- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
13527 						-- Best way is to always retain the existing object_version_id in pa_progress_rollup
13528 						-- table in case of update, in case of insert, use the new object version id
13529 
13530 						-- Commented below code and added new condition
13531 
13532 
13533 						--IF p_upd_new_elem_ver_id_flag = 'Y' THEN
13534 						--	l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
13535 						--END IF;
13536 
13537 						IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
13538 							null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
13539 						ELSE
13540 							l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
13541 						END IF;
13542 						-- Bug 4651304 End
13543 
13544 						l_tsk_proj_element_id_tab(task_index) := l_task_id;
13545 						l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
13546 						-- 4392189 : Program Reporting Changes - Phase 2
13547 						-- Having Set2 columns to get Project level % complete
13548 											-- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
13549 						-- Bug 4506461 Begin
13550 						l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
13551 						-- 4540890 : Removed l_subproject_found check from below
13552 						IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
13553 							l_rederive_base_pc := 'N';
13554 							OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
13555 							FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
13556 							CLOSE c_get_any_childs_have_subprj;
13557 							IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
13558 								l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
13559 							END IF;
13560 						END IF;
13561 						-- Bug 4506461 End
13562 
13563 						l_tsk_earned_value_tab(task_index) := l_earned_value1;
13564 						l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
13565 						l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
13566 
13567 
13568                         IF p_structure_type = 'WORKPLAN' THEN
13569 							l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
13570 							l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
13571 							l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
13572 							l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
13573 							-- 4533112 : Base Progress Status is not used
13574 							--l_tsk_base_prog_stat_code_tab(task_index) :=    l_rolled_up_base_prog_stat;
13575 							l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
13576 
13577                             IF p_progress_mode <> 'BACKDATED' THEN
13578 								l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
13579 								l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
13580 								l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
13581 								l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
13582 								l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
13583 								l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
13584 								l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
13585 								l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
13586 								l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
13587 								l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
13588 
13589 								l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
13590 								l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
13591 								l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
13592 								l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
13593 								l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
13594 								l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
13595 								l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
13596 								l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
13597 								l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
13598 								l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
13599 
13600 								l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
13601 								l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
13602 								l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
13603 								l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
13604 								l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
13605 								l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
13606 								l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
13607 								l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
13608 							END IF; -- p_progress_mode <> 'BACKDATED'
13609 
13610 							-- 5119716 Begin
13611 							-- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
13612 							-- For performance changes, it was removed and replaced with direct update statement
13613 							-- The follwoing portion for dirty schedule was missing out.
13614 							IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y'
13615 							THEN
13616 								PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
13617 										p_structure_version_id  => p_structure_version_id
13618 										,p_dirty_flag           => 'Y'
13619 										,x_return_status        => x_return_status
13620 										,x_msg_count            => x_msg_count
13621 										,x_msg_data             => x_msg_data);
13622 								IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13623 										raise FND_API.G_EXC_ERROR;
13624 								END IF;
13625 							END IF;
13626 							-- 5119716 End
13627 
13628 							UPDATE pa_proj_elem_ver_schedule
13629 							SET    ACTUAL_START_DATE = l_actual_start_date
13630 							, ACTUAL_FINISH_DATE = l_actual_finish_date
13631 							, ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
13632 							, ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
13633 							, record_version_number = record_version_number+1
13634 							, scheduled_start_date = l_rollup_table1(i).start_date3
13635 							, scheduled_finish_date = l_rollup_table1(i).finish_date3
13636 							-- 5119716 Begin
13637 							, estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
13638 							, actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
13639 							-- 5119716 End
13640 							, last_updated_by = l_user_id
13641 							, last_update_date= sysdate
13642 							, last_update_login = l_login_id
13643 							WHERE project_id = p_project_id
13644 							AND element_version_id = l_rollup_table1(i).object_id;
13645 
13646 
13647 							IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
13648 								UPDATE pa_projects_all
13649 								SET actual_start_date = l_rollup_table1(i).start_date1,
13650 									actual_finish_date = l_rollup_table1(i).finish_date1
13651 								WHERE project_id = p_project_id;
13652 							END IF;
13653 						END IF; -- p_structure_type     = 'WORKPLAN'
13654 
13655 						IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
13656 							l_tsk_update_required(task_index):='Y';
13657 						ELSE
13658 							-- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
13659 							IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13660 								l_tsk_create_required(task_index):='Y';
13661 								BEGIN
13662 									SELECT percent_complete_id
13663 									INTO l_percent_complete_id
13664 									FROM pa_percent_completes
13665 									WHERE project_id = p_project_id
13666 									AND object_id =  cur_reverse_tree_rec.proj_element_id
13667 									AND object_Type = l_rollup_table1(i).object_Type
13668 									AND structure_type = p_structure_type
13669 									AND date_computed = ( SELECT max(date_computed)
13670 												FROM    pa_percent_completes
13671 												WHERE project_id = p_project_id
13672 												AND object_id =  cur_reverse_tree_rec.proj_element_id
13673 												AND object_Type = l_rollup_table1(i).object_Type
13674 												AND structure_type = p_structure_type
13675 												AND date_computed <= p_as_of_date);
13676 								EXCEPTION WHEN OTHERS THEN
13677 									l_percent_complete_id := null;
13678 								END;
13679 								l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
13680 												(p_project_id   => p_project_id,
13681 												p_object_id     => cur_reverse_tree_rec.proj_element_id,
13682 												p_object_type   => l_rollup_table1(i).object_type,
13683 												p_structure_type =>     p_structure_type,
13684 												p_structure_version_id => l_structure_version_id,
13685 												p_proj_element_id => cur_reverse_tree_rec.proj_element_id
13686 										 );
13687 
13688 								IF l_max_rollup_as_of_date2 > p_as_of_date  THEN
13689 									l_current_flag  := 'N';
13690 								ELSE
13691 									l_current_flag  := 'Y';
13692 								END IF;
13693 								l_tsk_current_flag_tab(task_index)      := l_current_flag;
13694 								l_tsk_prog_pa_period_name_tab(task_index) :=    l_prog_pa_period_name;
13695 								l_tsk_prog_gl_period_name_tab(task_index) :=    l_prog_gl_period_name;
13696 
13697 								IF l_max_rollup_as_of_date2 < p_as_of_date THEN
13698 									UPDATE pa_progress_rollup
13699 									   SET current_flag = 'N'
13700 									 WHERE project_id = p_project_id
13701 									   AND object_id = cur_reverse_tree_rec.proj_element_id
13702 									   AND object_type = l_rollup_table1(i).object_type
13703 									   AND current_flag <> 'W'
13704 									   AND structure_type = p_structure_type
13705 									   AND ((l_published_structure = 'Y'   AND structure_version_id is null) OR (l_published_structure = 'N' AND structure_version_id =  p_structure_version_id));
13706 								END IF;
13707 							END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13708 						END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
13709                 END IF;--       p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists =  'Y'
13710                 exit;
13711             END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
13712         END LOOP;
13713     END LOOP;
13714 
13715     FORALL i in 1..l_tsk_object_version_id_tab.count
13716 		UPDATE pa_progress_rollup
13717 		SET
13718 		object_version_id = l_tsk_object_version_id_tab(i)
13719 		, last_update_date = sysdate
13720 		, last_updated_by = l_user_id
13721 		, last_update_login = l_login_id
13722 		, eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
13723 		, completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
13724 		-- Bug 4284353 : Used decode above
13725 		, estimated_start_date = l_tsk_est_start_date_tab(i)
13726 		, estimated_finish_date = l_tsk_est_finish_date_tab(i)
13727 		, actual_start_date = l_tsk_actual_start_date_tab(i)
13728 		, actual_finish_date = l_tsk_actual_finish_date_tab(i)
13729 		, record_version_number = record_version_number +1
13730 		, base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
13731 		, base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
13732 		, eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
13733 		, percent_complete_id = l_tsk_percent_complete_id_tab(i)
13734 		, ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
13735 		, ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
13736 		, ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
13737 		, ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
13738 		, ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
13739 		, estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
13740 		, ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
13741 		, ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
13742 		, ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
13743 		, ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
13744 		, eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
13745 		, eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
13746 		, eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
13747 		, eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
13748 		, eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
13749 		, eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
13750 		, eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
13751 		, eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
13752 		, eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13753 		, eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13754 		, oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
13755 		, oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
13756 		, oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
13757 		, oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
13758 		, oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
13759 		, oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
13760 		, oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
13761 		, oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
13762 		, earned_value = l_tsk_earned_value_tab(i)
13763 		, task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
13764 		, base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13765 		WHERE l_tsk_update_required(i) = 'Y'
13766 		AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i);
13767 
13768 
13769     IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED'  THEN
13770 		FORALL i in 1..l_tsk_object_version_id_tab.count
13771 			UPDATE pa_progress_rollup
13772 			SET
13773 			object_version_id =     l_tsk_object_version_id_tab(i)
13774 			, last_update_date = sysdate
13775 			, last_updated_by =     l_user_id
13776 			, last_update_login     = l_login_id
13777 			, eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
13778 			, estimated_start_date =        l_tsk_est_start_date_tab(i)
13779 			, estimated_finish_date = l_tsk_est_finish_date_tab(i)
13780 			, actual_start_date     = l_tsk_actual_start_date_tab(i)
13781 			, actual_finish_date = l_tsk_actual_finish_date_tab(i)
13782 			, record_version_number = record_version_number +1
13783 			, base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
13784 			, base_progress_status_code =   l_tsk_base_prog_stat_code_tab(i)
13785 			, eff_rollup_prog_stat_code =   l_tsk_eff_roll_prg_st_code_tab(i)
13786 			, percent_complete_id = l_tsk_percent_complete_id_tab(i)
13787 			, ppl_act_effort_to_date        = l_tsk_ppl_act_eff_tab(i)
13788 			, ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
13789 			, ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
13790 			, ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
13791 			, ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
13792 			, estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
13793 			, ppl_etc_cost_pc =     l_tsk_ppl_etc_cost_pc_tab(i)
13794 			, ppl_etc_cost_fc =     l_tsk_ppl_etc_cost_fc_tab(i)
13795 			, ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
13796 			, ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
13797 			, eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
13798 			, eqpmt_act_cost_to_date_pc =   l_tsk_eqpmt_act_cost_pc_tab(i)
13799 			, eqpmt_act_cost_to_date_fc =   l_tsk_eqpmt_act_cost_fc_tab(i)
13800 			, eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
13801 			, eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
13802 			, eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
13803 			, eqpmt_etc_cost_pc     = l_tsk_eqpmt_etc_cost_pc_tab(i)
13804 			, eqpmt_etc_cost_fc     = l_tsk_eqpmt_etc_cost_fc_tab(i)
13805 			, eqpmt_etc_rawcost_pc =        l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13806 			, eqpmt_etc_rawcost_fc =        l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13807 			, oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
13808 			, oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
13809 			, oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
13810 			, oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
13811 			, oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
13812 			, oth_etc_cost_fc =     l_tsk_oth_etc_cost_fc_tab(i)
13813 			, oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
13814 			, oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
13815 			, earned_value  = l_tsk_earned_value_tab(i)
13816 			, task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
13817 			, base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13818 			WHERE l_tsk_update_required(i) = 'Y'
13819 			AND project_id  = p_project_id
13820 			AND object_id = l_tsk_object_id_tab(i)
13821 			AND proj_element_id     = l_tsk_proj_element_id_tab(i)
13822 			AND object_type = l_tsk_object_type_tab(i)
13823 			AND as_of_date  >= p_as_of_date
13824 			AND current_flag = 'W'
13825 			AND structure_type = 'WORKPLAN'
13826 			AND structure_version_id is null;
13827     END IF;
13828 
13829     -- Bug 4242787 : This is effective solution for the bug 4097710
13830     -- We should not create new records if the rollup is called from Future Rollup API
13831     -- It should just update.
13832     IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
13833 	    for i in 1..l_tsk_object_version_id_tab.count
13834 		loop
13835 			--IF l_tsk_object_version_id_tab(i) member of l_prog_obj
13836 			if l_prog_obj.exists(l_tsk_object_version_id_tab(i))
13837 			then
13838 				l_tsk_create_required(i) := 'Y';
13839 			else
13840 				l_tsk_create_required(i) := 'N';
13841 			end if;
13842 		end loop;
13843 
13844         FORALL i in 1..l_tsk_object_version_id_tab.count
13845 			INSERT INTO pa_progress_rollup
13846 			(
13847 			progress_rollup_id
13848 			,project_id
13849 			,object_id
13850 			,object_type
13851 			,as_of_date
13852 			,object_version_id
13853 			,last_update_date
13854 			,last_updated_by
13855 			,creation_date
13856 			,created_by
13857 			,progress_status_code
13858 			,last_update_login
13859 			,eff_rollup_percent_comp
13860 			,completed_percentage
13861 			,estimated_start_date
13862 			,estimated_finish_date
13863 			,actual_start_date
13864 			,actual_finish_date
13865 			,record_version_number
13866 			,base_percent_comp_deriv_code
13867 			,base_progress_status_code
13868 			,eff_rollup_prog_stat_code
13869 			,percent_complete_id
13870 			,structure_type
13871 			,proj_element_id
13872 			,structure_version_id
13873 			,ppl_act_effort_to_date
13874 			,ppl_act_cost_to_date_pc
13875 			,ppl_act_cost_to_date_fc
13876 			,ppl_act_rawcost_to_date_pc
13877 			,ppl_act_rawcost_to_date_fc
13878 			,estimated_remaining_effort
13879 			,ppl_etc_cost_pc
13880 			,ppl_etc_cost_fc
13881 			,ppl_etc_rawcost_pc
13882 			,ppl_etc_rawcost_fc
13883 			,eqpmt_act_effort_to_date
13884 			,eqpmt_act_cost_to_date_pc
13885 			,eqpmt_act_cost_to_date_fc
13886 			,eqpmt_act_rawcost_to_date_pc
13887 			,eqpmt_act_rawcost_to_date_fc
13888 			,eqpmt_etc_effort
13889 			,eqpmt_etc_cost_pc
13890 			,eqpmt_etc_cost_fc
13891 			,eqpmt_etc_rawcost_pc
13892 			,eqpmt_etc_rawcost_fc
13893 			,oth_quantity_to_date
13894 			,oth_act_cost_to_date_pc
13895 			,oth_act_cost_to_date_fc
13896 			,oth_act_rawcost_to_date_pc
13897 			,oth_act_rawcost_to_date_fc
13898 			,oth_etc_quantity
13899 			,oth_etc_cost_pc
13900 			,oth_etc_cost_fc
13901 			,oth_etc_rawcost_pc
13902 			,oth_etc_rawcost_fc
13903 			,earned_value
13904 			,task_wt_basis_code
13905 			,current_flag
13906 			,projfunc_cost_rate_type
13907 			,projfunc_cost_exchange_rate
13908 			,projfunc_cost_rate_date
13909 			,proj_cost_rate_type
13910 			,proj_cost_exchange_rate
13911 			,proj_cost_rate_date
13912 			,txn_currency_code
13913 			,prog_pa_period_name
13914 			,prog_gl_period_name
13915 			,base_percent_complete
13916 			)
13917 			SELECT
13918 			PA_PROGRESS_ROLLUP_S.nextval
13919 			, p_project_id
13920 			, l_tsk_object_id_tab(i)
13921 			, l_tsk_object_type_tab(i)
13922 			, p_as_of_date
13923 			, l_tsk_object_version_id_tab(i)
13924 			, sysdate
13925 			, l_user_id
13926 			, sysdate
13927 			, l_user_id
13928 			, l_tsk_progress_stat_code_tab(i)
13929 			, l_login_id
13930 			, l_tsk_roll_comp_percent_tab(i)
13931 			,  decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
13932 			-- Bug 4284353 : Used decode above
13933 			, l_tsk_est_start_date_tab(i)
13934 			, l_tsk_est_finish_date_tab(i)
13935 			, l_tsk_actual_start_date_tab(i)
13936 			, l_tsk_actual_finish_date_tab(i)
13937 			, 1
13938 			, l_tsk_deriv_method_tab(i)
13939 			, l_tsk_base_prog_stat_code_tab(i)
13940 			, l_tsk_eff_roll_prg_st_code_tab(i)
13941 			, l_tsk_percent_complete_id_tab(i)
13942 			, p_structure_type
13943 			, l_tsk_proj_element_id_tab(i)
13944 			, l_structure_version_id
13945 			, l_tsk_ppl_act_eff_tab(i)
13946 			, l_tsk_ppl_act_cost_pc_tab(i)
13947 			, l_tsk_ppl_act_cost_fc_tab(i)
13948 			, l_tsk_ppl_act_rawcost_pc_tab(i)
13949 			, l_tsk_ppl_act_rawcost_fc_tab(i)
13950 			, l_tsk_est_rem_effort_tab(i)
13951 			, l_tsk_ppl_etc_cost_pc_tab(i)
13952 			, l_tsk_ppl_etc_cost_fc_tab(i)
13953 			, l_tsk_ppl_etc_rawcost_pc_tab(i)
13954 			, l_tsk_ppl_etc_rawcost_fc_tab(i)
13955 			, l_tsk_eqpmt_act_effort_tab(i)
13956 			, l_tsk_eqpmt_act_cost_pc_tab(i)
13957 			, l_tsk_eqpmt_act_cost_fc_tab(i)
13958 			, l_tsk_eqpmt_act_rawcost_pc_tab(i)
13959 			, l_tsk_eqpmt_act_rawcost_fc_tab(i)
13960 			, l_tsk_eqpmt_etc_effort_tab(i)
13961 			, l_tsk_eqpmt_etc_cost_pc_tab(i)
13962 			, l_tsk_eqpmt_etc_cost_fc_tab(i)
13963 			, l_tsk_eqpmt_etc_rawcost_pc_tab(i)
13964 			, l_tsk_eqpmt_etc_rawcost_fc_tab(i)
13965 			, l_tsk_oth_quantity_tab(i)
13966 			, l_tsk_oth_act_cost_pc_tab(i)
13967 			, l_tsk_oth_act_cost_fc_tab(i)
13968 			, l_tsk_oth_act_rawcost_pc_tab(i)
13969 			, l_tsk_oth_act_rawcost_fc_tab(i)
13970 			, l_tsk_oth_etc_quantity_tab(i)
13971 			, l_tsk_oth_etc_cost_pc_tab(i)
13972 			, l_tsk_oth_etc_cost_fc_tab(i)
13973 			, l_tsk_oth_etc_rawcost_pc_tab(i)
13974 			, l_tsk_oth_etc_rawcost_fc_tab(i)
13975 			, l_tsk_earned_value_tab(i)
13976 			, l_tsk_task_wt_basis_code_tab(i)
13977 			, l_tsk_current_flag_tab(i)
13978 			, l_tsk_pf_cost_rate_type_tab(i)
13979 			, l_tsk_pf_cost_exc_rate_tab(i)
13980 			, l_tsk_pf_cost_rate_date_tab(i)
13981 			, l_tsk_p_cost_rate_type_tab(i)
13982 			, l_tsk_p_cost_exc_rate_tab(i)
13983 			, l_tsk_p_cost_rate_date_tab(i)
13984 			, l_tsk_txn_currency_code_tab(i)
13985 			, l_tsk_prog_pa_period_name_tab(i)
13986 			, l_tsk_prog_gl_period_name_tab(i)
13987 			, l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
13988 			FROM
13989 			DUAL
13990 			WHERE l_tsk_create_required(i) = 'Y';
13991     END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP'  OR p_calling_mode IS NULL THEN
13992 
13993     -- Bug 4242787
13994     -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
13995     -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
13996 
13997     ----    **************  Updation Ends   ******************      ----------
13998 
13999     -- Bug 4242787
14000     -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
14001     -- Future rollup seprately if they are calling Mass Rollup
14002     IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
14003         IF g1_debug_mode  = 'Y' THEN
14004             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
14005         END IF;
14006 
14007         FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
14008             IF g1_debug_mode  = 'Y' THEN
14009                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
14010                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
14011                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
14012                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
14013             END IF;
14014             -- Bug 4573257 Begin
14015             -- We need to call PJI tmp table population
14016             -- otherwise we will get incorrect actual and etc for future dates records
14017             IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
14018                 IF (l_base_struct_ver_id = -1) THEN
14019                     l_base_struct_ver_id := p_structure_version_id;
14020                 END IF;
14021 
14022                 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
14023                     p_calling_module    => p_calling_module
14024                     ,p_project_id           => p_project_id
14025                     ,p_structure_version_id => p_structure_version_id
14026                     ,p_baselined_str_ver_id => l_base_struct_ver_id
14027                     ,p_program_rollup_flag  => 'Y'
14028                     ,p_calling_context  => 'ROLLUP'
14029                     ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
14030                     ,x_return_status        => x_return_status
14031                     ,x_msg_count            => x_msg_count
14032                     ,x_msg_data             => x_msg_data
14033                     );
14034                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14035                     RAISE  FND_API.G_EXC_ERROR;
14036                 END IF;
14037                 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
14038             END IF;
14039             -- Bug 4573257 End
14040 
14041             PA_PROGRESS_PVT.ROLLUP_PVT(
14042                  p_init_msg_list                => 'F'
14043                 ,p_calling_module       => p_calling_module
14044                 ,p_calling_mode         => 'FUTURE_ROLLUP'
14045                 ,p_commit                       => 'F'
14046                 ,p_validate_only                => 'F'
14047                 ,p_project_id                   => p_project_id
14048                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
14049                 ,P_OBJECT_ID                    => cur_tree_rollup_rec.child_task_id
14050                 ,p_object_version_id            => cur_tree_rollup_rec.child_task_ver_id
14051                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
14052                 ,p_lowest_level_task            => p_lowest_level_task
14053                 ,p_process_whole_tree           => 'N'
14054                 ,p_structure_type               => p_structure_type
14055                 ,p_structure_version_id         => p_structure_version_id
14056                 ,p_rollup_entire_wbs            => 'N'
14057                 ,p_fin_rollup_method            => p_fin_rollup_method
14058                 ,p_wp_rollup_method             => p_wp_rollup_method
14059                 ,p_task_version_id              => cur_tree_rollup_rec.child_task_ver_id
14060                 ,x_return_status                => x_return_status
14061                 ,x_msg_count                    => x_msg_count
14062                 ,x_msg_data                     => x_msg_data);
14063 
14064             IF g1_debug_mode  = 'Y' THEN
14065                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
14066             END IF;
14067 
14068             IF x_return_status <> 'S' THEN
14069                 raise FND_API.G_EXC_ERROR;
14070             END IF;
14071         END LOOP;
14072     END IF; -- p_rollup_entire_wbs = 'Y'
14073 
14074     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
14075 
14076     x_return_status := FND_API.G_RET_STS_SUCCESS;
14077 
14078     IF (p_commit = FND_API.G_TRUE) THEN
14079         COMMIT;
14080     END IF;
14081 
14082 	IF g1_debug_mode = 'Y' THEN
14083 	    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT END', x_Log_Level=> 3);
14084 	END IF;
14085 
14086 EXCEPTION
14087 	WHEN FND_API.G_EXC_ERROR     THEN
14088 		rollback to ROLLUP_PVT2;
14089 		x_return_status := FND_API.G_RET_STS_ERROR;
14090 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14091 		rollback to ROLLUP_PVT2;
14092 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
14093 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
14094 						 p_procedure_name => 'ROLLUP_PVT',
14095 						 p_error_text      => SUBSTRB(SQLERRM,1,120));
14096 	WHEN OTHERS THEN
14097 		rollback to ROLLUP_PVT2;
14098 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
14099 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
14100 						 p_procedure_name => 'ROLLUP_PVT',
14101 						 p_error_text      => SUBSTRB(SQLERRM,1,120));
14102 		raise;
14103 END ROLLUP_PVT;
14104 
14105 PROCEDURE DEFER_ROLLUP_PVT(
14106  p_api_version                          IN      NUMBER          :=1.0
14107 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_TRUE
14108 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
14109 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
14110 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
14111 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
14112 ,p_calling_mode                         IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
14113 ,p_debug_mode                           IN      VARCHAR2        :='N'
14114 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14115 ,p_progress_mode                        IN      VARCHAR2        := 'FUTURE'
14116 ,p_project_id                           IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14117 ,p_object_type                          IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
14118 ,p_object_id                            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14119 ,p_object_version_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14120 ,p_task_version_id                      IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
14121 ,p_as_of_date                           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
14122 ,p_lowest_level_task                    IN      VARCHAR2        := 'N'
14123 ,p_process_whole_tree                   IN      VARCHAR2        := 'Y'
14124 ,p_structure_version_id                 IN      NUMBER
14125 ,p_structure_type                       IN      VARCHAR2        := 'WORKPLAN'
14126 ,p_fin_rollup_method                    IN      VARCHAR2        := 'COST'
14127 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
14128 ,p_rollup_entire_wbs                    IN      VARCHAR2        := 'N'
14129 ,p_task_version_id_tbl                  IN      SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
14130 ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --maansari7/18  to be passed form apply lp progress to  select regular  planned amounts to send to schduling api for    percent comnplete and earned    value calculations.
14131 ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, 3951024
14132 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
14133 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
14134 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
14135 )
14136  IS
14137 
14138 l_api_name                      CONSTANT VARCHAR(30) := 'ROLLUP_PVT';
14139 l_api_version                   CONSTANT NUMBER         :=      1.0                     ;
14140 l_return_status                 VARCHAR2(1)                                     ;
14141 l_msg_count                     NUMBER                                          ;
14142 l_msg_data                      VARCHAR2(250)                                   ;
14143 l_data                          VARCHAR2(250)                                   ;
14144 l_msg_index_out                 NUMBER                                          ;
14145 l_error_msg_code                VARCHAR2(250)                                   ;
14146 l_user_id                       NUMBER :=       FND_GLOBAL.USER_ID                      ;
14147 l_login_id                      NUMBER :=       FND_GLOBAL.LOGIN_ID                     ;
14148 l_lowest_task                   VARCHAR2(1)                                     ;
14149 l_published_structure           VARCHAR2(1)                                     ;
14150 l_task_version_id               NUMBER                                          ;
14151 l_rollup_table1                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
14152 l_rollup_table2                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
14153 l_index                         NUMBER   := 0;
14154 l_parent_count                  NUMBER   := 0;
14155 l_process_number                NUMBER;
14156 l_wbs_level                     NUMBER                                                                           ;
14157 l_action_allowed                VARCHAR2(1)                                                                      ;
14158 l_sharing_Enabled               VARCHAR2(1)                                                                      ;
14159 l_split_workplan                VARCHAR2(1)                                                                      ;
14160 l_structure_version_id          NUMBER                                                                           ;
14161 g1_debug_mode                   VARCHAR2(1)                                                                      ;
14162 l_Rollup_Method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                                ;
14163 
14164 
14165 -- sridhar_rollup
14166 
14167 l_defer_arr_task_id PA_PLSQL_DATATYPES.NumTabTyp;
14168 
14169    -- Rollup Cases
14170    -- 1. Workplan Publsihed Version Rollup.
14171    -- 2. Workplan Working Version Rollup.
14172    -- 3. Financial Structure Rollup.
14173    -- 4. Entire WBS using       structure       version id.
14174    -- 5. Program Rollup
14175 
14176    --This       cursor selects  the parents of  a given task.
14177 
14178 
14179 CURSOR cur_reverse_tree_update IS
14180 SELECT proj_element_id, object_id_to1, object_type
14181 FROM
14182         ( select object_id_from1, object_id_to1
14183         from pa_object_relationships
14184         where relationship_type ='S'
14185         and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
14186         and object_type_to = 'PA_TASKS'
14187         and p_rollup_entire_wbs='N'
14188         start with object_id_to1 = p_task_version_id
14189         and relationship_type = 'S'
14190         connect by prior object_id_from1 = object_id_to1
14191         and relationship_type =     'S'
14192         ) pobj
14193         , pa_proj_element_versions ppev
14194 WHERE element_version_id = object_id_to1
14195 and p_rollup_entire_wbs='N'
14196 --select        structure
14197 UNION
14198 SELECT proj_element_id, element_version_id, object_type
14199 FROM pa_proj_element_versions
14200 WHERE element_version_id = p_structure_version_id
14201 and project_id = p_project_id
14202 and object_type = 'PA_STRUCTURES'
14203 and p_rollup_entire_wbs='N'
14204 UNION
14205 SELECT proj_element_id, element_version_id, object_type
14206 FROM pa_proj_element_versions
14207 WHERE project_id = p_project_id
14208 and parent_structure_version_id = p_structure_version_id
14209 and object_type IN ('PA_TASKS','PA_STRUCTURES')
14210 and p_rollup_entire_wbs='Y'
14211 ;
14212 
14213 
14214 l_mass_rollup_prog_exists_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14215 l_mass_rollup_prog_rec_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14216 
14217 l_tsk_object_id_from1_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14218 l_tsk_parent_object_type_tab        SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14219 l_tsk_object_id_to1_tab         SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14220 l_tsk_object_type_tab           SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14221 l_tsk_wbs_level_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14222 l_tsk_weighting_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14223 l_tsk_roll_comp_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14224 l_tsk_over_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14225 l_tsk_as_of_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
14226 l_tsk_actual_start_date_tab     SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
14227 l_tsk_actual_finish_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
14228 l_tsk_est_start_date_tab                SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
14229 l_tsk_est_finish_date_tab       SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
14230 l_tsk_rollup_weight1_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14231 l_tsk_override_weight2_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14232 l_tsk_base_weight3_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14233 l_tsk_task_weight4_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14234 l_tsk_status_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14235 l_tsk_object_id_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14236 l_tsk_proj_element_id_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14237 l_tsk_ppl_act_eff_tab           SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14238 l_tsk_ppl_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14239 l_tsk_ppl_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14240 l_tsk_ppl_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14241 l_tsk_ppl_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14242 l_tsk_ppl_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14243 l_tsk_ppl_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14244 l_tsk_est_rem_effort_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14245 l_tsk_ppl_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14246 l_tsk_ppl_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14247 l_tsk_ppl_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14248 l_tsk_ppl_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14249 l_tsk_ppl_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14250 l_tsk_ppl_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14251 l_tsk_eqpmt_act_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14252 l_tsk_eqpmt_act_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14253 l_tsk_eqpmt_act_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14254 l_tsk_eqpmt_act_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14255 l_tsk_eqpmt_act_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14256 l_tsk_eqpmt_act_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14257 l_tsk_eqpmt_act_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14258 l_tsk_eqpmt_etc_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14259 l_tsk_eqpmt_etc_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14260 l_tsk_eqpmt_etc_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14261 l_tsk_eqpmt_etc_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14262 l_tsk_eqpmt_etc_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14263 l_tsk_eqpmt_etc_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14264 l_tsk_eqpmt_etc_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14265 l_tsk_oth_quantity_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14266 l_tsk_oth_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14267 l_tsk_oth_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14268 l_tsk_oth_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14269 l_tsk_oth_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14270 l_tsk_oth_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14271 l_tsk_oth_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14272 l_tsk_oth_etc_quantity_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14273 l_tsk_oth_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14274 l_tsk_oth_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14275 l_tsk_oth_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14276 l_tsk_oth_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14277 l_tsk_oth_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14278 l_tsk_oth_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14279 l_tsk_current_flag_tab          SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14280 l_tsk_pf_cost_rate_type_tab     SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14281 l_tsk_pf_cost_exc_rate_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14282 l_tsk_pf_cost_rate_date_tab     SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
14283 l_tsk_p_cost_rate_type_tab      SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14284 l_tsk_p_cost_exc_rate_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14285 l_tsk_p_cost_rate_date_tab      SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
14286 l_tsk_txn_currency_code_tab     SYSTEM.PA_VARCHAR2_15_TBL_TYPE  := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
14287 l_tsk_prog_pa_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14288 l_tsk_prog_gl_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14289 l_tsk_bac_value_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14290 l_tsk_bac_self_value_tab        SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
14291 l_tsk_earned_value_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14292 l_tsk_deriv_method_tab          SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14293 l_tsk_progress_rollup_id_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14294 l_tsk_rollup_rec_ver_num_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14295 l_tsk_object_version_id_tab             SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14296 l_tsk_progress_stat_code_tab            SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14297 l_tsk_incremental_wq_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14298 l_tsk_cumulative_wq_tab                 SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14299 l_tsk_base_prog_stat_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14300 l_tsk_eff_roll_prg_st_code_tab          SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
14301 l_tsk_percent_complete_id_tab           SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14302 l_tsk_task_wt_basis_code_tab            SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14303 l_tsk_base_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
14304 l_tsk_structure_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
14305 
14306 l_tsk_create_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14307 l_tsk_update_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14308 
14309 
14310 l_prj_currency_code             VARCHAR2(15);
14311 l_total_tasks                   NUMBER;
14312 l_prog_pa_period_name           VARCHAR2(30);
14313 l_prog_gl_period_name           VARCHAR2(30);
14314 task_index                      NUMBER;
14315 l_task_id                       NUMBER;
14316 l_child_rollup_rec_exists       VARCHAR2(1);
14317 l_sch_rec_ver_number            NUMBER;
14318 
14319 l_equipment_hours               NUMBER;
14320 l_pou_labor_brdn_cost           NUMBER;
14321 l_prj_labor_brdn_cost           NUMBER;
14322 l_pou_equip_brdn_cost           NUMBER;
14323 l_prj_equip_brdn_cost           NUMBER;
14324 l_pou_labor_raw_cost            NUMBER;
14325 l_prj_labor_raw_cost            NUMBER;
14326 l_pou_equip_raw_cost            NUMBER;
14327 l_prj_equip_raw_cost            NUMBER;
14328 l_labor_hours                   NUMBER;
14329 l_pou_oth_brdn_cost             NUMBER;
14330 l_prj_oth_brdn_cost             NUMBER;
14331 l_pou_oth_raw_cost              NUMBER;
14332 l_prj_oth_raw_cost              NUMBER;
14333 l_remaining_effort1             NUMBER;
14334 l_percent_complete1             NUMBER;
14335 l_percent_complete2             NUMBER;
14336 l_etc_cost_pc                   NUMBER;
14337 l_ppl_etc_cost_pc               NUMBER;
14338 l_eqpmt_etc_cost_pc             NUMBER;
14339 l_etc_cost_fc                   NUMBER;
14340 l_ppl_etc_cost_fc               NUMBER;
14341 l_eqpmt_etc_cost_fc             NUMBER;
14342 l_bac_value1                    NUMBER;
14343 l_ppl_act_cost_to_date_pc       NUMBER;
14344 l_eqpmt_act_cost_to_date_pc     NUMBER;
14345 l_oth_act_cost_to_date_fc       NUMBER;
14346 l_ppl_act_cost_to_date_fc       NUMBER;
14347 l_eqpmt_act_cost_to_date_fc     NUMBER;
14348 l_ppl_act_effort_to_date        NUMBER;
14349 l_oth_act_rawcost_to_date_pc    NUMBER;
14350 l_ppl_act_rawcost_to_date_pc    NUMBER;
14351 l_eqpmt_act_rawcost_to_date_pc  NUMBER;
14352 l_etc_rawcost_pc                NUMBER;
14353 l_ppl_etc_rawcost_pc            NUMBER;
14354 l_eqpmt_act_rawcost_to_date_fc  NUMBER;
14355 l_ppl_act_rawcost_to_date_fc    NUMBER;
14356 l_oth_act_rawcost_to_date_fc    NUMBER;
14357 l_eqpmt_act_effort_to_date      NUMBER;
14358 l_eqpmt_etc_effort              NUMBER;
14359 l_earned_value1                 NUMBER;
14360 l_oth_act_cost_to_date_pc       NUMBER;
14361 l_percent_complete_id           NUMBER;
14362 l_progress_rollup_id            NUMBER;
14363 l_rollup_rec_ver_number         NUMBER;
14364 l_eqpmt_etc_rawcost_fc          NUMBER;
14365 l_ppl_etc_rawcost_fc            NUMBER;
14366 l_etc_rawcost_fc                NUMBER;
14367 l_eqpmt_etc_rawcost_pc          NUMBER;
14368 l_period_name                   VARCHAR2(30);
14369 l_existing_object_status        VARCHAR2(150);
14370 l_status_code                   VARCHAR2(150);
14371 l_system_status_code            VARCHAR2(150);
14372 l_status_code_temp              VARCHAR2(150); --Bug#5374114
14373 l_system_status_code_temp       VARCHAR2(150); --Bug#5374114
14374 l_max_rollup_as_of_date2        DATE;
14375 l_current_flag                  VARCHAR2(1);
14376 l_pev_schedule_id               NUMBER;
14377 l_actual_exists                 VARCHAR2(1):='N';
14378 l_tsk_scheduled_start_date      Date;
14379 l_tsk_scheduled_finish_date     Date;
14380 l_actual_start_date             Date;
14381 l_actual_finish_date            Date;
14382 l_estimated_start_date          Date;
14383 l_estimated_finish_date         Date;
14384 l_eff_rollup_status_code        VARCHAR2(150);
14385 l_progress_status_code          VARCHAR2(150);
14386 l_rolled_up_base_per_comp       NUMBER;
14387 l_rolled_up_base_prog_stat      VARCHAR2(150);
14388 l_rolled_up_per_comp            NUMBER;
14389 l_rolled_up_prog_stat           VARCHAR2(150);
14390 
14391 
14392 CURSOR cur_sch_id( c_object_version_id NUMBER )
14393 IS
14394 SELECT pev_schedule_id, record_version_number
14395 FROM pa_proj_elem_ver_schedule
14396 WHERE project_id = p_project_id
14397 AND element_version_id = c_object_version_id;
14398 
14399 
14400 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
14401 IS
14402 SELECT scheduled_start_date, scheduled_finish_date
14403 FROM pa_proj_elem_ver_schedule
14404 WHERE PROJECT_ID = c_project_id
14405 AND element_version_id = c_element_version_id;
14406 
14407 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
14408 SELECT 'Y' FROM DUAL
14409 WHERE EXISTS
14410 (SELECT 'xyz'
14411 FROM    pa_percent_completes
14412 WHERE project_id = p_project_id
14413 AND task_id = c_task_id
14414 AND object_type = 'PA_DELIVERABLES'
14415 AND trunc(date_computed)<= trunc(p_as_of_date)
14416 AND structure_type = 'WORKPLAN'
14417 AND published_flag = 'Y'
14418 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
14419 );
14420 
14421 
14422 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
14423 IS
14424 SELECT STATUS_CODE
14425 FROM PA_PROJ_ELEMENTS
14426 WHERE PROJ_ELEMENT_ID = l_proj_element_id
14427 AND PROJECT_ID = l_project_id;
14428 
14429 CURSOR cur_status( c_status_weight      VARCHAR2 )
14430 IS
14431 select lookup_code
14432 from fnd_lookup_values
14433 where attribute4 = c_status_weight
14434 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
14435 and language = 'US'
14436 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
14437 
14438 CURSOR cur_task_status( c_status_weight VARCHAR2 )
14439 IS
14440 select project_status_code
14441 from pa_project_statuses
14442 where project_status_weight =   c_status_weight
14443 and status_type = 'TASK'
14444 and predefined_flag = 'Y';
14445 
14446 l_process_number_temp   NUMBER;
14447 
14448    --This cursor selects the immediate child taks of a given task.
14449    CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
14450    IS
14451           --select      structure
14452     SELECT to_number(null) object_id_from1
14453                 , ppev.object_type parent_object_type
14454                 , element_version_id object_id_to1
14455                 , ppev.object_type object_type
14456                 , nvl(ppev.wbs_level,0) wbs_level  -- sridhar_rollup
14457                 , to_number( null ) weighting_percentage
14458                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
14459                 , ppr.completed_percentage override_percent_complete
14460 		, ppr.as_of_date
14461                 , ppr.actual_start_date
14462                 , ppr.actual_finish_date
14463                 , ppr.estimated_start_date
14464                 , ppr.estimated_finish_date
14465                 , pps1.project_status_weight rollup_weight1 ---rollup progress status   code
14466                 , pps2.project_status_weight override_weight2 ---override progress status code
14467                 , pps3.project_status_weight base_weight3        --base prog status
14468                 , to_number( null )     task_weight4        --task status
14469                 , to_char(null) status_code
14470                 , ppev.proj_element_id object_id
14471                 , ppev.proj_element_id
14472 		, ppr.PPL_ACT_EFFORT_TO_DATE
14473                 , ppr.PPL_ACT_COST_TO_DATE_TC
14474                 , ppr.PPL_ACT_COST_TO_DATE_PC
14475                 , ppr.PPL_ACT_COST_TO_DATE_FC
14476 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
14477 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
14478 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
14479                 , ppr.ESTIMATED_REMAINING_EFFORT
14480                 , ppr.PPL_ETC_COST_TC
14481                 , ppr.PPL_ETC_COST_PC
14482                 , ppr.PPL_ETC_COST_FC
14483                 , ppr.PPL_ETC_RAWCOST_TC
14484                 , ppr.PPL_ETC_RAWCOST_PC
14485                 , ppr.PPL_ETC_RAWCOST_FC
14486 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
14487                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
14488                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
14489                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
14490 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
14491 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
14492 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
14493                 , ppr.EQPMT_ETC_EFFORT
14494                 , ppr.EQPMT_ETC_COST_TC
14495                 , ppr.EQPMT_ETC_COST_PC
14496                 , ppr.EQPMT_ETC_COST_FC
14497                 , ppr.EQPMT_ETC_RAWCOST_TC
14498                 , ppr.EQPMT_ETC_RAWCOST_PC
14499                 , ppr.EQPMT_ETC_RAWCOST_FC
14500 		, ppr.OTH_QUANTITY_TO_DATE
14501                 , ppr.OTH_ACT_COST_TO_DATE_TC
14502                 , ppr.OTH_ACT_COST_TO_DATE_PC
14503                 , ppr.OTH_ACT_COST_TO_DATE_FC
14504 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
14505 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
14506 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
14507 		, ppr.OTH_ETC_QUANTITY
14508                 , ppr.OTH_ETC_COST_TC
14509                 , ppr.OTH_ETC_COST_PC
14510                 , ppr.OTH_ETC_COST_FC
14511                 , ppr.OTH_ETC_RAWCOST_TC
14512                 , ppr.OTH_ETC_RAWCOST_PC
14513                 , ppr.OTH_ETC_RAWCOST_FC
14514                 , ppr.CURRENT_FLAG
14515                 , ppr.PROJFUNC_COST_RATE_TYPE
14516                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
14517                 , ppr.PROJFUNC_COST_RATE_DATE
14518                 , ppr.PROJ_COST_RATE_TYPE
14519                 , ppr.PROJ_COST_EXCHANGE_RATE
14520                 , ppr.PROJ_COST_RATE_DATE
14521                 , ppr.TXN_CURRENCY_CODE
14522                 , ppr.PROG_PA_PERIOD_NAME
14523                 , ppr.PROG_GL_PERIOD_NAME
14524                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
14525                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
14526                   BAC_value_self -- bug 4493105
14527                 , null earned_value
14528 		, to_char(null) task_derivation_method
14529 		, ppr.progress_rollup_id
14530 		, ppr.record_version_number
14531 	--	, element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
14532 		, ppr.object_version_id -- Bug 4651304
14533                 , ppr.progress_status_code
14534                 , ppr.incremental_work_quantity
14535                 , ppr.cumulative_work_quantity
14536 		-- 4533112 : Added decode to select N and Y only
14537                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
14538                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
14539                 , ppr.percent_complete_id
14540                 , ppr.TASK_WT_BASIS_CODE
14541                 , ppr.structure_version_id
14542                 ,'N' create_required
14543                 ,'N' update_required
14544         , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14545     FROM pa_proj_element_versions ppev,
14546             pa_progress_rollup ppr,
14547             pa_project_statuses pps1,
14548             pa_project_statuses pps2,
14549             pa_project_statuses pps3 ,
14550             pa_proj_rollup_temp temp
14551     WHERE  --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14552                --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14553                temp.object_id = ppev.element_version_id
14554         AND    temp.process_number = l_process_number_temp
14555 	AND    ppev.object_type = 'PA_STRUCTURES'
14556         AND    ppr.project_id  = ppev.project_id
14557         AND    ppr.object_id = ppev.proj_element_id
14558         AND    ppr.object_type =  'PA_STRUCTURES'
14559         AND    ppr.as_of_date  = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
14560                                  ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/* Bug 3764224 */) -- FPM Dev CR 3
14561         AND    ppr.current_flag <>     'W'
14562         AND    ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
14563         AND    ppr.progress_status_code = pps2.project_status_code(+)
14564         AND    ppr.base_progress_status_code = pps3.project_status_code(+)
14565         AND    ppr.structure_type = p_structure_type
14566         AND    ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14567 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
14568         UNION
14569         --      select tasks
14570         SELECT pobj.object_id_from1
14571                 , ppev1.object_type     parent_object_type
14572                 , pobj.object_id_to1
14573                 , ppev2.object_type     object_type
14574                 , nvl(ppev2.wbs_level,0) wbs_level  -- sridhar_rollup
14575                 , pobj.weighting_percentage
14576                 , ppr.EFF_ROLLUP_PERCENT_COMP   rollup_completed_percentage
14577                 , ppr.completed_percentage override_percent_complete
14578 		, ppr.as_of_date
14579                 , ppr.actual_start_date
14580                 , ppr.actual_finish_date
14581                 , ppr.estimated_start_date
14582                 , ppr.estimated_finish_date
14583                 , pps1.project_status_weight rollup_weight1     ---rollup       progress        status code
14584                 , pps2.project_status_weight override_weight2 ---override progress status code
14585                 , pps3.project_status_weight base_weight3        ---base prog status
14586                 , pps4.project_status_weight    task_weight4
14587                 , ppe.status_code
14588                 , ppev2.proj_element_id object_id
14589                 , ppev2.proj_element_id
14590 		, ppr.PPL_ACT_EFFORT_TO_DATE
14591                 , ppr.PPL_ACT_COST_TO_DATE_TC
14592                 , ppr.PPL_ACT_COST_TO_DATE_PC
14593                 , ppr.PPL_ACT_COST_TO_DATE_FC
14594 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
14595 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
14596 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
14597                 , ppr.ESTIMATED_REMAINING_EFFORT
14598                 , ppr.PPL_ETC_COST_TC
14599                 , ppr.PPL_ETC_COST_PC
14600                 , ppr.PPL_ETC_COST_FC
14601                 , ppr.PPL_ETC_RAWCOST_TC
14602                 , ppr.PPL_ETC_RAWCOST_PC
14603                 , ppr.PPL_ETC_RAWCOST_FC
14604 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
14605 		, ppr.EQPMT_ACT_COST_TO_DATE_TC
14606                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
14607                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
14608 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
14609 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
14610 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
14611                 , ppr.EQPMT_ETC_EFFORT
14612                 , ppr.EQPMT_ETC_COST_TC
14613                 , ppr.EQPMT_ETC_COST_PC
14614                 , ppr.EQPMT_ETC_COST_FC
14615                 , ppr.EQPMT_ETC_RAWCOST_TC
14616                 , ppr.EQPMT_ETC_RAWCOST_PC
14617                 , ppr.EQPMT_ETC_RAWCOST_FC
14618 		, ppr.OTH_QUANTITY_TO_DATE
14619                 , ppr.OTH_ACT_COST_TO_DATE_TC
14620                 , ppr.OTH_ACT_COST_TO_DATE_PC
14621                 , ppr.OTH_ACT_COST_TO_DATE_FC
14622 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
14623 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
14624 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
14625 		, ppr.OTH_ETC_QUANTITY
14626                 , ppr.OTH_ETC_COST_TC
14627                 , ppr.OTH_ETC_COST_PC
14628                 , ppr.OTH_ETC_COST_FC
14629                 , ppr.OTH_ETC_RAWCOST_TC
14630                 , ppr.OTH_ETC_RAWCOST_PC
14631                 , ppr.OTH_ETC_RAWCOST_FC
14632                 , ppr.CURRENT_FLAG
14633                 , ppr.PROJFUNC_COST_RATE_TYPE
14634                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
14635                 , ppr.PROJFUNC_COST_RATE_DATE
14636                 , ppr.PROJ_COST_RATE_TYPE
14637                 , ppr.PROJ_COST_EXCHANGE_RATE
14638                 , ppr.PROJ_COST_RATE_DATE
14639                 , ppr.TXN_CURRENCY_CODE
14640                 , ppr.PROG_PA_PERIOD_NAME
14641                 , ppr.PROG_GL_PERIOD_NAME
14642                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
14643                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14644                                          p_structure_type,p_working_wp_prog_flag) BAC_value
14645                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
14646                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
14647                                          p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
14648                 , null earned_value
14649 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
14650 		, ppr.progress_rollup_id
14651 		, ppr.record_version_number
14652 	--	, pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
14653 		, ppr.object_version_id -- Bug 4651304
14654                 , ppr.progress_status_code
14655                 , ppr.incremental_work_quantity
14656                 , ppr.cumulative_work_quantity
14657 		-- 4533112 : Added decode to select N and Y only
14658                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
14659                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
14660                 , ppr.percent_complete_id
14661                 , ppr.TASK_WT_BASIS_CODE
14662                 , ppr.structure_version_id
14663                 ,'N' create_required
14664                 ,'N' update_required
14665 		, ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14666           FROM
14667                   pa_object_relationships       pobj,
14668                   pa_proj_element_versions      ppev1,
14669                   pa_proj_element_versions      ppev2,
14670                   pa_progress_rollup ppr,
14671                   pa_proj_elements      ppe,
14672                   pa_project_statuses pps1,
14673                   pa_project_statuses pps2,
14674                   pa_project_statuses pps3,
14675                   pa_project_statuses pps4,
14676             pa_task_types ttype ,
14677             pa_proj_rollup_temp temp
14678         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14679           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14680               temp.object_id = pobj.object_id_from1
14681           AND temp.process_number = l_process_number_temp
14682           AND pobj.object_id_from1 = ppev1.element_version_id
14683           AND pobj.object_id_to1 = ppev2.element_version_id
14684           AND pobj.relationship_type = 'S'
14685           AND ppr.project_id = ppev2.project_id
14686           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
14687                                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id, ppev2.proj_element_id/*Bug 3764224 */) -- FPM Dev CR 3
14688           AND ppr.current_flag <> 'W'
14689           AND ppr.object_id     = ppev2.proj_element_id
14690           AND ppr.project_id = ppev2.project_id
14691           AND ppr.object_type = 'PA_TASKS'
14692           AND ppe.proj_element_id = ppev2.proj_element_id
14693           AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
14694           AND ppr.progress_status_code = pps2.project_status_code(+)
14695           AND ppr.base_progress_status_code = pps3.project_status_code(+)
14696           AND ppe.status_code = pps4.project_status_code(+)
14697           AND ppe.project_id = ppev2.project_id
14698           AND ppe.object_type = ppev2.object_type
14699           AND ppev2.object_type = 'PA_TASKS'
14700           AND ppe.object_type = 'PA_TASKS'
14701           AND ppe.link_task_flag <> 'Y' -- 4392189
14702           AND pobj.object_type_to = 'PA_TASKS'
14703           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
14704           AND ppe.type_id = ttype.task_type_id
14705           AND ((l_published_structure = 'Y' AND ppr.structure_version_id is null) OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14706           AND ppr.structure_type = p_structure_type
14707 	  AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
14708 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
14709 UNION ALL
14710           SELECT to_number(null)        object_id_from1
14711                 , ppev.object_type parent_object_type
14712                 , element_version_id object_id_to1
14713                 , ppev.object_type object_type
14714                 , nvl(ppev.wbs_level,0) wbs_level  -- sridhar_rollup
14715                 , to_number( null )     weighting_percentage
14716                 , to_number(null) rollup_completed_percentage
14717                 , to_number(null) override_percent_complete
14718 		, to_date(null) as_of_date
14719                 , to_date(null) actual_start_date
14720                 , to_date(null) actual_finish_date
14721                 , to_date(null) estimated_start_date
14722                 , to_date(null) estimated_finish_date
14723                 , to_number(null) rollup_weight1 ---rollup progress status code
14724                 , to_number(null) override_weight2      ---override progress    status code
14725                 , to_number(null) base_weight3     --base       prog    status
14726                 , to_number( null )     task_weight4        --task status
14727                 , to_char(null) status_code
14728                 , ppev.proj_element_id object_id
14729                 , ppev.proj_element_id
14730 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
14731                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
14732                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
14733                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
14734 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
14735 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
14736 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
14737                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
14738                 , to_number( null )     PPL_ETC_COST_TC
14739                 , to_number( null )     PPL_ETC_COST_PC
14740                 , to_number( null )     PPL_ETC_COST_FC
14741                 , to_number( null )     PPL_ETC_RAWCOST_TC
14742                 , to_number( null )     PPL_ETC_RAWCOST_PC
14743                 , to_number( null )     PPL_ETC_RAWCOST_FC
14744 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
14745                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
14746                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
14747                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
14748 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
14749 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
14750 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
14751                 , to_number( null )     EQPMT_ETC_EFFORT
14752                 , to_number( null )     EQPMT_ETC_COST_TC
14753                 , to_number( null )     EQPMT_ETC_COST_PC
14754                 , to_number( null )     EQPMT_ETC_COST_FC
14755                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
14756                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
14757                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
14758 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
14759                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
14760                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
14761                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
14762 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
14763 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
14764 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
14765 		, to_number(  null    ) OTH_ETC_QUANTITY
14766                 , to_number( null )     OTH_ETC_COST_TC
14767                 , to_number( null )     OTH_ETC_COST_PC
14768                 , to_number( null )     OTH_ETC_COST_FC
14769                 , to_number( null )     OTH_ETC_RAWCOST_TC
14770                 , to_number( null )     OTH_ETC_RAWCOST_PC
14771                 , to_number( null )     OTH_ETC_RAWCOST_FC
14772                 , to_char(null) CURRENT_FLAG
14773                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
14774                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
14775                 , to_date(null) PROJFUNC_COST_RATE_DATE
14776                 , to_char(null) PROJ_COST_RATE_TYPE
14777                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
14778                 , to_date(null) PROJ_COST_RATE_DATE
14779                 , to_char(null) TXN_CURRENCY_CODE
14780                 , to_char(null) PROG_PA_PERIOD_NAME
14781                 , to_char(null) PROG_GL_PERIOD_NAME
14782                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag) BAC_value
14783                 , pa_progress_utils.Get_BAC_Value(ppev.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',p_fin_rollup_method), ppev.proj_element_id, ppev.element_version_id, p_structure_type,p_working_wp_prog_flag,'N')
14784                    BAC_value_self -- bug 4493105
14785                 , null earned_value
14786 		, to_char(null) task_derivation_method
14787 		, to_number(null)     progress_rollup_id
14788 		, to_number(null)     record_version_number
14789                 , element_version_id object_version_id
14790                 , to_char(null) progress_status_code
14791                 , to_number(null) incremental_work_quantity
14792                 , to_number(null) cumulative_work_quantity
14793 		-- 4533112 : Added N only
14794                 , 'N' base_progress_status_code
14795                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
14796                 , to_number(null) percent_complete_id
14797                 , to_char(null) TASK_WT_BASIS_CODE
14798                 , to_number(null) structure_version_id
14799                 ,'N'    create_required
14800                 ,'N'    update_required
14801 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14802           FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
14803           WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14804             --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14805             element_version_id  = temp.object_id
14806                 AND temp.process_number = l_process_number_temp
14807          AND    ppev.object_type =      'PA_STRUCTURES'
14808          AND    pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
14809                         ppev.proj_element_id, ppev.object_type,p_as_of_date, ppev.element_version_id, p_structure_type, l_structure_version_id, ppev.proj_element_id/*Bug 3764224 */)
14810                         IS      NULL
14811 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
14812         UNION
14813         --      select tasks
14814         SELECT pobj.object_id_from1
14815                 , ppev1.object_type     parent_object_type
14816                 , pobj.object_id_to1
14817                 , ppev2.object_type     object_type
14818                 , nvl(ppev2.wbs_level,0) wbs_level  -- sridhar_rollup
14819                 , pobj.weighting_percentage
14820                 , to_number(null) rollup_completed_percentage
14821                 , to_number(null) override_percent_complete
14822 		, to_date(null) as_of_date
14823                 , to_date(null) actual_start_date
14824                 , to_date(null) actual_finish_date
14825                 , to_date(null) estimated_start_date
14826                 , to_date(null) estimated_finish_date
14827                 , to_number(null) rollup_weight1 ---rollup progress status code
14828                 , to_number(null) override_weight2      ---override progress    status code
14829                 , to_number(null) base_weight3     --base       prog    status
14830                 , to_number( null )     task_weight4        --task status
14831                 , to_char(null) status_code
14832                 , ppev2.proj_element_id object_id
14833                 , ppev2.proj_element_id
14834 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
14835                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
14836                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
14837                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
14838 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
14839 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
14840 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
14841                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
14842                 , to_number( null )     PPL_ETC_COST_TC
14843                 , to_number( null )     PPL_ETC_COST_PC
14844                 , to_number( null )     PPL_ETC_COST_FC
14845                 , to_number( null )     PPL_ETC_RAWCOST_TC
14846                 , to_number( null )     PPL_ETC_RAWCOST_PC
14847                 , to_number( null )     PPL_ETC_RAWCOST_FC
14848 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
14849                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
14850                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
14851                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
14852 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
14853 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
14854 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
14855                 , to_number( null )     EQPMT_ETC_EFFORT
14856                 , to_number( null )     EQPMT_ETC_COST_TC
14857                 , to_number( null )     EQPMT_ETC_COST_PC
14858                 , to_number( null )     EQPMT_ETC_COST_FC
14859                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
14860                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
14861                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
14862 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
14863                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
14864                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
14865                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
14866 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
14867 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
14868 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
14869 		, to_number(  null    ) OTH_ETC_QUANTITY
14870                 , to_number( null )     OTH_ETC_COST_TC
14871                 , to_number( null )     OTH_ETC_COST_PC
14872                 , to_number( null )     OTH_ETC_COST_FC
14873                 , to_number( null )     OTH_ETC_RAWCOST_TC
14874                 , to_number( null )     OTH_ETC_RAWCOST_PC
14875                 , to_number( null )     OTH_ETC_RAWCOST_FC
14876                 , to_char(null) CURRENT_FLAG
14877                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
14878                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
14879                 , to_date(null) PROJFUNC_COST_RATE_DATE
14880                 , to_char(null) PROJ_COST_RATE_TYPE
14881                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
14882                 , to_date(null) PROJ_COST_RATE_DATE
14883                 , to_char(null) TXN_CURRENCY_CODE
14884                 , to_char(null) PROG_PA_PERIOD_NAME
14885                 , to_char(null) PROG_GL_PERIOD_NAME
14886                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
14887                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
14888                                     p_structure_type,p_working_wp_prog_flag) BAC_value
14889                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
14890                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
14891                                     p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
14892                 , null earned_value
14893 		, decode(ppe.base_percent_comp_deriv_code,    null, ttype.base_percent_comp_deriv_code,'^',ttype.base_percent_comp_deriv_code,ppe.base_percent_comp_deriv_code) task_derivation_method
14894 		, to_number(null) progress_rollup_id
14895 		, to_number(null) record_version_number
14896                 , pobj.object_id_to1 object_version_id
14897                 , to_char(null) progress_status_code
14898                 , to_number(null) incremental_work_quantity
14899                 , to_number(null) cumulative_work_quantity
14900 		-- 4533112 : Added N only
14901                 , 'N' base_progress_status_code
14902                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
14903                 , to_number(null) percent_complete_id
14904                 , to_char(null) TASK_WT_BASIS_CODE
14905                 , to_number(null) structure_version_id
14906                 ,'N' create_required
14907                 ,'N' update_required
14908 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
14909           FROM
14910                   pa_object_relationships       pobj,
14911                   pa_proj_element_versions      ppev1,
14912                   pa_proj_element_versions      ppev2,
14913                   pa_proj_elements      ppe,
14914                   pa_project_statuses pps4,
14915             pa_task_types ttype ,
14916             pa_proj_rollup_temp temp
14917         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
14918           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
14919           pobj.object_id_from1  = temp.object_id
14920           AND temp.process_number = l_process_number_temp
14921           AND pobj.object_id_from1 = ppev1.element_version_id
14922           AND pobj.object_id_to1 = ppev2.element_version_id
14923           AND pobj.relationship_type = 'S'
14924           AND ppe.proj_element_id = ppev2.proj_element_id
14925           AND ppe.status_code = pps4.project_status_code(+)
14926           AND ppe.project_id = ppev2.project_id
14927           AND ppe.object_type = ppev2.object_type
14928           AND ppev2.object_type = 'PA_TASKS'
14929           AND ppe.object_type = 'PA_TASKS'
14930           AND ppe.link_task_flag <> 'Y' -- 4392189
14931           AND pobj.object_type_to = 'PA_TASKS'
14932           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
14933           AND ppe.type_id = ttype.task_type_id
14934           AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
14935                   ppev2.proj_element_id, ppev2.object_type,p_as_of_date, ppev2.element_version_id, p_structure_type, l_structure_version_id,     ppev2.proj_element_id/*Bug      3764224 */)
14936                   IS NULL
14937       AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
14938 AND temp.object_type = 'PA_TASKS' --  cklee bug: 6610612
14939  order by 5 desc      ; --sridhar_rollup
14940 
14941    -- FPM       Dev CR 6 : Added Union ALL
14942 
14943    l_asgn_task_version_id_tab                    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
14944    l_asgn_rate_based_flag_tab                    SYSTEM.PA_VARCHAR2_1_TBL_TYPE    :=    SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
14945    l_asgn_resource_class_code_tab                SYSTEM.PA_VARCHAR2_30_TBL_TYPE :=      SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
14946    l_asgn_res_assignment_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
14947    l_asgn_planned_quantity_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
14948    l_asgn_plan_bur_cost_pc_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
14949    l_asgn_res_list_member_id_tab                SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
14950 
14951    CURSOR       cur_assgn_rec_bulk(     c_task_ver_id NUMBER, c_task_id NUMBER )        IS
14952    SELECT       a.wbs_element_version_id
14953    ,    a.rate_based_flag
14954    ,    a.resource_class_code
14955    ,    a.resource_assignment_id
14956    ,    a.total_plan_quantity planned_quantity
14957    ,    a.total_project_burdened_cost   planned_bur_cost_proj_cur
14958    ,    a.resource_list_member_id
14959    from pa_resource_assignments a
14960    WHERE a.wbs_element_version_id = c_task_ver_id
14961    AND  1 = 2  -- sridhar_rollup
14962    AND a.project_id     = p_project_id
14963    AND a.task_id = c_task_id
14964 --   AND a.ta_display_flag        = 'Y' --Bug 4323537
14965 ;
14966 
14967 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER)      IS
14968 SELECT ppr.*
14969 FROM    pa_progress_rollup      ppr
14970 WHERE ppr.project_id = p_project_id
14971 AND ppr.object_id =     c_object_id
14972 AND ppr.proj_element_id = c_proj_element_id
14973 AND ppr.object_type     = 'PA_ASSIGNMENTS'
14974 AND ppr.current_flag <> 'W'
14975 AND ppr.structure_type =        p_structure_type
14976 AND ppr.as_of_date <= p_as_of_date
14977 AND ((l_published_structure =   'Y' AND ppr.structure_version_id is null)       OR (l_published_structure = 'N' AND ppr.structure_version_id = p_structure_version_id))
14978 AND rownum =1
14979 ORDER BY as_of_date     desc
14980 ;
14981 
14982 l_asgn_progress_rec     cur_get_asgn_progress%ROWTYPE;
14983 l_asgn_act_start_date    DATE;
14984 l_asgn_act_finish_date   DATE;
14985 l_asgn_est_start_date    DATE;
14986 l_asgn_est_finish_date   DATE;
14987 l_asgn_as_of_date       DATE;
14988 l_asgn_ppl_act_eff      NUMBER;
14989 l_asgn_eqp_act_eff      NUMBER;
14990 l_asgn_ppl_act_cost     NUMBER;
14991 l_asgn_eqp_act_cost     NUMBER;
14992 l_asgn_oth_act_cost     NUMBER;
14993 l_asgn_ppl_etc_eff      NUMBER;
14994 l_asgn_eqp_etc_eff      NUMBER;
14995 l_asgn_ppl_etc_cost     NUMBER;
14996 l_asgn_eqp_etc_cost     NUMBER;
14997 l_asgn_oth_etc_cost     NUMBER;
14998 l_asgn_earned_value     NUMBER;
14999 l_asgn_bac_value        NUMBER;
15000 
15001 -- FPM Dev CR 5 : Reverted back the outer       join
15002 -- FPM Dev CR 4 : Removed       Outer   Join    from    rollup table.   No need to select       deliverables which do   not have rollup records
15003    --This       cursor selects  the deliverables of     a given task.
15004    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER,    c_task_ver_id NUMBER, c_project_id      NUMBER)
15005    IS
15006         SELECT obj.object_type_from
15007         , 'PA_TASKS' parent_object_type
15008         ,       obj.object_id_to2 object_id
15009         ,       obj.object_id_to1
15010         ,       obj.object_id_from1
15011         , 'PA_DELIVERABLES'     object_type
15012         , ppr.actual_finish_date
15013         , ppr.as_of_date
15014         , ppr.completed_percentage
15015         , ppr.STRUCTURE_TYPE
15016         , ppr.PROJ_ELEMENT_ID
15017         , ppr.STRUCTURE_VERSION_ID
15018         , ppr.TASK_WT_BASIS_CODE
15019         , elem.progress_weight weighting_percentage
15020         , ppr.base_percent_complete
15021         , pps2.project_status_weight override_weight    ---override progress status code
15022         , pps3.project_status_weight base_weight          --base prog status
15023     FROM pa_proj_elements elem
15024     , pa_object_relationships   obj
15025     , pa_progress_rollup        ppr
15026     , pa_project_statuses pps2
15027     , pa_project_statuses pps3
15028         WHERE  obj.object_id_from2= c_task_proj_elem_id
15029         AND obj.object_type_from        =       'PA_TASKS'
15030         AND obj.object_type_to =        'PA_DELIVERABLES'
15031         AND obj.relationship_type = 'A'
15032         AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
15033         AND elem.proj_element_id        =       obj.object_id_to2
15034         AND elem.object_type = 'PA_DELIVERABLES'
15035         and elem.project_id     = p_project_id
15036 --        AND obj.object_id_to1 = ppr.object_version_id(+)
15037         AND ppr.object_type(+) =        'PA_DELIVERABLES'
15038         AND ppr.project_id(+) = c_project_id
15039         AND ppr.object_id(+) = obj.object_id_to2
15040         AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
15041                                   obj.object_id_to2, 'PA_DELIVERABLES',p_as_of_date,obj.object_id_to1, p_structure_type, l_structure_version_id, obj.object_id_from2 /* Bug     3764224 */) --  FPM Dev CR 3
15042         AND ppr.structure_type(+) = p_structure_type
15043         AND ppr.structure_version_id is null -- deliverable progress for        working version is not allowed
15044         AND ppr.base_progress_status_code = pps3.project_status_code(+)
15045         AND ppr.progress_status_code = pps2.project_status_code(+)
15046         AND ppr.current_flag(+) <>      'W'
15047         ;
15048 
15049     CURSOR c_mass_rollup_tasks IS
15050     select distinct object_id_from1
15051     from    pa_object_relationships
15052     start with  object_id_to1 IN (select object_id from pa_proj_rollup_temp  where process_number = l_process_number_temp)
15053     and relationship_type = 'S'
15054     connect by prior object_id_from1 = object_id_to1
15055     and relationship_type = 'S'
15056     MINUS
15057     select object_id object_id_from1 from pa_proj_rollup_temp  where process_number = l_process_number_temp
15058     ;
15059 
15060     CURSOR c_mass_rollup_tasks_temp IS
15061     select object_id
15062     from pa_proj_rollup_temp where process_number = l_process_number_temp
15063         ;
15064 
15065    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
15066    IS
15067    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
15068    FROM pa_proj_elem_ver_structure str
15069    ,    pa_project_statuses     status
15070    where str.element_version_id = c_structure_version_id
15071    AND str.project_id = c_project_id
15072    AND str.status_code =        status.project_status_code;
15073 
15074    CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
15075    IS
15076    SELECT element_version_id
15077    FROM pa_proj_element_versions
15078    where project_id = c_project_id
15079    and object_type = 'PA_TASKS'
15080    AND parent_structure_version_id      = c_structure_version_id
15081    AND wbs_level = (Select max(wbs_level)
15082                   From pa_proj_element_versions
15083                   where project_id = c_project_id
15084                   and object_type =     'PA_TASKS'
15085                   AND parent_structure_version_id = c_structure_version_id);
15086 
15087 l_track_wp_cost_flag            VARCHAR2(1) :=  'Y';    --bug 3830434
15088 l_assignment_exists      VARCHAR2(1) ;  -- Bug 3830673
15089 l_digit_number           number; --BUG  3950574,        rtarway
15090 
15091 --bug 4045979,  start
15092 l_base_struct_ver_id NUMBER;
15093 
15094 CURSOR check_task_baselined(c_structure_ver_id NUMBER,  c_task_version_id NUMBER)
15095 IS
15096   select 'Y' from pa_proj_element_versions ppev1
15097   where ppev1.parent_structure_version_id = c_structure_ver_id
15098   and ppev1.proj_element_id =   (select proj_element_id from pa_proj_element_versions ppev2
15099                                   where ppev2.element_version_id =      c_task_version_id
15100                                   and ppev2.project_id =        p_project_id);
15101 
15102 l_task_baselined VARCHAR2(1) := 'N';
15103 l_parent_task_baselined VARCHAR2(1) :=  'N';
15104 
15105 --bug 4045979,  end
15106 
15107 l_tsk_progress_exists VARCHAR2(1);
15108 l_mapping_tasks_to_rollup_tab   PA_PLSQL_DATATYPES.NumTabTyp;
15109 
15110 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
15111 CURSOR cur_tree_rollup_dates
15112 IS
15113 select /*+ leading (ROLLUP) */ ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
15114 from pa_object_relationships obj
15115 , pa_proj_element_versions ver
15116 , pa_progress_rollup ppr
15117 , pa_proj_rollup_temp rollup
15118 , pa_proj_element_versions ver2
15119 where rollup.object_id = obj.object_id_to1
15120 AND rollup.process_number = l_process_number_temp
15121 AND obj.relationship_type = 'S'
15122 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
15123 AND obj.object_type_to = 'PA_TASKS'
15124 AND obj.object_id_from1= ver.element_version_id
15125 AND ver.project_id = p_project_id
15126 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
15127 AND ver.project_id = ppr.project_id
15128 AND ppr.as_of_date > p_as_of_date
15129 AND ppr.object_id = ver.proj_element_id
15130 AND ppr.current_flag = 'Y'
15131 AND ppr.proj_element_id = ver.proj_element_id
15132 AND ppr.structure_type = p_structure_type
15133 AND ppr.structure_version_id is null
15134 AND obj.object_id_to1 = ver2.element_version_id
15135 AND ver2.project_id = p_project_id
15136 AND ver2.object_type = 'PA_TASKS'
15137 AND rollup.object_type = 'PA_TASKS' --  cklee bug: 6610612
15138 order by ppr.as_of_date;
15139 
15140 
15141 -- Bug 4392189 Begin
15142 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
15143 SELECT
15144   ppv2.project_id                     sub_project_id
15145  ,ppv2.element_version_id             sub_structure_ver_id
15146  ,ppv2.proj_element_id                sub_proj_element_id
15147 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
15148                                     'WORKPLAN','N')    sub_project_bac_value
15149 FROM
15150      pa_proj_element_versions ppv2
15151     ,pa_proj_elem_ver_structure ppevs2
15152     ,pa_object_relationships por1
15153     ,pa_object_relationships por2
15154 WHERE
15155   por1.object_id_from1 = c_task_version_id
15156  AND por1.object_id_to1 = por2.object_id_from1
15157  AND por2.object_id_to1 = ppv2.element_version_id
15158  AND ppv2.object_type = 'PA_STRUCTURES'
15159 -- AND por2.relationship_type in ( 'LW', 'LF' )
15160  AND por2.relationship_type = 'LW'
15161  AND ppevs2.element_version_id = ppv2.element_version_id
15162  AND ppevs2.project_id = ppv2.project_id
15163  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
15164  AND ppevs2.latest_eff_published_flag = 'Y';
15165 
15166 l_sub_project_id    NUMBER;
15167 l_sub_structure_ver_id  NUMBER;
15168 l_sub_proj_element_id   NUMBER;
15169 l_sub_project_bac_value NUMBER;
15170 
15171 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
15172 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
15173 SELECT
15174 ppr.progress_rollup_id
15175 ,ppr.actual_start_date
15176 ,ppr.actual_finish_date
15177 ,ppr.estimated_start_date
15178 ,ppr.estimated_finish_date
15179 ,pps1.project_status_weight rollup_weight1
15180 ,pps2.project_status_weight override_weight2
15181 ,pps3.project_status_weight base_weight3
15182 ,pps4.project_status_weight task_weight4
15183 -- Bug 4506009 --,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
15184 --                                    ( nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0))) earned_value
15185 ,decode(c_task_per_comp_deriv_method,'EFFORT', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,0)
15186         , nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +  nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0) +  nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,0)) bac_value
15187 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
15188 FROM
15189 pa_progress_rollup ppr
15190 ,pa_project_statuses pps1
15191 ,pa_project_statuses pps2
15192 ,pa_project_statuses pps3
15193 ,pa_project_statuses pps4
15194 ,pa_proj_elements ppe
15195 WHERE
15196 1 = 2 and   --sridhar_rollup
15197 ppr.project_id = c_sub_project_id
15198 AND ppe.project_id = c_sub_project_id
15199 AND ppe.object_type = 'PA_STRUCTURES'
15200 AND ppe.proj_element_id = c_sub_proj_element_id
15201 AND ppr.object_id = c_sub_proj_element_id
15202 AND ppr.object_type = 'PA_STRUCTURES'
15203 AND ppr.structure_version_id is null
15204 AND ppr.structure_type = 'WORKPLAN'
15205 AND ppr.current_flag IN ('Y', 'N')
15206 AND ppr.as_of_date <= c_as_of_date
15207 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
15208 AND ppr.progress_status_code =  pps2.project_status_code(+)
15209 AND ppr.base_progress_status_code = pps3.project_status_code(+)
15210 AND ppe.status_code = pps4.project_status_code(+)
15211 order by as_of_date desc
15212  ;
15213 
15214 
15215 l_subproj_prog_rollup_id    NUMBER;
15216 l_subproj_act_start_date    DATE;
15217 l_subproj_act_finish_date   DATE;
15218 l_subproj_est_start_date    DATE;
15219 l_subproj_est_finish_date   DATE;
15220 l_subproj_rollup_weight1    NUMBER;
15221 l_subproj_override_weight2  NUMBER;
15222 l_subproj_base_weight3      NUMBER;
15223 l_subproj_task_weight4      NUMBER;
15224 l_subproj_earned_value      NUMBER;
15225 l_subproj_bac_value     NUMBER;
15226 l_subproj_comp_percentage       NUMBER; --Bug 4506009
15227 l_actual_lowest_task        VARCHAR2(1) := 'N';
15228 -- Bug 4392189 End
15229 
15230 l_summary_object_flag       VARCHAR2(1); -- 4370746
15231 l_wp_version_enabled_flag   VARCHAR2(1); -- Bug#12393400
15232 
15233 -- Bug 4506461 Begin
15234 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
15235 SELECT 'Y'
15236 FROM pa_object_relationships
15237 WHERE --relationship_type in ( 'LW', 'LF' )
15238 relationship_type = 'LW'
15239 AND object_id_from1 IN
15240     (SELECT object_id_to1
15241     FROM pa_object_relationships
15242     START WITH  object_id_from1 = c_task_version_id
15243     AND relationship_type = 'S'
15244     CONNECT BY PRIOR object_id_to1 = object_id_from1
15245     AND relationship_type = 'S')
15246     ;
15247 l_subproject_found VARCHAR2(1):='N';
15248 l_rederive_base_pc VARCHAR2(1):='N';
15249 -- Bug 4506461 End
15250 
15251 l_last_as_of_date   DATE;--4573257
15252 l_subproj_task_version_id NUMBER;--4582956
15253 l_org_id NUMBER; -- 4746476
15254 
15255 CURSOR c1_rolldates(c_task_ver_id NUMBER, c_task_id NUMBER)        IS
15256       select scheduled_start_date, scheduled_finish_date from pa_proj_elem_ver_schedule a
15257 	  where a.project_id     = p_project_id
15258       AND a.proj_element_id = c_task_id and a.element_version_id = c_task_ver_id;
15259 
15260 l_tsk_sch_start_date        pa_proj_elem_ver_schedule.scheduled_start_date%TYPE;
15261 l_tsk_sch_finish_date       pa_proj_elem_ver_schedule.scheduled_finish_date%TYPE;
15262 l_cnt number := 0;
15263 
15264 /*
15265 cursor c_progress_parent(c_project_id number)
15266 IS
15267      SELECT object_id_from1
15268          FROM pa_object_relationships
15269          WHERE relationship_type = 'S'
15270          START WITH object_id_to1 in (select p.element_version_id
15271 		 from PA_PROJ_ELEMENT_VERSIONS p where p.project_id =  c_project_id and defer_code in ( 'P','S'))
15272          AND relationship_type = 'S'
15273          CONNECT BY PRIOR object_id_from1 = object_id_to1
15274          AND relationship_type = 'S';
15275 		 */
15276 cursor c_progress_parent(c_project_id number)
15277 IS
15278 	SELECT /*+ CONNECT_BY_FILTERING */ element_version_id object_id_from1
15279 		FROM PA_PROJ_ELEMENTS_TMP r
15280 		START WITH  r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'P' ) CONNECT BY
15281 		r.TASK_ID =  prior r.PARENT_TASK_ID;
15282 
15283 type NumberArray
15284 IS
15285   TABLE OF NUMBER INDEX BY binary_integer;
15286 
15287 l_prog_obj      NumberArray;
15288 l_tmp_prog      NumberArray;
15289 BEGIN
15290 	-- Rollup       Cases
15291 	-- 1. Workplan  Publsihed       Version Rollup.
15292 	-- 2. Workplan  Working Version Rollup.
15293 	-- 3. Financial Structure       Rollup.
15294 	-- 4. Entire WBS using structure version id.
15295 	-- 5. Program Rollup
15296 
15297 	g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
15298 
15299 	IF g1_debug_mode  = 'Y' THEN
15300 			pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PVT');
15301 	END IF;
15302 
15303 	IF g1_debug_mode  = 'Y' THEN
15304 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT Start : Passed Parameters :', x_Log_Level=> 3);
15305 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_init_msg_list='||p_init_msg_list, x_Log_Level=>     3);
15306 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
15307 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=>     3);
15308 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
15309 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
15310 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
15311 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
15312 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_max_msg_count='||p_max_msg_count, x_Log_Level=>     3);
15313 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
15314 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
15315 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
15316 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_object_version_id='||p_object_version_id, x_Log_Level=> 3);
15317 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id='||p_task_version_id,       x_Log_Level=>   3);
15318 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_as_of_date='||p_as_of_date, x_Log_Level=> 3);
15319 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_lowest_level_task='||p_lowest_level_task, x_Log_Level=> 3);
15320 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_process_whole_tree='||p_process_whole_tree, x_Log_Level=> 3);
15321 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_version_id='||p_structure_version_id,     x_Log_Level=> 3);
15322 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
15323 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_fin_rollup_method='||p_fin_rollup_method, x_Log_Level=> 3);
15324 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_wp_rollup_method='||p_wp_rollup_method, x_Log_Level=> 3);
15325 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_rollup_entire_wbs='||p_rollup_entire_wbs, x_Log_Level=> 3);
15326 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
15327 	END IF;
15328 
15329 	l_wp_version_enabled_flag := NVL(PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(p_project_id), 'N'); -- Bug#12393400
15330 
15331 	-- 20 May : Amit : If Structure_version_id is null, then no rocessing shd  be done
15332 	-- Bug 3856161 : Added     p_as_of_date check also
15333 	IF p_structure_version_id IS NULL OR (p_as_of_date IS NULL OR p_as_of_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE ) THEN
15334 		return;
15335 	END IF;
15336 
15337 	--bug 4045979
15338 	l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
15339 
15340 	--BUG 4355204, rtarway
15341 	--IF (p_commit =  FND_API.G_TRUE) THEN
15342 		savepoint ROLLUP_PVT2;
15343 	--END IF;
15344 
15345 	IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
15346 			RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15347 	END IF;
15348 
15349 	IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE))     THEN
15350 			FND_MSG_PUB.initialize;
15351 	END IF;
15352 
15353 	/* sridhar_rollup
15354 	PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
15355 			p_calling_module        => 'AMG'
15356 			,p_project_id           => p_project_id
15357 			,p_structure_version_id => p_structure_version_id
15358 			,p_baselined_str_ver_id => pa_project_structure_utils.get_baseline_struct_ver(p_project_id)
15359 			,p_program_rollup_flag  => 'Y'
15360 			,p_calling_context      => 'SUMMARIZE'
15361 			,p_as_of_date           => p_as_of_date -- Fix for Bug # 4251406.
15362 			,x_return_status        => l_return_status
15363 			,x_msg_count            => l_msg_count
15364 			,x_msg_data             => l_msg_data
15365 	);
15366     */
15367 	l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
15368 	l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --bug 3830434
15369     -- 4746476 : added org_id in below select
15370     SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
15371 
15372 	IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
15373 			l_split_workplan := 'Y';
15374 	ELSE
15375 			l_split_workplan := 'N';
15376 	END IF;
15377 
15378 	-- Bug 4938333
15379 	-- In case of financial struture, no need to check for published version
15380 	-- populate structure_version_id always null.
15381 	IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
15382 		-- This is to find out  whether passed  struture version id     is published or not.
15383 		-- bcoz progress for workplna workplan version also exists
15384 		OPEN  cur_check_published_version(p_structure_version_id, p_project_id);
15385 		FETCH cur_check_published_version INTO l_published_structure;
15386 		CLOSE cur_check_published_version;
15387 
15388 		IF l_published_structure = 'Y' THEN
15389 			l_structure_version_id := null;
15390 		ELSE
15391 			l_structure_version_id := p_structure_version_id;
15392 		END IF;
15393 	ELSE -- Bug 4938333
15394 		l_published_structure := 'Y'; -- Bug 4938333
15395         l_structure_version_id := null; -- Bug 4938333
15396 	END IF;
15397 
15398 	l_task_version_id := p_task_version_id;
15399 
15400 	IF p_structure_type = 'WORKPLAN' THEN
15401 		l_rollup_method := p_wp_rollup_method;
15402 	ELSE
15403 		l_rollup_method := p_fin_rollup_method;
15404 	END IF;
15405 
15406 	IF g1_debug_mode  =     'Y'     THEN
15407 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled,       x_Log_Level=>   3);
15408 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
15409 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
15410 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_task_version_id='||l_task_version_id,       x_Log_Level=>   3);
15411 	END IF;
15412 
15413 	--l_lowest_task := p_lowest_task;
15414 	-- Loop thru all the parents of the passed task
15415 
15416 	SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
15417 	INTO  l_process_number_temp FROM dual;
15418 
15419     IF p_rollup_entire_wbs = 'N' THEN
15420 	-- sridhar_rollup
15421 		null;
15422     ELSE
15423         IF g1_debug_mode = 'Y' THEN
15424             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
15425             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl.count='||p_task_version_id_tbl.count, x_Log_Level=> 3);
15426             FOR i in 1..p_task_version_id_tbl.count LOOP
15427                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_task_version_id_tbl(i)='||p_task_version_id_tbl(i), x_Log_Level=> 3);
15428             END LOOP;
15429         END IF;
15430 
15431         IF p_task_version_id_tbl.count > 0 THEN
15432 			-- sridhar_rollup
15433 			null;
15434         ELSE
15435 			/*INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15436 			SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15437 			FROM pa_proj_element_versions
15438 			WHERE project_id = p_project_id
15439 			AND parent_structure_version_id = p_structure_version_id
15440 			AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
15441 			AND object_type = 'PA_TASKS'
15442 			UNION
15443 			SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15444 			FROM dual;*/
15445 			/*INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15446 				SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15447 				FROM PA_PROJ_ELEMENTS_TMP r
15448 				START WITH  r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'P' ) CONNECT BY
15449 				r.TASK_ID =  prior r.PARENT_TASK_ID
15450 			 UNION
15451 				SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15452 				FROM dual
15453 			 UNION
15454 				SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15455 				FROM PA_PROJ_ELEMENTS_TMP r where connect_by_isleaf = 0
15456 				START WITH  r.TASK_ID in ( select distinct task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code = 'S' ) CONNECT BY
15457 				prior r.TASK_ID =    r.PARENT_TASK_ID
15458 			 UNION
15459 				SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15460 				FROM PA_PROJ_ELEMENTS_TMP r where r.defer_code = 'S' ;*/
15461 		INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
15462 			SELECT /*+ CONNECT_BY_FILTERING */  l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15463 			FROM PA_PROJ_ELEMENTS_TMP r
15464 			START WITH  r.TASK_ID in ( select distinct parent_task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code in ( 'P','C')  ) CONNECT BY
15465 			r.TASK_ID =  prior r.PARENT_TASK_ID
15466 		UNION
15467 			SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
15468 			FROM dual
15469 		UNION
15470 			SELECT /*+ CONNECT_BY_FILTERING */  l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15471 			FROM PA_PROJ_ELEMENTS_TMP r where connect_by_isleaf = 0
15472 			START WITH  r.TASK_ID in ( select distinct task_id from PA_PROJ_ELEMENTS_TMP t1 where t1.defer_code in ('D', 'S' )) CONNECT BY
15473 			r.TASK_ID =    Prior r.PARENT_TASK_ID
15474 		UNION
15475 			SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15476 			FROM PA_PROJ_ELEMENTS_TMP r where r.defer_code in ('D','S')
15477 		UNION
15478 			SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
15479 			FROM PA_PROJ_ELEMENTS_TMP r where r.task_id  in  ( select distinct tt.top_task_id  from  PA_PROJ_ELEMENTS_TMP  tt where  tt.defer_code in ('D','S','C','P') ) ;
15480 
15481 
15482 			l_tmp_prog.delete;
15483 			OPEN  c_progress_parent(p_project_id);
15484 		    FETCH c_progress_parent BULK COLLECT INTO l_tmp_prog;
15485 		    CLOSE c_progress_parent;
15486 
15487 			l_prog_obj.delete;
15488 			FOR  i in 1..l_tmp_prog.count loop
15489 				l_prog_obj(l_tmp_prog(i) ) := l_tmp_prog(i);
15490             end loop;
15491 			-- Added below code on Oct28 for structure level rollup
15492 			l_prog_obj(p_structure_version_id ) := p_structure_version_id;
15493         END IF;
15494     END IF;
15495 
15496     IF g1_debug_mode = 'Y' THEN
15497         l_mass_rollup_prog_rec_tab.delete;
15498 		OPEN  c_mass_rollup_tasks_temp;
15499 		FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
15500 		CLOSE c_mass_rollup_tasks_temp;
15501 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab.count='||l_mass_rollup_prog_rec_tab.count, x_Log_Level=> 3);
15502         FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
15503             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_mass_rollup_prog_rec_tab(i)='||l_mass_rollup_prog_rec_tab(i), x_Log_Level=> 3);
15504         END LOOP;
15505         l_mass_rollup_prog_rec_tab.delete;
15506     END IF;
15507 
15508     OPEN cur_tasks(1);
15509     FETCH cur_tasks BULK COLLECT INTO
15510     l_tsk_object_id_from1_tab
15511     ,l_tsk_parent_object_type_tab
15512     ,l_tsk_object_id_to1_tab
15513     ,l_tsk_object_type_tab
15514     ,l_tsk_wbs_level_tab
15515     ,l_tsk_weighting_percent_tab
15516     ,l_tsk_roll_comp_percent_tab
15517     ,l_tsk_over_percent_comp_tab
15518     ,l_tsk_as_of_date_tab
15519     ,l_tsk_actual_start_date_tab
15520     ,l_tsk_actual_finish_date_tab
15521     ,l_tsk_est_start_date_tab
15522     ,l_tsk_est_finish_date_tab
15523     ,l_tsk_rollup_weight1_tab
15524     ,l_tsk_override_weight2_tab
15525     ,l_tsk_base_weight3_tab
15526     ,l_tsk_task_weight4_tab
15527     ,l_tsk_status_code_tab
15528     ,l_tsk_object_id_tab
15529     ,l_tsk_proj_element_id_tab
15530     ,l_tsk_PPL_ACT_EFF_tab
15531     ,l_tsk_PPL_ACT_COST_TC_tab
15532     ,l_tsk_PPL_ACT_COST_PC_tab
15533     ,l_tsk_PPL_ACT_COST_FC_tab
15534     ,l_tsk_PPL_ACT_RAWCOST_TC_tab
15535     ,l_tsk_PPL_ACT_RAWCOST_PC_tab
15536     ,l_tsk_PPL_ACT_RAWCOST_FC_tab
15537     ,l_tsk_EST_REM_EFFORT_tab
15538     ,l_tsk_PPL_ETC_COST_TC_tab
15539     ,l_tsk_PPL_ETC_COST_PC_tab
15540     ,l_tsk_PPL_ETC_COST_FC_tab
15541     ,l_tsk_PPL_ETC_RAWCOST_TC_tab
15542     ,l_tsk_PPL_ETC_RAWCOST_PC_tab
15543     ,l_tsk_PPL_ETC_RAWCOST_FC_tab
15544     ,l_tsk_EQPMT_ACT_EFFORT_tab
15545     ,l_tsk_EQPMT_ACT_COST_TC_tab
15546     ,l_tsk_EQPMT_ACT_COST_PC_tab
15547     ,l_tsk_EQPMT_ACT_COST_FC_tab
15548     ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
15549     ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
15550     ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
15551     ,l_tsk_EQPMT_ETC_EFFORT_tab
15552     ,l_tsk_EQPMT_ETC_COST_TC_tab
15553     ,l_tsk_EQPMT_ETC_COST_PC_tab
15554     ,l_tsk_EQPMT_ETC_COST_FC_tab
15555     ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
15556     ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
15557     ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
15558     ,l_tsk_OTH_QUANTITY_tab
15559     ,l_tsk_OTH_ACT_COST_TC_tab
15560     ,l_tsk_OTH_ACT_COST_PC_tab
15561     ,l_tsk_OTH_ACT_COST_FC_tab
15562     ,l_tsk_OTH_ACT_RAWCOST_TC_tab
15563     ,l_tsk_OTH_ACT_RAWCOST_PC_tab
15564     ,l_tsk_OTH_ACT_RAWCOST_FC_tab
15565     ,l_tsk_OTH_ETC_QUANTITY_tab
15566     ,l_tsk_OTH_ETC_COST_TC_tab
15567     ,l_tsk_OTH_ETC_COST_PC_tab
15568     ,l_tsk_OTH_ETC_COST_FC_tab
15569     ,l_tsk_OTH_ETC_RAWCOST_TC_tab
15570     ,l_tsk_OTH_ETC_RAWCOST_PC_tab
15571     ,l_tsk_OTH_ETC_RAWCOST_FC_tab
15572     ,l_tsk_CURRENT_FLAG_tab
15573     ,l_tsk_PF_COST_RATE_TYPE_tab
15574     ,l_tsk_PF_COST_EXC_RATE_tab
15575     ,l_tsk_PF_COST_RATE_DATE_tab
15576     ,l_tsk_P_COST_RATE_TYPE_tab
15577     ,l_tsk_P_COST_EXC_RATE_tab
15578     ,l_tsk_P_COST_RATE_DATE_tab
15579     ,l_tsk_TXN_CURRENCY_CODE_tab
15580     ,l_tsk_PROG_PA_PERIOD_NAME_tab
15581     ,l_tsk_PROG_GL_PERIOD_NAME_tab
15582     ,l_tsk_bac_value_tab
15583     ,l_tsk_bac_self_value_tab -- Bug 4493105
15584     ,l_tsk_earned_value_tab
15585     ,l_tsk_deriv_method_tab
15586     ,l_tsk_progress_rollup_id_tab
15587     ,l_tsk_rollup_rec_ver_num_tab
15588     ,l_tsk_object_version_id_tab
15589     ,l_tsk_progress_stat_code_tab
15590     ,l_tsk_incremental_wq_tab
15591     ,l_tsk_cumulative_wq_tab
15592     ,l_tsk_base_prog_stat_code_tab
15593     ,l_tsk_eff_roll_prg_st_code_tab
15594     ,l_tsk_percent_complete_id_tab
15595     ,l_tsk_task_wt_basis_code_tab
15596     ,l_tsk_structure_version_id_tab
15597     ,l_tsk_create_required
15598     ,l_tsk_update_required
15599     ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
15600          ;
15601     CLOSE cur_tasks;
15602 
15603 
15604     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
15605 
15606     IF g1_debug_mode = 'Y' THEN
15607         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab.count='||l_tsk_object_id_to1_tab.count, x_Log_Level=> 3);
15608     END IF;
15609 
15610 	-- sridhar_rollup
15611 	l_defer_arr_task_id.delete;
15612 
15613     FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
15614 		-- sridhar_rollup
15615 		l_defer_arr_task_id(l_tsk_object_id_to1_tab(k)) :=  l_tsk_object_id_tab(k);
15616 
15617 		-- Bug 4636100 Issue 2 : Added following if
15618 		-- The intention of this IF is to just pass the structure level record
15619 		-- to scheduling API. Note that in structure case, we just pass one level
15620 		-- records below say task A, and if that below task A has an assignment, it will calculate
15621 		-- wrong % complete because we are not sending A's childs
15622 		IF ((nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
15623 			 OR(p_rollup_entire_wbs = 'N' AND nvl(l_task_version_id,-11) = nvl(p_structure_version_id,-12) AND l_tsk_object_id_to1_tab(k) = p_structure_version_id)
15624 			 OR (p_rollup_entire_wbs = 'Y'))
15625 		THEN
15626 				IF g1_debug_mode = 'Y' THEN
15627                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_object_id_to1_tab('||k||')='||l_tsk_object_id_to1_tab(k), x_Log_Level=> 3);
15628                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_deriv_method_tab('||k||')='||l_tsk_deriv_method_tab(k), x_Log_Level=> 3);
15629                   pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg =>'l_tsk_base_prog_stat_code_tab('||k||')='||l_tsk_base_prog_stat_code_tab(k), x_Log_Level=> 3);
15630                 END IF;
15631                 l_tsk_progress_exists := 'N';
15632                 l_parent_count := l_parent_count + 1;
15633                 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
15634                 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
15635 
15636                 IF g1_debug_mode = 'Y' THEN
15637 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
15638 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_summary_object_flag='||l_summary_object_flag, x_Log_Level=> 3);
15639                 END IF;
15640 
15641                 -- Bug 4392189 : Program Changes Begin
15642 				IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
15643 					l_sub_project_id := null;
15644 					l_subproj_prog_rollup_id := null;
15645 					l_subproj_act_start_date := null;
15646 					l_subproj_act_finish_date := null;
15647 					l_subproj_est_start_date := null;
15648 					l_subproj_est_finish_date := null;
15649 					l_subproj_rollup_weight1 := null;
15650 					l_subproj_override_weight2 := null;
15651 					l_subproj_base_weight3 := null;
15652 					l_subproj_task_weight4 := null;
15653 					l_subproj_earned_value := null;
15654 					l_subproj_bac_value := null;
15655 
15656 					-- 4587527 : It was not supporting multiple sub projects at link task
15657 					-- So converted it into FOR LOOP
15658 					FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
15659 						--IF l_sub_project_id IS NOT NULL THEN
15660 						IF g1_debug_mode = 'Y' THEN
15661 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_id='||rec_subproj.sub_project_id, x_Log_Level=> 3);
15662 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_structure_ver_id='||rec_subproj.sub_structure_ver_id, x_Log_Level=> 3);
15663 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_proj_element_id='||rec_subproj.sub_proj_element_id, x_Log_Level=> 3);
15664 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'rec_subproj.sub_project_bac_value='||rec_subproj.sub_project_bac_value, x_Log_Level=> 3);
15665 						END IF;
15666 						l_subproject_found := 'Y'; -- Bug 4506461
15667 						l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
15668 						IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
15669 							l_actual_lowest_task := 'Y';
15670 						END IF;
15671 
15672 						l_subproj_prog_rollup_id    := null;
15673 						l_subproj_act_start_date    := null;
15674 						l_subproj_act_finish_date   := null;
15675 						l_subproj_est_start_date    := null;
15676 						l_subproj_est_finish_date   := null;
15677 						l_subproj_rollup_weight1    := null;
15678 						l_subproj_override_weight2  := null;
15679 						l_subproj_base_weight3      := null;
15680 						l_subproj_task_weight4      := null;
15681 						l_subproj_bac_value     := null;
15682 						l_subproj_comp_percentage   := null;
15683 
15684 						OPEN c_get_sub_project_progress (rec_subproj.sub_project_id, rec_subproj.sub_structure_ver_id, rec_subproj.sub_proj_element_id, p_as_of_date, l_tsk_deriv_method_tab(k));
15685 						FETCH c_get_sub_project_progress INTO
15686 						  l_subproj_prog_rollup_id
15687 						, l_subproj_act_start_date
15688 						, l_subproj_act_finish_date
15689 						, l_subproj_est_start_date
15690 						, l_subproj_est_finish_date
15691 						, l_subproj_rollup_weight1
15692 						, l_subproj_override_weight2
15693 						, l_subproj_base_weight3
15694 						, l_subproj_task_weight4
15695 						--, l_subproj_earned_value Bug 4506009
15696 						, l_subproj_bac_value
15697 						, l_subproj_comp_percentage -- Bug 4506009
15698 						;
15699 						CLOSE c_get_sub_project_progress;
15700 
15701 						IF g1_debug_mode = 'Y' THEN
15702 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_subproj_prog_rollup_id='||l_subproj_prog_rollup_id, x_Log_Level=> 3);
15703 						END IF;
15704 
15705 						l_index := l_index + 1;
15706 
15707 						l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
15708 						l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
15709 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
15710 						l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_tsk_object_id_to1_tab(k);
15711 						l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
15712 						l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
15713 
15714 						-- 4533112 : Added following check
15715 						IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
15716 							l_rollup_table1(l_index).START_DATE1			:= l_subproj_act_start_date;
15717 							l_rollup_table1(l_index).FINISH_DATE1                   := l_subproj_act_finish_date;
15718 							l_rollup_table1(l_index).START_DATE2                    := l_subproj_est_start_date;
15719 							l_rollup_table1(l_index).FINISH_DATE2                   := l_subproj_est_finish_date;
15720 						END IF;
15721 						l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_subproj_comp_percentage, 0);
15722 						l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
15723 						-- 4582956 End
15724 
15725 						--    Rollup Progress Status Rollup
15726 						l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_subproj_rollup_weight1,0);       --rollup prog status
15727 						l_rollup_table1(l_index).PROGRESS_override1              := l_subproj_override_weight2;    --override prg  status
15728 
15729 						--    Base Progress Status Rollup
15730 						-- 4533112 : Base progress status is not used
15731 						--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2     := nvl( l_subproj_base_weight3, 0 );  --base prog status
15732 						--l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
15733 
15734 						--    Task Status Rollup
15735 						l_rollup_table1(l_index).task_status1                    := nvl( l_subproj_task_weight4, 0 );  -- task status
15736 						l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
15737 						l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
15738 						l_action_allowed                := 'Y';
15739 						l_rollup_table1(l_index).rollup_node1           := l_action_allowed;
15740 						l_rollup_table1(l_index).rollup_node2           := l_action_allowed;
15741 
15742 						IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
15743 							-- This means  Progress exists for the  corresponding task
15744 							l_tsk_progress_exists := 'Y';
15745 						END IF;
15746 						--END IF; -- l_sub_project_id IS NOT NULL THEN
15747 					END LOOP;
15748 				END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
15749                 -- Bug 4392189 : Program Changes End
15750 
15751                 -- Loop thru all task assignments of a passed parent
15752 				IF p_structure_type = 'WORKPLAN'
15753 				THEN
15754 					l_asgn_task_version_id_tab.delete;
15755 					l_asgn_rate_based_flag_tab.delete;
15756 					l_asgn_resource_class_code_tab.delete;
15757 					l_asgn_res_assignment_id_tab.delete;
15758 					l_asgn_planned_quantity_tab.delete;
15759 					l_asgn_plan_bur_cost_pc_tab.delete;
15760 					l_asgn_res_list_member_id_tab.delete;
15761 
15762 					OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
15763 					FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
15764 					, l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
15765 					, l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
15766 					CLOSE cur_assgn_rec_bulk;
15767 
15768 					IF g1_debug_mode = 'Y' THEN
15769 						pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',x_Msg => 'l_asgn_task_version_id_tab.count='||l_asgn_task_version_id_tab.count, x_Log_Level=> 3);
15770 					END IF;
15771 
15772 					FOR i in 1..l_asgn_task_version_id_tab.count LOOP
15773 						IF g1_debug_mode = 'Y' THEN
15774 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_assignment_id_tab('||i||')='||l_asgn_res_assignment_id_tab(i), x_Log_Level=> 3);
15775 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_res_list_member_id_tab('||i||')='||l_asgn_res_list_member_id_tab(i), x_Log_Level=> 3);
15776 						END IF;
15777 
15778 						l_asgn_progress_rec := null;
15779 						l_asgn_act_start_date := null;
15780 						l_asgn_act_finish_date := null;
15781 						l_asgn_est_start_date := null;
15782 						l_asgn_est_finish_date := null;
15783 						l_asgn_as_of_date := null;
15784 						l_asgn_ppl_act_eff := null;
15785 						l_asgn_eqp_act_eff := null;
15786 						l_asgn_ppl_act_cost := null;
15787 						l_asgn_eqp_act_cost := null;
15788 						l_asgn_oth_act_cost := null;
15789 						l_asgn_ppl_etc_eff := null;
15790 						l_asgn_eqp_etc_eff := null;
15791 						l_asgn_ppl_etc_cost := null;
15792 						l_asgn_eqp_etc_cost := null;
15793 						l_asgn_oth_etc_cost := null;
15794 
15795 						OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
15796 						FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
15797 						CLOSE cur_get_asgn_progress;
15798 
15799 						IF g1_debug_mode  = 'Y' THEN
15800 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.object_id='||l_asgn_progress_rec.object_id, x_Log_Level=> 3);
15801 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_asgn_progress_rec.as_of_date='||l_asgn_progress_rec.as_of_date, x_Log_Level=> 3);
15802 						END IF;
15803 
15804 						IF l_asgn_progress_rec.object_id is not null THEN
15805 							l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
15806 							l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
15807 							l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
15808 							l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
15809 							l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
15810 
15811 							l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
15812 							l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
15813 							l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
15814 							l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
15815 							l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
15816 
15817 							l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
15818 							l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
15819 							l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
15820 							l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
15821 							l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
15822 
15823 							 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
15824 								 l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) +  nvl(l_asgn_eqp_act_eff,0);
15825 								 IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
15826 									IF l_asgn_ppl_etc_eff IS NULL THEN
15827 										l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15828 									ELSE
15829 										l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
15830 									END IF;
15831 								 ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
15832 									IF l_asgn_eqp_etc_eff IS NULL THEN
15833 										l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15834 									ELSE
15835 										l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
15836 									END IF;
15837 								 ELSE
15838 									l_asgn_bac_value := 0;
15839 								 END IF;
15840 							 ELSE
15841 								 l_asgn_earned_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_oth_act_cost,0);
15842 								 IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
15843 									IF l_asgn_ppl_etc_cost IS NULL THEN
15844 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15845 									ELSE
15846 										l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
15847 									END IF;
15848 								 ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
15849 									   IF l_asgn_eqp_etc_cost IS NULL THEN
15850 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15851 									   ELSE
15852 										l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
15853 									   END IF;
15854 								 ELSE
15855 									   IF l_asgn_oth_etc_cost IS NULL THEN
15856 										l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15857 									   ELSE
15858 										l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
15859 									   END IF;
15860 								 END IF;
15861 							 END IF;
15862 						ELSE
15863 							l_asgn_earned_value := 0;
15864 							IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
15865 								IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
15866 									l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
15867 								ELSE
15868 									l_asgn_bac_value := 0;
15869 								END IF;
15870 							ELSE
15871 								l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
15872 							END IF;
15873 						END IF;
15874 
15875 						l_index := l_index + 1;
15876 
15877 						l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_ASSIGNMENTS';
15878 						l_rollup_table1(l_index).OBJECT_ID                      := l_asgn_res_assignment_id_tab(i);
15879 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
15880 						l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_asgn_task_version_id_tab(i);
15881 						l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning       some    value so that order     by in   scheduling API  works
15882 						l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
15883 
15884 						-- Percent Complete needs to be derived using Earned Value and BAC Value
15885 
15886 						-- Percent Complete at Assignment level does not get calculated
15887 						-- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
15888 
15889 						--Bug 13916539: Added 'WQ_DERIVED' and 'DELIVERABLE' in the if condition since the Actual Dates for summary task should be inclusive of both resource assignment actual dates
15890 						--  and child task actual dates, regardless of the PPC Method.
15891 						-- IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
15892 						IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST','WQ_DERIVED','DELIVERABLE')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
15893 							 -- Actual Date Rollup : Only Start     Date    gets    rolls up.
15894 							 l_rollup_table1(l_index).START_DATE1                    := l_asgn_act_start_date;
15895 							 l_rollup_table1(l_index).FINISH_DATE1                    := l_asgn_act_finish_date;
15896 
15897 							 -- Estimated Date Rollup  : Only Start Date    gets    rolls   up.
15898 							 l_rollup_table1(l_index).START_DATE2                    := l_asgn_est_start_date;
15899 							 l_rollup_table1(l_index).FINISH_DATE2                    := l_asgn_est_finish_date;
15900 						END IF;
15901 
15902 						-- Progress Status entry is not  there at assignment     level
15903 						-- Assignment Status entry is not there at assignment level
15904 						-- Earned Value and BAC Rollup
15905 						IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
15906 							l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
15907 							l_rollup_table1(l_index).BAC_VALUE1                     := 1;
15908 							-- 4392189 : Program Reporting Changes - Phase 2
15909 							-- Having Set2 columns to get Project level % complete
15910 							l_rollup_table1(l_index).EARNED_VALUE2                  := 0;
15911 							l_rollup_table1(l_index).BAC_VALUE2                     := 1;
15912 						ELSE
15913 							l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_asgn_earned_value, 0 );
15914 							l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_asgn_bac_value, 0 );
15915 							-- 4392189 : Program Reporting Changes - Phase 2
15916 							-- Having Set2 columns to get Project level % complete
15917 							l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( l_asgn_earned_value, 0 );
15918 							l_rollup_table1(l_index).BAC_VALUE2                     := NVL( l_asgn_bac_value, 0 );
15919 						END IF;
15920 
15921 						l_rollup_table1(l_index).DIRTY_FLAG1            :=      'Y';
15922 						l_rollup_table1(l_index).DIRTY_FLAG2            :=      'Y';
15923 						l_action_allowed :=     'Y';
15924 						l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
15925 						l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
15926 
15927 						IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS   NOT NULL THEN
15928 							-- This means  Progress exists for the  corresponding task
15929 							l_tsk_progress_exists := 'Y';
15930 						END IF;
15931 
15932 						--Bug#12393400 - Added - Begin
15933 						-- For resource assignments in working version,
15934 						-- the actual_finish_date should be NULL in case actual effort is not same as planned
15935 
15936 						IF (l_asgn_progress_rec.object_id IS NOT NULL -- progress exits for this assignment
15937 						AND l_asgn_planned_quantity_tab(i) <> l_asgn_progress_rec.ppl_act_effort_to_date
15938 						AND l_asgn_progress_rec.actual_finish_date IS NOT NULL) THEN
15939 						  -- Update to happen only version is disabled or on a working version when version enabled
15940 						  IF (l_wp_version_enabled_flag = 'N'
15941 							 OR (l_wp_version_enabled_flag = 'Y'AND l_asgn_progress_rec.structure_version_id IS NOT NULL) ) THEN
15942 							UPDATE PA_PROGRESS_ROLLUP
15943 							 SET ACTUAL_FINISH_DATE = NULL
15944 							 WHERE progress_rollup_id = l_asgn_progress_rec.progress_rollup_id;
15945 						  END IF;
15946 						END IF; -- end check for
15947 						--Bug#12393400 - Added - End
15948 
15949 					END LOOP;       -- Assignments  Loop
15950 				END IF;
15951 
15952                 -- Bug 3957792 : Added check for Cancelled tasks
15953 				IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k)   = 'DELIVERABLE'
15954 				   AND (PA_PROGRESS_UTILS.get_system_task_status(PA_PROGRESS_UTILS.get_task_status( p_project_id, l_tsk_proj_element_id_tab(k))) <> 'CANCELLED')
15955 				THEN
15956 					FOR cur_del_rec in cur_deliverables(l_tsk_proj_element_id_tab(k), l_tsk_object_id_to1_tab(k), p_project_id)   LOOP    -- FPM Change
15957 						IF g1_debug_mode  = 'Y' THEN
15958 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_del_rec.object_id_to1='||cur_del_rec.object_id_to1, x_Log_Level=> 3);
15959 						END IF;
15960 
15961 						l_index := l_index + 1;
15962 
15963 						l_rollup_table1(l_index).OBJECT_TYPE             := cur_del_rec.object_type;
15964 						l_rollup_table1(l_index).OBJECT_ID               := cur_del_rec.object_id_to1;--Object Version Id       of Deliverable
15965 						l_rollup_table1(l_index).PARENT_OBJECT_TYPE      := cur_del_rec.parent_object_type;
15966 						l_rollup_table1(l_index).PARENT_OBJECT_ID        := l_tsk_object_id_to1_tab(k);--Object Version Id      of Task
15967 						l_rollup_table1(l_index).WBS_LEVEL               := 9999999;
15968 						l_rollup_table1(l_index).CALENDAR_ID             := l_index;
15969 
15970 						-- Rollup       Percent Complete Rollup
15971 						l_rollup_table1(l_index).task_weight1            := nvl( cur_del_rec.weighting_percentage, 0 );
15972 						l_rollup_table1(l_index).PERCENT_COMPLETE1       := nvl( cur_del_rec.completed_percentage, 0 );
15973 						-- 4392189 : Program Reporting Changes - Phase 2
15974 						-- Having Set2 columns to get Project level % complete
15975 						l_rollup_table1(l_index).task_weight2            := nvl( cur_del_rec.weighting_percentage, 0 );
15976 						l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_del_rec.completed_percentage, 0 );
15977 
15978 						--l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR     2
15979 
15980 						-- Base Percent Complete Rollup
15981 
15982 						-- Dates will not get rolled up for deliverable
15983 
15984 						-- Rollup       Progress Status Rollup
15985 
15986 						-- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 :=  0;       --rollup       prog    status is       0 for deliverable as it is      lowest --       FPM Dev CR 2
15987 						l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;         --override prg status
15988 
15989 						-- Base Progress Status Rollup
15990 						-- 4533112 : Now base progress status is not used
15991 						--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
15992 						-- l_rollup_table1(l_index).PROGRESS_override2      := 0;        -- FPM Dev CR  2
15993 
15994 						l_rollup_table1(l_index).DIRTY_FLAG1      :=    'Y';
15995 						l_rollup_table1(l_index).DIRTY_FLAG2      :=    'Y';
15996 
15997 						-- Deliverable Status will not      get rolled up for deliverable
15998 
15999 						l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
16000 
16001 						IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
16002 							l_action_allowed := 'N';
16003 						END IF;
16004 
16005 						IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
16006 							l_action_allowed := 'N';
16007 						END IF;
16008 
16009 						IF g1_debug_mode  =     'Y'     THEN
16010 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed,     x_Log_Level=> 3);
16011 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Deliverable cur_del_rec.weighting_percentage='||cur_del_rec.weighting_percentage, x_Log_Level=> 3);
16012 						END IF;
16013 
16014 						l_rollup_table1(l_index).rollup_node1             :=    l_action_allowed;
16015 						l_rollup_table1(l_index).rollup_node2             :=    l_action_allowed;
16016 
16017 						--maansari4/10  temporarily passing     'Y' to rollup node.
16018 						-- need to investigate  why l_action_allowed is coming always as        'N'
16019 
16020 						l_rollup_table1(l_index).rollup_node1             :=    'Y';
16021 						l_rollup_table1(l_index).rollup_node2             :=    'Y';
16022 
16023 						IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL     THEN
16024 						  -- This means  Progress        exists for the  corresponding task
16025 						  l_tsk_progress_exists := 'Y';
16026 						END IF;
16027 					END LOOP;       -- Delivertables Loop
16028 				END IF;       -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES'   THEN
16029 
16030 			    l_index := l_index + 1;
16031 
16032 				l_rollup_table1(l_index).OBJECT_TYPE                     := l_tsk_object_type_tab(k);
16033 				l_rollup_table1(l_index).OBJECT_ID                       := l_tsk_object_id_to1_tab(k);--Task Version Id
16034 				l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := l_tsk_parent_object_type_tab(k);
16035 				l_rollup_table1(l_index).PARENT_OBJECT_ID                := l_tsk_object_id_from1_tab(k); --Parent    Task    Version Id
16036 				l_rollup_table1(l_index).WBS_LEVEL                       := NVL( l_tsk_wbs_level_tab(k),      0 );
16037 				l_rollup_table1(l_index).CALENDAR_ID                     := l_index;
16038                 -- 4582956 Begin
16039                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG      := l_summary_object_flag; -- 4370746
16040 				IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
16041 					-- 4586449 : Passing L for link tasks
16042 					--l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
16043 					l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
16044 				ELSE
16045 					l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := l_summary_object_flag;
16046 				END IF;
16047                 -- 4582956 end
16048 
16049 				-- Rollup Percent  Complete Rollup
16050 				l_rollup_table1(l_index).task_weight1                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
16051 				l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( l_tsk_roll_comp_percent_tab(k), 0    );
16052 				-- 4392189 : Program Reporting Changes - Phase 2
16053 				-- Having Set2 columns to get Project level % complete
16054 				l_rollup_table1(l_index).task_weight2                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
16055 				l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( l_tsk_base_percent_comp_tab(k), 0    );
16056 
16057 				--bug 4045979, start
16058 				l_task_baselined := 'N';
16059 				l_parent_task_baselined := 'N';
16060 				-- added if condition for bug 13923366 Huawei by skkoppul
16061 				-- In version disabled and shared structures, there will only be one occurence and hence no need to check
16062 				IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
16063 				   l_task_baselined := 'Y';
16064 				   l_parent_task_baselined := 'Y';
16065 				ELSE
16066 				   OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
16067 				   FETCH check_task_baselined INTO l_task_baselined;
16068 				   CLOSE check_task_baselined;
16069 
16070 				   OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
16071 				   FETCH check_task_baselined INTO l_parent_task_baselined;
16072 				   CLOSE check_task_baselined;
16073 				END IF;
16074 
16075 				OPEN c1_rolldates(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
16076 				FETCH c1_rolldates INTO l_tsk_sch_start_date, l_tsk_sch_finish_date;
16077 				CLOSE c1_rolldates;
16078 
16079 				-- 4392189 : Program Reporting Changes - Phase 2
16080 				-- Having Set2 columns to get Project level % complete
16081 
16082 				IF p_structure_type = 'WORKPLAN' AND  l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
16083 				THEN
16084 					l_rollup_table1(l_index).PERCENT_OVERRIDE1        := 0;
16085 					l_rollup_table1(l_index).PERCENT_OVERRIDE2        := 0;
16086 				ELSE
16087 					l_rollup_table1(l_index).PERCENT_OVERRIDE1        := l_tsk_over_percent_comp_tab(k);
16088 					--4557541 : For self % complete Override at tasks level would not be considered
16089 					--l_rollup_table1(l_index).PERCENT_OVERRIDE2        := l_tsk_over_percent_comp_tab(k);
16090 					l_rollup_table1(l_index).PERCENT_OVERRIDE2        := null;
16091 				END IF;
16092 
16093 				-- Bug 4284353 : Added below code
16094 				IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
16095 					l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
16096 					l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
16097 				END IF;
16098 
16099 				--    Actual Date Rollup
16100 				l_rollup_table1(l_index).START_DATE1                     := l_tsk_actual_start_date_tab(k);
16101 				l_rollup_table1(l_index).FINISH_DATE1                    := l_tsk_actual_finish_date_tab(k);
16102 
16103 				--    Estimated Date Rollup
16104 				l_rollup_table1(l_index).START_DATE2                     := l_tsk_est_start_date_tab(k);
16105 				l_rollup_table1(l_index).FINISH_DATE2                    := l_tsk_est_finish_date_tab(k);
16106 
16107 				--    Rollup Progress Status Rollup
16108 				l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_tsk_rollup_weight1_tab(k),0);       --rollup prog status
16109 				l_rollup_table1(l_index).PROGRESS_override1              := l_tsk_override_weight2_tab(k);    --override prg  status
16110 
16111 				--    Base Progress Status Rollup
16112 				-- 4533112 : base progress status is not used
16113 				--l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 );  --base prog status
16114 				--l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
16115 
16116 				--    Task Status Rollup
16117 				l_rollup_table1(l_index).task_status1                    := nvl( l_tsk_task_weight4_tab(k), 0 );  -- task status
16118 				-- 4392189 : Program Reporting Changes - Phase 2
16119 				-- Having Set2 columns to get Project level % complete
16120 				l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16121 				l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
16122 
16123 				--END IF;
16124 
16125 				-- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
16126 				-- in earned_value1 set
16127 				IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
16128 
16129 					l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
16130 							, l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k),  p_structure_version_id,
16131 							'WORKPLAN','N','Y');
16132 					-- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
16133 					--l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
16134 					l_rollup_table1(l_index).EARNED_VALUE2 := 1;
16135 				END IF;
16136 
16137 				l_rollup_table1(l_index).BAC_VALUE1              := NVL( l_tsk_bac_value_tab(k), 0 );
16138 
16139 				IF g1_debug_mode = 'Y' THEN
16140 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).BAC_VALUE1='||l_rollup_table1(l_index).BAC_VALUE1,     x_Log_Level=> 3);
16141 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE1='||l_rollup_table1(l_index).EARNED_VALUE1, x_Log_Level=> 3);
16142 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(l_index).EARNED_VALUE2='||l_rollup_table1(l_index).EARNED_VALUE2, x_Log_Level=> 3);
16143                 END IF;
16144 
16145 				-- 4586449 End
16146 
16147 				l_rollup_table1(l_index).BAC_VALUE2              := NVL( l_tsk_bac_self_value_tab(k), 0 ); -- Bug 4493105 --NVL( l_tsk_bac_value_tab(k),      0 );
16148 
16149 				-- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
16150 				-- Otheriwse it will look for deliverables and will result in 0 % complete
16151 				IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
16152 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
16153 				ELSE
16154 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
16155 					l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
16156 				END IF;
16157 
16158 				--    Bug 4207995 : Passing Dirty_flags always Y
16159 				--               IF (cur_tasks_rec.object_id_to1 =      p_object_version_id)    THEN
16160 				l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
16161 				l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
16162 				--               ELSE
16163 				--                       l_rollup_table1(l_index).DIRTY_FLAG1      := 'N';
16164 				--                       l_rollup_table1(l_index).DIRTY_FLAG2      := 'N';
16165 				--               END    IF;
16166 
16167 				l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
16168 
16169 				IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
16170 					l_action_allowed :=     'N';
16171 				END IF;
16172 
16173 				IF g1_debug_mode   = 'Y' THEN
16174 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed,    x_Log_Level=> 3);
16175                 END IF;
16176 
16177 				l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
16178 				l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
16179 
16180                 --maansari4/10  temporarily passing     'Y' to rollup node.
16181                 -- need to investigate  why l_action_allowed is coming always as        'N'
16182                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
16183                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
16184 
16185 				l_rollup_table1(l_index).START_DATE3 := l_tsk_sch_start_date;
16186 				l_rollup_table1(l_index).FINISH_DATE3 := l_tsk_sch_finish_date;
16187 
16188 				IF p_rollup_entire_wbs = 'Y' THEN
16189 					--    This    means Progress  exists for the  corresponding task
16190 					IF l_tsk_progress_exists        = 'Y' THEN
16191 						l_mass_rollup_prog_exists_tab.extend(1);
16192 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16193 					ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
16194 						l_mass_rollup_prog_exists_tab.extend(1);
16195 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16196 					ELSE --Amit Added on 20-Sep
16197 						l_mass_rollup_prog_exists_tab.extend(1);
16198 						l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
16199 					END IF;
16200 				END IF;
16201 				--l_mapping_tasks_to_rollup_tab(l_index):= k; -- sridhar_fix
16202 				l_mapping_tasks_to_rollup_tab(l_rollup_table1(l_index).OBJECT_ID):= k;
16203 				--IF (p_process_whole_tree = 'N' and l_parent_count  = 2) THEN
16204 					--        exit;
16205                 --END IF;
16206 		END IF; -- Bug 4636100 Issue 2 : Added Endif
16207     END LOOP;       -- End Tasks Loop
16208 
16209     --begin bug 3951982
16210     IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
16211           AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
16212           AND l_actual_lowest_task = 'N' -- Bug 4392189
16213     THEN
16214         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
16215         SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS',  1
16216         FROM dual;
16217 
16218         FOR cur_tasks_rec in cur_tasks(1) LOOP
16219             IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
16220                 IF g1_debug_mode  = 'Y' THEN
16221                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second task cursor for summary task with assignments',        x_Log_Level=>   3);
16222                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tasks_rec.object_id_to1='||cur_tasks_rec.object_id_to1,   x_Log_Level=> 3);
16223                 END IF;
16224                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(  cur_tasks_rec.status_code, 'PROGRESS_ROLLUP'    );
16225 
16226                 l_index := l_index + 1;
16227 
16228                 l_rollup_table1(l_index).OBJECT_TYPE                        :=      cur_tasks_rec.object_type;
16229                 l_rollup_table1(l_index).OBJECT_ID                          :=      cur_tasks_rec.object_id_to1;--Task      Version Id
16230                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE                 :=      cur_tasks_rec.parent_object_type;
16231                 l_rollup_table1(l_index).PARENT_OBJECT_ID                   :=      cur_tasks_rec.object_id_from1; --Parent Task    Version Id
16232                 l_rollup_table1(l_index).WBS_LEVEL                          :=      NVL( cur_tasks_rec.wbs_level, 0 );
16233                 l_rollup_table1(l_index).CALENDAR_ID                        :=      l_index;
16234                 l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG            :=      'Y'; -- 4370746
16235 
16236                 -- Rollup Percent Complete Rollup
16237                 l_rollup_table1(l_index).task_weight1                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
16238                 l_rollup_table1(l_index).PERCENT_COMPLETE1                  :=      nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
16239                 -- 4392189 : Program Reporting Changes - Phase 2
16240                 -- Having Set2 columns to get Project level % complete
16241                 l_rollup_table1(l_index).task_weight2                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
16242                 l_rollup_table1(l_index).PERCENT_COMPLETE2                  :=      nvl( cur_tasks_rec.base_percent_complete, 0 );
16243 
16244                 --bug 4045979, start
16245                 l_task_baselined := 'N';
16246                 l_parent_task_baselined := 'N';
16247                 -- added if condition for bug 13923366 by skkoppul
16248                 -- In version disabled and shared structures, there will only be one occurence and hence no need to check
16249                 IF PA_PROGRESS_PUB.G_STRUCTURE_SHARING_CODE = 'SHARE_FULL' AND PA_PROGRESS_PUB.G_IS_WP_VERSION_ENABLED = 'N' THEN
16250                    l_task_baselined := 'Y';
16251                    l_parent_task_baselined := 'Y';
16252                 ELSE
16253                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
16254                    FETCH check_task_baselined INTO l_task_baselined;
16255                    CLOSE check_task_baselined;
16256 
16257                    OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
16258                    FETCH check_task_baselined INTO l_parent_task_baselined;
16259                    CLOSE check_task_baselined;
16260                 END IF;
16261 
16262                 -- 4392189 : Program Reporting Changes - Phase 2
16263                 -- Having Set2 columns to get Project level % complete
16264 
16265                 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
16266                 THEN
16267                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := 0;
16268                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := 0;
16269                 ELSE
16270                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := cur_tasks_rec.override_percent_complete;
16271                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := null;
16272                 END IF;
16273                 --bug   4045979, end
16274                 -- Actual Date Rollup
16275                 l_rollup_table1(l_index).START_DATE1                        :=      cur_tasks_rec.actual_start_date;
16276                 l_rollup_table1(l_index).FINISH_DATE1                       :=      cur_tasks_rec.actual_finish_date;
16277 
16278                 -- Estimated Date Rollup
16279                 l_rollup_table1(l_index).START_DATE2                        :=      cur_tasks_rec.estimated_start_date;
16280                 l_rollup_table1(l_index).FINISH_DATE2                       :=      cur_tasks_rec.estimated_finish_date;
16281 
16282                 -- Rollup Progress Status   Rollup
16283                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1            :=      nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
16284                 l_rollup_table1(l_index).PROGRESS_override1                 :=      cur_tasks_rec.override_weight2;    --override prg status
16285 
16286                 -- Base Progress Status Rollup
16287 		        -- 4533112 : Base Progress Status is not used
16288                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl(    cur_tasks_rec.base_weight3, 0   );  --base prog status
16289                 --l_rollup_table1(l_index).PROGRESS_override2                 :=    0;  -- FPM Dev  CR 2
16290 
16291                 -- Task Status Rollup
16292                 l_rollup_table1(l_index).task_status1                       :=      nvl(    cur_tasks_rec.task_weight4, 0   );  -- task status
16293 
16294                 -- ETC Effort Rollup
16295                 l_rollup_table1(l_index).REMAINING_EFFORT1                  :=      NVL(    cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
16296                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                  :=      NVL(    cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
16297 
16298                 -- ETC Cost in Project Currency     Rollup
16299                 l_rollup_table1(l_index).ETC_COST1                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_PC, 0 );
16300                 l_rollup_table1(l_index).PPL_ETC_COST1                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_PC, 0 );
16301                 l_rollup_table1(l_index).EQPMT_ETC_COST1                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_PC, 0      );
16302 
16303                 -- ETC Cost in Project Functional Currency Rollup
16304                 l_rollup_table1(l_index).ETC_COST2                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_FC, 0 );
16305                 l_rollup_table1(l_index).PPL_ETC_COST2                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_FC, 0 );
16306                 l_rollup_table1(l_index).EQPMT_ETC_COST2                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_FC, 0      );
16307 
16308                 -- Sub Project ETC Effort   Rollup
16309                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
16310                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT,        0 );
16311 
16312                   --    Sub Project ETC Cost in Project Currency Rollup
16313                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
16314                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
16315                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
16316 
16317                   --    Sub Project ETC Cost in Project Functional      Currency Rollup
16318                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
16319                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
16320                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
16321 
16322                 -- 4392189 : Program Reporting Changes - Phase 2
16323                 -- Having Set2 columns to get Project level % complete
16324 
16325                 l_rollup_table1(l_index).EARNED_VALUE1              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
16326                 l_rollup_table1(l_index).BAC_VALUE1                 :=      NVL( cur_tasks_rec.BAC_VALUE, 0 );
16327 
16328                 l_rollup_table1(l_index).EARNED_VALUE2              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
16329                 l_rollup_table1(l_index).BAC_VALUE2                 :=      NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
16330 
16331                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
16332                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
16333                 -- Bug 4207995 : Passing Dirty_flags always Y
16334                 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
16335                  l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
16336                  l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
16337                 -- ELSE
16338                 --      l_rollup_table1(l_index).DIRTY_FLAG1         := 'N';
16339                 --      l_rollup_table1(l_index).DIRTY_FLAG2         := 'N';
16340                 -- END IF;
16341 
16342                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
16343 
16344                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
16345                     l_action_allowed := 'N';
16346                 END IF;
16347 
16348                 IF g1_debug_mode  = 'Y' THEN
16349                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
16350                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Tasks cur_tasks_rec.weighting_percentage='||cur_tasks_rec.weighting_percentage, x_Log_Level=> 3);
16351                 END IF;
16352 
16353                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
16354                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
16355 
16356                 --maansari4/10 temporarily passing 'Y' to rollup node.
16357                 -- need to  investigate why l_action_allowed        is coming       always as       'N'
16358                 l_rollup_table1(l_index).rollup_node1 := 'Y';
16359                 l_rollup_table1(l_index).rollup_node2 := 'Y';
16360             END IF;       --<<cur_tasks_rec.object_type   = 'PA_TASKS'
16361         END LOOP;
16362     END IF; --  p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
16363     --end bug 3951982
16364 
16365     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
16366 
16367     IF g1_debug_mode = 'Y' THEN
16368         FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
16369             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'First l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
16370         END LOOP;
16371     END IF;
16372 
16373     IF p_rollup_entire_wbs = 'Y' THEN
16374         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
16375 			INSERT INTO PA_PROJ_ROLLUP_TEMP(
16376 			PROCESS_NUMBER,
16377 			OBJECT_TYPE,
16378 			OBJECT_ID,
16379 			wbs_level)
16380 			VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
16381 
16382         l_mass_rollup_prog_exists_tab.delete;
16383 
16384         OPEN c_mass_rollup_tasks;
16385         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
16386         CLOSE c_mass_rollup_tasks;
16387 
16388         IF g1_debug_mode = 'Y' THEN
16389             FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
16390                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Second l_mass_rollup_prog_exists_tab(i)='||l_mass_rollup_prog_exists_tab(i), x_Log_Level=> 3);
16391             END LOOP;
16392         END IF;
16393 
16394         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
16395 			INSERT INTO PA_PROJ_ROLLUP_TEMP(
16396 			PROCESS_NUMBER,
16397 			OBJECT_TYPE,
16398 			OBJECT_ID,
16399 			wbs_level)
16400 			VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
16401 
16402     END IF;
16403 
16404 	-- FPM Dev CR 2 : Printing the  Rollup Table before     calling Generate Schedule
16405 	IF g1_debug_mode  =     'Y'     THEN
16406 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
16407 		FOR i IN 1..l_rollup_table1.count LOOP
16408 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
16409 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
16410 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
16411 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
16412 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
16413 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
16414 						' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
16415 						' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
16416 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
16417 						' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
16418 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
16419 						' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
16420 								' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
16421 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
16422 						' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
16423 								' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
16424 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
16425 						' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
16426 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
16427 						' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
16428 								' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
16429 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
16430 						' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
16431 								' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
16432 										' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
16433 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
16434 						' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
16435 								' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16436 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
16437 						' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
16438 				  ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
16439 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
16440 						' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16441 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='||l_rollup_table1(i).EARNED_VALUE2||
16442 						' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
16443 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
16444 					x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
16445 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
16446 		END LOOP;
16447 	END IF;
16448 
16449 	IF l_rollup_table1.count <= 0 THEN
16450         return;
16451     END IF;
16452 
16453 	--Added by rtarway for  bug 3950574
16454 	IF p_structure_type = 'WORKPLAN' THEN
16455 		l_digit_number := 8;  --Bug 6854114
16456 	ELSE
16457 		l_digit_number := 8;  --Bug 6854114
16458 	END IF;
16459 
16460     --  Bug 4207995 : Commented partial_flags in the below call
16461 
16462 	PA_SCHEDULE_OBJECTS_PVT.defer_generate_Schedule(
16463 	 p_commit                               => p_commit
16464 	,p_debug_mode                           => 'Y'
16465 	,x_return_status                        => l_return_status
16466 	,x_msg_count                            => l_msg_count
16467 	,x_msg_data                             => l_msg_data
16468 	,x_process_number                       => l_process_number
16469 	,p_data_structure                       => l_rollup_table1
16470 	,p_number_digit                         => l_digit_number
16471 	,p_process_flag1                        => 'Y'
16472 	,p_process_rollup_flag1                 => 'Y'
16473 	,p_process_progress_flag1               => 'Y'
16474 	,p_process_percent_flag1                => 'Y'
16475 	,p_process_effort_flag1                 => 'Y'
16476 	,p_process_task_status_flag1            => 'Y'
16477 	,p_process_flag2                        => 'Y'
16478 	,p_process_rollup_flag2                 => 'Y'
16479 	,p_process_progress_flag2               => 'Y'
16480 	,p_process_percent_flag2                => 'Y'
16481 	,p_process_ETC_Flag1                    => 'Y'
16482 	,p_process_ETC_Flag2                    => 'Y'
16483 	,p_partial_process_flag3                => 'Y'
16484 	,p_partial_dates_flag3                  => 'Y'
16485 	,p_process_flag3                        => 'Y'
16486 	,p_partial_effort_flag3                 => 'Y'
16487 	,p_process_rollup_flag3                 => 'Y'
16488 	,p_process_effort_flag3                 => 'Y'
16489 	,p_Rollup_Method                        => l_Rollup_Method
16490 	,p_calling_module                       => 'ROLLUP_API'
16491 	);
16492 
16493     IF g1_debug_mode = 'Y' THEN
16494         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=>      3);
16495     END IF;
16496 
16497 	IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
16498 	    PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
16499 								 p_msg_name       => l_msg_data);
16500 		x_msg_data := l_msg_data;
16501 	    x_return_status := 'E';
16502 	    RAISE  FND_API.G_EXC_ERROR;
16503 	END IF;
16504 
16505 	IF g1_debug_mode = 'Y' THEN
16506 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Doing  UPDATE_ROLLUP_PVT',   x_Log_Level=> 3);
16507 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'p_upd_new_elem_ver_id_flag'||p_upd_new_elem_ver_id_flag, x_Log_Level=> 3);
16508 	END IF;
16509 
16510     ----    **************  Updation Starts  ******************  ----------
16511 
16512     IF g1_debug_mode = 'Y' THEN
16513 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1.count ='||l_rollup_table1.count, x_Log_Level=> 3);
16514 		FOR i IN 1..l_rollup_table1.count LOOP
16515 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_TYPE ='||l_rollup_table1(i).OBJECT_TYPE, x_Log_Level=> 3);
16516 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'OBJECT_ID     ='||l_rollup_table1(i).OBJECT_ID, x_Log_Level=> 3);
16517 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_TYPE ='||l_rollup_table1(i).PARENT_OBJECT_TYPE, x_Log_Level=> 3);
16518 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PARENT_OBJECT_ID ='||l_rollup_table1(i).PARENT_OBJECT_ID, x_Log_Level=> 3);
16519 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'WBS_LEVEL     ='||l_rollup_table1(i).WBS_LEVEL, x_Log_Level=> 3);
16520 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
16521 				' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
16522 				' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
16523 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
16524 				' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
16525 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
16526 				' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
16527 					' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
16528 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
16529 				' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
16530 					' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
16531 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
16532 				' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
16533 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
16534 				' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
16535 					' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
16536 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
16537 				' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
16538 					' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
16539 						' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
16540 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
16541 				' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
16542 					' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16543 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_ETC_Cost1 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost1||
16544 				' SUB_PRJ_PPL_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST1||' SUB_PRJ_EQPMT_ETC_COST1 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST1||
16545 			  ' SUB_PRJ_ETC_Cost2 ='||l_rollup_table1(i).SUB_PRJ_ETC_Cost2||' SUB_PRJ_PPL_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST2||' SUB_PRJ_EQPMT_ETC_COST2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST2, x_Log_Level=> 3);
16546 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'SUB_PRJ_PPL_ETC_EFFORT1 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT1||' SUB_PRJ_EQPMT_ETC_EFFORT1   ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT1||
16547 				' SUB_PRJ_PPL_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT2||' SUB_PRJ_EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
16548 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'EARNED_VALUE1 ='||l_rollup_table1(i).EARNED_VALUE1||' BAC_VALUE1 ='||l_rollup_table1(i).BAC_VALUE1||' EARNED_VALUE2 ='
16549 			||l_rollup_table1(i).EARNED_VALUE2||
16550 				' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
16551 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT',
16552 			  x_Msg =>      'PERC_COMP_DERIVATIVE_CODE1 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1||' PERC_COMP_DERIVATIVE_CODE2 ='||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
16553 			pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
16554 		END LOOP;
16555 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'Getting Periods', x_Log_Level=> 3);
16556 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
16557      END IF;
16558 
16559     BEGIN
16560 	  -- 4746476 : Added org_id in functions call below
16561         l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
16562         l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
16563     EXCEPTION
16564         WHEN OTHERS THEN
16565             PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
16566                                 p_msg_name               => 'PA_FP_INVALID_DATE_RANGE');
16567 		    x_msg_data :=  'PA_FP_INVALID_DATE_RANGE';
16568 		    x_return_status :=     'E';
16569 		    x_msg_count := fnd_msg_pub.count_msg;
16570 		    RAISE  FND_API.G_EXC_ERROR;
16571     END ;
16572 
16573     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg   => 'After Getting Periods', x_Log_Level=> 3);
16574 
16575 
16576     /*  -- sridhar_rollup
16577 	FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
16578 
16579 
16580         IF g1_debug_mode   = 'Y' THEN
16581             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.object_id_to1='||cur_reverse_tree_rec.object_id_to1,      x_Log_Level=> 3);
16582             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_reverse_tree_rec.proj_element_id='||cur_reverse_tree_rec.proj_element_id, x_Log_Level=> 3);
16583         END IF;
16584 */
16585 
16586         FOR i in 1..l_rollup_table1.count LOOP
16587 /*         -- sridhar_rollup
16588            IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
16589 */
16590 -- sridhar_rollup new if
16591             IF (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
16592 			THEN
16593 				-- Find the corresponding task rollup record data position
16594 				--task_index  := l_mapping_tasks_to_rollup_tab(i); -- sridhar_fix
16595 				task_index  := l_mapping_tasks_to_rollup_tab(l_rollup_table1(i).object_id);  -- sridhar_fix
16596 
16597 				IF g1_debug_mode  = 'Y' THEN
16598 					 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).object_id='||l_rollup_table1(i).object_id, x_Log_Level=> 3);
16599 					 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=>       3);
16600 				END IF;
16601 				-- Bug 3919211      Begin
16602 
16603 				-- sridhar_rollup start
16604 				/*
16605 				IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
16606 					 l_task_id := 0;
16607 				ELSE
16608 					 l_task_id := cur_reverse_tree_rec.proj_element_id;
16609 				END IF;
16610 				-- Bug 3919211 End
16611                  */
16612 
16613 				 IF p_structure_type = 'FINANCIAL' AND l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
16614 					 l_task_id := 0;
16615 				ELSE
16616 					 l_task_id := l_defer_arr_task_id(l_rollup_table1(i).object_id);
16617 				END IF;
16618 
16619 				 -- sridhar_rollup start
16620 
16621 				-- sridhar_rollup start
16622 
16623 				l_child_rollup_rec_exists := 'Y';
16624 				/*
16625 				IF p_rollup_entire_wbs='Y' THEN
16626 					BEGIN
16627 					    SELECT 'Y' into l_child_rollup_rec_exists
16628 							 FROM dual
16629 							 WHERE exists
16630 							 (
16631 							   SELECT       'xyz'
16632 							   from pa_proj_rollup_temp
16633 							   WHERE object_id = cur_reverse_tree_rec.object_id_to1
16634 							   and process_number = l_process_number_temp
16635 							 );
16636 					EXCEPTION
16637 					    WHEN OTHERS THEN
16638 							l_child_rollup_rec_exists := 'N';
16639 					END;
16640 				END IF;
16641 */
16642                  -- sridhar_rollup end
16643 
16644                 IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
16645 
16646 
16647                          l_eff_rollup_status_code := null;
16648                          l_progress_status_code := null;
16649 
16650                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
16651                          FETCH cur_status INTO l_eff_rollup_status_code;
16652                          CLOSE cur_status;
16653 
16654                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
16655                          FETCH cur_status INTO l_progress_status_code;
16656                          CLOSE cur_status;
16657 
16658                          IF g1_debug_mode  = 'Y' THEN
16659                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_eff_rollup_status_code='||l_eff_rollup_status_code, x_Log_Level=> 3);
16660                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_progress_status_code='||l_progress_status_code,     x_Log_Level=>   3);
16661                          END IF;
16662 
16663 
16664                          -- FPM dev CR 4 : Initialized the values to null
16665                          l_rolled_up_per_comp :=        null;
16666                          l_rolled_up_prog_stat := null;
16667                          l_rolled_up_base_prog_stat := null;
16668                          l_rolled_up_prog_stat := null;
16669                          l_remaining_effort1 := null;
16670                          l_percent_complete1 := null;
16671                          l_ETC_Cost_PC    :=    null;
16672                          l_PPL_ETC_COST_PC := null;
16673                          l_EQPMT_ETC_COST_PC := null;
16674                          l_ETC_Cost_FC          :=      null;
16675                          l_PPL_ETC_COST_FC       :=     null;
16676                          l_EQPMT_ETC_COST_FC := null;
16677                          l_EQPMT_ETC_EFFORT     := null;
16678                          l_BAC_VALUE1 := null;
16679                          l_EARNED_VALUE1 :=     null;
16680                          l_remaining_effort1 := null;
16681                          l_EQPMT_ETC_EFFORT     := null;
16682                          l_OTH_ACT_COST_TO_DATE_PC :=   null;
16683                          l_PPL_ACT_COST_TO_DATE_PC :=   null;
16684                          l_EQPMT_ACT_COST_TO_DATE_PC := null;
16685                          l_OTH_ACT_COST_TO_DATE_FC :=   null;
16686                          l_PPL_ACT_COST_TO_DATE_FC :=   null;
16687                          l_EQPMT_ACT_COST_TO_DATE_FC := null;
16688                          l_PPL_ACT_EFFORT_TO_DATE := null;
16689                          l_EQPMT_ACT_EFFORT_TO_DATE := null;
16690                          -- Bug 3621404 : Raw Cost Changes
16691                          l_OTH_ACT_RAWCOST_TO_DATE_PC   := null;
16692                          l_PPL_ACT_RAWCOST_TO_DATE_PC   := null;
16693                          l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
16694                          l_OTH_ACT_RAWCOST_TO_DATE_FC   := null;
16695                          l_PPL_ACT_RAWCOST_TO_DATE_FC   := null;
16696                          l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
16697                          l_ETC_RAWCost_PC := null;
16698                          l_PPL_ETC_RAWCOST_PC :=        null;
16699                          l_EQPMT_ETC_RAWCOST_PC := null;
16700                          l_ETC_RAWCost_FC := null;
16701                          l_PPL_ETC_RAWCOST_FC :=        null;
16702                          l_EQPMT_ETC_RAWCOST_FC := null;
16703                          l_actual_start_date := l_rollup_table1(i).start_date1;
16704                          l_actual_finish_date :=        l_rollup_table1(i).finish_date1;
16705                          l_estimated_start_date := l_rollup_table1(i).start_date2;
16706                          l_estimated_finish_date        := l_rollup_table1(i).finish_date2;
16707 
16708                          l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
16709                          l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
16710 
16711 
16712                          IF g1_debug_mode  = 'Y' THEN
16713 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_per_comp='||l_rolled_up_per_comp, x_Log_Level=>   3);
16714 							 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rolled_up_prog_stat='||l_rolled_up_prog_stat,       x_Log_Level=> 3);
16715                          END IF;
16716 
16717                          IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task    value, we       shd get it for  each    task
16718                          THEN
16719 							 -- l_rolled_up_base_per_comp   := nvl(l_rollup_table1(i).percent_complete2,0);
16720 							 l_rolled_up_base_prog_stat := l_progress_status_code;
16721                          ELSE
16722 							 -- l_rolled_up_base_per_comp   := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
16723 							 l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
16724                          END IF;
16725 
16726                          l_PROGRESS_ROLLUP_ID := null;
16727                          l_rollup_rec_ver_number := null;
16728                          l_percent_complete_id := null;
16729                          IF l_tsk_progress_rollup_id_tab(task_index) IS NOT NULL AND l_tsk_as_of_date_tab(task_index) = p_as_of_date THEN
16730 							 l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
16731 							 l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
16732                          END IF;
16733 
16734 						IF g1_debug_mode  = 'Y' THEN
16735 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PROGRESS_ROLLUP_ID='||l_PROGRESS_ROLLUP_ID, x_Log_Level=> 3);
16736 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_rec_ver_number='||l_rollup_rec_ver_number, x_Log_Level=> 3);
16737 						END IF;
16738 
16739 						-- 4392189 : Program Reporting Changes - Phase 2
16740 						-- Having Set2 columns to get Project level % complete
16741 
16742 						IF p_structure_type = 'WORKPLAN' THEN
16743 							 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,8),0); --Bug 6854114
16744 							 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,8),0); --Bug 6854114
16745 						ELSE
16746 							 l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
16747 							 l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
16748 						END IF;
16749 
16750                         l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
16751 						l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
16752 
16753 						IF g1_debug_mode  = 'Y' THEN
16754 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).summary_object_flag='||l_rollup_table1(i).summary_object_flag, x_Log_Level=> 3);
16755 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).BAC_VALUE1='||l_rollup_table1(i).BAC_VALUE1, x_Log_Level=> 3);
16756 							pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).EARNED_VALUE1='||l_rollup_table1(i).EARNED_VALUE1, x_Log_Level=> 3);
16757 						END IF;
16758 
16759 						l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
16760 
16761 						IF p_wp_rollup_method = 'EFFORT' THEN
16762 							 l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
16763 						ELSE
16764 							 l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
16765 						END IF;
16766 
16767 						--bug 4317491, added a check of WORKPLAN
16768 						IF p_structure_type = 'WORKPLAN' THEN
16769 							BEGIN
16770                                  SELECT
16771 
16772                                  /*+    INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
16773                                         PERIOD_NAME
16774                                  ,      ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
16775                                  ,      ACT_PRJ_LABOR_BRDN_COST
16776                                  ,      ACT_PRJ_EQUIP_BRDN_COST
16777                                  ,      ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
16778                                  ,      ACT_POU_LABOR_BRDN_COST
16779                                  ,      ACT_POU_EQUIP_BRDN_COST
16780                                  ,      ACT_LABOR_HRS
16781                                  ,      ACT_EQUIP_HRS
16782                                  ,      ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
16783                                  ,      ETC_PRJ_LABOR_BRDN_COST
16784                                  ,      ETC_PRJ_EQUIP_BRDN_COST
16785                                  ,      ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
16786                                  ,      ETC_POU_LABOR_BRDN_COST
16787                                  ,      ETC_POU_EQUIP_BRDN_COST
16788                                  ,      ETC_LABOR_HRS
16789                                  ,      ETC_EQUIP_HRS
16790                                  ,      ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
16791                                  ,      ACT_PRJ_LABOR_RAW_COST
16792                                  ,      ACT_PRJ_EQUIP_RAW_COST
16793                                  ,      ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
16794                                  ,      ACT_POU_LABOR_RAW_COST
16795                                  ,      ACT_POU_EQUIP_RAW_COST
16796                                  ,      ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
16797                                  ,      ETC_PRJ_LABOR_RAW_COST
16798                                  ,      ETC_PRJ_EQUIP_RAW_COST
16799                                  ,      ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
16800                                  ,      ETC_POU_LABOR_RAW_COST
16801                                  ,      ETC_POU_EQUIP_RAW_COST
16802                                  ,      LABOR_HOURS
16803                                  ,      EQUIPMENT_HOURS
16804                                  ,  	POU_LABOR_BRDN_COST
16805                                  ,  	PRJ_LABOR_BRDN_COST
16806                                  ,  	POU_EQUIP_BRDN_COST
16807                                  ,  	PRJ_EQUIP_BRDN_COST
16808                                  ,  	POU_BRDN_COST - (     POU_EQUIP_BRDN_COST     + POU_LABOR_BRDN_COST )
16809                                  ,  	PRJ_BRDN_COST - (     PRJ_EQUIP_BRDN_COST     + PRJ_LABOR_BRDN_COST )
16810                                  ,  	POU_LABOR_RAW_COST
16811                                  ,  	PRJ_LABOR_RAW_COST
16812                                  ,  	POU_EQUIP_RAW_COST
16813                                  ,  	PRJ_EQUIP_RAW_COST
16814                                  ,  	POU_RAW_COST  - (     POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
16815                                  ,  	PRJ_RAW_COST  - (     PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
16816                                  INTO
16817 									    l_PERIOD_NAME
16818                                  ,      l_OTH_ACT_COST_TO_DATE_PC
16819                                  ,      l_PPL_ACT_COST_TO_DATE_PC
16820                                  ,      l_EQPMT_ACT_COST_TO_DATE_PC
16821                                  ,      l_OTH_ACT_COST_TO_DATE_FC
16822                                  ,      l_PPL_ACT_COST_TO_DATE_FC
16823                                  ,      l_EQPMT_ACT_COST_TO_DATE_FC
16824                                  ,      l_PPL_ACT_EFFORT_TO_DATE
16825                                  ,      l_EQPMT_ACT_EFFORT_TO_DATE
16826                                  ,      l_ETC_Cost_PC
16827                                  ,      l_PPL_ETC_COST_PC
16828                                  ,      l_EQPMT_ETC_COST_PC
16829                                  ,      l_ETC_Cost_FC
16830                                  ,      l_PPL_ETC_COST_FC
16831                                  ,      l_EQPMT_ETC_COST_FC
16832                                  ,      l_remaining_effort1
16833                                  ,      l_EQPMT_ETC_EFFORT
16834                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_PC
16835                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_PC
16836                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_PC
16837                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_FC
16838                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_FC
16839                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_FC
16840                                  ,      l_ETC_RAWCost_PC
16841                                  ,      l_PPL_ETC_RAWCOST_PC
16842                                  ,      l_EQPMT_ETC_RAWCOST_PC
16843                                  ,      l_ETC_RAWCost_FC
16844                                  ,      l_PPL_ETC_RAWCOST_FC
16845                                  ,      l_EQPMT_ETC_RAWCOST_FC
16846                                  ,      l_LABOR_HOURS
16847                                  ,      l_EQUIPMENT_HOURS
16848                                  ,      l_POU_LABOR_BRDN_COST
16849                                  ,      l_PRJ_LABOR_BRDN_COST
16850                                  ,      l_POU_EQUIP_BRDN_COST
16851                                  ,      l_PRJ_EQUIP_BRDN_COST
16852                                  ,      l_POU_OTH_BRDN_COST
16853                                  ,      l_PRJ_OTH_BRDN_COST
16854                                  ,      l_POU_LABOR_RAW_COST
16855                                  ,      l_PRJ_LABOR_RAW_COST
16856                                  ,      l_POU_EQUIP_RAW_COST
16857                                  ,      l_PRJ_EQUIP_RAW_COST
16858                                  ,      l_POU_OTH_RAW_COST
16859                                  ,      l_PRJ_OTH_RAW_COST
16860                                  FROM PJI_FM_XBS_ACCUM_TMP1
16861                                   WHERE project_id      = p_project_id
16862                                   AND struct_version_id = p_structure_version_id
16863                                   AND project_element_id        =   l_task_id -- sridhar_rollup    cur_reverse_tree_rec.proj_element_id
16864                                   AND plan_version_id > 0
16865                                   AND txn_currency_code is      null
16866                                   AND calendar_type     = 'A'
16867                                   AND res_list_member_id        is null;
16868 							EXCEPTION
16869                                  WHEN NO_DATA_FOUND     THEN
16870                                    null;
16871                                  WHEN OTHERS THEN
16872                                    fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
16873                                                                    p_procedure_name     => 'ROLLUP_PVT',
16874                                                                    p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
16875                                    RAISE FND_API.G_EXC_ERROR;
16876 							END;
16877 
16878 							IF g1_debug_mode  = 'Y'        THEN
16879 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
16880 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_PC: '||l_OTH_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
16881 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_PC: '||l_PPL_ACT_COST_TO_DATE_PC, x_Log_Level=> 3);
16882 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_PC: '||l_EQPMT_ACT_COST_TO_DATE_PC, x_Log_Level=>    3);
16883 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_COST_TO_DATE_FC: '||l_OTH_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
16884 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_COST_TO_DATE_FC: '||l_PPL_ACT_COST_TO_DATE_FC, x_Log_Level=> 3);
16885 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_COST_TO_DATE_FC: '||l_EQPMT_ACT_COST_TO_DATE_FC, x_Log_Level=>    3);
16886 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_EFFORT_TO_DATE: '||l_PPL_ACT_EFFORT_TO_DATE,        x_Log_Level=> 3);
16887 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_EFFORT_TO_DATE: '||l_EQPMT_ACT_EFFORT_TO_DATE, x_Log_Level=> 3);
16888 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_PC:        '||l_ETC_Cost_PC, x_Log_Level=> 3);
16889 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_PC: '||l_PPL_ETC_COST_PC, x_Log_Level=>        3);
16890 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_PC: '||l_EQPMT_ETC_COST_PC,  x_Log_Level=> 3);
16891 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_Cost_FC:        '||l_ETC_Cost_FC, x_Log_Level=> 3);
16892 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_COST_FC: '||l_PPL_ETC_COST_FC, x_Log_Level=>        3);
16893 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_COST_FC: '||l_EQPMT_ETC_COST_FC,  x_Log_Level=> 3);
16894 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1,  x_Log_Level=> 3);
16895 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_EFFORT:   '||l_EQPMT_ETC_EFFORT, x_Log_Level=> 3);
16896 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_PC: '||l_OTH_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16897 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_PC: '||l_PPL_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16898 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_PC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_PC, x_Log_Level=> 3);
16899 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_OTH_ACT_RAWCOST_TO_DATE_FC: '||l_OTH_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16900 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ACT_RAWCOST_TO_DATE_FC: '||l_PPL_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16901 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ACT_RAWCOST_TO_DATE_FC: '||l_EQPMT_ACT_RAWCOST_TO_DATE_FC, x_Log_Level=> 3);
16902 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_PC: '||l_ETC_RAWCost_PC, x_Log_Level=> 3);
16903 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_PC: '||l_PPL_ETC_RAWCOST_PC,        x_Log_Level=> 3);
16904 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_PC: '||l_EQPMT_ETC_RAWCOST_PC, x_Log_Level=>      3);
16905 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_ETC_RAWCost_FC: '||l_ETC_RAWCost_FC, x_Log_Level=> 3);
16906 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PPL_ETC_RAWCOST_FC: '||l_PPL_ETC_RAWCOST_FC,        x_Log_Level=> 3);
16907 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQPMT_ETC_RAWCOST_FC: '||l_EQPMT_ETC_RAWCOST_FC, x_Log_Level=>      3);
16908 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_LABOR_HOURS:        '||l_LABOR_HOURS, x_Log_Level=> 3);
16909 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=>        3);
16910 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_BRDN_COST: '||l_POU_LABOR_BRDN_COST, x_Log_Level=> 3);
16911 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_BRDN_COST: '||l_PRJ_LABOR_BRDN_COST, x_Log_Level=> 3);
16912 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_BRDN_COST: '||l_POU_EQUIP_BRDN_COST, x_Log_Level=> 3);
16913 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_BRDN_COST: '||l_PRJ_EQUIP_BRDN_COST, x_Log_Level=> 3);
16914 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_BRDN_COST: '||l_POU_OTH_BRDN_COST,  x_Log_Level=> 3);
16915 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_BRDN_COST: '||l_PRJ_OTH_BRDN_COST,  x_Log_Level=> 3);
16916 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_LABOR_RAW_COST: '||l_POU_LABOR_RAW_COST,        x_Log_Level=> 3);
16917 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_LABOR_RAW_COST: '||l_PRJ_LABOR_RAW_COST,        x_Log_Level=> 3);
16918 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_EQUIP_RAW_COST: '||l_POU_EQUIP_RAW_COST,        x_Log_Level=> 3);
16919 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_EQUIP_RAW_COST: '||l_PRJ_EQUIP_RAW_COST,        x_Log_Level=> 3);
16920 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_POU_OTH_RAW_COST:   '||l_POU_OTH_RAW_COST, x_Log_Level=> 3);
16921 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_PRJ_OTH_RAW_COST:   '||l_PRJ_OTH_RAW_COST, x_Log_Level=> 3);
16922 							END IF;
16923 
16924 							IF p_working_wp_prog_flag = 'Y' OR l_published_structure =     'N'
16925 							 --for working  version p_working_wp_prog_flag may      not be 'Y' because of   bug 3846353
16926 							THEN
16927 									 l_EQPMT_ETC_EFFORT     := null;
16928 									 l_remaining_effort1:= null;
16929 									 l_ETC_Cost_FC:= null;
16930 									 l_ETC_Cost_PC:= null;
16931 									 l_PPL_ETC_COST_FC:= null;
16932 									 l_PPL_ETC_COST_PC      := null;
16933 									 l_EQPMT_ETC_COST_FC:= null;
16934 									 l_EQPMT_ETC_COST_PC:= null;
16935 									 l_ETC_RAWCost_FC:=     null;
16936 									 l_ETC_RAWCost_PC := null;
16937 									 l_PPL_ETC_RAWCOST_FC:= null;
16938 									 l_PPL_ETC_RAWCOST_PC:= null;
16939 									 l_EQPMT_ETC_RAWCOST_FC:= null;
16940 									 l_EQPMT_ETC_RAWCOST_PC:= null;
16941 							END IF;
16942 
16943 							-- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
16944 							IF g1_debug_mode  = 'Y' THEN
16945 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
16946 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).task_statusl       ='||l_rollup_table1(i).task_status1, x_Log_Level=> 3);
16947 								pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_rollup_table1(i).percent_complete1 ='||l_rollup_table1(i).percent_complete1, x_Log_Level=> 3);
16948 							END IF;
16949 
16950 /*							IF cur_reverse_tree_rec.object_type = 'PA_TASKS'  */  -- sridhar_rollup
16951 							IF l_rollup_table1(i).object_type = 'PA_TASKS'
16952 							THEN
16953                                  --do not rollup on-hold task status. We dont need to worry   about
16954                                  --cancelled bcoz they are not selected.
16955 
16956                                  -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
16957                                  l_actual_exists := 'N';
16958                                  ---5726773  changed '>0' to '<>0'
16959  	                             IF (l_PPL_ACT_EFFORT_TO_DATE   <> 0 OR l_EQPMT_ACT_EFFORT_TO_DATE <>0 OR l_OTH_ACT_COST_TO_DATE_PC <> 0) THEN
16960                                    IF g1_debug_mode      = 'Y' THEN
16961                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
16962                                    END IF;
16963                                    l_actual_exists := 'Y';
16964                                  END IF;
16965 
16966                                  IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
16967                                    -- 14-Feb-2005 Patched thru Bug      4180026
16968                                /*    OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id); */ -- sridhar_rollup
16969 								       OPEN c_get_dlv_status(l_task_id);
16970                                    FETCH c_get_dlv_status INTO l_actual_exists;
16971                                    CLOSE c_get_dlv_status;
16972                                  END IF;
16973 
16974                                  IF g1_debug_mode = 'Y' THEN
16975                                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
16976                                  END IF;
16977 
16978                                  IF(( nvl(l_rollup_table1(i).task_status1,0) <> 0)
16979                                    OR
16980                                    ( l_percent_complete1 > 0 OR  l_rolled_up_per_comp > 0 )
16981                                    OR l_actual_exists = 'Y')
16982 								 THEN
16983                                    -- Bug        3842084 : Initilaized l_status_code with l_existing_object_status
16984                                    --get the existing      status
16985 /*                                   OPEN  c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);  */ -- sridhar_rollup
16986 								   OPEN  c_get_object_status ( p_project_id, l_task_id);
16987                                          FETCH c_get_object_status INTO l_existing_object_status;
16988                                          CLOSE c_get_object_status;
16989 
16990                                    l_status_code := l_existing_object_status;
16991                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
16992                                    l_status_code_temp := l_status_code; --Bug#5374114
16993                                    l_system_status_code_temp := l_system_status_code; --Bug#5374114
16994 
16995                                    IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0)
16996                                    THEN
16997                                         OPEN cur_task_status (to_char(l_rollup_table1(i).task_status1));
16998                                         FETCH cur_task_status INTO l_status_code;
16999                                         CLOSE cur_task_status;
17000                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
17001                                    END IF;
17002                                    -- Now Defaulting of   Status will happen even if the status is returned by Scheuling API, but it is wrong
17003 
17004                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
17005                                    IF g1_debug_mode      = 'Y' THEN
17006                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
17007                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_existing_object_status='||l_existing_object_status, x_Log_Level=> 3);
17008                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
17009                                    END IF;
17010 
17011                                    IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
17012                                    THEN
17013                                         l_status_code := '127';
17014                                         l_system_status_code := 'COMPLETED';
17015                                    ELSIF (((NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 AND NVL(l_rolled_up_per_comp, l_percent_complete1)  < 100)) AND l_system_status_code        IN ('NOT_STARTED','COMPLETED'))
17016                                    THEN
17017                                         l_status_code := '125';
17018                                         l_system_status_code := 'IN_PROGRESS';
17019                                         l_actual_finish_date := null;
17020                                         -- This is done to first time make task In Progress  if any sub-objects are in Progress
17021                                    ELSIF (l_actual_exists ='Y' AND      l_system_status_code    = 'NOT_STARTED')
17022                                    THEN
17023                                         l_status_code := '125';
17024                                         l_system_status_code := 'IN_PROGRESS';
17025                                         l_actual_finish_date := null;
17026                                    END IF;
17027 
17028 								   /* Changes by shanif for bug#5374114 - START */
17029 
17030 								   IF (l_system_status_code = l_system_status_code_temp) THEN
17031 										l_system_status_code := l_system_status_code_temp;
17032 										l_status_code  := l_status_code_temp;
17033 								   END IF;
17034 
17035 								   /* Changes by shanif for bug#5374114 - END */
17036 
17037                                    IF g1_debug_mode      = 'Y' THEN
17038                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_status_code='||l_status_code, x_Log_Level=> 3);
17039                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'After Defaulting l_system_status_code='||l_system_status_code, x_Log_Level=> 3);
17040                                    END IF;
17041 
17042                                    IF l_structure_version_id IS NULL THEN -- Bug 3922325  : This  does    not make sense  for     working wp version rollup
17043                                         UPDATE pa_proj_elements
17044                                         SET status_code = l_status_code
17045                                         WHERE project_id = p_project_id
17046 /*                                        AND proj_element_id     = cur_reverse_tree_rec.proj_element_id; */ -- sridhar_rollup
17047 										 AND proj_element_id     = l_task_id;
17048                                    END IF;
17049 
17050 
17051                                    IF p_structure_type = 'WORKPLAN' THEN
17052                                         /* OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1); */  -- sridhar_rollup
17053 										 OPEN c_get_dates (p_project_id, l_rollup_table1(i).object_id);
17054                                         FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
17055                                         CLOSE c_get_dates;
17056                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
17057                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
17058                                                 l_actual_finish_date := to_date(null);
17059                                         END IF;
17060 										-- Bug 4232099 : added folling IF
17061 										IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
17062 											l_actual_finish_date := to_date(null);
17063 										END IF;
17064                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
17065                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
17066                                         END IF;
17067                                         IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
17068                                                 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
17069                                         END IF;
17070 
17071                                         IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL     THEN
17072 											IF l_actual_finish_date < l_actual_start_date THEN
17073 											  IF TRUNC(SYSDATE)  < l_actual_start_date THEN
17074 													  l_actual_finish_date := l_actual_start_date;
17075 											  ELSE
17076 													  l_actual_finish_date := TRUNC(SYSDATE);
17077 											  END IF;
17078 											END IF;
17079                                         END IF;
17080                                    END IF;
17081 
17082                                    UPDATE pa_percent_completes
17083                                    SET status_code = l_status_code
17084                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
17085                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
17086 								   /* -- sridhar_rollup
17087                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
17088                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
17089 								   */
17090 								    WHERE object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id)  -- sridhar_rollup
17091                                    AND object_Type = l_rollup_table1(i).object_Type   -- sridhar_rollup
17092                                    AND project_id = p_project_id
17093                                    --AND PA_PROGRESS_UTILS.get_system_task_status( status_code )        NOT IN  ( 'CANCELLED',  'COMPLETED' )
17094                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
17095                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
17096                                    AND current_flag = 'N' and published_flag  = 'N';
17097 
17098                                    -- 14-Feb-2005 :     Added Patched thru Bug 4180026
17099                                    UPDATE pa_percent_completes
17100                                    SET status_code = l_status_code
17101                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
17102                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
17103                                    WHERE object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id)  -- sridhar_rollup
17104                                    AND object_Type = l_rollup_table1(i).object_Type ---4743866   -- sridhar_rollup
17105                                    AND project_id = p_project_id
17106                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
17107                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
17108                                    AND published_flag = 'Y' ---4743866
17109                                    AND current_flag = 'Y'
17110                                    AND trunc(date_computed) = trunc(p_as_of_date);
17111                                  END IF;
17112                             END IF;
17113 
17114 							IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
17115 								l_ETC_Cost_FC:= null;
17116 								l_ETC_Cost_PC:= null;
17117 								l_PPL_ETC_COST_FC:= null;
17118 								l_PPL_ETC_COST_PC      := null;
17119 								l_EQPMT_ETC_COST_FC:= null;
17120 								l_EQPMT_ETC_COST_PC:= null;
17121 								l_ETC_RAWCost_FC:=     null;
17122 								l_ETC_RAWCost_PC := null;
17123 								l_PPL_ETC_RAWCOST_FC:= null;
17124 								l_PPL_ETC_RAWCOST_PC:= null;
17125 								l_EQPMT_ETC_RAWCOST_FC:= null;
17126 								l_EQPMT_ETC_RAWCOST_PC:= null;
17127 								l_OTH_ACT_COST_TO_DATE_PC:= null;
17128 								l_OTH_ACT_COST_TO_DATE_FC:= null;
17129 								l_PPL_ACT_COST_TO_DATE_PC:= null;
17130 								l_PPL_ACT_COST_TO_DATE_FC:= null;
17131 								l_EQPMT_ACT_COST_TO_DATE_PC:= null;
17132 								l_EQPMT_ACT_COST_TO_DATE_FC:= null;
17133 								l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
17134 								l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
17135 								l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
17136 								l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
17137 								l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
17138 								l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
17139 							END IF;
17140 						END IF; -- IF  p_structure_type = 'WORKPLAN' --bug 4317491
17141 
17142 
17143 						-- Bug 4651304 Begin
17144 						-- One solution for this issue could be to pass
17145 						-- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
17146 						-- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
17147 						-- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
17148 						-- Best way is to always retain the existing object_version_id in pa_progress_rollup
17149 						-- table in case of update, in case of insert, use the new object version id
17150 
17151 						-- Commented below code and added new condition
17152 
17153 
17154 						--IF p_upd_new_elem_ver_id_flag = 'Y' THEN
17155 						--	l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
17156 						--END IF;
17157 
17158 						IF l_PROGRESS_ROLLUP_ID IS NOT NULL AND l_tsk_object_version_id_tab(task_index) IS NOT NULL AND p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' THEN
17159 							null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
17160 						ELSE
17161 							l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
17162 						END IF;
17163 						-- Bug 4651304 End
17164 
17165 						l_tsk_proj_element_id_tab(task_index) := l_task_id;
17166 						l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
17167 						-- 4392189 : Program Reporting Changes - Phase 2
17168 						-- Having Set2 columns to get Project level % complete
17169 											-- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
17170 						-- Bug 4506461 Begin
17171 						l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
17172 						-- 4540890 : Removed l_subproject_found check from below
17173 						IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
17174 							l_rederive_base_pc := 'N';
17175 							OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
17176 							FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
17177 							CLOSE c_get_any_childs_have_subprj;
17178 							IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
17179 								l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
17180 							END IF;
17181 						END IF;
17182 						-- Bug 4506461 End
17183 
17184 						l_tsk_earned_value_tab(task_index) := l_earned_value1;
17185 						l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
17186 						l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
17187 
17188 
17189                         IF p_structure_type = 'WORKPLAN' THEN
17190 							l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
17191 							l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
17192 							l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
17193 							l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
17194 							-- 4533112 : Base Progress Status is not used
17195 							--l_tsk_base_prog_stat_code_tab(task_index) :=    l_rolled_up_base_prog_stat;
17196 							l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
17197 
17198                             IF p_progress_mode <> 'BACKDATED' THEN
17199 								l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
17200 								l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
17201 								l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
17202 								l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
17203 								l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
17204 								l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
17205 								l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
17206 								l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
17207 								l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
17208 								l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
17209 
17210 								l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
17211 								l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
17212 								l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
17213 								l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
17214 								l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
17215 								l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
17216 								l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
17217 								l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
17218 								l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
17219 								l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
17220 
17221 								l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
17222 								l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
17223 								l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
17224 								l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
17225 								l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
17226 								l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
17227 								l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
17228 								l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
17229 							END IF; -- p_progress_mode <> 'BACKDATED'
17230 
17231 							-- 5119716 Begin
17232 							-- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
17233 							-- For performance changes, it was removed and replaced with direct update statement
17234 							-- The follwoing portion for dirty schedule was missing out.
17235 							IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y'
17236 							THEN
17237 								PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
17238 										p_structure_version_id  => p_structure_version_id
17239 										,p_dirty_flag           => 'Y'
17240 										,x_return_status        => x_return_status
17241 										,x_msg_count            => x_msg_count
17242 										,x_msg_data             => x_msg_data);
17243 								IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
17244 										raise FND_API.G_EXC_ERROR;
17245 								END IF;
17246 							END IF;
17247 							-- 5119716 End
17248 
17249 							UPDATE pa_proj_elem_ver_schedule
17250 							SET    ACTUAL_START_DATE = l_actual_start_date
17251 							, ACTUAL_FINISH_DATE = l_actual_finish_date
17252 							, ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
17253 							, ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
17254 							, record_version_number = record_version_number+1
17255 							, scheduled_start_date = l_rollup_table1(i).start_date3
17256 							, scheduled_finish_date = l_rollup_table1(i).finish_date3
17257 							-- 5119716 Begin
17258 							, estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
17259 							, actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
17260 							-- 5119716 End
17261 							, last_updated_by = l_user_id
17262 							, last_update_date= sysdate
17263 							, last_update_login = l_login_id
17264 							WHERE project_id = p_project_id
17265 							AND element_version_id = l_rollup_table1(i).object_id;
17266 
17267 
17268 							IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
17269 								UPDATE pa_projects_all
17270 								SET actual_start_date = l_rollup_table1(i).start_date1,
17271 									actual_finish_date = l_rollup_table1(i).finish_date1
17272 								WHERE project_id = p_project_id;
17273 							END IF;
17274 						END IF; -- p_structure_type     = 'WORKPLAN'
17275 
17276 						IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
17277 							l_tsk_update_required(task_index):='Y';
17278 						ELSE
17279 							-- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
17280 							IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17281 								l_tsk_create_required(task_index):='Y';
17282 								BEGIN
17283 									SELECT percent_complete_id
17284 									INTO l_percent_complete_id
17285 									FROM pa_percent_completes
17286 									WHERE project_id = p_project_id
17287 									AND object_id =  l_defer_arr_task_id(l_rollup_table1(i).object_id)  -- sridhar_rollup
17288 									AND object_Type = l_rollup_table1(i).object_Type
17289 									AND structure_type = p_structure_type
17290 									AND date_computed = ( SELECT max(date_computed)
17291 												FROM    pa_percent_completes
17292 												WHERE project_id = p_project_id
17293 												AND object_id =  l_defer_arr_task_id(l_rollup_table1(i).object_id)   -- sridhar_rollup
17294 												AND object_Type = l_rollup_table1(i).object_Type
17295 												AND structure_type = p_structure_type
17296 												AND date_computed <= p_as_of_date);
17297 								EXCEPTION WHEN OTHERS THEN
17298 									l_percent_complete_id := null;
17299 								END;
17300 								l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
17301 												(p_project_id   => p_project_id,
17302 												p_object_id     => l_defer_arr_task_id(l_rollup_table1(i).object_id), -- sridhar_rollup
17303 												p_object_type   => l_rollup_table1(i).object_type,
17304 												p_structure_type =>     p_structure_type,
17305 												p_structure_version_id => l_structure_version_id,
17306 												p_proj_element_id => l_defer_arr_task_id(l_rollup_table1(i).object_id)  -- sridhar_rollup
17307 										 );
17308 
17309 								IF l_max_rollup_as_of_date2 > p_as_of_date  THEN
17310 									l_current_flag  := 'N';
17311 								ELSE
17312 									l_current_flag  := 'Y';
17313 								END IF;
17314 								l_tsk_current_flag_tab(task_index)      := l_current_flag;
17315 								l_tsk_prog_pa_period_name_tab(task_index) :=    l_prog_pa_period_name;
17316 								l_tsk_prog_gl_period_name_tab(task_index) :=    l_prog_gl_period_name;
17317 
17318 								IF l_max_rollup_as_of_date2 < p_as_of_date THEN
17319 									UPDATE pa_progress_rollup
17320 									   SET current_flag = 'N'
17321 									 WHERE project_id = p_project_id
17322 									 /* -- sridhar_rollup
17323 									   AND object_id = cur_reverse_tree_rec.proj_element_id
17324 									   */
17325 									   AND object_id = l_defer_arr_task_id(l_rollup_table1(i).object_id) -- sridhar_rollup
17326 									   AND object_type = l_rollup_table1(i).object_type
17327 									   AND current_flag <> 'W'
17328 									   AND structure_type = p_structure_type
17329 									   AND ((l_published_structure = 'Y'   AND structure_version_id is null) OR (l_published_structure = 'N' AND structure_version_id =  p_structure_version_id));
17330 								END IF;
17331 							END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17332 						END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
17333                 END IF;--       p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists =  'Y'
17334                 --exit; -- sridhar_fix
17335             END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
17336         END LOOP;
17337 
17338 		/*  -- sridhar_rollup
17339 
17340 		END LOOP;
17341 
17342 		*/
17343 
17344     FORALL i in 1..l_tsk_object_version_id_tab.count
17345 		UPDATE pa_progress_rollup
17346 		SET
17347 		object_version_id = l_tsk_object_version_id_tab(i)
17348 		, last_update_date = sysdate
17349 		, last_updated_by = l_user_id
17350 		, last_update_login = l_login_id
17351 		, eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
17352 		, completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', l_tsk_roll_comp_percent_tab(i), completed_percentage)
17353 		-- Bug 4284353 : Used decode above
17354 		, estimated_start_date = l_tsk_est_start_date_tab(i)
17355 		, estimated_finish_date = l_tsk_est_finish_date_tab(i)
17356 		, actual_start_date = l_tsk_actual_start_date_tab(i)
17357 		, actual_finish_date = l_tsk_actual_finish_date_tab(i)
17358 		, record_version_number = record_version_number +1
17359 		, base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
17360 		, base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
17361 		, eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
17362 		, percent_complete_id = l_tsk_percent_complete_id_tab(i)
17363 		, ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
17364 		, ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
17365 		, ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
17366 		, ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
17367 		, ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
17368 		, estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
17369 		, ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
17370 		, ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
17371 		, ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
17372 		, ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
17373 		, eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
17374 		, eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
17375 		, eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
17376 		, eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
17377 		, eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
17378 		, eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
17379 		, eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
17380 		, eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
17381 		, eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17382 		, eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17383 		, oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
17384 		, oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
17385 		, oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
17386 		, oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
17387 		, oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
17388 		, oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
17389 		, oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
17390 		, oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
17391 		, earned_value = l_tsk_earned_value_tab(i)
17392 		, task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
17393 		, base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17394 		WHERE l_tsk_update_required(i) = 'Y'
17395 		AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i);
17396 
17397 
17398     IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED'  THEN
17399 		FORALL i in 1..l_tsk_object_version_id_tab.count
17400 			UPDATE pa_progress_rollup
17401 			SET
17402 			object_version_id =     l_tsk_object_version_id_tab(i)
17403 			, last_update_date = sysdate
17404 			, last_updated_by =     l_user_id
17405 			, last_update_login     = l_login_id
17406 			, eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
17407 			, estimated_start_date =        l_tsk_est_start_date_tab(i)
17408 			, estimated_finish_date = l_tsk_est_finish_date_tab(i)
17409 			, actual_start_date     = l_tsk_actual_start_date_tab(i)
17410 			, actual_finish_date = l_tsk_actual_finish_date_tab(i)
17411 			, record_version_number = record_version_number +1
17412 			, base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
17413 			, base_progress_status_code =   l_tsk_base_prog_stat_code_tab(i)
17414 			, eff_rollup_prog_stat_code =   l_tsk_eff_roll_prg_st_code_tab(i)
17415 			, percent_complete_id = l_tsk_percent_complete_id_tab(i)
17416 			, ppl_act_effort_to_date        = l_tsk_ppl_act_eff_tab(i)
17417 			, ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
17418 			, ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
17419 			, ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
17420 			, ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
17421 			, estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
17422 			, ppl_etc_cost_pc =     l_tsk_ppl_etc_cost_pc_tab(i)
17423 			, ppl_etc_cost_fc =     l_tsk_ppl_etc_cost_fc_tab(i)
17424 			, ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
17425 			, ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
17426 			, eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
17427 			, eqpmt_act_cost_to_date_pc =   l_tsk_eqpmt_act_cost_pc_tab(i)
17428 			, eqpmt_act_cost_to_date_fc =   l_tsk_eqpmt_act_cost_fc_tab(i)
17429 			, eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
17430 			, eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
17431 			, eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
17432 			, eqpmt_etc_cost_pc     = l_tsk_eqpmt_etc_cost_pc_tab(i)
17433 			, eqpmt_etc_cost_fc     = l_tsk_eqpmt_etc_cost_fc_tab(i)
17434 			, eqpmt_etc_rawcost_pc =        l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17435 			, eqpmt_etc_rawcost_fc =        l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17436 			, oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
17437 			, oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
17438 			, oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
17439 			, oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
17440 			, oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
17441 			, oth_etc_cost_fc =     l_tsk_oth_etc_cost_fc_tab(i)
17442 			, oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
17443 			, oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
17444 			, earned_value  = l_tsk_earned_value_tab(i)
17445 			, task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
17446 			, base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17447 			WHERE l_tsk_update_required(i) = 'Y'
17448 			AND project_id  = p_project_id
17449 			AND object_id = l_tsk_object_id_tab(i)
17450 			AND proj_element_id     = l_tsk_proj_element_id_tab(i)
17451 			AND object_type = l_tsk_object_type_tab(i)
17452 			AND as_of_date  >= p_as_of_date
17453 			AND current_flag = 'W'
17454 			AND structure_type = 'WORKPLAN'
17455 			AND structure_version_id is null;
17456     END IF;
17457 
17458     -- Bug 4242787 : This is effective solution for the bug 4097710
17459     -- We should not create new records if the rollup is called from Future Rollup API
17460     -- It should just update.
17461     IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
17462 	    for i in 1..l_tsk_object_version_id_tab.count
17463 		loop
17464 		    -- sridhar_fix  - new if statement below
17465 		    if (l_tsk_create_required(i) = 'Y') then
17466 				--IF l_tsk_object_version_id_tab(i) member of l_prog_obj
17467 				if l_prog_obj.exists(l_tsk_object_version_id_tab(i))
17468 				then
17469 					l_tsk_create_required(i) := 'Y';
17470 				else
17471 					l_tsk_create_required(i) := 'N';
17472 				end if;
17473 			end if; -- sridhar_fix
17474 		end loop;
17475 
17476         FORALL i in 1..l_tsk_object_version_id_tab.count
17477 			INSERT INTO pa_progress_rollup
17478 			(
17479 			progress_rollup_id
17480 			,project_id
17481 			,object_id
17482 			,object_type
17483 			,as_of_date
17484 			,object_version_id
17485 			,last_update_date
17486 			,last_updated_by
17487 			,creation_date
17488 			,created_by
17489 			,progress_status_code
17490 			,last_update_login
17491 			,eff_rollup_percent_comp
17492 			,completed_percentage
17493 			,estimated_start_date
17494 			,estimated_finish_date
17495 			,actual_start_date
17496 			,actual_finish_date
17497 			,record_version_number
17498 			,base_percent_comp_deriv_code
17499 			,base_progress_status_code
17500 			,eff_rollup_prog_stat_code
17501 			,percent_complete_id
17502 			,structure_type
17503 			,proj_element_id
17504 			,structure_version_id
17505 			,ppl_act_effort_to_date
17506 			,ppl_act_cost_to_date_pc
17507 			,ppl_act_cost_to_date_fc
17508 			,ppl_act_rawcost_to_date_pc
17509 			,ppl_act_rawcost_to_date_fc
17510 			,estimated_remaining_effort
17511 			,ppl_etc_cost_pc
17512 			,ppl_etc_cost_fc
17513 			,ppl_etc_rawcost_pc
17514 			,ppl_etc_rawcost_fc
17515 			,eqpmt_act_effort_to_date
17516 			,eqpmt_act_cost_to_date_pc
17517 			,eqpmt_act_cost_to_date_fc
17518 			,eqpmt_act_rawcost_to_date_pc
17519 			,eqpmt_act_rawcost_to_date_fc
17520 			,eqpmt_etc_effort
17521 			,eqpmt_etc_cost_pc
17522 			,eqpmt_etc_cost_fc
17523 			,eqpmt_etc_rawcost_pc
17524 			,eqpmt_etc_rawcost_fc
17525 			,oth_quantity_to_date
17526 			,oth_act_cost_to_date_pc
17527 			,oth_act_cost_to_date_fc
17528 			,oth_act_rawcost_to_date_pc
17529 			,oth_act_rawcost_to_date_fc
17530 			,oth_etc_quantity
17531 			,oth_etc_cost_pc
17532 			,oth_etc_cost_fc
17533 			,oth_etc_rawcost_pc
17534 			,oth_etc_rawcost_fc
17535 			,earned_value
17536 			,task_wt_basis_code
17537 			,current_flag
17538 			,projfunc_cost_rate_type
17539 			,projfunc_cost_exchange_rate
17540 			,projfunc_cost_rate_date
17541 			,proj_cost_rate_type
17542 			,proj_cost_exchange_rate
17543 			,proj_cost_rate_date
17544 			,txn_currency_code
17545 			,prog_pa_period_name
17546 			,prog_gl_period_name
17547 			,base_percent_complete
17548 			)
17549 			SELECT
17550 			PA_PROGRESS_ROLLUP_S.nextval
17551 			, p_project_id
17552 			, l_tsk_object_id_tab(i)
17553 			, l_tsk_object_type_tab(i)
17554 			, p_as_of_date
17555 			, l_tsk_object_version_id_tab(i)
17556 			, sysdate
17557 			, l_user_id
17558 			, sysdate
17559 			, l_user_id
17560 			, l_tsk_progress_stat_code_tab(i)
17561 			, l_login_id
17562 			, l_tsk_roll_comp_percent_tab(i)
17563 			,  decode(p_progress_mode,'TRANSFER_WP_PC',l_tsk_roll_comp_percent_tab(i),l_tsk_over_percent_comp_tab(i))
17564 			-- Bug 4284353 : Used decode above
17565 			, l_tsk_est_start_date_tab(i)
17566 			, l_tsk_est_finish_date_tab(i)
17567 			, l_tsk_actual_start_date_tab(i)
17568 			, l_tsk_actual_finish_date_tab(i)
17569 			, 1
17570 			, l_tsk_deriv_method_tab(i)
17571 			, l_tsk_base_prog_stat_code_tab(i)
17572 			, l_tsk_eff_roll_prg_st_code_tab(i)
17573 			, l_tsk_percent_complete_id_tab(i)
17574 			, p_structure_type
17575 			, l_tsk_proj_element_id_tab(i)
17576 			, l_structure_version_id
17577 			, l_tsk_ppl_act_eff_tab(i)
17578 			, l_tsk_ppl_act_cost_pc_tab(i)
17579 			, l_tsk_ppl_act_cost_fc_tab(i)
17580 			, l_tsk_ppl_act_rawcost_pc_tab(i)
17581 			, l_tsk_ppl_act_rawcost_fc_tab(i)
17582 			, l_tsk_est_rem_effort_tab(i)
17583 			, l_tsk_ppl_etc_cost_pc_tab(i)
17584 			, l_tsk_ppl_etc_cost_fc_tab(i)
17585 			, l_tsk_ppl_etc_rawcost_pc_tab(i)
17586 			, l_tsk_ppl_etc_rawcost_fc_tab(i)
17587 			, l_tsk_eqpmt_act_effort_tab(i)
17588 			, l_tsk_eqpmt_act_cost_pc_tab(i)
17589 			, l_tsk_eqpmt_act_cost_fc_tab(i)
17590 			, l_tsk_eqpmt_act_rawcost_pc_tab(i)
17591 			, l_tsk_eqpmt_act_rawcost_fc_tab(i)
17592 			, l_tsk_eqpmt_etc_effort_tab(i)
17593 			, l_tsk_eqpmt_etc_cost_pc_tab(i)
17594 			, l_tsk_eqpmt_etc_cost_fc_tab(i)
17595 			, l_tsk_eqpmt_etc_rawcost_pc_tab(i)
17596 			, l_tsk_eqpmt_etc_rawcost_fc_tab(i)
17597 			, l_tsk_oth_quantity_tab(i)
17598 			, l_tsk_oth_act_cost_pc_tab(i)
17599 			, l_tsk_oth_act_cost_fc_tab(i)
17600 			, l_tsk_oth_act_rawcost_pc_tab(i)
17601 			, l_tsk_oth_act_rawcost_fc_tab(i)
17602 			, l_tsk_oth_etc_quantity_tab(i)
17603 			, l_tsk_oth_etc_cost_pc_tab(i)
17604 			, l_tsk_oth_etc_cost_fc_tab(i)
17605 			, l_tsk_oth_etc_rawcost_pc_tab(i)
17606 			, l_tsk_oth_etc_rawcost_fc_tab(i)
17607 			, l_tsk_earned_value_tab(i)
17608 			, l_tsk_task_wt_basis_code_tab(i)
17609 			, l_tsk_current_flag_tab(i)
17610 			, l_tsk_pf_cost_rate_type_tab(i)
17611 			, l_tsk_pf_cost_exc_rate_tab(i)
17612 			, l_tsk_pf_cost_rate_date_tab(i)
17613 			, l_tsk_p_cost_rate_type_tab(i)
17614 			, l_tsk_p_cost_exc_rate_tab(i)
17615 			, l_tsk_p_cost_rate_date_tab(i)
17616 			, l_tsk_txn_currency_code_tab(i)
17617 			, l_tsk_prog_pa_period_name_tab(i)
17618 			, l_tsk_prog_gl_period_name_tab(i)
17619 			, l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
17620 			FROM
17621 			DUAL
17622 			WHERE l_tsk_create_required(i) = 'Y';
17623     END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP'  OR p_calling_mode IS NULL THEN
17624 
17625     -- Bug 4242787
17626     -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
17627     -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
17628 
17629     ----    **************  Updation Ends   ******************      ----------
17630 
17631     -- Bug 4242787
17632     -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
17633     -- Future rollup seprately if they are calling Mass Rollup
17634     IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
17635         IF g1_debug_mode  = 'Y' THEN
17636             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
17637         END IF;
17638 
17639         FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
17640             IF g1_debug_mode  = 'Y' THEN
17641                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_id='||cur_tree_rollup_rec.child_task_id, x_Log_Level=> 3);
17642                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.child_task_ver_id='||cur_tree_rollup_rec.child_task_ver_id, x_Log_Level=> 3);
17643                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'cur_tree_rollup_rec.as_of_date='||cur_tree_rollup_rec.as_of_date, x_Log_Level=> 3);
17644                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
17645             END IF;
17646             -- Bug 4573257 Begin
17647             -- We need to call PJI tmp table population
17648             -- otherwise we will get incorrect actual and etc for future dates records
17649             IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
17650                 IF (l_base_struct_ver_id = -1) THEN
17651                     l_base_struct_ver_id := p_structure_version_id;
17652                 END IF;
17653 
17654                 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
17655                     p_calling_module    => p_calling_module
17656                     ,p_project_id           => p_project_id
17657                     ,p_structure_version_id => p_structure_version_id
17658                     ,p_baselined_str_ver_id => l_base_struct_ver_id
17659                     ,p_program_rollup_flag  => 'Y'
17660                     ,p_calling_context  => 'ROLLUP'
17661                     ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
17662                     ,x_return_status        => x_return_status
17663                     ,x_msg_count            => x_msg_count
17664                     ,x_msg_data             => x_msg_data
17665                     );
17666                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
17667                     RAISE  FND_API.G_EXC_ERROR;
17668                 END IF;
17669                 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
17670             END IF;
17671             -- Bug 4573257 End
17672 
17673             PA_PROGRESS_PVT.DEFER_ROLLUP_PVT(
17674                  p_init_msg_list                => 'F'
17675                 ,p_calling_module               => p_calling_module
17676                 ,p_calling_mode                 => 'FUTURE_ROLLUP'
17677                 ,p_commit                       => 'F'
17678                 ,p_validate_only                => 'F'
17679                 ,p_project_id                   => p_project_id
17680                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
17681                 ,P_OBJECT_ID                    => cur_tree_rollup_rec.child_task_id
17682                 ,p_object_version_id            => cur_tree_rollup_rec.child_task_ver_id
17683                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
17684                 ,p_lowest_level_task            => p_lowest_level_task
17685                 ,p_process_whole_tree           => 'N'
17686                 ,p_structure_type               => p_structure_type
17687                 ,p_structure_version_id         => p_structure_version_id
17688                 ,p_rollup_entire_wbs            => 'N'
17689                 ,p_fin_rollup_method            => p_fin_rollup_method
17690                 ,p_wp_rollup_method             => p_wp_rollup_method
17691                 ,p_task_version_id              => cur_tree_rollup_rec.child_task_ver_id
17692                 ,x_return_status                => x_return_status
17693                 ,x_msg_count                    => x_msg_count
17694                 ,x_msg_data                     => x_msg_data);
17695 
17696             IF g1_debug_mode  = 'Y' THEN
17697                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'Rollup For Future Date x_return_status='||x_return_status, x_Log_Level=> 3);
17698             END IF;
17699 
17700             IF x_return_status <> 'S' THEN
17701                 raise FND_API.G_EXC_ERROR;
17702             END IF;
17703         END LOOP;
17704     END IF; -- p_rollup_entire_wbs = 'Y'
17705 
17706     DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
17707 
17708     x_return_status := FND_API.G_RET_STS_SUCCESS;
17709 
17710     IF (p_commit = FND_API.G_TRUE) THEN
17711         COMMIT;
17712     END IF;
17713 
17714 	IF g1_debug_mode = 'Y' THEN
17715 	    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PVT END', x_Log_Level=> 3);
17716 	END IF;
17717 
17718 EXCEPTION
17719 	WHEN FND_API.G_EXC_ERROR     THEN
17720 		rollback to ROLLUP_PVT2;
17721 		x_return_status := FND_API.G_RET_STS_ERROR;
17722 	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
17723 		rollback to ROLLUP_PVT2;
17724 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
17725 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
17726 						 p_procedure_name => 'ROLLUP_PVT',
17727 						 p_error_text      => SUBSTRB(SQLERRM,1,120));
17728 	WHEN OTHERS THEN
17729 		rollback to ROLLUP_PVT2;
17730 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
17731 		fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
17732 						 p_procedure_name => 'ROLLUP_PVT',
17733 						 p_error_text      => SUBSTRB(SQLERRM,1,120));
17734 		raise;
17735 END DEFER_ROLLUP_PVT;
17736 
17737 end PA_PROGRESS_PVT;