DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_PROGRESS_PVT

Source


1 package body PA_PROGRESS_PVT as
2 /* $Header: PAPCPVTB.pls 120.30.12010000.4 2008/12/11 11:22:37 jsundara 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 
37 PROCEDURE ROLLUP_PROGRESS_PVT(
38  p_api_version                          IN      NUMBER          :=1.0
39 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_TRUE
40 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
41 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
42 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
43 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
44 ,p_calling_mode                         IN      VARCHAR2        :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
45 ,p_debug_mode                           IN      VARCHAR2        :='N'
46 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
47 ,p_progress_mode                        IN      VARCHAR2        := 'FUTURE'
48 ,p_project_id                           IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
49 ,p_object_type                          IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
50 ,p_object_id                            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
51 ,p_object_version_id                    IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
52 ,p_task_version_id                      IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
53 ,p_as_of_date                           IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
54 ,p_lowest_level_task                    IN      VARCHAR2        := 'N'
55 ,p_process_whole_tree                   IN      VARCHAR2        := 'Y'
56 ,p_structure_version_id                 IN      NUMBER
57 ,p_structure_type                       IN      VARCHAR2        := 'WORKPLAN'
58 ,p_fin_rollup_method                    IN      VARCHAR2        := 'COST'
59 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
60 ,p_rollup_entire_wbs                    IN      VARCHAR2        := 'N'
61 ,p_task_version_id_tbl                  IN      SYSTEM.pa_num_tbl_type := SYSTEM.pa_num_tbl_type() -- Bug 4218507
62 ,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.
63 ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, 3951024
64 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
65 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
66 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
67 )
68  IS
69 
70 l_api_name                      CONSTANT VARCHAR(30) := 'ROLLUP_PROGRESS_PVT';
71 l_api_version                   CONSTANT NUMBER         :=      1.0                     ;
72 l_return_status                 VARCHAR2(1)                                     ;
73 l_msg_count                     NUMBER                                          ;
74 l_msg_data                      VARCHAR2(250)                                   ;
75 l_data                          VARCHAR2(250)                                   ;
76 l_msg_index_out                 NUMBER                                          ;
77 l_error_msg_code                VARCHAR2(250)                                   ;
78 l_user_id                       NUMBER :=       FND_GLOBAL.USER_ID                      ;
79 l_login_id                      NUMBER :=       FND_GLOBAL.LOGIN_ID                     ;
80 l_lowest_task                   VARCHAR2(1)                                     ;
81 l_published_structure           VARCHAR2(1)                                     ;
82 l_task_version_id               NUMBER                                          ;
83 l_rollup_table1                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
84 l_rollup_table2                 PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE;
85 l_index                         NUMBER   := 0;
86 l_parent_count                  NUMBER   := 0;
87 l_process_number                NUMBER;
88 l_wbs_level                     NUMBER                                                                           ;
89 l_action_allowed                VARCHAR2(1)                                                                      ;
90 l_sharing_Enabled               VARCHAR2(1)                                                                      ;
91 l_split_workplan                VARCHAR2(1)                                                                      ;
92 l_structure_version_id          NUMBER                                                                           ;
93 g1_debug_mode                   VARCHAR2(1)                                                                      ;
94 l_Rollup_Method                 pa_proj_progress_attr.task_weight_basis_code%TYPE                                ;
95 
96 
97    -- Rollup Cases
98    -- 1. Workplan Publsihed Version Rollup.
99    -- 2. Workplan Working Version Rollup.
100    -- 3. Financial Structure Rollup.
101    -- 4. Entire WBS using       structure       version id.
102    -- 5. Program Rollup
103 
104    --This       cursor selects  the parents of  a given task.
105 
106 
107 CURSOR cur_reverse_tree_update IS
108 SELECT proj_element_id, object_id_to1, object_type
109 FROM
110         ( select object_id_from1, object_id_to1
111         from pa_object_relationships
112         where relationship_type ='S'
113         and object_type_from in ('PA_STRUCTURES','PA_TASKS') -- Bug 6429275
114         and object_type_to = 'PA_TASKS'
115         and p_rollup_entire_wbs='N'
116         start with object_id_to1 = p_task_version_id
117         and relationship_type = 'S'
118         connect by prior object_id_from1 = object_id_to1
119         and relationship_type =     'S'
120         ) pobj
121         , pa_proj_element_versions ppev
122 WHERE element_version_id = object_id_to1
123 and p_rollup_entire_wbs='N'
124 --select        structure
125 UNION
126 SELECT proj_element_id, element_version_id, object_type
127 FROM pa_proj_element_versions
128 WHERE element_version_id = p_structure_version_id
129 and project_id = p_project_id
130 and object_type = 'PA_STRUCTURES'
131 and p_rollup_entire_wbs='N'
132 UNION
133 SELECT proj_element_id, element_version_id, object_type
134 FROM pa_proj_element_versions
135 WHERE project_id = p_project_id
136 and parent_structure_version_id = p_structure_version_id
137 and object_type IN ('PA_TASKS','PA_STRUCTURES')
138 and p_rollup_entire_wbs='Y'
139 ;
140 
141 
142 l_mass_rollup_prog_exists_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
143 l_mass_rollup_prog_rec_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
144 
145 l_tsk_object_id_from1_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
146 l_tsk_parent_object_type_tab        SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
147 l_tsk_object_id_to1_tab         SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
148 l_tsk_object_type_tab           SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
149 l_tsk_wbs_level_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
150 l_tsk_weighting_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
151 l_tsk_roll_comp_percent_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
152 l_tsk_over_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
153 l_tsk_as_of_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
154 l_tsk_actual_start_date_tab     SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
155 l_tsk_actual_finish_date_tab            SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
156 l_tsk_est_start_date_tab                SYSTEM.pa_date_tbl_type     := SYSTEM.pa_date_tbl_type();
157 l_tsk_est_finish_date_tab       SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
158 l_tsk_rollup_weight1_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
159 l_tsk_override_weight2_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
160 l_tsk_base_weight3_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
161 l_tsk_task_weight4_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
162 l_tsk_status_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
163 l_tsk_object_id_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
164 l_tsk_proj_element_id_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
165 l_tsk_ppl_act_eff_tab           SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
166 l_tsk_ppl_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
167 l_tsk_ppl_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
168 l_tsk_ppl_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
169 l_tsk_ppl_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
170 l_tsk_ppl_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
171 l_tsk_ppl_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
172 l_tsk_est_rem_effort_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
173 l_tsk_ppl_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
174 l_tsk_ppl_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
175 l_tsk_ppl_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
176 l_tsk_ppl_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
177 l_tsk_ppl_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
178 l_tsk_ppl_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
179 l_tsk_eqpmt_act_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
180 l_tsk_eqpmt_act_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
181 l_tsk_eqpmt_act_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
182 l_tsk_eqpmt_act_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
183 l_tsk_eqpmt_act_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
184 l_tsk_eqpmt_act_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
185 l_tsk_eqpmt_act_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
186 l_tsk_eqpmt_etc_effort_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
187 l_tsk_eqpmt_etc_cost_tc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
188 l_tsk_eqpmt_etc_cost_pc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
189 l_tsk_eqpmt_etc_cost_fc_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
190 l_tsk_eqpmt_etc_rawcost_tc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
191 l_tsk_eqpmt_etc_rawcost_pc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
192 l_tsk_eqpmt_etc_rawcost_fc_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
193 l_tsk_oth_quantity_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
194 l_tsk_oth_act_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
195 l_tsk_oth_act_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
196 l_tsk_oth_act_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
197 l_tsk_oth_act_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
198 l_tsk_oth_act_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
199 l_tsk_oth_act_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
200 l_tsk_oth_etc_quantity_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
201 l_tsk_oth_etc_cost_tc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
202 l_tsk_oth_etc_cost_pc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
203 l_tsk_oth_etc_cost_fc_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
204 l_tsk_oth_etc_rawcost_tc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
205 l_tsk_oth_etc_rawcost_pc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
206 l_tsk_oth_etc_rawcost_fc_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
207 l_tsk_current_flag_tab          SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
208 l_tsk_pf_cost_rate_type_tab     SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
209 l_tsk_pf_cost_exc_rate_tab      SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
210 l_tsk_pf_cost_rate_date_tab     SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
211 l_tsk_p_cost_rate_type_tab      SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
212 l_tsk_p_cost_exc_rate_tab       SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
213 l_tsk_p_cost_rate_date_tab      SYSTEM.pa_date_tbl_type     :=   SYSTEM.pa_date_tbl_type();
214 l_tsk_txn_currency_code_tab     SYSTEM.PA_VARCHAR2_15_TBL_TYPE  := SYSTEM.PA_VARCHAR2_15_TBL_TYPE();
215 l_tsk_prog_pa_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
216 l_tsk_prog_gl_period_name_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
217 l_tsk_bac_value_tab         SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
218 l_tsk_bac_self_value_tab        SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE(); -- Bug 4493105
219 l_tsk_earned_value_tab          SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
220 l_tsk_deriv_method_tab          SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
221 l_tsk_progress_rollup_id_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
222 l_tsk_rollup_rec_ver_num_tab        SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
223 l_tsk_object_version_id_tab             SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
224 l_tsk_progress_stat_code_tab            SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
225 l_tsk_incremental_wq_tab                SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
226 l_tsk_cumulative_wq_tab                 SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
227 l_tsk_base_prog_stat_code_tab           SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
228 l_tsk_eff_roll_prg_st_code_tab          SYSTEM.PA_VARCHAR2_150_TBL_TYPE := SYSTEM.PA_VARCHAR2_150_TBL_TYPE();
229 l_tsk_percent_complete_id_tab           SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
230 l_tsk_task_wt_basis_code_tab            SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
231 l_tsk_base_percent_comp_tab     SYSTEM.PA_NUM_TBL_TYPE      :=   SYSTEM.PA_NUM_TBL_TYPE();
232 l_tsk_structure_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE      := SYSTEM.PA_NUM_TBL_TYPE();
233 
234 l_tsk_create_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
235 l_tsk_update_required                   SYSTEM.PA_VARCHAR2_1_TBL_TYPE   := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
236 
237 
238 l_prj_currency_code             VARCHAR2(15);
239 l_total_tasks                   NUMBER;
240 l_prog_pa_period_name           VARCHAR2(30);
241 l_prog_gl_period_name           VARCHAR2(30);
242 task_index                      NUMBER;
243 l_task_id                       NUMBER;
244 l_child_rollup_rec_exists       VARCHAR2(1);
245 l_sch_rec_ver_number            NUMBER;
246 
247 l_equipment_hours               NUMBER;
248 l_pou_labor_brdn_cost           NUMBER;
249 l_prj_labor_brdn_cost           NUMBER;
250 l_pou_equip_brdn_cost           NUMBER;
251 l_prj_equip_brdn_cost           NUMBER;
252 l_pou_labor_raw_cost            NUMBER;
253 l_prj_labor_raw_cost            NUMBER;
254 l_pou_equip_raw_cost            NUMBER;
255 l_prj_equip_raw_cost            NUMBER;
256 l_labor_hours                   NUMBER;
257 l_pou_oth_brdn_cost             NUMBER;
258 l_prj_oth_brdn_cost             NUMBER;
259 l_pou_oth_raw_cost              NUMBER;
260 l_prj_oth_raw_cost              NUMBER;
261 l_remaining_effort1             NUMBER;
262 l_percent_complete1             NUMBER;
263 l_percent_complete2             NUMBER;
264 l_etc_cost_pc                   NUMBER;
265 l_ppl_etc_cost_pc               NUMBER;
266 l_eqpmt_etc_cost_pc             NUMBER;
267 l_etc_cost_fc                   NUMBER;
268 l_ppl_etc_cost_fc               NUMBER;
269 l_eqpmt_etc_cost_fc             NUMBER;
270 l_bac_value1                    NUMBER;
271 l_ppl_act_cost_to_date_pc       NUMBER;
272 l_eqpmt_act_cost_to_date_pc     NUMBER;
273 l_oth_act_cost_to_date_fc       NUMBER;
274 l_ppl_act_cost_to_date_fc       NUMBER;
275 l_eqpmt_act_cost_to_date_fc     NUMBER;
276 l_ppl_act_effort_to_date        NUMBER;
277 l_oth_act_rawcost_to_date_pc    NUMBER;
278 l_ppl_act_rawcost_to_date_pc    NUMBER;
279 l_eqpmt_act_rawcost_to_date_pc  NUMBER;
280 l_etc_rawcost_pc                NUMBER;
281 l_ppl_etc_rawcost_pc            NUMBER;
282 l_eqpmt_act_rawcost_to_date_fc  NUMBER;
283 l_ppl_act_rawcost_to_date_fc    NUMBER;
284 l_oth_act_rawcost_to_date_fc    NUMBER;
285 l_eqpmt_act_effort_to_date      NUMBER;
286 l_eqpmt_etc_effort              NUMBER;
287 l_earned_value1                 NUMBER;
288 l_oth_act_cost_to_date_pc       NUMBER;
289 l_percent_complete_id           NUMBER;
290 l_progress_rollup_id            NUMBER;
291 l_rollup_rec_ver_number         NUMBER;
292 l_eqpmt_etc_rawcost_fc          NUMBER;
293 l_ppl_etc_rawcost_fc            NUMBER;
294 l_etc_rawcost_fc                NUMBER;
295 l_eqpmt_etc_rawcost_pc          NUMBER;
296 l_period_name                   VARCHAR2(30);
297 l_existing_object_status        VARCHAR2(150);
298 l_status_code                   VARCHAR2(150);
299 l_system_status_code            VARCHAR2(150);
300 l_status_code_temp              VARCHAR2(150); --Bug#5374114
301 l_system_status_code_temp       VARCHAR2(150); --Bug#5374114
302 l_max_rollup_as_of_date2        DATE;
303 l_current_flag                  VARCHAR2(1);
304 l_pev_schedule_id               NUMBER;
305 l_actual_exists                 VARCHAR2(1):='N';
306 l_tsk_scheduled_start_date      Date;
307 l_tsk_scheduled_finish_date     Date;
308 l_actual_start_date             Date;
309 l_actual_finish_date            Date;
310 l_estimated_start_date          Date;
311 l_estimated_finish_date         Date;
312 l_eff_rollup_status_code        VARCHAR2(150);
313 l_progress_status_code          VARCHAR2(150);
314 l_rolled_up_base_per_comp       NUMBER;
315 l_rolled_up_base_prog_stat      VARCHAR2(150);
316 l_rolled_up_per_comp            NUMBER;
317 l_rolled_up_prog_stat           VARCHAR2(150);
318 
319 
320 CURSOR cur_sch_id( c_object_version_id NUMBER )
321 IS
322 SELECT pev_schedule_id, record_version_number
323 FROM pa_proj_elem_ver_schedule
324 WHERE project_id = p_project_id
325 AND element_version_id = c_object_version_id;
326 
327 
328 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
329 IS
330 SELECT scheduled_start_date, scheduled_finish_date
331 FROM pa_proj_elem_ver_schedule
332 WHERE PROJECT_ID = c_project_id
333 AND element_version_id = c_element_version_id;
334 
335 CURSOR c_get_dlv_status(c_task_id NUMBER) IS
336 SELECT 'Y' FROM DUAL
337 WHERE EXISTS
338 (SELECT 'xyz'
339 FROM    pa_percent_completes
340 WHERE project_id = p_project_id
341 AND task_id = c_task_id
342 AND object_type = 'PA_DELIVERABLES'
343 AND trunc(date_computed)<= trunc(p_as_of_date)
344 AND structure_type = 'WORKPLAN'
345 AND published_flag = 'Y'
346 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
347 );
348 
349 
350 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
351 IS
352 SELECT STATUS_CODE
353 FROM PA_PROJ_ELEMENTS
354 WHERE PROJ_ELEMENT_ID = l_proj_element_id
355 AND PROJECT_ID = l_project_id;
356 
357 CURSOR cur_status( c_status_weight      VARCHAR2 )
358 IS
359 select lookup_code
360 from fnd_lookup_values
361 where attribute4 = c_status_weight
362 and lookup_type = 'PROGRESS_SYSTEM_STATUS'
363 and language = 'US'
364 AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
365 
366 CURSOR cur_task_status( c_status_weight VARCHAR2 )
367 IS
368 select project_status_code
369 from pa_project_statuses
370 where project_status_weight =   c_status_weight
371 and status_type = 'TASK'
372 and predefined_flag = 'Y';
373 
374 l_process_number_temp   NUMBER;
375 
376    --This cursor selects the immediate child taks of a given task.
377    CURSOR cur_tasks(c_parent_task_ver_id NUMBER)
378    IS
379           --select      structure
380     SELECT to_number(null) object_id_from1
381                 , ppev.object_type parent_object_type
382                 , element_version_id object_id_to1
383                 , ppev.object_type object_type
384                 , ppev.wbs_level wbs_level
385                 , to_number( null ) weighting_percentage
386                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
387                 , ppr.completed_percentage override_percent_complete
388 		, ppr.as_of_date
389                 , ppr.actual_start_date
390                 , ppr.actual_finish_date
391                 , ppr.estimated_start_date
392                 , ppr.estimated_finish_date
393                 , pps1.project_status_weight rollup_weight1 ---rollup progress status   code
394                 , pps2.project_status_weight override_weight2 ---override progress status code
395                 , pps3.project_status_weight base_weight3        --base prog status
396                 , to_number( null )     task_weight4        --task status
397                 , to_char(null) status_code
398                 , ppev.proj_element_id object_id
399                 , ppev.proj_element_id
400 		, ppr.PPL_ACT_EFFORT_TO_DATE
401                 , ppr.PPL_ACT_COST_TO_DATE_TC
402                 , ppr.PPL_ACT_COST_TO_DATE_PC
403                 , ppr.PPL_ACT_COST_TO_DATE_FC
404 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
405 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
406 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
407                 , ppr.ESTIMATED_REMAINING_EFFORT
408                 , ppr.PPL_ETC_COST_TC
409                 , ppr.PPL_ETC_COST_PC
410                 , ppr.PPL_ETC_COST_FC
411                 , ppr.PPL_ETC_RAWCOST_TC
412                 , ppr.PPL_ETC_RAWCOST_PC
413                 , ppr.PPL_ETC_RAWCOST_FC
414 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
415                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
416                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
417                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
418 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
419 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
420 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
421                 , ppr.EQPMT_ETC_EFFORT
422                 , ppr.EQPMT_ETC_COST_TC
423                 , ppr.EQPMT_ETC_COST_PC
424                 , ppr.EQPMT_ETC_COST_FC
425                 , ppr.EQPMT_ETC_RAWCOST_TC
426                 , ppr.EQPMT_ETC_RAWCOST_PC
427                 , ppr.EQPMT_ETC_RAWCOST_FC
428 		, ppr.OTH_QUANTITY_TO_DATE
429                 , ppr.OTH_ACT_COST_TO_DATE_TC
430                 , ppr.OTH_ACT_COST_TO_DATE_PC
431                 , ppr.OTH_ACT_COST_TO_DATE_FC
432 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
433 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
434 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
435 		, ppr.OTH_ETC_QUANTITY
436                 , ppr.OTH_ETC_COST_TC
437                 , ppr.OTH_ETC_COST_PC
438                 , ppr.OTH_ETC_COST_FC
439                 , ppr.OTH_ETC_RAWCOST_TC
440                 , ppr.OTH_ETC_RAWCOST_PC
441                 , ppr.OTH_ETC_RAWCOST_FC
442                 , ppr.CURRENT_FLAG
443                 , ppr.PROJFUNC_COST_RATE_TYPE
444                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
445                 , ppr.PROJFUNC_COST_RATE_DATE
446                 , ppr.PROJ_COST_RATE_TYPE
447                 , ppr.PROJ_COST_EXCHANGE_RATE
448                 , ppr.PROJ_COST_RATE_DATE
449                 , ppr.TXN_CURRENCY_CODE
450                 , ppr.PROG_PA_PERIOD_NAME
451                 , ppr.PROG_GL_PERIOD_NAME
452                 , 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
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,'N')
454                   BAC_value_self -- bug 4493105
455                 , null earned_value
456 		, to_char(null) task_derivation_method
457 		, ppr.progress_rollup_id
458 		, ppr.record_version_number
459 	--	, element_version_id object_version_id Bug 4651304 : select ppr.object_version_id
460 		, ppr.object_version_id -- Bug 4651304
461                 , ppr.progress_status_code
462                 , ppr.incremental_work_quantity
463                 , ppr.cumulative_work_quantity
464 		-- 4533112 : Added decode to select N and Y only
465                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
466                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
467                 , ppr.percent_complete_id
468                 , ppr.TASK_WT_BASIS_CODE
469                 , ppr.structure_version_id
470                 ,'N' create_required
471                 ,'N' update_required
472         , ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
473     FROM pa_proj_element_versions ppev,
474             pa_progress_rollup ppr,
475             pa_project_statuses pps1,
476             pa_project_statuses pps2,
477             pa_project_statuses pps3 ,
478             pa_proj_rollup_temp temp
479     WHERE  --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
480                --element_version_id IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
481                temp.object_id = ppev.element_version_id
482         AND    temp.process_number = l_process_number_temp
483 	AND    ppev.object_type = 'PA_STRUCTURES'
484         AND    ppr.project_id  = ppev.project_id
485         AND    ppr.object_id = ppev.proj_element_id
486         AND    ppr.object_type =  'PA_STRUCTURES'
487         AND    ppr.as_of_date  = pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
488                                  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
489         AND    ppr.current_flag <>     'W'
490         AND    ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
491         AND    ppr.progress_status_code = pps2.project_status_code(+)
492         AND    ppr.base_progress_status_code = pps3.project_status_code(+)
493         AND    ppr.structure_type = p_structure_type
494         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))
495         UNION
496         --      select tasks
497         SELECT pobj.object_id_from1
498                 , ppev1.object_type     parent_object_type
499                 , pobj.object_id_to1
500                 , ppev2.object_type     object_type
501                 , ppev2.wbs_level wbs_level
502                 , pobj.weighting_percentage
503                 , ppr.EFF_ROLLUP_PERCENT_COMP   rollup_completed_percentage
504                 , ppr.completed_percentage override_percent_complete
505 		, ppr.as_of_date
506                 , ppr.actual_start_date
507                 , ppr.actual_finish_date
508                 , ppr.estimated_start_date
509                 , ppr.estimated_finish_date
510                 , pps1.project_status_weight rollup_weight1     ---rollup       progress        status code
511                 , pps2.project_status_weight override_weight2 ---override progress status code
512                 , pps3.project_status_weight base_weight3        ---base prog status
513                 , pps4.project_status_weight    task_weight4
514                 , ppe.status_code
515                 , ppev2.proj_element_id object_id
516                 , ppev2.proj_element_id
517 		, ppr.PPL_ACT_EFFORT_TO_DATE
518                 , ppr.PPL_ACT_COST_TO_DATE_TC
519                 , ppr.PPL_ACT_COST_TO_DATE_PC
520                 , ppr.PPL_ACT_COST_TO_DATE_FC
521 		, ppr.PPL_ACT_RAWCOST_TO_DATE_TC
522 		, ppr.PPL_ACT_RAWCOST_TO_DATE_PC
523 		, ppr.PPL_ACT_RAWCOST_TO_DATE_FC
524                 , ppr.ESTIMATED_REMAINING_EFFORT
525                 , ppr.PPL_ETC_COST_TC
526                 , ppr.PPL_ETC_COST_PC
527                 , ppr.PPL_ETC_COST_FC
528                 , ppr.PPL_ETC_RAWCOST_TC
529                 , ppr.PPL_ETC_RAWCOST_PC
530                 , ppr.PPL_ETC_RAWCOST_FC
531 		, ppr.EQPMT_ACT_EFFORT_TO_DATE
532 		, ppr.EQPMT_ACT_COST_TO_DATE_TC
533                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
534                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
535 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
536 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
537 		, ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
538                 , ppr.EQPMT_ETC_EFFORT
539                 , ppr.EQPMT_ETC_COST_TC
540                 , ppr.EQPMT_ETC_COST_PC
541                 , ppr.EQPMT_ETC_COST_FC
542                 , ppr.EQPMT_ETC_RAWCOST_TC
543                 , ppr.EQPMT_ETC_RAWCOST_PC
544                 , ppr.EQPMT_ETC_RAWCOST_FC
545 		, ppr.OTH_QUANTITY_TO_DATE
546                 , ppr.OTH_ACT_COST_TO_DATE_TC
547                 , ppr.OTH_ACT_COST_TO_DATE_PC
548                 , ppr.OTH_ACT_COST_TO_DATE_FC
549 		, ppr.OTH_ACT_RAWCOST_TO_DATE_TC
550 		, ppr.OTH_ACT_RAWCOST_TO_DATE_PC
551 		, ppr.OTH_ACT_RAWCOST_TO_DATE_FC
552 		, ppr.OTH_ETC_QUANTITY
553                 , ppr.OTH_ETC_COST_TC
554                 , ppr.OTH_ETC_COST_PC
555                 , ppr.OTH_ETC_COST_FC
556                 , ppr.OTH_ETC_RAWCOST_TC
557                 , ppr.OTH_ETC_RAWCOST_PC
558                 , ppr.OTH_ETC_RAWCOST_FC
559                 , ppr.CURRENT_FLAG
560                 , ppr.PROJFUNC_COST_RATE_TYPE
561                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
562                 , ppr.PROJFUNC_COST_RATE_DATE
563                 , ppr.PROJ_COST_RATE_TYPE
564                 , ppr.PROJ_COST_EXCHANGE_RATE
565                 , ppr.PROJ_COST_RATE_DATE
566                 , ppr.TXN_CURRENCY_CODE
567                 , ppr.PROG_PA_PERIOD_NAME
568                 , ppr.PROG_GL_PERIOD_NAME
569                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
570                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
571                                          p_structure_type,p_working_wp_prog_flag) BAC_value
572                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,
573                                         'FINANCIAL',p_fin_rollup_method), ppev2.proj_element_id, ppev2.parent_structure_version_id,
574                                          p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
575                 , null earned_value
576 		, 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
577 		, ppr.progress_rollup_id
578 		, ppr.record_version_number
579 	--	, pobj.object_id_to1 object_version_id Bug 4651304 : select ppr.object_version_id
580 		, ppr.object_version_id -- Bug 4651304
581                 , ppr.progress_status_code
582                 , ppr.incremental_work_quantity
583                 , ppr.cumulative_work_quantity
584 		-- 4533112 : Added decode to select N and Y only
585                 , decode(ppr.base_progress_status_code, 'Y', 'Y', 'N')
586                 , ppr.EFF_ROLLUP_PROG_STAT_CODE
587                 , ppr.percent_complete_id
588                 , ppr.TASK_WT_BASIS_CODE
589                 , ppr.structure_version_id
590                 ,'N' create_required
591                 ,'N' update_required
592 		, ppr.base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
593           FROM
594                   pa_object_relationships       pobj,
595                   pa_proj_element_versions      ppev1,
596                   pa_proj_element_versions      ppev2,
597                   pa_progress_rollup ppr,
598                   pa_proj_elements      ppe,
599                   pa_project_statuses pps1,
600                   pa_project_statuses pps2,
601                   pa_project_statuses pps3,
602                   pa_project_statuses pps4,
603             pa_task_types ttype ,
604             pa_proj_rollup_temp temp
605         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
606           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
607               temp.object_id = pobj.object_id_from1
608           AND temp.process_number = l_process_number_temp
609           AND pobj.object_id_from1 = ppev1.element_version_id
610           AND pobj.object_id_to1 = ppev2.element_version_id
611           AND pobj.relationship_type = 'S'
612           AND ppr.project_id = ppev2.project_id
613           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
614                                   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
615           AND ppr.current_flag <> 'W'
616           AND ppr.object_id     = ppev2.proj_element_id
617           AND ppr.project_id = ppev2.project_id
618           AND ppr.object_type = 'PA_TASKS'
619           AND ppe.proj_element_id = ppev2.proj_element_id
620           AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
621           AND ppr.progress_status_code = pps2.project_status_code(+)
622           AND ppr.base_progress_status_code = pps3.project_status_code(+)
623           AND ppe.status_code = pps4.project_status_code(+)
624           AND ppe.project_id = ppev2.project_id
625           AND ppe.object_type = ppev2.object_type
626           AND ppev2.object_type = 'PA_TASKS'
627           AND ppe.object_type = 'PA_TASKS'
628           AND ppe.link_task_flag <> 'Y' -- 4392189
629           AND pobj.object_type_to = 'PA_TASKS'
630           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
631           AND ppe.type_id = ttype.task_type_id
632           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))
633           AND ppr.structure_type = p_structure_type
634 	  AND ((ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
635 UNION ALL
636           SELECT to_number(null)        object_id_from1
637                 , ppev.object_type parent_object_type
638                 , element_version_id object_id_to1
639                 , ppev.object_type object_type
640                 , ppev.wbs_level wbs_level
641                 , to_number( null )     weighting_percentage
642                 , to_number(null) rollup_completed_percentage
643                 , to_number(null) override_percent_complete
644 		, to_date(null) as_of_date
645                 , to_date(null) actual_start_date
646                 , to_date(null) actual_finish_date
647                 , to_date(null) estimated_start_date
648                 , to_date(null) estimated_finish_date
649                 , to_number(null) rollup_weight1 ---rollup progress status code
650                 , to_number(null) override_weight2      ---override progress    status code
651                 , to_number(null) base_weight3     --base       prog    status
652                 , to_number( null )     task_weight4        --task status
653                 , to_char(null) status_code
654                 , ppev.proj_element_id object_id
655                 , ppev.proj_element_id
656 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
657                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
658                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
659                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
660 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
661 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
662 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
663                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
664                 , to_number( null )     PPL_ETC_COST_TC
665                 , to_number( null )     PPL_ETC_COST_PC
666                 , to_number( null )     PPL_ETC_COST_FC
667                 , to_number( null )     PPL_ETC_RAWCOST_TC
668                 , to_number( null )     PPL_ETC_RAWCOST_PC
669                 , to_number( null )     PPL_ETC_RAWCOST_FC
670 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
671                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
672                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
673                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
674 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
675 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
676 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
677                 , to_number( null )     EQPMT_ETC_EFFORT
678                 , to_number( null )     EQPMT_ETC_COST_TC
679                 , to_number( null )     EQPMT_ETC_COST_PC
680                 , to_number( null )     EQPMT_ETC_COST_FC
681                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
682                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
683                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
684 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
685                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
686                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
687                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
688 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
689 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
690 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
691 		, to_number(  null    ) OTH_ETC_QUANTITY
692                 , to_number( null )     OTH_ETC_COST_TC
693                 , to_number( null )     OTH_ETC_COST_PC
694                 , to_number( null )     OTH_ETC_COST_FC
695                 , to_number( null )     OTH_ETC_RAWCOST_TC
696                 , to_number( null )     OTH_ETC_RAWCOST_PC
697                 , to_number( null )     OTH_ETC_RAWCOST_FC
698                 , to_char(null) CURRENT_FLAG
699                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
700                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
701                 , to_date(null) PROJFUNC_COST_RATE_DATE
702                 , to_char(null) PROJ_COST_RATE_TYPE
703                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
704                 , to_date(null) PROJ_COST_RATE_DATE
705                 , to_char(null) TXN_CURRENCY_CODE
706                 , to_char(null) PROG_PA_PERIOD_NAME
707                 , to_char(null) PROG_GL_PERIOD_NAME
708                 , 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
709                 , 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')
710                    BAC_value_self -- bug 4493105
711                 , null earned_value
712 		, to_char(null) task_derivation_method
713 		, to_number(null)     progress_rollup_id
714 		, to_number(null)     record_version_number
715                 , element_version_id object_version_id
716                 , to_char(null) progress_status_code
717                 , to_number(null) incremental_work_quantity
718                 , to_number(null) cumulative_work_quantity
719 		-- 4533112 : Added N only
720                 , 'N' base_progress_status_code
721                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
722                 , to_number(null) percent_complete_id
723                 , to_char(null) TASK_WT_BASIS_CODE
724                 , to_number(null) structure_version_id
725                 ,'N'    create_required
726                 ,'N'    update_required
727 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
728           FROM pa_proj_element_versions ppev , pa_proj_rollup_temp temp
729           WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
730             --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
731             element_version_id  = temp.object_id
732                 AND temp.process_number = l_process_number_temp
733          AND    ppev.object_type =      'PA_STRUCTURES'
734          AND    pa_progress_utils.get_max_rollup_asofdate(ppev.project_id,
735                         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 */)
736                         IS      NULL
737         UNION
738         --      select tasks
739         SELECT pobj.object_id_from1
740                 , ppev1.object_type     parent_object_type
741                 , pobj.object_id_to1
742                 , ppev2.object_type     object_type
743                 , ppev2.wbs_level wbs_level
744                 , pobj.weighting_percentage
745                 , to_number(null) rollup_completed_percentage
746                 , to_number(null) override_percent_complete
747 		, to_date(null) as_of_date
748                 , to_date(null) actual_start_date
749                 , to_date(null) actual_finish_date
750                 , to_date(null) estimated_start_date
751                 , to_date(null) estimated_finish_date
752                 , to_number(null) rollup_weight1 ---rollup progress status code
753                 , to_number(null) override_weight2      ---override progress    status code
754                 , to_number(null) base_weight3     --base       prog    status
755                 , to_number( null )     task_weight4        --task status
756                 , to_char(null) status_code
757                 , ppev2.proj_element_id object_id
758                 , ppev2.proj_element_id
759 		, to_number(  null    ) PPL_ACT_EFFORT_TO_DATE
760                 , to_number( null )     PPL_ACT_COST_TO_DATE_TC
761                 , to_number( null )     PPL_ACT_COST_TO_DATE_PC
762                 , to_number( null )     PPL_ACT_COST_TO_DATE_FC
763 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_TC
764 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_PC
765 		, to_number(  null    ) PPL_ACT_RAWCOST_TO_DATE_FC
766                 , to_number( null )     ESTIMATED_REMAINING_EFFORT
767                 , to_number( null )     PPL_ETC_COST_TC
768                 , to_number( null )     PPL_ETC_COST_PC
769                 , to_number( null )     PPL_ETC_COST_FC
770                 , to_number( null )     PPL_ETC_RAWCOST_TC
771                 , to_number( null )     PPL_ETC_RAWCOST_PC
772                 , to_number( null )     PPL_ETC_RAWCOST_FC
773 		, to_number(  null    ) EQPMT_ACT_EFFORT_TO_DATE
774                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_TC
775                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_PC
776                 , to_number( null )     EQPMT_ACT_COST_TO_DATE_FC
777 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_TC
778 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_PC
779 		, to_number(  null    ) EQPMT_ACT_RAWCOST_TO_DATE_FC
780                 , to_number( null )     EQPMT_ETC_EFFORT
781                 , to_number( null )     EQPMT_ETC_COST_TC
782                 , to_number( null )     EQPMT_ETC_COST_PC
783                 , to_number( null )     EQPMT_ETC_COST_FC
784                 , to_number( null )     EQPMT_ETC_RAWCOST_TC
785                 , to_number( null )     EQPMT_ETC_RAWCOST_PC
786                 , to_number( null )     EQPMT_ETC_RAWCOST_FC
787 		, to_number(  null    ) OTH_QUANTITY_TO_DATE
788                 , to_number( null )     OTH_ACT_COST_TO_DATE_TC
789                 , to_number( null )     OTH_ACT_COST_TO_DATE_PC
790                 , to_number( null )     OTH_ACT_COST_TO_DATE_FC
791 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_TC
792 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_PC
793 		, to_number(  null    ) OTH_ACT_RAWCOST_TO_DATE_FC
794 		, to_number(  null    ) OTH_ETC_QUANTITY
795                 , to_number( null )     OTH_ETC_COST_TC
796                 , to_number( null )     OTH_ETC_COST_PC
797                 , to_number( null )     OTH_ETC_COST_FC
798                 , to_number( null )     OTH_ETC_RAWCOST_TC
799                 , to_number( null )     OTH_ETC_RAWCOST_PC
800                 , to_number( null )     OTH_ETC_RAWCOST_FC
801                 , to_char(null) CURRENT_FLAG
802                 , to_char(null)  PROJFUNC_COST_RATE_TYPE
803                 , to_number( null )     PROJFUNC_COST_EXCHANGE_RATE
804                 , to_date(null) PROJFUNC_COST_RATE_DATE
805                 , to_char(null) PROJ_COST_RATE_TYPE
806                 , to_number( null )     PROJ_COST_EXCHANGE_RATE
807                 , to_date(null) PROJ_COST_RATE_DATE
808                 , to_char(null) TXN_CURRENCY_CODE
809                 , to_char(null) PROG_PA_PERIOD_NAME
810                 , to_char(null) PROG_GL_PERIOD_NAME
811                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
812                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
813                                     p_structure_type,p_working_wp_prog_flag) BAC_value
814                 , pa_progress_utils.Get_BAC_Value(ppev2.project_id, decode(p_structure_type,'WORKPLAN',p_wp_rollup_method,'FINANCIAL',
815                                    p_fin_rollup_method), ppev2.proj_element_id,  ppev2.parent_structure_version_id,
816                                     p_structure_type,p_working_wp_prog_flag,'N') BAC_value_self -- bug 4493105
817                 , null earned_value
818 		, 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
819 		, to_number(null) progress_rollup_id
820 		, to_number(null) record_version_number
821                 , pobj.object_id_to1 object_version_id
822                 , to_char(null) progress_status_code
823                 , to_number(null) incremental_work_quantity
824                 , to_number(null) cumulative_work_quantity
825 		-- 4533112 : Added N only
826                 , 'N' base_progress_status_code
827                 , to_char(null) EFF_ROLLUP_PROG_STAT_CODE
828                 , to_number(null) percent_complete_id
829                 , to_char(null) TASK_WT_BASIS_CODE
830                 , to_number(null) structure_version_id
831                 ,'N' create_required
832                 ,'N' update_required
833 		, to_number(null) base_percent_complete -- 4392189 : Program Reporting Changes - Phase 2
834           FROM
835                   pa_object_relationships       pobj,
836                   pa_proj_element_versions      ppev1,
837                   pa_proj_element_versions      ppev2,
838                   pa_proj_elements      ppe,
839                   pa_project_statuses pps4,
840             pa_task_types ttype ,
841             pa_proj_rollup_temp temp
842         WHERE --BUG 4355204 rtarway, removed in clause and added pa_proj_rollup_temp in FROM
843           --IN (SELECT object_id from pa_proj_rollup_temp where process_number = l_process_number_temp)
844           pobj.object_id_from1  = temp.object_id
845           AND temp.process_number = l_process_number_temp
846           AND pobj.object_id_from1 = ppev1.element_version_id
847           AND pobj.object_id_to1 = ppev2.element_version_id
848           AND pobj.relationship_type = 'S'
849           AND ppe.proj_element_id = ppev2.proj_element_id
850           AND ppe.status_code = pps4.project_status_code(+)
851           AND ppe.project_id = ppev2.project_id
852           AND ppe.object_type = ppev2.object_type
853           AND ppev2.object_type = 'PA_TASKS'
854           AND ppe.object_type = 'PA_TASKS'
855           AND ppe.link_task_flag <> 'Y' -- 4392189
856           AND pobj.object_type_to = 'PA_TASKS'
857           AND pobj.object_type_from IN ('PA_STRUCTURES', 'PA_TASKS')
858           AND ppe.type_id = ttype.task_type_id
859           AND pa_progress_utils.get_max_rollup_asofdate(ppev2.project_id,
860                   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 */)
861                   IS NULL
862       AND ( (ppev2.financial_task_flag = 'Y' AND p_structure_type = 'FINANCIAL') OR p_structure_type = 'WORKPLAN') -- Bug 4346483
863       ;
864 
865    -- FPM       Dev CR 6 : Added Union ALL
866 
867    l_asgn_task_version_id_tab                    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
868    l_asgn_rate_based_flag_tab                    SYSTEM.PA_VARCHAR2_1_TBL_TYPE    :=    SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
869    l_asgn_resource_class_code_tab                SYSTEM.PA_VARCHAR2_30_TBL_TYPE :=      SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
870    l_asgn_res_assignment_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
871    l_asgn_planned_quantity_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
872    l_asgn_plan_bur_cost_pc_tab                  SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
873    l_asgn_res_list_member_id_tab                SYSTEM.PA_NUM_TBL_TYPE  :=      SYSTEM.PA_NUM_TBL_TYPE();
874 
875    CURSOR       cur_assgn_rec_bulk(     c_task_ver_id NUMBER, c_task_id NUMBER )        IS
876    SELECT       a.wbs_element_version_id
877    ,    a.rate_based_flag
878    ,    a.resource_class_code
879    ,    a.resource_assignment_id
880    ,    a.total_plan_quantity planned_quantity
881    ,    a.total_project_burdened_cost   planned_bur_cost_proj_cur
882    ,    a.resource_list_member_id
883    from pa_resource_assignments a
884    WHERE a.wbs_element_version_id = c_task_ver_id
885    AND a.project_id     = p_project_id
886    AND a.task_id = c_task_id
887 --   AND a.ta_display_flag        = 'Y' --Bug 4323537
888 ;
889 
890 CURSOR cur_get_asgn_progress(c_object_id NUMBER, c_proj_element_id NUMBER)      IS
891 SELECT ppr.*
892 FROM    pa_progress_rollup      ppr
893 WHERE ppr.project_id = p_project_id
894 AND ppr.object_id =     c_object_id
895 AND ppr.proj_element_id = c_proj_element_id
896 AND ppr.object_type     = 'PA_ASSIGNMENTS'
897 AND ppr.current_flag <> 'W'
898 AND ppr.structure_type =        p_structure_type
899 AND ppr.as_of_date <= p_as_of_date
900 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))
901 AND rownum =1
902 ORDER BY as_of_date     desc
903 ;
904 
905 l_asgn_progress_rec     cur_get_asgn_progress%ROWTYPE;
906 l_asgn_act_start_date    DATE;
907 l_asgn_act_finish_date   DATE;
908 l_asgn_est_start_date    DATE;
909 l_asgn_est_finish_date   DATE;
910 l_asgn_as_of_date       DATE;
911 l_asgn_ppl_act_eff      NUMBER;
912 l_asgn_eqp_act_eff      NUMBER;
913 l_asgn_ppl_act_cost     NUMBER;
914 l_asgn_eqp_act_cost     NUMBER;
915 l_asgn_oth_act_cost     NUMBER;
916 l_asgn_ppl_etc_eff      NUMBER;
917 l_asgn_eqp_etc_eff      NUMBER;
918 l_asgn_ppl_etc_cost     NUMBER;
919 l_asgn_eqp_etc_cost     NUMBER;
920 l_asgn_oth_etc_cost     NUMBER;
921 l_asgn_earned_value     NUMBER;
922 l_asgn_bac_value        NUMBER;
923 
924 /*
925    --This cursor selects  the task assignments of a given task.
926    -- sql id: 14904837  bug: 4871809  NOT USED IN CODE
927    CURSOR cur_assgn( c_task_ver_id        NUMBER, c_task_per_comp_deriv_method    VARCHAR2 )
928    IS
929         SELECT asgn.task_version_id
930         , 'PA_TASKS' parent_object_type
931         , 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
932         , asgn.task_version_id object_id_from1
933         , 'PA_ASSIGNMENTS' object_type
934         , asgn.resource_class_code
935         , asgn.rate_based_flag
936         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST')  assignment_type
937         , ppr.actual_start_date
938         , ppr.actual_finish_date
939         , ppr.estimated_start_date
940         , ppr.estimated_finish_date
941         , ppr.ESTIMATED_REMAINING_EFFORT
942         , ppr.STRUCTURE_VERSION_ID
943         , ppr.STRUCTURE_TYPE
944         , ppr.PROJ_ELEMENT_ID
945         , ppr.PPL_ACT_EFFORT_TO_DATE
946         , ppr.EQPMT_ACT_EFFORT_TO_DATE
947         , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE     total_act_effort_to_date
948         , ppr.EQPMT_ETC_EFFORT
949         , ppr.EQPMT_ETC_EFFORT +        ppr.estimated_remaining_effort  total_etc_effort
950         , ppr.OTH_ACT_COST_TO_DATE_TC
951         , ppr.OTH_ACT_COST_TO_DATE_PC
952         , ppr.OTH_ACT_COST_TO_DATE_FC
953         , ppr.OTH_ETC_COST_TC
954         , ppr.OTH_ETC_COST_PC
955         , ppr.OTH_ETC_COST_FC
956         , ppr.PPL_ACT_COST_TO_DATE_TC
957         , ppr.PPL_ACT_COST_TO_DATE_PC
958         , ppr.PPL_ACT_COST_TO_DATE_FC
959         , ppr.PPL_ETC_COST_TC
960         , ppr.PPL_ETC_COST_PC
961         , ppr.PPL_ETC_COST_FC
962         , ppr.EQPMT_ACT_COST_TO_DATE_TC
963         , ppr.EQPMT_ACT_COST_TO_DATE_PC
964         , ppr.EQPMT_ACT_COST_TO_DATE_FC
965         , 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
966         , 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
967         , 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
968         , ppr.EQPMT_ETC_COST_TC
969         , ppr.EQPMT_ETC_COST_PC
970         , ppr.EQPMT_ETC_COST_FC
971         , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC     + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
972         , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC     + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
973         , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC     + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
974 --      , ppr.EARNED_VALUE
975         , ppr.SUBPRJ_PPL_ACT_EFFORT
976         , ppr.SUBPRJ_EQPMT_ACT_EFFORT
977         , ppr.SUBPRJ_PPL_ETC_EFFORT
978         , ppr.SUBPRJ_EQPMT_ETC_EFFORT
979         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC
980         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC
981         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC
982         , ppr.SUBPRJ_PPL_ACT_COST_TC
983         , ppr.SUBPRJ_PPL_ACT_COST_FC
984         , ppr.SUBPRJ_PPL_ACT_COST_PC
985         , ppr.SUBPRJ_EQPMT_ACT_COST_TC
986         , ppr.SUBPRJ_EQPMT_ACT_COST_FC
987         , ppr.SUBPRJ_EQPMT_ACT_COST_PC
988         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
989         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
990         , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
991         , ppr.SUBPRJ_OTH_ETC_COST_TC
992         , ppr.SUBPRJ_OTH_ETC_COST_FC
993         , ppr.SUBPRJ_OTH_ETC_COST_PC
994         , ppr.SUBPRJ_PPL_ETC_COST_TC
995         , ppr.SUBPRJ_PPL_ETC_COST_FC
996         , ppr.SUBPRJ_PPL_ETC_COST_PC
997         , ppr.SUBPRJ_EQPMT_ETC_COST_TC
998         , ppr.SUBPRJ_EQPMT_ETC_COST_FC
999         , ppr.SUBPRJ_EQPMT_ETC_COST_PC
1000         , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC +     ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
1001         , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC +     ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
1002         , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC +     ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
1003         , ppr.SUBPRJ_EARNED_VALUE
1004         , ppr.CURRENT_FLAG
1005         , ppr.PROJFUNC_COST_RATE_TYPE
1006         , ppr.PROJFUNC_COST_EXCHANGE_RATE
1007         , ppr.PROJFUNC_COST_RATE_DATE
1008         , ppr.PROJ_COST_RATE_TYPE
1009         , ppr.PROJ_COST_EXCHANGE_RATE
1010         , ppr.PROJ_COST_RATE_DATE
1011         , ppr.TXN_CURRENCY_CODE
1012         , ppr.PROG_PA_PERIOD_NAME
1013         , ppr.PROG_GL_PERIOD_NAME
1014         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) +    nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
1015                                     ( 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
1016         , decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
1017                 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) +   nvl(ppr.PPL_ETC_COST_PC,0)
1018                 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT',       decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
1019                 + 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
1020         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
1021                                         decode( asgn.resource_class_code,
1022                                             'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
1023                                                  decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1,      0,
1024                                                  nvl( asgn.planned_quantity-ppr.PPL_ACT_EFFORT_TO_DATE,0))),
1025                                             'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) +  nvl(ppr.EQPMT_ETC_EFFORT,
1026                                                  decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1,    0,
1027                                                  nvl( asgn.planned_quantity-ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0)
1028                                    ),
1029                                  ( NVL( decode( asgn.resource_class_code,
1030                                           'FINANCIAL_ELEMENTS',
1031                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1032                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1033                                                  nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1034                                           'MATERIAL_ITEMS',
1035                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
1036                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
1037                                                  nvl( asgn.planned_bur_cost_proj_cur-ppr.OTH_ACT_COST_TO_DATE_PC,0))),
1038                                           'PEOPLE',
1039                                         nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)      + nvl(ppr.PPL_ETC_COST_PC,
1040                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
1041                                                           nvl(asgn.planned_bur_cost_proj_cur-ppr.PPL_ACT_COST_TO_DATE_PC,0))),
1042                                           'EQUIPMENT',
1043                                         nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
1044                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1,  0,
1045                                                           nvl(asgn.planned_bur_cost_proj_cur-ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
1046                                     nvl(asgn.planned_bur_cost_proj_cur,0)
1047                                     ))
1048                                           ) bac_value_in_task_deriv
1049     FROM
1050                   pa_task_asgmts_v       asgn,
1051                   pa_progress_rollup ppr
1052         WHERE asgn.task_version_id      = c_task_ver_id
1053           AND asgn.project_id = ppr.project_id
1054           AND asgn.RESOURCE_LIST_MEMBER_ID      = ppr.object_id -- Bug 3764224
1055           AND asgn.task_id      = ppr.proj_element_id --        Bug 3764224
1056           AND ppr.object_type = 'PA_ASSIGNMENTS'
1057   --        AND asgn.ta_display_flag      = 'Y'   --Bug 4323537.
1058           AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1059                                   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
1060           AND ppr.current_flag <> 'W'
1061           AND ppr.structure_type        =       p_structure_type
1062           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))
1063 UNION ALL
1064         SELECT asgn.task_version_id
1065         , 'PA_TASKS' parent_object_type
1066         , 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
1067         , asgn.task_version_id object_id_from1
1068         , 'PA_ASSIGNMENTS' object_type
1069         , asgn.resource_class_code
1070         , asgn.rate_based_flag
1071         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST')  assignment_type
1072         , to_date(null) actual_start_date
1073         , to_date(null) actual_finish_date
1074         , to_date(null) estimated_start_date
1075         , to_date(null) estimated_finish_date
1076         , to_number(null) ESTIMATED_REMAINING_EFFORT
1077         , to_number(null) STRUCTURE_VERSION_ID
1078         , to_char(null) STRUCTURE_TYPE
1079         , to_number(null) PROJ_ELEMENT_ID
1080         , to_number(null) PPL_ACT_EFFORT_TO_DATE
1081         , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
1082         , to_number(null) total_act_effort_to_date
1083         , to_number(null) EQPMT_ETC_EFFORT
1084         , to_number(null) total_etc_effort
1085         , to_number(null) OTH_ACT_COST_TO_DATE_TC
1086         , to_number(null) OTH_ACT_COST_TO_DATE_PC
1087         , to_number(null) OTH_ACT_COST_TO_DATE_FC
1088         , to_number(null) OTH_ETC_COST_TC
1089         , to_number(null) OTH_ETC_COST_PC
1090         , to_number(null) OTH_ETC_COST_FC
1091         , to_number(null) PPL_ACT_COST_TO_DATE_TC
1092         , to_number(null) PPL_ACT_COST_TO_DATE_PC
1093         , to_number(null) PPL_ACT_COST_TO_DATE_FC
1094         , to_number(null) PPL_ETC_COST_TC
1095         , to_number(null) PPL_ETC_COST_PC
1096         , to_number(null) PPL_ETC_COST_FC
1097         , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
1098         , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
1099         , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
1100         , to_number(null) total_act_cost_to_date_tc
1101         , to_number(null) total_act_cost_to_date_pc
1102         , to_number(null) total_act_cost_to_date_fc
1103         , to_number(null) EQPMT_ETC_COST_TC
1104         , to_number(null) EQPMT_ETC_COST_PC
1105         , to_number(null) EQPMT_ETC_COST_FC
1106         , to_number(null) total_etc_cost_tc
1107         , to_number(null) total_etc_cost_pc
1108         , to_number(null) total_etc_cost_fc
1109 --      , ppr.EARNED_VALUE
1110         , to_number(null) SUBPRJ_PPL_ACT_EFFORT
1111         , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
1112         , to_number(null) SUBPRJ_PPL_ETC_EFFORT
1113         , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
1114         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_TC
1115         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_FC
1116         , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_PC
1117         , to_number(null) SUBPRJ_PPL_ACT_COST_TC
1118         , to_number(null) SUBPRJ_PPL_ACT_COST_FC
1119         , to_number(null) SUBPRJ_PPL_ACT_COST_PC
1120         , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
1121         , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
1122         , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
1123         , to_number(null) total_subproj_act_cost_tc
1124         , to_number(null) total_subproj_act_cost_pc
1125         , to_number(null) total_subproj_act_cost_fc
1126         , to_number(null) SUBPRJ_OTH_ETC_COST_TC
1127         , to_number(null) SUBPRJ_OTH_ETC_COST_FC
1128         , to_number(null) SUBPRJ_OTH_ETC_COST_PC
1129         , to_number(null) SUBPRJ_PPL_ETC_COST_TC
1130         , to_number(null) SUBPRJ_PPL_ETC_COST_FC
1131         , to_number(null) SUBPRJ_PPL_ETC_COST_PC
1132         , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
1133         , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
1134         , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
1135         , to_number(null) total_subproj_etc_cost_tc
1136         , to_number(null) total_subproj_etc_cost_pc
1137         , to_number(null) total_subproj_etc_cost_fc
1138         , to_number(null) SUBPRJ_EARNED_VALUE
1139         , to_char(null) CURRENT_FLAG
1140         , to_char(null) PROJFUNC_COST_RATE_TYPE
1141         , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
1142         , to_date(null) PROJFUNC_COST_RATE_DATE
1143         , to_char(null) PROJ_COST_RATE_TYPE
1144         , to_number(null) PROJ_COST_EXCHANGE_RATE
1145         , to_date(null) PROJ_COST_RATE_DATE
1146         , to_char(null) TXN_CURRENCY_CODE
1147         , to_char(null) PROG_PA_PERIOD_NAME
1148         , to_char(null) PROG_GL_PERIOD_NAME
1149         , to_number(null) earned_value
1150         , to_number(null) bac_value_in_rollup_method
1151 --        , 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
1152 --bug 3815252
1153    ,    decode(c_task_per_comp_deriv_method,'EFFORT',decode(asgn.rate_based_flag,'Y',
1154                                  decode(asgn.resource_class_code,'PEOPLE', asgn.planned_quantity, 'EQUIPMENT', asgn.planned_quantity, 0),0)
1155                                 ,asgn.planned_bur_cost_proj_cur) bac_value_in_task_deriv --3801780
1156     FROM
1157                   pa_task_asgmts_v       asgn
1158         WHERE asgn.task_version_id      = c_task_ver_id
1159         AND     pa_progress_utils.get_max_rollup_asofdate(asgn.project_id,
1160                                   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
1161                         IS NULL
1162           --bug 3958686, now hidden assignments should not      to be selected
1163     --      AND asgn.ta_display_flag      = 'Y'  -- Bug 4323537
1164         ; */
1165 
1166 -- FPM Dev CR 5 : Reverted back the outer       join
1167 -- FPM Dev CR 4 : Removed       Outer   Join    from    rollup table.   No need to select       deliverables which do   not have rollup records
1168    --This       cursor selects  the deliverables of     a given task.
1169    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER,    c_task_ver_id NUMBER, c_project_id      NUMBER)
1170    IS
1171         SELECT obj.object_type_from
1172         , 'PA_TASKS' parent_object_type
1173         ,       obj.object_id_to2 object_id
1174         ,       obj.object_id_to1
1175         ,       obj.object_id_from1
1176         , 'PA_DELIVERABLES'     object_type
1177         , ppr.actual_finish_date
1178         , ppr.as_of_date
1179         , ppr.completed_percentage
1180         , ppr.STRUCTURE_TYPE
1181         , ppr.PROJ_ELEMENT_ID
1182         , ppr.STRUCTURE_VERSION_ID
1183         , ppr.TASK_WT_BASIS_CODE
1184         , elem.progress_weight weighting_percentage
1185         , ppr.base_percent_complete
1186         , pps2.project_status_weight override_weight    ---override progress status code
1187         , pps3.project_status_weight base_weight          --base prog status
1188     FROM pa_proj_elements elem
1189     , pa_object_relationships   obj
1190     , pa_progress_rollup        ppr
1191     , pa_project_statuses pps2
1192     , pa_project_statuses pps3
1193         WHERE  obj.object_id_from2= c_task_proj_elem_id
1194         AND obj.object_type_from        =       'PA_TASKS'
1195         AND obj.object_type_to =        'PA_DELIVERABLES'
1196         AND obj.relationship_type = 'A'
1197         AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
1198         AND elem.proj_element_id        =       obj.object_id_to2
1199         AND elem.object_type = 'PA_DELIVERABLES'
1200         and elem.project_id     = p_project_id
1201 --        AND obj.object_id_to1 = ppr.object_version_id(+)
1202         AND ppr.object_type(+) =        'PA_DELIVERABLES'
1203         AND ppr.project_id(+) = c_project_id
1204         AND ppr.object_id(+) = obj.object_id_to2
1205         AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate(c_project_id,
1206                                   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
1207         AND ppr.structure_type(+) = p_structure_type
1208         AND ppr.structure_version_id is null -- deliverable progress for        working version is not allowed
1209         AND ppr.base_progress_status_code = pps3.project_status_code(+)
1210         AND ppr.progress_status_code = pps2.project_status_code(+)
1211         AND ppr.current_flag(+) <>      'W'
1212         ;
1213 
1214     CURSOR c_mass_rollup_tasks IS
1215     select distinct object_id_from1
1216     from    pa_object_relationships
1217     start with  object_id_to1 IN (select object_id from pa_proj_rollup_temp  where process_number = l_process_number_temp)
1218     and relationship_type = 'S'
1219     connect by prior object_id_from1 = object_id_to1
1220     and relationship_type = 'S'
1221     MINUS
1222     select object_id object_id_from1 from pa_proj_rollup_temp  where process_number = l_process_number_temp
1223     ;
1224 
1225     CURSOR c_mass_rollup_tasks_temp IS
1226     select object_id
1227     from pa_proj_rollup_temp where process_number = l_process_number_temp
1228         ;
1229 
1230    CURSOR cur_check_published_version(c_structure_version_id number, c_project_id number)
1231    IS
1232    SELECT decode(status.project_system_status_code, 'STRUCTURE_PUBLISHED','Y','N')
1233    FROM pa_proj_elem_ver_structure str
1234    ,    pa_project_statuses     status
1235    where str.element_version_id = c_structure_version_id
1236    AND str.project_id = c_project_id
1237    AND str.status_code =        status.project_status_code;
1238 
1239    CURSOR cur_get_deepest_task(c_structure_version_id number, c_project_id number)
1240    IS
1241    SELECT element_version_id
1242    FROM pa_proj_element_versions
1243    where project_id = c_project_id
1244    and object_type = 'PA_TASKS'
1245    AND parent_structure_version_id      = c_structure_version_id
1246    AND wbs_level = (Select max(wbs_level)
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 
1252 l_track_wp_cost_flag            VARCHAR2(1) :=  'Y';    --bug 3830434
1253 l_assignment_exists      VARCHAR2(1) ;  -- Bug 3830673
1254 l_digit_number           number; --BUG  3950574,        rtarway
1255 
1256 --bug 4045979,  start
1257 l_base_struct_ver_id NUMBER;
1258 
1259 CURSOR check_task_baselined(c_structure_ver_id NUMBER,  c_task_version_id NUMBER)
1260 IS
1261   select 'Y' from pa_proj_element_versions ppev1
1262   where ppev1.parent_structure_version_id = c_structure_ver_id
1263   and ppev1.proj_element_id =   (select proj_element_id from pa_proj_element_versions ppev2
1264                                   where ppev2.element_version_id =      c_task_version_id
1265                                   and ppev2.project_id =        p_project_id);
1266 
1267 l_task_baselined VARCHAR2(1) := 'N';
1268 l_parent_task_baselined VARCHAR2(1) :=  'N';
1269 
1270 --bug 4045979,  end
1271 
1272 l_tsk_progress_exists VARCHAR2(1);
1273 l_mapping_tasks_to_rollup_tab   PA_PLSQL_DATATYPES.NumTabTyp;
1274 
1275 -- Bug 4242787 : Added Cursor cur_tree_rollup_dates
1276 CURSOR cur_tree_rollup_dates
1277 IS
1278 select ppr.as_of_date, ver2.proj_element_id child_task_id, ver2.element_version_id child_task_ver_id
1279 from pa_object_relationships obj
1280 , pa_proj_element_versions ver
1281 , pa_progress_rollup ppr
1282 , pa_proj_rollup_temp rollup
1283 , pa_proj_element_versions ver2
1284 where rollup.object_id = obj.object_id_to1
1285 AND rollup.process_number = l_process_number_temp
1286 AND obj.relationship_type = 'S'
1287 AND obj.object_type_from IN ('PA_STRUCTURES' ,'PA_TASKS')
1288 AND obj.object_type_to = 'PA_TASKS'
1289 AND obj.object_id_from1= ver.element_version_id
1290 AND ver.project_id = p_project_id
1291 AND ver.object_type IN ('PA_TASKS', 'PA_STRUCTURES')
1292 AND ver.project_id = ppr.project_id
1293 AND ppr.as_of_date > p_as_of_date
1294 AND ppr.object_id = ver.proj_element_id
1295 AND ppr.current_flag = 'Y'
1296 AND ppr.proj_element_id = ver.proj_element_id
1297 AND ppr.structure_type = p_structure_type
1298 AND ppr.structure_version_id is null
1299 AND obj.object_id_to1 = ver2.element_version_id
1300 AND ver2.project_id = p_project_id
1301 AND ver2.object_type = 'PA_TASKS'
1302 order by ppr.as_of_date;
1303 
1304 
1305 -- Bug 4392189 Begin
1306 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
1307 SELECT
1308   ppv2.project_id                     sub_project_id
1309  ,ppv2.element_version_id             sub_structure_ver_id
1310  ,ppv2.proj_element_id                sub_proj_element_id
1311 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
1312                                     'WORKPLAN','N')    sub_project_bac_value
1313 FROM
1314      pa_proj_element_versions ppv2
1315     ,pa_proj_elem_ver_structure ppevs2
1316     ,pa_object_relationships por1
1317     ,pa_object_relationships por2
1318 WHERE
1319   por1.object_id_from1 = c_task_version_id
1320  AND por1.object_id_to1 = por2.object_id_from1
1321  AND por2.object_id_to1 = ppv2.element_version_id
1322  AND ppv2.object_type = 'PA_STRUCTURES'
1323 -- AND por2.relationship_type in ( 'LW', 'LF' )
1324  AND por2.relationship_type = 'LW'
1325  AND ppevs2.element_version_id = ppv2.element_version_id
1326  AND ppevs2.project_id = ppv2.project_id
1327  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
1328  AND ppevs2.latest_eff_published_flag = 'Y';
1329 
1330 l_sub_project_id    NUMBER;
1331 l_sub_structure_ver_id  NUMBER;
1332 l_sub_proj_element_id   NUMBER;
1333 l_sub_project_bac_value NUMBER;
1334 
1335 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
1336 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
1337 SELECT
1338 ppr.progress_rollup_id
1339 ,ppr.actual_start_date
1340 ,ppr.actual_finish_date
1341 ,ppr.estimated_start_date
1342 ,ppr.estimated_finish_date
1343 ,pps1.project_status_weight rollup_weight1
1344 ,pps2.project_status_weight override_weight2
1345 ,pps3.project_status_weight base_weight3
1346 ,pps4.project_status_weight task_weight4
1347 -- 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)),
1348 --                                    ( 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
1349 ,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)
1350         , 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
1351 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage --Bug 4506009
1352 FROM
1353 pa_progress_rollup ppr
1354 ,pa_project_statuses pps1
1355 ,pa_project_statuses pps2
1356 ,pa_project_statuses pps3
1357 ,pa_project_statuses pps4
1358 ,pa_proj_elements ppe
1359 WHERE
1360 ppr.project_id = c_sub_project_id
1361 AND ppe.project_id = c_sub_project_id
1362 AND ppe.object_type = 'PA_STRUCTURES'
1363 AND ppe.proj_element_id = c_sub_proj_element_id
1364 AND ppr.object_id = c_sub_proj_element_id
1365 AND ppr.object_type = 'PA_STRUCTURES'
1366 AND ppr.structure_version_id is null
1367 AND ppr.structure_type = 'WORKPLAN'
1368 AND ppr.current_flag IN ('Y', 'N')
1369 AND ppr.as_of_date <= c_as_of_date
1370 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
1371 AND ppr.progress_status_code =  pps2.project_status_code(+)
1372 AND ppr.base_progress_status_code = pps3.project_status_code(+)
1373 AND ppe.status_code = pps4.project_status_code(+)
1374 order by as_of_date desc
1375  ;
1376 
1377 
1378 l_subproj_prog_rollup_id    NUMBER;
1379 l_subproj_act_start_date    DATE;
1380 l_subproj_act_finish_date   DATE;
1381 l_subproj_est_start_date    DATE;
1382 l_subproj_est_finish_date   DATE;
1383 l_subproj_rollup_weight1    NUMBER;
1384 l_subproj_override_weight2  NUMBER;
1385 l_subproj_base_weight3      NUMBER;
1386 l_subproj_task_weight4      NUMBER;
1387 l_subproj_earned_value      NUMBER;
1388 l_subproj_bac_value     NUMBER;
1389 l_subproj_comp_percentage       NUMBER; --Bug 4506009
1390 l_actual_lowest_task        VARCHAR2(1) := 'N';
1391 -- Bug 4392189 End
1392 
1393 l_summary_object_flag       VARCHAR2(1); -- 4370746
1394 
1395 -- Bug 4506461 Begin
1396 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
1397 SELECT 'Y'
1398 FROM pa_object_relationships
1399 WHERE --relationship_type in ( 'LW', 'LF' )
1400 relationship_type = 'LW'
1401 AND object_id_from1 IN
1402     (SELECT object_id_to1
1403     FROM pa_object_relationships
1404     START WITH  object_id_from1 = c_task_version_id
1405     AND relationship_type = 'S'
1406     CONNECT BY PRIOR object_id_to1 = object_id_from1
1407     AND relationship_type = 'S')
1408     ;
1409 l_subproject_found VARCHAR2(1):='N';
1410 l_rederive_base_pc VARCHAR2(1):='N';
1411 -- Bug 4506461 End
1412 
1413 l_last_as_of_date   DATE;--4573257
1414 l_subproj_task_version_id NUMBER;--4582956
1415 l_org_id NUMBER; -- 4746476
1416 BEGIN
1417 
1418         -- Rollup       Cases
1419         -- 1. Workplan  Publsihed       Version Rollup.
1420         -- 2. Workplan  Working Version Rollup.
1421         -- 3. Financial Structure       Rollup.
1422         -- 4. Entire WBS using structure version id.
1423         -- 5. Program Rollup
1424 
1425 
1426         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
1427 
1428         IF g1_debug_mode  = 'Y' THEN
1429                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT');
1430         END IF;
1431 
1432 
1433         IF g1_debug_mode  = 'Y' THEN
1434                 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);
1435                 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);
1436                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
1437                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validate_only='||p_validate_only, x_Log_Level=>     3);
1438                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_validation_level='||p_validation_level, x_Log_Level=> 3);
1439                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_module='||p_calling_module, x_Log_Level=> 3);
1440                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_calling_mode='||p_calling_mode, x_Log_Level=> 3);
1441                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_debug_mode='||p_debug_mode, x_Log_Level=> 3);
1442                 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);
1443                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
1444                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
1445                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
1446                 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);
1447                 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);
1448                 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);
1449                 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);
1450                 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);
1451                 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);
1452                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
1453                 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);
1454                 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);
1455                 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);
1456                 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);
1457         END IF;
1458 
1459         -- 20 May : Amit : If Structure_version_id is null, then no rocessing shd  be done
1460         --      Bug 3856161 : Added     p_as_of_date check also
1461         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
1462                 return;
1463         END IF;
1464 
1465         --bug 4045979
1466         l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
1467 
1468         --BUG 4355204, rtarway
1469         --IF (p_commit =  FND_API.G_TRUE) THEN
1470                 savepoint ROLLUP_PROGRESS_PVT2;
1471         --END IF;
1472 
1473         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
1474                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1475         END IF;
1476 
1477         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE))     THEN
1478                 FND_MSG_PUB.initialize;
1479         END IF;
1480 
1481         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
1482         l_track_wp_cost_flag :=  pa_fp_wp_gen_amt_utils.get_wp_track_cost_amt_flag(p_project_id);  --bug 3830434
1483     -- 4746476 : added org_id in below select
1484     SELECT project_currency_code, org_id INTO l_prj_currency_code, l_org_id FROM pa_projects_all WHERE project_id = p_project_id;
1485 
1486         IF l_sharing_Enabled = 'N' AND p_structure_type = 'WORKPLAN' THEN
1487                 l_split_workplan := 'Y';
1488         ELSE
1489                 l_split_workplan := 'N';
1490         END IF;
1491 
1492 	-- Bug 4938333
1493 	-- In case of financial struture, no need to check for published version
1494 	-- populate structure_version_id always null.
1495 	IF p_structure_type = 'WORKPLAN' THEN -- Bug 4938333
1496 
1497 		-- This is to find out  whether passed  struture version id     is published or not.
1498 		-- bcoz progress for workplna workplan version also exists
1499 
1500 		OPEN  cur_check_published_version(p_structure_version_id, p_project_id);
1501 		FETCH cur_check_published_version INTO l_published_structure;
1502 		CLOSE cur_check_published_version;
1503 
1504 		IF l_published_structure = 'Y' THEN
1505 			l_structure_version_id := null;
1506 		ELSE
1507 			l_structure_version_id := p_structure_version_id;
1508 		END IF;
1509 	ELSE -- Bug 4938333
1510 		l_published_structure := 'Y'; -- Bug 4938333
1511                 l_structure_version_id := null; -- Bug 4938333
1512 	END IF;
1513 
1514         l_task_version_id := p_task_version_id;
1515 
1516         IF p_structure_type = 'WORKPLAN' THEN
1517                 l_rollup_method := p_wp_rollup_method;
1518         ELSE
1519                 l_rollup_method := p_fin_rollup_method;
1520         END IF;
1521 
1522         IF g1_debug_mode  =     'Y'     THEN
1523                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_sharing_Enabled='||l_sharing_Enabled,       x_Log_Level=>   3);
1524                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_split_workplan='||l_split_workplan, x_Log_Level=> 3);
1525                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_published_structure='||l_published_structure, x_Log_Level=> 3);
1526                 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);
1527         END IF;
1528 
1529         --l_lowest_task := p_lowest_task;
1530         -- Loop thru all the parents of the passed task
1531 
1532         SELECT PA_PROJ_ROLLUP_TEMP_S.nextval
1533         INTO  l_process_number_temp FROM dual;
1534 
1535     IF p_rollup_entire_wbs = 'N' THEN
1536                 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1537                 SELECT distinct l_process_number_temp, object_id_from1, 'PA_TASKS', 1
1538                 FROM pa_object_relationships
1539                 WHERE relationship_type = 'S'
1540                 START WITH object_id_to1 = l_task_version_id
1541                 AND relationship_type = 'S'
1542                 CONNECT BY PRIOR object_id_from1 = object_id_to1
1543                 AND relationship_type = 'S'
1544         UNION ALL -- 4563049 : Rollup Structure also if passed, so that it can populate ETC from PJI
1545         SELECT distinct l_process_number_temp, l_task_version_id object_id_from1, 'PA_TASKS', 1
1546         FROM dual
1547         WHERE l_task_version_id = p_structure_version_id
1548         ;
1549         ELSE
1550         IF g1_debug_mode = 'Y' THEN
1551             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Mass Rollup Case', x_Log_Level=> 3);
1552             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);
1553             FOR i in 1..p_task_version_id_tbl.count LOOP
1554                 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);
1555             END LOOP;
1556         END IF;
1557 
1558                 IF p_task_version_id_tbl.count > 0 THEN
1559                         FORALL i in 1..p_task_version_id_tbl.count
1560                                 INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1561                                 VALUES(l_process_number_temp,p_task_version_id_tbl(i),  'PA_TASKS',1 );
1562 
1563                         l_mass_rollup_prog_rec_tab.delete;
1564                         OPEN  c_mass_rollup_tasks;
1565                         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1566                         CLOSE c_mass_rollup_tasks;
1567 
1568             FORALL i IN 1..l_mass_rollup_prog_rec_tab.COUNT
1569               INSERT INTO PA_PROJ_ROLLUP_TEMP(
1570                 PROCESS_NUMBER,
1571                 OBJECT_TYPE,
1572                 OBJECT_ID,
1573                 wbs_level)
1574               VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_rec_tab(i), 1);
1575 
1576             l_mass_rollup_prog_rec_tab.delete;
1577                 ELSE
1578                         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
1579                         SELECT l_process_number_temp,   element_version_id object_id_from1, 'PA_TASKS', 1
1580                         FROM pa_proj_element_versions
1581                         WHERE project_id = p_project_id
1582                         AND parent_structure_version_id = p_structure_version_id
1583                         --AND PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(element_version_id) = 'N'
1584             -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
1585             AND PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(element_version_id) = 'Y'
1586                         AND object_type = 'PA_TASKS'
1587                         UNION
1588                         SELECT l_process_number_temp, p_structure_version_id object_id_from1, 'PA_TASKS', 1
1589                         FROM dual
1590                         ;
1591                 END IF;
1592         END IF;
1593 
1594     IF g1_debug_mode = 'Y' THEN
1595         l_mass_rollup_prog_rec_tab.delete;
1596                 OPEN  c_mass_rollup_tasks_temp;
1597                 FETCH c_mass_rollup_tasks_temp BULK COLLECT INTO l_mass_rollup_prog_rec_tab;
1598                 CLOSE c_mass_rollup_tasks_temp;
1599                 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);
1600         FOR i in 1..l_mass_rollup_prog_rec_tab.count loop
1601                     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);
1602         END LOOP;
1603         l_mass_rollup_prog_rec_tab.delete;
1604 
1605         END IF;
1606 
1607 
1608     OPEN cur_tasks(1);
1609     FETCH cur_tasks BULK COLLECT INTO
1610     l_tsk_object_id_from1_tab
1611     ,l_tsk_parent_object_type_tab
1612     ,l_tsk_object_id_to1_tab
1613     ,l_tsk_object_type_tab
1614     ,l_tsk_wbs_level_tab
1615     ,l_tsk_weighting_percent_tab
1616     ,l_tsk_roll_comp_percent_tab
1617     ,l_tsk_over_percent_comp_tab
1618     ,l_tsk_as_of_date_tab
1619     ,l_tsk_actual_start_date_tab
1620     ,l_tsk_actual_finish_date_tab
1621     ,l_tsk_est_start_date_tab
1622     ,l_tsk_est_finish_date_tab
1623     ,l_tsk_rollup_weight1_tab
1624     ,l_tsk_override_weight2_tab
1625     ,l_tsk_base_weight3_tab
1626     ,l_tsk_task_weight4_tab
1627     ,l_tsk_status_code_tab
1628     ,l_tsk_object_id_tab
1629     ,l_tsk_proj_element_id_tab
1630     ,l_tsk_PPL_ACT_EFF_tab
1631     ,l_tsk_PPL_ACT_COST_TC_tab
1632     ,l_tsk_PPL_ACT_COST_PC_tab
1633     ,l_tsk_PPL_ACT_COST_FC_tab
1634     ,l_tsk_PPL_ACT_RAWCOST_TC_tab
1635     ,l_tsk_PPL_ACT_RAWCOST_PC_tab
1636     ,l_tsk_PPL_ACT_RAWCOST_FC_tab
1637     ,l_tsk_EST_REM_EFFORT_tab
1638     ,l_tsk_PPL_ETC_COST_TC_tab
1639     ,l_tsk_PPL_ETC_COST_PC_tab
1640     ,l_tsk_PPL_ETC_COST_FC_tab
1641     ,l_tsk_PPL_ETC_RAWCOST_TC_tab
1642     ,l_tsk_PPL_ETC_RAWCOST_PC_tab
1643     ,l_tsk_PPL_ETC_RAWCOST_FC_tab
1644     ,l_tsk_EQPMT_ACT_EFFORT_tab
1645     ,l_tsk_EQPMT_ACT_COST_TC_tab
1646     ,l_tsk_EQPMT_ACT_COST_PC_tab
1647     ,l_tsk_EQPMT_ACT_COST_FC_tab
1648     ,l_tsk_EQPMT_ACT_RAWCOST_TC_tab
1649     ,l_tsk_EQPMT_ACT_RAWCOST_PC_tab
1650     ,l_tsk_EQPMT_ACT_RAWCOST_FC_tab
1651     ,l_tsk_EQPMT_ETC_EFFORT_tab
1652     ,l_tsk_EQPMT_ETC_COST_TC_tab
1653     ,l_tsk_EQPMT_ETC_COST_PC_tab
1654     ,l_tsk_EQPMT_ETC_COST_FC_tab
1655     ,l_tsk_EQPMT_ETC_RAWCOST_TC_tab
1656     ,l_tsk_EQPMT_ETC_RAWCOST_PC_tab
1657     ,l_tsk_EQPMT_ETC_RAWCOST_FC_tab
1658     ,l_tsk_OTH_QUANTITY_tab
1659     ,l_tsk_OTH_ACT_COST_TC_tab
1660     ,l_tsk_OTH_ACT_COST_PC_tab
1661     ,l_tsk_OTH_ACT_COST_FC_tab
1662     ,l_tsk_OTH_ACT_RAWCOST_TC_tab
1663     ,l_tsk_OTH_ACT_RAWCOST_PC_tab
1664     ,l_tsk_OTH_ACT_RAWCOST_FC_tab
1665     ,l_tsk_OTH_ETC_QUANTITY_tab
1666     ,l_tsk_OTH_ETC_COST_TC_tab
1667     ,l_tsk_OTH_ETC_COST_PC_tab
1668     ,l_tsk_OTH_ETC_COST_FC_tab
1669     ,l_tsk_OTH_ETC_RAWCOST_TC_tab
1670     ,l_tsk_OTH_ETC_RAWCOST_PC_tab
1671     ,l_tsk_OTH_ETC_RAWCOST_FC_tab
1672     ,l_tsk_CURRENT_FLAG_tab
1673     ,l_tsk_PF_COST_RATE_TYPE_tab
1674     ,l_tsk_PF_COST_EXC_RATE_tab
1675     ,l_tsk_PF_COST_RATE_DATE_tab
1676     ,l_tsk_P_COST_RATE_TYPE_tab
1677     ,l_tsk_P_COST_EXC_RATE_tab
1678     ,l_tsk_P_COST_RATE_DATE_tab
1679     ,l_tsk_TXN_CURRENCY_CODE_tab
1680     ,l_tsk_PROG_PA_PERIOD_NAME_tab
1681     ,l_tsk_PROG_GL_PERIOD_NAME_tab
1682     ,l_tsk_bac_value_tab
1683     ,l_tsk_bac_self_value_tab -- Bug 4493105
1684     ,l_tsk_earned_value_tab
1685     ,l_tsk_deriv_method_tab
1686     ,l_tsk_progress_rollup_id_tab
1687     ,l_tsk_rollup_rec_ver_num_tab
1688     ,l_tsk_object_version_id_tab
1689     ,l_tsk_progress_stat_code_tab
1690     ,l_tsk_incremental_wq_tab
1691     ,l_tsk_cumulative_wq_tab
1692     ,l_tsk_base_prog_stat_code_tab
1693     ,l_tsk_eff_roll_prg_st_code_tab
1694     ,l_tsk_percent_complete_id_tab
1695     ,l_tsk_task_wt_basis_code_tab
1696     ,l_tsk_structure_version_id_tab
1697     ,l_tsk_create_required
1698     ,l_tsk_update_required
1699     ,l_tsk_base_percent_comp_tab -- 4392189 : Program Reporting Changes - Phase 2
1700          ;
1701     CLOSE cur_tasks;
1702 
1703         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
1704 
1705     IF g1_debug_mode = 'Y' THEN
1706               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);
1707         END IF;
1708 
1709 
1710     FOR k in 1..l_tsk_object_id_to1_tab.count LOOP
1711 	-- Bug 4636100 Issue 2 : Added following if
1712 	-- The intention of this IF is to just pass the structure level record
1713 	-- to scheduling API. Note that in structure case, we just pass one level
1714 	-- records below say task A, and if that below task A has an assignment, it will calculate
1715 	-- wrong % complete because we are not sending A's childs
1716 	IF (   (nvl(l_task_version_id,-11) <> nvl(p_structure_version_id,-12))
1717 	     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)
1718 	     OR (p_rollup_entire_wbs = 'Y')
1719 	    )
1720 	THEN
1721 
1722         IF g1_debug_mode = 'Y' THEN
1723                   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);
1724                   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);
1725                   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);
1726                 END IF;
1727                 l_tsk_progress_exists := 'N';
1728                 l_parent_count := l_parent_count + 1;
1729                 l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
1730                 l_summary_object_flag := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(l_tsk_object_id_to1_tab(k)); -- 4370746
1731 
1732 
1733                 IF g1_debug_mode = 'Y' THEN
1734                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',x_Msg => 'l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
1735                          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);
1736                 END IF;
1737 
1738         -- Bug 4392189 : Program Changes Begin
1739         IF l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1740             l_sub_project_id := null;
1741             l_subproj_prog_rollup_id := null;
1742             l_subproj_act_start_date := null;
1743             l_subproj_act_finish_date := null;
1744             l_subproj_est_start_date := null;
1745             l_subproj_est_finish_date := null;
1746             l_subproj_rollup_weight1 := null;
1747             l_subproj_override_weight2 := null;
1748             l_subproj_base_weight3 := null;
1749             l_subproj_task_weight4 := null;
1750             l_subproj_earned_value := null;
1751             l_subproj_bac_value := null;
1752 
1753             -- 4587527 : It was not supporting multiple sub projects at link task
1754             -- So converted it into FOR LOOP
1755             FOR rec_subproj IN c_get_sub_project(l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k)) LOOP
1756 
1757 
1758                 --OPEN c_get_sub_project (l_tsk_object_id_to1_tab(k),l_tsk_deriv_method_tab(k));
1759                 --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;
1760                 --CLOSE c_get_sub_project;
1761 
1762                 --IF l_sub_project_id IS NOT NULL THEN
1763                 IF g1_debug_mode = 'Y' THEN
1764                      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);
1765                      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);
1766                      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);
1767                      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);
1768                 END IF;
1769                 l_subproject_found := 'Y'; -- Bug 4506461
1770                 l_subproj_task_version_id := l_tsk_object_id_to1_tab(k);--4582956
1771                 IF l_tsk_object_id_to1_tab(k) = p_task_version_id THEN
1772                     l_actual_lowest_task := 'Y';
1773                 END IF;
1774 
1775                 l_subproj_prog_rollup_id    := null;
1776                 l_subproj_act_start_date    := null;
1777                 l_subproj_act_finish_date   := null;
1778                 l_subproj_est_start_date    := null;
1779                 l_subproj_est_finish_date   := null;
1780                 l_subproj_rollup_weight1    := null;
1781                 l_subproj_override_weight2  := null;
1782                 l_subproj_base_weight3      := null;
1783                 l_subproj_task_weight4      := null;
1784                 l_subproj_bac_value     := null;
1785                 l_subproj_comp_percentage   := null;
1786 
1787                 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));
1788                 FETCH c_get_sub_project_progress INTO
1789                   l_subproj_prog_rollup_id
1790                 , l_subproj_act_start_date
1791                 , l_subproj_act_finish_date
1792                 , l_subproj_est_start_date
1793                 , l_subproj_est_finish_date
1794                 , l_subproj_rollup_weight1
1795                 , l_subproj_override_weight2
1796                 , l_subproj_base_weight3
1797                 , l_subproj_task_weight4
1798                 --, l_subproj_earned_value Bug 4506009
1799                 , l_subproj_bac_value
1800                 , l_subproj_comp_percentage -- Bug 4506009
1801                 ;
1802                 CLOSE c_get_sub_project_progress;
1803 
1804                 IF g1_debug_mode = 'Y' THEN
1805                      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);
1806                 END IF;
1807 
1808                 l_index := l_index + 1;
1809 
1810                 l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
1811                 l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
1812                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
1813                 l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_tsk_object_id_to1_tab(k);
1814                 l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
1815                 l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
1816 
1817 		-- 4533112 : Added following check
1818 		IF nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y' THEN
1819 			l_rollup_table1(l_index).START_DATE1			:= l_subproj_act_start_date;
1820 			l_rollup_table1(l_index).FINISH_DATE1                   := l_subproj_act_finish_date;
1821 			l_rollup_table1(l_index).START_DATE2                    := l_subproj_est_start_date;
1822 			l_rollup_table1(l_index).FINISH_DATE2                   := l_subproj_est_finish_date;
1823 		END IF;
1824 
1825                 -- 4582956 Begin : LInk task should be treated as summaru task which means
1826                 -- we should be passing % complete of sub project and bac value of sub project
1827                 /*
1828 
1829                 -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
1830                 -- This is additional sefety fix
1831 
1832                 -- Bug 4506009 : Deriving l_subproj_earned_value
1833                 IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1834                     --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);
1835                     -- 4579654 : For more accuracy, Do not round the earned value here.
1836                     --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100), 5),0);
1837                     l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1838                 ELSE
1839                     --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);
1840                     -- 4579654 : For more accuracy, Do not round the earned value here.
1841                     --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);
1842                     l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_subproj_comp_percentage,0)/100),0);
1843                 END IF;
1844 
1845                 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
1846                     l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
1847                     l_rollup_table1(l_index).BAC_VALUE1                     := 1;
1848                 ELSE
1849                     l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_subproj_earned_value, 0 );
1850                     --l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_subproj_bac_value, NVL(l_sub_project_bac_value, 0));
1851                     l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_sub_project_bac_value, 0);
1852                 END IF;
1853 
1854                 */
1855                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_subproj_comp_percentage, 0);
1856                 l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
1857                 -- 4582956 End
1858 
1859                 --    Rollup Progress Status Rollup
1860                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_subproj_rollup_weight1,0);       --rollup prog status
1861                 l_rollup_table1(l_index).PROGRESS_override1              := l_subproj_override_weight2;    --override prg  status
1862 
1863                 --    Base Progress Status Rollup
1864 		-- 4533112 : Base progress status is not used
1865                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2     := nvl( l_subproj_base_weight3, 0 );  --base prog status
1866                 --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
1867 
1868                 --    Task Status Rollup
1869                 l_rollup_table1(l_index).task_status1                    := nvl( l_subproj_task_weight4, 0 );  -- task status
1870 
1871 
1872                 l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
1873                 l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
1874                 l_action_allowed                := 'Y';
1875                 l_rollup_table1(l_index).rollup_node1           := l_action_allowed;
1876                 l_rollup_table1(l_index).rollup_node2           := l_action_allowed;
1877 
1878                 IF p_rollup_entire_wbs = 'Y' AND l_subproj_prog_rollup_id IS NOT NULL THEN
1879                     -- This means  Progress exists for the  corresponding task
1880                     l_tsk_progress_exists := 'Y';
1881                 END IF;
1882                 --END IF; -- l_sub_project_id IS NOT NULL THEN
1883             END LOOP;
1884         END IF; -- l_published_structure = 'Y' AND p_structure_type = 'WORKPLAN' THEN
1885         -- Bug 4392189 : Program Changes End
1886 
1887                 -- Loop thru all task assignments of a passed parent
1888                 IF p_structure_type = 'WORKPLAN'
1889         THEN
1890             l_asgn_task_version_id_tab.delete;
1891             l_asgn_rate_based_flag_tab.delete;
1892             l_asgn_resource_class_code_tab.delete;
1893             l_asgn_res_assignment_id_tab.delete;
1894             l_asgn_planned_quantity_tab.delete;
1895             l_asgn_plan_bur_cost_pc_tab.delete;
1896             l_asgn_res_list_member_id_tab.delete;
1897 
1898             OPEN cur_assgn_rec_bulk(l_tsk_object_id_to1_tab(k), l_tsk_proj_element_id_tab(k));
1899             FETCH cur_assgn_rec_bulk BULK COLLECT INTO l_asgn_task_version_id_tab, l_asgn_rate_based_flag_tab
1900             , l_asgn_resource_class_code_tab, l_asgn_res_assignment_id_tab
1901             , l_asgn_planned_quantity_tab, l_asgn_plan_bur_cost_pc_tab, l_asgn_res_list_member_id_tab;
1902             CLOSE cur_assgn_rec_bulk;
1903 
1904                     IF g1_debug_mode = 'Y' THEN
1905                      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);
1906                 END IF;
1907 
1908             FOR i in 1..l_asgn_task_version_id_tab.count LOOP
1909 
1910                 IF g1_debug_mode = 'Y' THEN
1911                     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);
1912                     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);
1913                 END IF;
1914 
1915                 l_asgn_progress_rec := null;
1916                 l_asgn_act_start_date := null;
1917                 l_asgn_act_finish_date := null;
1918                 l_asgn_est_start_date := null;
1919                 l_asgn_est_finish_date := null;
1920                 l_asgn_as_of_date := null;
1921                 l_asgn_ppl_act_eff := null;
1922                 l_asgn_eqp_act_eff := null;
1923                 l_asgn_ppl_act_cost := null;
1924                 l_asgn_eqp_act_cost := null;
1925                 l_asgn_oth_act_cost := null;
1926                 l_asgn_ppl_etc_eff := null;
1927                 l_asgn_eqp_etc_eff := null;
1928                 l_asgn_ppl_etc_cost := null;
1929                 l_asgn_eqp_etc_cost := null;
1930                 l_asgn_oth_etc_cost := null;
1931 
1932                 OPEN cur_get_asgn_progress(l_asgn_res_list_member_id_tab(i),l_tsk_proj_element_id_tab(k));
1933                 FETCH cur_get_asgn_progress INTO l_asgn_progress_rec;
1934                 CLOSE cur_get_asgn_progress;
1935 
1936                 IF g1_debug_mode  = 'Y' THEN
1937                     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);
1938                     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);
1939                 END IF;
1940 
1941                 IF l_asgn_progress_rec.object_id is not null THEN
1942                     l_asgn_act_start_date := l_asgn_progress_rec.actual_start_date;
1943                     l_asgn_act_finish_date := l_asgn_progress_rec.actual_finish_date;
1944                     l_asgn_est_start_date := l_asgn_progress_rec.estimated_start_date;
1945                     l_asgn_est_finish_date := l_asgn_progress_rec.estimated_finish_date;
1946                     l_asgn_as_of_date := l_asgn_progress_rec.as_of_date;
1947 
1948                     l_asgn_ppl_act_eff := l_asgn_progress_rec.ppl_act_effort_to_date;
1949                     l_asgn_eqp_act_eff := l_asgn_progress_rec.eqpmt_act_effort_to_date;
1950                     l_asgn_ppl_act_cost := l_asgn_progress_rec.ppl_act_cost_to_date_pc;
1951                     l_asgn_eqp_act_cost := l_asgn_progress_rec.eqpmt_act_cost_to_date_pc;
1952                     l_asgn_oth_act_cost := l_asgn_progress_rec.oth_act_cost_to_date_pc;
1953 
1954                     l_asgn_ppl_etc_eff := l_asgn_progress_rec.estimated_remaining_effort;
1955                     l_asgn_eqp_etc_eff := l_asgn_progress_rec.eqpmt_etc_effort;
1956                     l_asgn_ppl_etc_cost := l_asgn_progress_rec.ppl_etc_cost_pc;
1957                     l_asgn_eqp_etc_cost := l_asgn_progress_rec.eqpmt_etc_cost_pc;
1958                     l_asgn_oth_etc_cost := l_asgn_progress_rec.oth_etc_cost_pc;
1959 
1960                      IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
1961                          l_asgn_earned_value := nvl(l_asgn_ppl_act_eff,0) +  nvl(l_asgn_eqp_act_eff,0);
1962                          IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1963                             IF l_asgn_ppl_etc_eff IS NULL THEN
1964                                 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1965                             ELSE
1966                                 l_asgn_bac_value := nvl(l_asgn_ppl_act_eff,0) + nvl(l_asgn_ppl_etc_eff,0);
1967                             END IF;
1968                          ELSIF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1969                             IF l_asgn_eqp_etc_eff IS NULL THEN
1970                                 l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
1971                             ELSE
1972                                 l_asgn_bac_value := nvl(l_asgn_eqp_act_eff,0) + nvl(l_asgn_eqp_etc_eff,0);
1973                             END IF;
1974                          ELSE
1975                             l_asgn_bac_value := 0;
1976                          END IF;
1977                      ELSE
1978                          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);
1979                          IF l_asgn_resource_class_code_tab(i) = 'PEOPLE' THEN
1980                             IF l_asgn_ppl_etc_cost IS NULL THEN
1981                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1982                             ELSE
1983                                 l_asgn_bac_value := nvl(l_asgn_ppl_act_cost,0) + nvl(l_asgn_ppl_etc_cost,0);
1984                             END IF;
1985                          ELSIF l_asgn_resource_class_code_tab(i) = 'EQUIPMENT' THEN
1986                                IF l_asgn_eqp_etc_cost IS NULL THEN
1987                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1988                                ELSE
1989                                 l_asgn_bac_value := nvl(l_asgn_eqp_act_cost,0) + nvl(l_asgn_eqp_etc_cost,0);
1990                                END IF;
1991                          ELSE
1992                                IF l_asgn_oth_etc_cost IS NULL THEN
1993                                 l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
1994                                ELSE
1995                                 l_asgn_bac_value := nvl(l_asgn_oth_act_cost,0) + nvl(l_asgn_oth_etc_cost,0);
1996                                END IF;
1997                          END IF;
1998                      END IF;
1999                 ELSE
2000                     l_asgn_earned_value := 0;
2001                     IF l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2002                         IF l_asgn_rate_based_flag_tab(i) = 'Y' AND l_asgn_resource_class_code_tab(i) IN('PEOPLE', 'EQUIPMENT') THEN
2003                             l_asgn_bac_value := l_asgn_planned_quantity_tab(i);
2004                         ELSE
2005                             l_asgn_bac_value := 0;
2006                         END IF;
2007                     ELSE
2008                         l_asgn_bac_value := l_asgn_plan_bur_cost_pc_tab(i);
2009                     END IF;
2010                 END IF;
2011 
2012                 l_index := l_index + 1;
2013 
2014                 l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_ASSIGNMENTS';
2015                 l_rollup_table1(l_index).OBJECT_ID                      := l_asgn_res_assignment_id_tab(i);
2016                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
2017                 l_rollup_table1(l_index).PARENT_OBJECT_ID               := l_asgn_task_version_id_tab(i);
2018                 l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning       some    value so that order     by in   scheduling API  works
2019                 l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
2020 
2021                 -- Percent Complete needs to be derived using Earned Value and BAC Value
2022 
2023                 -- Percent Complete at Assignment level does not get calculated
2024 		-- 4533112 : Added following check for l_tsk_base_prog_stat_code_tab
2025                 IF l_tsk_deriv_method_tab(k) IN ('EFFORT', 'COST')  AND nvl(l_tsk_base_prog_stat_code_tab(k), 'N') <> 'Y'  THEN
2026                      -- Actual Date Rollup : Only Start     Date    gets    rolls up.
2027                      l_rollup_table1(l_index).START_DATE1                    := l_asgn_act_start_date;
2028                      l_rollup_table1(l_index).FINISH_DATE1                    := l_asgn_act_finish_date;
2029 
2030                      -- Estimated Date Rollup  : Only Start Date    gets    rolls   up.
2031                      l_rollup_table1(l_index).START_DATE2                    := l_asgn_est_start_date;
2032                      l_rollup_table1(l_index).FINISH_DATE2                    := l_asgn_est_finish_date;
2033                 END IF;
2034 
2035                 -- Progress Status entry is not  there at assignment     level
2036 
2037                 -- Assignment Status entry is not there at assignment level
2038 
2039 
2040                 -- Earned Value and BAC Rollup
2041                 IF l_tsk_deriv_method_tab(k) = 'COST' and l_track_wp_cost_flag = 'N' THEN
2042                     l_rollup_table1(l_index).EARNED_VALUE1                  := 0;
2043                     l_rollup_table1(l_index).BAC_VALUE1                     := 1;
2044                     -- 4392189 : Program Reporting Changes - Phase 2
2045                     -- Having Set2 columns to get Project level % complete
2046                     l_rollup_table1(l_index).EARNED_VALUE2                  := 0;
2047                     l_rollup_table1(l_index).BAC_VALUE2                     := 1;
2048                 ELSE
2049                     l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( l_asgn_earned_value, 0 );
2050                     l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_asgn_bac_value, 0 );
2051                     -- 4392189 : Program Reporting Changes - Phase 2
2052                     -- Having Set2 columns to get Project level % complete
2053                     l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( l_asgn_earned_value, 0 );
2054                     l_rollup_table1(l_index).BAC_VALUE2                     := NVL( l_asgn_bac_value, 0 );
2055                 END IF;
2056 
2057                 l_rollup_table1(l_index).DIRTY_FLAG1            :=      'Y';
2058                 l_rollup_table1(l_index).DIRTY_FLAG2            :=      'Y';
2059                 l_action_allowed :=     'Y';
2060                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
2061                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
2062 
2063                 IF p_rollup_entire_wbs = 'Y' AND l_asgn_progress_rec.object_id IS   NOT NULL THEN
2064                     -- This means  Progress exists for the  corresponding task
2065                     l_tsk_progress_exists := 'Y';
2066                 END IF;
2067             END LOOP;       -- Assignments  Loop
2068         END IF;
2069 
2070         -- Bug 3957792 : Added check for Cancelled tasks
2071                 IF p_structure_type = 'WORKPLAN' AND l_published_structure = 'Y' AND l_tsk_deriv_method_tab(k)   = 'DELIVERABLE'
2072                 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')
2073                 THEN
2074 
2075             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
2076                 IF g1_debug_mode  = 'Y' THEN
2077                     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);
2078                                 END IF;
2079 
2080                                 l_index := l_index + 1;
2081 
2082                                 l_rollup_table1(l_index).OBJECT_TYPE             := cur_del_rec.object_type;
2083                                 l_rollup_table1(l_index).OBJECT_ID               := cur_del_rec.object_id_to1;--Object Version Id       of Deliverable
2084                                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE      := cur_del_rec.parent_object_type;
2085                                 l_rollup_table1(l_index).PARENT_OBJECT_ID        := l_tsk_object_id_to1_tab(k);--Object Version Id      of Task
2086                                 l_rollup_table1(l_index).WBS_LEVEL               := 9999999;
2087                                 l_rollup_table1(l_index).CALENDAR_ID             := l_index;
2088 
2089                                 -- Rollup       Percent Complete Rollup
2090                                 l_rollup_table1(l_index).task_weight1            := nvl( cur_del_rec.weighting_percentage, 0 );
2091                                 l_rollup_table1(l_index).PERCENT_COMPLETE1       := nvl( cur_del_rec.completed_percentage, 0 );
2092 				-- 4392189 : Program Reporting Changes - Phase 2
2093 				-- Having Set2 columns to get Project level % complete
2094                                 l_rollup_table1(l_index).task_weight2            := nvl( cur_del_rec.weighting_percentage, 0 );
2095                                 l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_del_rec.completed_percentage, 0 );
2096 
2097                                 --l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR     2
2098 
2099                                 -- Base Percent Complete Rollup
2100 
2101                                 -- Dates will not get rolled up for deliverable
2102 
2103                                 -- Rollup       Progress Status Rollup
2104 
2105                                 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 :=  0;       --rollup       prog    status is       0 for deliverable as it is      lowest --       FPM Dev CR 2
2106                                 l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;         --override prg status
2107 
2108                                 -- Base Progress Status Rollup
2109 				-- 4533112 : Now base progress status is not used
2110                                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
2111                                 -- l_rollup_table1(l_index).PROGRESS_override2      := 0;        -- FPM Dev CR  2
2112 
2113                                 l_rollup_table1(l_index).DIRTY_FLAG1      :=    'Y';
2114                                 l_rollup_table1(l_index).DIRTY_FLAG2      :=    'Y';
2115 
2116 				-- Deliverable Status will not      get rolled up for deliverable
2117 
2118                                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2119 
2120                                 IF nvl( l_tsk_weighting_percent_tab(k), 0 ) = 0 THEN
2121 					l_action_allowed := 'N';
2122                                 END IF;
2123 
2124                                 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
2125 					l_action_allowed := 'N';
2126                                 END IF;
2127 
2128                                 IF g1_debug_mode  =     'Y'     THEN
2129 					pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Deliverable l_action_allowed='||l_action_allowed,     x_Log_Level=> 3);
2130                                         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);
2131                                 END IF;
2132 
2133                                 l_rollup_table1(l_index).rollup_node1             :=    l_action_allowed;
2134                                 l_rollup_table1(l_index).rollup_node2             :=    l_action_allowed;
2135 
2136                                 --maansari4/10  temporarily passing     'Y' to rollup node.
2137                                 -- need to investigate  why l_action_allowed is coming always as        'N'
2138 
2139                                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
2140                                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
2141 
2142                 IF p_rollup_entire_wbs = 'Y' AND cur_del_rec.as_of_date IS NOT NULL     THEN
2143                     -- This means  Progress        exists for the  corresponding task
2144                     l_tsk_progress_exists := 'Y';
2145                         END IF;
2146             END LOOP;       -- Delivertables Loop
2147         END IF;       -- l_tsk_deriv_method_tab(k) = 'DELIVERABLES'   THEN
2148 
2149         l_index := l_index + 1;
2150 
2151         l_rollup_table1(l_index).OBJECT_TYPE                     := l_tsk_object_type_tab(k);
2152         l_rollup_table1(l_index).OBJECT_ID                       := l_tsk_object_id_to1_tab(k);--Task Version Id
2153         l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := l_tsk_parent_object_type_tab(k);
2154         l_rollup_table1(l_index).PARENT_OBJECT_ID                := l_tsk_object_id_from1_tab(k); --Parent    Task    Version Id
2155         l_rollup_table1(l_index).WBS_LEVEL                       := NVL( l_tsk_wbs_level_tab(k),      0 );
2156         l_rollup_table1(l_index).CALENDAR_ID                     := l_index;
2157         -- 4582956 Begin
2158                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG      := l_summary_object_flag; -- 4370746
2159         IF l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2160             -- 4586449 : Passing L for link tasks
2161             --l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
2162             l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
2163         ELSE
2164             l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := l_summary_object_flag;
2165         END IF;
2166         -- 4582956 end
2167 
2168         -- Rollup Percent  Complete Rollup
2169         l_rollup_table1(l_index).task_weight1                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
2170         l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( l_tsk_roll_comp_percent_tab(k), 0    );
2171         -- 4392189 : Program Reporting Changes - Phase 2
2172         -- Having Set2 columns to get Project level % complete
2173         l_rollup_table1(l_index).task_weight2                    := nvl( l_tsk_weighting_percent_tab(k), 0    );
2174         l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( l_tsk_base_percent_comp_tab(k), 0    );
2175 
2176         --bug 4045979, start
2177         l_task_baselined := 'N';
2178         l_parent_task_baselined := 'N';
2179         OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_to1_tab(k));
2180         FETCH check_task_baselined INTO l_task_baselined;
2181         CLOSE check_task_baselined;
2182 
2183         OPEN check_task_baselined(l_base_struct_ver_id, l_tsk_object_id_from1_tab(k));
2184         FETCH check_task_baselined INTO l_parent_task_baselined;
2185         CLOSE check_task_baselined;
2186 
2187         -- 4392189 : Program Reporting Changes - Phase 2
2188         -- Having Set2 columns to get Project level % complete
2189 
2190         IF p_structure_type = 'WORKPLAN' AND  l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2191         THEN
2192             l_rollup_table1(l_index).PERCENT_OVERRIDE1        := 0;
2193             l_rollup_table1(l_index).PERCENT_OVERRIDE2        := 0;
2194         ELSE
2195             l_rollup_table1(l_index).PERCENT_OVERRIDE1        := l_tsk_over_percent_comp_tab(k);
2196             --4557541 : For self % complete Override at tasks level would not be considered
2197             --l_rollup_table1(l_index).PERCENT_OVERRIDE2        := l_tsk_over_percent_comp_tab(k);
2198             l_rollup_table1(l_index).PERCENT_OVERRIDE2        := null;
2199 
2200         END IF;
2201 
2202         -- Bug 4284353 : Added below code
2203         IF p_structure_type = 'FINANCIAL' and p_progress_mode = 'TRANSFER_WP_PC' THEN
2204             l_rollup_table1(l_index).PERCENT_OVERRIDE1 := null;
2205             l_rollup_table1(l_index).PERCENT_COMPLETE1 := l_tsk_over_percent_comp_tab(k);
2206         END IF;
2207 
2208         --    Actual Date Rollup
2209         l_rollup_table1(l_index).START_DATE1                     := l_tsk_actual_start_date_tab(k);
2210         l_rollup_table1(l_index).FINISH_DATE1                    := l_tsk_actual_finish_date_tab(k);
2211 
2212         --    Estimated Date Rollup
2213         l_rollup_table1(l_index).START_DATE2                     := l_tsk_est_start_date_tab(k);
2214         l_rollup_table1(l_index).FINISH_DATE2                    := l_tsk_est_finish_date_tab(k);
2215 
2216         --    Rollup Progress Status Rollup
2217         l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_tsk_rollup_weight1_tab(k),0);       --rollup prog status
2218         l_rollup_table1(l_index).PROGRESS_override1              := l_tsk_override_weight2_tab(k);    --override prg  status
2219 
2220         --    Base Progress Status Rollup
2221 	-- 4533112 : base progress status is not used
2222         --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_tsk_base_weight3_tab(k), 0 );  --base prog status
2223         --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
2224 
2225         --    Task Status Rollup
2226         l_rollup_table1(l_index).task_status1                    := nvl( l_tsk_task_weight4_tab(k), 0 );  -- task status
2227 
2228         -- ETC Effort      Rollup
2229         --    l_rollup_table1(l_index).REMAINING_EFFORT1                       := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT,      0 );    --etc_people_effort
2230         --    l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                       := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0      );
2231 
2232         -- ETC Cost in Project     Currency Rollup
2233         --    l_rollup_table1(l_index).ETC_COST1                               := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2234         --    l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2235         --    l_rollup_table1(l_index).EQPMT_ETC_COST1                         := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
2236 
2237         -- ETC Cost in  Project Functional Currency Rollup
2238         --    l_rollup_table1(l_index).ETC_COST2                               := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2239         --    l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2240         --    l_rollup_table1(l_index).EQPMT_ETC_COST2                         := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
2241 
2242         -- Sub Project  ETC Effort Rollup
2243         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2244         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1      := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
2245 
2246         -- Sub Project ETC Cost in Project Currency     Rollup
2247         --    l_rollup_table1(l_index).SUB_PRJ_ETC_COST1               := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2248         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC,  0 );
2249         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0      );
2250 
2251         -- Sub Project ETC Cost in Project Functional Currency Rollup
2252         --    l_rollup_table1(l_index).SUB_PRJ_ETC_COST2               := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2253         --    l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC,  0 );
2254         --    l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0      );
2255 
2256         -- Earned Value and BAC Rollup
2257         --    Bug 3830673, 3879461 : We should pass the earned value  for     lowest task which do not        have    assignments
2258         --IF NVL(l_lowest_task, 'N') = 'Y' AND NVL(l_assignment_exists, 'N') = 'N' THEN
2259         --      IF    l_tsk_deriv_method_tab(k) = 'EFFORT' THEN
2260         --        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);
2261         --      ELSE
2262         --        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);
2263         --      END IF;
2264         --ELSE
2265 
2266         -- 4392189 : Program Reporting Changes - Phase 2
2267         -- Having Set2 columns to get Project level % complete
2268         l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2269         l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
2270 
2271         --END IF;
2272 
2273         -- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
2274         -- in earned_value1 set
2275         IF p_structure_type = 'WORKPLAN' AND l_tsk_object_id_to1_tab(k) = nvl(l_subproj_task_version_id, -789) THEN
2276 
2277             l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
2278                     , l_tsk_deriv_method_tab(k), l_tsk_proj_element_id_tab(k),  p_structure_version_id,
2279                     'WORKPLAN','N','Y');
2280  	    -- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
2281             --l_rollup_table1(l_index).EARNED_VALUE2 := NVL( l_tsk_bac_self_value_tab(k), 0 );
2282 	    l_rollup_table1(l_index).EARNED_VALUE2 := 1;
2283         END IF;
2284 
2285         l_rollup_table1(l_index).BAC_VALUE1              := NVL( l_tsk_bac_value_tab(k), 0 );
2286 
2287         IF g1_debug_mode = 'Y' THEN
2288             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);
2289                 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);
2290                 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);
2291                 END IF;
2292 
2293         -- 4586449 End
2294 
2295         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 );
2296 
2297         -- Bug 4344292 : Do not pass DELIVERABLE to scheduling API for summary tasks
2298         -- Otheriwse it will look for deliverables and will result in 0 % complete
2299         IF l_tsk_deriv_method_tab(k) = 'DELIVERABLE' AND p_structure_type = 'FINANCIAL' THEN
2300             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := 'COST';
2301         ELSE
2302             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_tsk_deriv_method_tab(k);
2303             l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_tsk_deriv_method_tab(k);
2304         END IF;
2305 
2306         --    Bug 4207995 : Passing Dirty_flags always Y
2307         --               IF (cur_tasks_rec.object_id_to1 =      p_object_version_id)    THEN
2308                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
2309                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
2310         --               ELSE
2311         --                       l_rollup_table1(l_index).DIRTY_FLAG1      := 'N';
2312         --                       l_rollup_table1(l_index).DIRTY_FLAG2      := 'N';
2313         --               END    IF;
2314 
2315         l_action_allowed := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(l_tsk_status_code_tab(k), 'PROGRESS_ROLLUP' );
2316 
2317         IF nvl(l_tsk_weighting_percent_tab(k), 0) = 0 THEN
2318             l_action_allowed :=     'N';
2319         END IF;
2320 
2321         IF g1_debug_mode   = 'Y' THEN
2322             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed,    x_Log_Level=> 3);
2323                 END IF;
2324 
2325         l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
2326         l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
2327 
2328                 --maansari4/10  temporarily passing     'Y' to rollup node.
2329                 -- need to investigate  why l_action_allowed is coming always as        'N'
2330 
2331                 l_rollup_table1(l_index).rollup_node1             :=    'Y';
2332                 l_rollup_table1(l_index).rollup_node2             :=    'Y';
2333 
2334 
2335         IF p_rollup_entire_wbs = 'Y' THEN
2336                   --    This    means Progress  exists for the  corresponding task
2337             IF l_tsk_progress_exists        = 'Y' THEN
2338                 l_mass_rollup_prog_exists_tab.extend(1);
2339                 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2340             ELSIF l_tsk_as_of_date_tab(k) IS NOT NULL THEN
2341                 l_mass_rollup_prog_exists_tab.extend(1);
2342                 l_mass_rollup_prog_exists_tab(l_mass_rollup_prog_exists_tab.count):=l_tsk_object_id_to1_tab(k) ;
2343             END IF;
2344         END IF;
2345 
2346         l_mapping_tasks_to_rollup_tab(l_index):= k;
2347 
2348         --IF (p_process_whole_tree = 'N' and l_parent_count  = 2) THEN
2349                 --        exit;
2350                 --END IF;
2351 	END IF; -- Bug 4636100 Issue 2 : Added Endif
2352     END LOOP;       -- End Tasks Loop
2353 
2354         --begin bug 3951982
2355         IF p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2356           AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
2357       AND l_actual_lowest_task = 'N' -- Bug 4392189
2358         THEN
2359         INSERT INTO pa_proj_rollup_temp(process_number, object_id, object_type, wbs_level)
2360         SELECT l_process_number_temp, p_task_version_id, 'PA_TASKS',  1
2361         FROM dual;
2362 
2363         FOR cur_tasks_rec in cur_tasks(1) LOOP
2364             IF cur_tasks_rec.object_type = 'PA_TASKS' THEN
2365                 IF g1_debug_mode  = 'Y' THEN
2366                     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);
2367                     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);
2368                 END IF;
2369                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(  cur_tasks_rec.status_code, 'PROGRESS_ROLLUP'    );
2370 
2371                 l_index := l_index + 1;
2372 
2373                 l_rollup_table1(l_index).OBJECT_TYPE                        :=      cur_tasks_rec.object_type;
2374                 l_rollup_table1(l_index).OBJECT_ID                          :=      cur_tasks_rec.object_id_to1;--Task      Version Id
2375                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE                 :=      cur_tasks_rec.parent_object_type;
2376                 l_rollup_table1(l_index).PARENT_OBJECT_ID                   :=      cur_tasks_rec.object_id_from1; --Parent Task    Version Id
2377                 l_rollup_table1(l_index).WBS_LEVEL                          :=      NVL( cur_tasks_rec.wbs_level, 0 );
2378                 l_rollup_table1(l_index).CALENDAR_ID                        :=      l_index;
2379                         l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG            :=      'Y'; -- 4370746
2380 
2381                 -- Rollup Percent Complete Rollup
2382                 l_rollup_table1(l_index).task_weight1                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
2383                 l_rollup_table1(l_index).PERCENT_COMPLETE1                  :=      nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
2384                 -- 4392189 : Program Reporting Changes - Phase 2
2385                 -- Having Set2 columns to get Project level % complete
2386                 l_rollup_table1(l_index).task_weight2                       :=      nvl( cur_tasks_rec.weighting_percentage, 0 );
2387                 l_rollup_table1(l_index).PERCENT_COMPLETE2                  :=      nvl( cur_tasks_rec.base_percent_complete, 0 );
2388 
2389                 --bug 4045979, start
2390                 l_task_baselined := 'N';
2391                 l_parent_task_baselined := 'N';
2392                 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_to1);
2393                 FETCH check_task_baselined INTO l_task_baselined;
2394                 CLOSE check_task_baselined;
2395 
2396                 OPEN check_task_baselined(l_base_struct_ver_id, cur_tasks_rec.object_id_from1);
2397                 FETCH check_task_baselined INTO l_parent_task_baselined;
2398                 CLOSE check_task_baselined;
2399 
2400                 -- 4392189 : Program Reporting Changes - Phase 2
2401                 -- Having Set2 columns to get Project level % complete
2402 
2403                 IF p_structure_type = 'WORKPLAN' AND l_rollup_method IN ('COST', 'EFFORT') AND (l_task_baselined = 'N' AND l_parent_task_baselined = 'Y')
2404                 THEN
2405                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := 0;
2406                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := 0;
2407                 ELSE
2408                     l_rollup_table1(l_index).PERCENT_OVERRIDE1      := cur_tasks_rec.override_percent_complete;
2409                     --4557541 : For self % complete Override at tasks level would not be considered
2410                     --l_rollup_table1(l_index).PERCENT_OVERRIDE2      := cur_tasks_rec.override_percent_complete;
2411                     l_rollup_table1(l_index).PERCENT_OVERRIDE2      := null;
2412                 END IF;
2413                 --bug       4045979, end
2414 
2415                 -- Actual Date Rollup
2416                 l_rollup_table1(l_index).START_DATE1                        :=      cur_tasks_rec.actual_start_date;
2417                 l_rollup_table1(l_index).FINISH_DATE1                       :=      cur_tasks_rec.actual_finish_date;
2418 
2419                 -- Estimated Date Rollup
2420                 l_rollup_table1(l_index).START_DATE2                        :=      cur_tasks_rec.estimated_start_date;
2421                 l_rollup_table1(l_index).FINISH_DATE2                       :=      cur_tasks_rec.estimated_finish_date;
2422 
2423                 -- Rollup Progress Status   Rollup
2424                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1            :=      nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
2425                 l_rollup_table1(l_index).PROGRESS_override1                 :=      cur_tasks_rec.override_weight2;    --override prg status
2426 
2427                 -- Base Progress Status Rollup
2428 		-- 4533112 : Base Progress Status is not used
2429                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl(    cur_tasks_rec.base_weight3, 0   );  --base prog status
2430                 --l_rollup_table1(l_index).PROGRESS_override2                 :=    0;  -- FPM Dev  CR 2
2431 
2432                 -- Task Status Rollup
2433                 l_rollup_table1(l_index).task_status1                       :=      nvl(    cur_tasks_rec.task_weight4, 0   );  -- task status
2434 
2435                 -- ETC Effort Rollup
2436                 l_rollup_table1(l_index).REMAINING_EFFORT1                  :=      NVL(    cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
2437                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1                  :=      NVL(    cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
2438 
2439                 -- ETC Cost in Project Currency     Rollup
2440                 l_rollup_table1(l_index).ETC_COST1                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_PC, 0 );
2441                 l_rollup_table1(l_index).PPL_ETC_COST1                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_PC, 0 );
2442                 l_rollup_table1(l_index).EQPMT_ETC_COST1                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_PC, 0      );
2443 
2444                 -- ETC Cost in Project Functional Currency Rollup
2445                 l_rollup_table1(l_index).ETC_COST2                          :=      NVL(    cur_tasks_rec.OTH_ETC_COST_FC, 0 );
2446                 l_rollup_table1(l_index).PPL_ETC_COST2                      :=      NVL(    cur_tasks_rec.PPL_ETC_COST_FC, 0 );
2447                 l_rollup_table1(l_index).EQPMT_ETC_COST2                    :=      NVL(    cur_tasks_rec.EQPMT_ETC_COST_FC, 0      );
2448 
2449                 -- Sub Project ETC Effort   Rollup
2450                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
2451                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT,        0 );
2452 
2453                   --    Sub Project ETC Cost in Project Currency Rollup
2454                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
2455                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
2456                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
2457 
2458                   --    Sub Project ETC Cost in Project Functional      Currency Rollup
2459                 -- l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
2460                 -- l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
2461                 -- l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
2462 
2463                 -- 4392189 : Program Reporting Changes - Phase 2
2464                 -- Having Set2 columns to get Project level % complete
2465 
2466                 l_rollup_table1(l_index).EARNED_VALUE1              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
2467                 l_rollup_table1(l_index).BAC_VALUE1                 :=      NVL( cur_tasks_rec.BAC_VALUE, 0 );
2468 
2469                 l_rollup_table1(l_index).EARNED_VALUE2              :=      0; --NVL(       cur_tasks_rec.EARNED_VALUE, 0   );
2470                 l_rollup_table1(l_index).BAC_VALUE2                 :=      NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
2471 
2472                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := cur_tasks_rec.task_derivation_method;
2473                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := cur_tasks_rec.task_derivation_method;
2474                 -- Bug 4207995 : Passing Dirty_flags always Y
2475                 -- IF (cur_tasks_rec.object_id_to1 = p_object_version_id) THEN
2476                  l_rollup_table1(l_index).DIRTY_FLAG1            := 'Y';
2477                  l_rollup_table1(l_index).DIRTY_FLAG2            := 'Y';
2478                 -- ELSE
2479                 --      l_rollup_table1(l_index).DIRTY_FLAG1         := 'N';
2480                 --      l_rollup_table1(l_index).DIRTY_FLAG2         := 'N';
2481                 -- END IF;
2482 
2483                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
2484 
2485                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
2486                     l_action_allowed := 'N';
2487                 END IF;
2488 
2489                 IF g1_debug_mode  = 'Y' THEN
2490                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Tasks l_action_allowed='||l_action_allowed, x_Log_Level=> 3);
2491                     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);
2492                 END IF;
2493 
2494                 l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
2495                 l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
2496 
2497                 --maansari4/10 temporarily passing 'Y' to rollup node.
2498                 -- need to  investigate why l_action_allowed        is coming       always as       'N'
2499                 l_rollup_table1(l_index).rollup_node1 := 'Y';
2500                 l_rollup_table1(l_index).rollup_node2 := 'Y';
2501             END IF;       --<<cur_tasks_rec.object_type   = 'PA_TASKS'
2502         END LOOP;
2503     END IF; --  p_lowest_level_task = 'N' AND p_rollup_entire_wbs = 'N'
2504         --end bug 3951982
2505 
2506         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
2507 
2508     IF g1_debug_mode = 'Y' THEN
2509         FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2510             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);
2511         END LOOP;
2512     END IF;
2513 
2514         IF p_rollup_entire_wbs = 'Y' THEN
2515         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2516         INSERT INTO PA_PROJ_ROLLUP_TEMP(
2517         PROCESS_NUMBER,
2518         OBJECT_TYPE,
2519         OBJECT_ID,
2520         wbs_level)
2521         VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2522 
2523         l_mass_rollup_prog_exists_tab.delete;
2524 
2525         OPEN c_mass_rollup_tasks;
2526         FETCH c_mass_rollup_tasks BULK COLLECT INTO l_mass_rollup_prog_exists_tab;
2527         CLOSE c_mass_rollup_tasks;
2528 
2529         IF g1_debug_mode = 'Y' THEN
2530             FOR i in 1..l_mass_rollup_prog_exists_tab.count loop
2531                 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);
2532             END LOOP;
2533         END IF;
2534 
2535         FORALL i IN 1..l_mass_rollup_prog_exists_tab.COUNT
2536         INSERT INTO PA_PROJ_ROLLUP_TEMP(
2537         PROCESS_NUMBER,
2538         OBJECT_TYPE,
2539         OBJECT_ID,
2540         wbs_level)
2541         VALUES(l_process_number_temp, 'PA_TASKS',l_mass_rollup_prog_exists_tab(i), 1);
2542     END IF;
2543 
2544 
2545         -- FPM Dev CR 2 : Printing the  Rollup Table before     calling Generate Schedule
2546         IF g1_debug_mode  =     'Y'     THEN
2547                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
2548                 FOR i IN 1..l_rollup_table1.count LOOP
2549                         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);
2550                         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);
2551                         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);
2552                         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);
2553                         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);
2554                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2555                                 ' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
2556                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2557                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2558                                 ' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2559                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2560                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2561                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2562                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2563                                 ' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2564                                         ' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2565                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2566                                 ' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2567                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2568                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
2569                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
2570                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
2571                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2572                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2573                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2574                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2575                                 ' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2576                                         ' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2577                         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||
2578                                 ' 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||
2579                           ' 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);
2580                         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||
2581                                 ' 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);
2582                         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||
2583                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2584                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2585                   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);
2586                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
2587                 END LOOP;
2588         END IF;
2589 
2590         IF l_rollup_table1.count <= 0 THEN
2591         return;
2592         END IF;
2593 
2594         --Added by rtarway for  bug 3950574
2595         IF p_structure_type = 'WORKPLAN' THEN
2596             l_digit_number := 2;
2597         ELSE
2598             l_digit_number := 4;
2599         END IF;
2600 
2601         --  Bug 4207995 : Commented partial_flags in the below call
2602 
2603         PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
2604         p_commit                                => p_commit
2605         ,p_debug_mode                           => 'Y'
2606         ,x_return_status                        => l_return_status
2607         ,x_msg_count                            => l_msg_count
2608         ,x_msg_data                             => l_msg_data
2609         ,x_process_number                       => l_process_number
2610         ,p_data_structure                       => l_rollup_table1
2611         ,p_number_digit                         => l_digit_number
2612         ,p_process_flag1                        => 'Y'
2613         ,p_process_rollup_flag1                 => 'Y'
2614         ,p_process_progress_flag1               => 'Y'
2615         ,p_process_percent_flag1                => 'Y'
2616         ,p_process_effort_flag1                 => 'Y'
2617         ,p_process_task_status_flag1            => 'Y'
2618         ,p_process_flag2                        => 'Y'
2619         ,p_process_rollup_flag2                 => 'Y'
2620         ,p_process_progress_flag2               => 'Y'
2621         ,p_process_percent_flag2                => 'Y'
2622         ,p_process_ETC_Flag1                    => 'Y'
2623         ,p_process_ETC_Flag2                    => 'Y'
2624         ,p_Rollup_Method                        => l_Rollup_Method
2625         ,p_calling_module                       =>'ROLLUP_API'
2626                 );
2627 
2628     IF g1_debug_mode = 'Y' THEN
2629                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=>      3);
2630         END IF;
2631 
2632         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2633                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2634                                      p_msg_name       => l_msg_data
2635                                 );
2636                 x_msg_data := l_msg_data;
2637         x_return_status := 'E';
2638         RAISE  FND_API.G_EXC_ERROR;
2639         END IF;
2640 
2641 
2642         IF g1_debug_mode = 'Y' THEN
2643                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Doing  UPDATE_ROLLUP_PROGRESS_PVT',   x_Log_Level=> 3);
2644                 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);
2645         END IF;
2646 
2647         ----    **************  Updation Starts  ******************  ----------
2648 
2649         IF g1_debug_mode = 'Y' THEN
2650 		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);
2651 		FOR i IN 1..l_rollup_table1.count LOOP
2652 				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);
2653 				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);
2654 				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);
2655 				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);
2656 				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);
2657 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
2658 					' FINISH_DATE1  ='||l_rollup_table1(i).FINISH_DATE1||
2659 					' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2        ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
2660 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
2661 					' TASK_STATUS2  ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
2662 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PROGRESS_STATUS_WEIGHT1 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT1||
2663 					' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2       ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
2664 						' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
2665 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
2666 					' PERCENT_OVERRIDE1     ='||l_rollup_table1(i).PERCENT_OVERRIDE1||'     PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
2667 						' PERCENT_OVERRIDE2     ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
2668 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
2669 					' TASK_WEIGHT2  ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
2670 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
2671 					' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2        ='||l_rollup_table1(i).ROLLUP_NODE2||
2672 						' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2,       x_Log_Level=>   3);
2673 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'ETC_Cost1     ='||l_rollup_table1(i).ETC_Cost1||
2674 					' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
2675 						' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
2676 							' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
2677 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
2678 					' EQPMT_ETC_EFFORT1     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||'     REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
2679 						' EQPMT_ETC_EFFORT2     ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
2680 				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||
2681 					' 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||
2682 				  ' 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);
2683 				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||
2684 					' 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);
2685 				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 ='
2686 			    ||l_rollup_table1(i).EARNED_VALUE2||
2687 					' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
2688 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT',
2689 			  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);
2690 				pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => '**********************************************************', x_Log_Level=>    3);
2691 		END LOOP;
2692 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'Getting Periods', x_Log_Level=> 3);
2693 		pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'OU Context='||MO_GLOBAL.get_access_mode, x_Log_Level=> 3);
2694         END IF;
2695 
2696 
2697         BEGIN
2698 	  -- 4746476 : Added org_id in functions call below
2699           l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date,l_org_id),null);
2700           l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date,l_org_id),null);
2701         EXCEPTION
2702           WHEN OTHERS THEN
2703                  PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
2704                                 p_msg_name               => 'PA_FP_INVALID_DATE_RANGE');
2705                  x_msg_data :=  'PA_FP_INVALID_DATE_RANGE';
2706                  x_return_status :=     'E';
2707                  x_msg_count := fnd_msg_pub.count_msg;
2708                  RAISE  FND_API.G_EXC_ERROR;
2709         END ;
2710 
2711         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg   => 'After Getting Periods', x_Log_Level=> 3);
2712 
2713 
2714 
2715         FOR cur_reverse_tree_rec in cur_reverse_tree_update LOOP
2716         IF g1_debug_mode   = 'Y' THEN
2717             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);
2718                         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);
2719                 END IF;
2720 
2721                 FOR i in 1..l_rollup_table1.count LOOP
2722                 IF cur_reverse_tree_rec.object_id_to1 = l_rollup_table1(i).object_id AND
2723                   (l_rollup_table1(i).object_type = 'PA_TASKS' OR l_rollup_table1(i).object_type = 'PA_STRUCTURES')
2724                   --((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)
2725         THEN
2726                     -- Find the corresponding task rollup record data position
2727                     task_index  := l_mapping_tasks_to_rollup_tab(i);
2728 
2729 
2730                     IF g1_debug_mode  = 'Y' THEN
2731                          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);
2732                          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'task_index='||task_index, x_Log_Level=>       3);
2733                                 END IF;
2734                     -- Bug 3919211      Begin
2735                     IF p_structure_type = 'FINANCIAL' AND cur_reverse_tree_rec.object_type = 'PA_STRUCTURES' THEN
2736                          l_task_id := 0;
2737                     ELSE
2738                          l_task_id := cur_reverse_tree_rec.proj_element_id;
2739                     END IF;
2740                     -- Bug 3919211 End
2741 
2742 
2743                     l_child_rollup_rec_exists := 'N';
2744                     IF p_rollup_entire_wbs='Y' THEN
2745                          BEGIN
2746                                  SELECT 'Y' into l_child_rollup_rec_exists
2747                                  FROM dual
2748                                  WHERE exists
2749                                  (
2750                                    SELECT       'xyz'
2751                                    from pa_proj_rollup_temp
2752                                    WHERE object_id = cur_reverse_tree_rec.object_id_to1
2753                                    and process_number = l_process_number_temp
2754                                  );
2755                          EXCEPTION
2756                                  WHEN OTHERS THEN
2757                                    l_child_rollup_rec_exists := 'N';
2758                          END;
2759                     END IF;
2760 
2761 
2762                     IF p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists = 'Y' THEN
2763 
2764 
2765                          l_eff_rollup_status_code := null;
2766                          l_progress_status_code := null;
2767 
2768                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
2769                          FETCH cur_status INTO l_eff_rollup_status_code;
2770                          CLOSE cur_status;
2771 
2772                          OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
2773                          FETCH cur_status INTO l_progress_status_code;
2774                          CLOSE cur_status;
2775 
2776                          IF g1_debug_mode  = 'Y' THEN
2777                                  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);
2778                                  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);
2779                          END    IF;
2780 
2781 
2782                          -- FPM dev CR 4 : Initialized the values to null
2783                          l_rolled_up_per_comp :=        null;
2784                          l_rolled_up_prog_stat := null;
2785                          l_rolled_up_base_prog_stat := null;
2786                          l_rolled_up_prog_stat := null;
2787                          l_remaining_effort1 := null;
2788                          l_percent_complete1 := null;
2789                          l_ETC_Cost_PC    :=    null;
2790                          l_PPL_ETC_COST_PC := null;
2791                          l_EQPMT_ETC_COST_PC := null;
2792                          l_ETC_Cost_FC          :=      null;
2793                          l_PPL_ETC_COST_FC       :=     null;
2794                          l_EQPMT_ETC_COST_FC := null;
2795                          l_EQPMT_ETC_EFFORT     := null;
2796                          l_BAC_VALUE1 := null;
2797                          l_EARNED_VALUE1 :=     null;
2798                          l_remaining_effort1 := null;
2799                          l_EQPMT_ETC_EFFORT     := null;
2800                          l_OTH_ACT_COST_TO_DATE_PC :=   null;
2801                          l_PPL_ACT_COST_TO_DATE_PC :=   null;
2802                          l_EQPMT_ACT_COST_TO_DATE_PC := null;
2803                          l_OTH_ACT_COST_TO_DATE_FC :=   null;
2804                          l_PPL_ACT_COST_TO_DATE_FC :=   null;
2805                          l_EQPMT_ACT_COST_TO_DATE_FC := null;
2806                          l_PPL_ACT_EFFORT_TO_DATE := null;
2807                          l_EQPMT_ACT_EFFORT_TO_DATE := null;
2808                          -- Bug 3621404 : Raw Cost Changes
2809                          l_OTH_ACT_RAWCOST_TO_DATE_PC   := null;
2810                          l_PPL_ACT_RAWCOST_TO_DATE_PC   := null;
2811                          l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
2812                          l_OTH_ACT_RAWCOST_TO_DATE_FC   := null;
2813                          l_PPL_ACT_RAWCOST_TO_DATE_FC   := null;
2814                          l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
2815                          l_ETC_RAWCost_PC := null;
2816                          l_PPL_ETC_RAWCOST_PC :=        null;
2817                          l_EQPMT_ETC_RAWCOST_PC := null;
2818                          l_ETC_RAWCost_FC := null;
2819                          l_PPL_ETC_RAWCOST_FC :=        null;
2820                          l_EQPMT_ETC_RAWCOST_FC := null;
2821                          l_actual_start_date := l_rollup_table1(i).start_date1;
2822                          l_actual_finish_date :=        l_rollup_table1(i).finish_date1;
2823                          l_estimated_start_date := l_rollup_table1(i).start_date2;
2824                          l_estimated_finish_date        := l_rollup_table1(i).finish_date2;
2825 
2826                          --OPEN cur_pa_rollup1( cur_reverse_tree_rec.proj_element_id );
2827                          --FETCH        cur_pa_rollup1  INTO    l_cur_pa_rollup1_rec;
2828                          --CLOSE cur_pa_rollup1;
2829 
2830 
2831                          l_rolled_up_per_comp := l_tsk_over_percent_comp_tab(task_index);
2832                          l_rolled_up_prog_stat := l_tsk_progress_stat_code_tab(task_index);
2833 
2834 
2835                          IF g1_debug_mode  = 'Y' THEN
2836                                  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);
2837                                  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);
2838                          END IF;
2839 
2840                          IF p_lowest_level_task = 'Y' -- ?? This will just return the initial submitted task    value, we       shd get it for  each    task
2841                          THEN
2842                                  -- l_rolled_up_base_per_comp   := nvl(l_rollup_table1(i).percent_complete2,0);
2843                                  l_rolled_up_base_prog_stat := l_progress_status_code;
2844                          ELSE
2845                                  -- l_rolled_up_base_per_comp   := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
2846                                  l_rolled_up_base_prog_stat := l_tsk_base_prog_stat_code_tab(task_index);
2847                          END IF;
2848 
2849 
2850                          l_PROGRESS_ROLLUP_ID := null;
2851                          l_rollup_rec_ver_number := null;
2852                          l_percent_complete_id := null;
2853                          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
2854                                  l_PROGRESS_ROLLUP_ID := l_tsk_progress_rollup_id_tab(task_index);
2855                                  l_rollup_rec_ver_number := l_tsk_rollup_rec_ver_num_tab(task_index);
2856                          END IF;
2857 
2858 
2859 
2860             IF g1_debug_mode  = 'Y' THEN
2861                 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);
2862                 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);
2863             END IF;
2864 
2865             -- 4392189 : Program Reporting Changes - Phase 2
2866             -- Having Set2 columns to get Project level % complete
2867 
2868             IF p_structure_type = 'WORKPLAN' THEN
2869                                  l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,2),0);
2870                                  l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,2),0);
2871             ELSE
2872                                  l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
2873                                  l_percent_complete2 := nvl(l_rollup_table1(i).percent_complete2,0);
2874             END IF;
2875 
2876                         l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
2877             l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0);
2878 
2879             IF g1_debug_mode  = 'Y' THEN
2880                 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);
2881                 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);
2882                 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);
2883             END IF;
2884 
2885             l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
2886 
2887             IF p_wp_rollup_method = 'EFFORT' THEN
2888                  l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
2889             ELSE
2890                  l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
2891             END IF;
2892 
2893         --bug 4317491, added a check of WORKPLAN
2894         IF p_structure_type = 'WORKPLAN' THEN
2895                         BEGIN
2896                                  SELECT
2897 
2898                                  /*+    INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
2899                     PERIOD_NAME
2900                                  ,      ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
2901                                  ,      ACT_PRJ_LABOR_BRDN_COST
2902                                  ,      ACT_PRJ_EQUIP_BRDN_COST
2903                                  ,      ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
2904                                  ,      ACT_POU_LABOR_BRDN_COST
2905                                  ,      ACT_POU_EQUIP_BRDN_COST
2906                                  ,      ACT_LABOR_HRS
2907                                  ,      ACT_EQUIP_HRS
2908                                  ,      ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
2909                                  ,      ETC_PRJ_LABOR_BRDN_COST
2910                                  ,      ETC_PRJ_EQUIP_BRDN_COST
2911                                  ,      ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
2912                                  ,      ETC_POU_LABOR_BRDN_COST
2913                                  ,      ETC_POU_EQUIP_BRDN_COST
2914                                  ,      ETC_LABOR_HRS
2915                                  ,      ETC_EQUIP_HRS
2916                                  ,      ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
2917                                  ,      ACT_PRJ_LABOR_RAW_COST
2918                                  ,      ACT_PRJ_EQUIP_RAW_COST
2919                                  ,      ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
2920                                  ,      ACT_POU_LABOR_RAW_COST
2921                                  ,      ACT_POU_EQUIP_RAW_COST
2922                                  ,      ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
2923                                  ,      ETC_PRJ_LABOR_RAW_COST
2924                                  ,      ETC_PRJ_EQUIP_RAW_COST
2925                                  ,      ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
2926                                  ,      ETC_POU_LABOR_RAW_COST
2927                                  ,      ETC_POU_EQUIP_RAW_COST
2928                                  ,  LABOR_HOURS
2929                                  ,  EQUIPMENT_HOURS
2930                                  ,  POU_LABOR_BRDN_COST
2931                                  ,  PRJ_LABOR_BRDN_COST
2932                                  ,  POU_EQUIP_BRDN_COST
2933                                  ,  PRJ_EQUIP_BRDN_COST
2934                                  ,  POU_BRDN_COST - (     POU_EQUIP_BRDN_COST     + POU_LABOR_BRDN_COST )
2935                                  ,  PRJ_BRDN_COST - (     PRJ_EQUIP_BRDN_COST     + PRJ_LABOR_BRDN_COST )
2936                                  ,  POU_LABOR_RAW_COST
2937                                  ,  PRJ_LABOR_RAW_COST
2938                                  ,  POU_EQUIP_RAW_COST
2939                                  ,  PRJ_EQUIP_RAW_COST
2940                                  ,  POU_RAW_COST  - (     POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
2941                                  ,  PRJ_RAW_COST  - (     PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
2942                                  INTO
2943                     l_PERIOD_NAME
2944                                  ,      l_OTH_ACT_COST_TO_DATE_PC
2945                                  ,      l_PPL_ACT_COST_TO_DATE_PC
2946                                  ,      l_EQPMT_ACT_COST_TO_DATE_PC
2947                                  ,      l_OTH_ACT_COST_TO_DATE_FC
2948                                  ,      l_PPL_ACT_COST_TO_DATE_FC
2949                                  ,      l_EQPMT_ACT_COST_TO_DATE_FC
2950                                  ,      l_PPL_ACT_EFFORT_TO_DATE
2951                                  ,      l_EQPMT_ACT_EFFORT_TO_DATE
2952                                  ,      l_ETC_Cost_PC
2953                                  ,      l_PPL_ETC_COST_PC
2954                                  ,      l_EQPMT_ETC_COST_PC
2955                                  ,      l_ETC_Cost_FC
2956                                  ,      l_PPL_ETC_COST_FC
2957                                  ,      l_EQPMT_ETC_COST_FC
2958                                  ,      l_remaining_effort1
2959                                  ,      l_EQPMT_ETC_EFFORT
2960                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_PC
2961                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_PC
2962                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_PC
2963                                  ,      l_OTH_ACT_RAWCOST_TO_DATE_FC
2964                                  ,      l_PPL_ACT_RAWCOST_TO_DATE_FC
2965                                  ,      l_EQPMT_ACT_RAWCOST_TO_DATE_FC
2966                                  ,      l_ETC_RAWCost_PC
2967                                  ,      l_PPL_ETC_RAWCOST_PC
2968                                  ,      l_EQPMT_ETC_RAWCOST_PC
2969                                  ,      l_ETC_RAWCost_FC
2970                                  ,      l_PPL_ETC_RAWCOST_FC
2971                                  ,      l_EQPMT_ETC_RAWCOST_FC
2972                                  ,      l_LABOR_HOURS
2973                                  ,      l_EQUIPMENT_HOURS
2974                                  ,      l_POU_LABOR_BRDN_COST
2975                                  ,      l_PRJ_LABOR_BRDN_COST
2976                                  ,      l_POU_EQUIP_BRDN_COST
2977                                  ,      l_PRJ_EQUIP_BRDN_COST
2978                                  ,      l_POU_OTH_BRDN_COST
2979                                  ,      l_PRJ_OTH_BRDN_COST
2980                                  ,      l_POU_LABOR_RAW_COST
2981                                  ,      l_PRJ_LABOR_RAW_COST
2982                                  ,      l_POU_EQUIP_RAW_COST
2983                                  ,      l_PRJ_EQUIP_RAW_COST
2984                                  ,      l_POU_OTH_RAW_COST
2985                                  ,      l_PRJ_OTH_RAW_COST
2986                                  FROM PJI_FM_XBS_ACCUM_TMP1
2987                                   WHERE project_id      = p_project_id
2988                                   AND struct_version_id = p_structure_version_id
2989                                   AND project_element_id        =       cur_reverse_tree_rec.proj_element_id
2990                                   AND plan_version_id > 0
2991                                   AND txn_currency_code is      null
2992                                   AND calendar_type     = 'A'
2993                                   AND res_list_member_id        is null;
2994                          EXCEPTION
2995                                  WHEN NO_DATA_FOUND     THEN
2996                                    null;
2997                                  WHEN OTHERS THEN
2998                                    fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
2999                                                                    p_procedure_name     => 'ROLLUP_PROGRESS_PVT',
3000                                                                    p_error_text     => SUBSTRB('Call of PJI_FM_XBS_ACCUM_TMP1 Failed:'||SQLERRM,1,120));
3001                                    RAISE FND_API.G_EXC_ERROR;
3002                          END;
3003 
3004 
3005 
3006                          IF g1_debug_mode  = 'Y'        THEN
3007                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Printing all the values retrieved from PJI ', x_Log_Level=> 3);
3008                                 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);
3009                                 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);
3010                                 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);
3011                                 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);
3012                                 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);
3013                                 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);
3014                                 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);
3015                                 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);
3016                                 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);
3017                                 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);
3018                                 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);
3019                                 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);
3020                                 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);
3021                                 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);
3022                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_remaining_effort1: '||l_remaining_effort1,  x_Log_Level=> 3);
3023                                 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);
3024                                 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);
3025                                 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);
3026                                 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);
3027                                 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);
3028                                 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);
3029                                 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);
3030                                 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);
3031                                 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);
3032                                 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);
3033                                 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);
3034                                 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);
3035                                 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);
3036                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_LABOR_HOURS:        '||l_LABOR_HOURS, x_Log_Level=> 3);
3037                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_EQUIPMENT_HOURS: '||l_EQUIPMENT_HOURS, x_Log_Level=>        3);
3038                                 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);
3039                                 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);
3040                                 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);
3041                                 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);
3042                                 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);
3043                                 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);
3044                                 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);
3045                                 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);
3046                                 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);
3047                                 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);
3048                                 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);
3049                                 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);
3050                          END IF;
3051 
3052                          /* 5726773                         --bug 3829341
3053                          --bug 3824042, the check       for whether exisitng etc(l_cur_rollup_rec. )
3054                          -- is null is  not required as we are always   taking from pji.
3055 
3056                          IF     ( L_EQPMT_ETC_EFFORT IS NULL AND L_EQUIPMENT_HOURS      >= L_EQPMT_ACT_EFFORT_TO_DATE)
3057                          THEN
3058                                  L_EQPMT_ETC_EFFORT     := (L_EQUIPMENT_HOURS - L_EQPMT_ACT_EFFORT_TO_DATE);
3059                          END    IF;
3060 
3061                          IF L_EQPMT_ETC_EFFORT <        0
3062                          THEN
3063                                  L_EQPMT_ETC_EFFORT     :=0;
3064                          END    IF;
3065 
3066                          IF (L_REMAINING_EFFORT1        IS NULL AND L_LABOR_HOURS >= L_PPL_ACT_EFFORT_TO_DATE)   THEN
3067                                  L_REMAINING_EFFORT1 := (L_LABOR_HOURS - L_PPL_ACT_EFFORT_TO_DATE);
3068                          END    IF;
3069 
3070                          IF L_REMAINING_EFFORT1 <0
3071                          THEN
3072                                  L_REMAINING_EFFORT1 := 0;
3073                          END    IF;
3074 
3075                          IF ( L_ETC_COST_FC     IS NULL AND     L_POU_OTH_BRDN_COST     >= L_OTH_ACT_COST_TO_DATE_FC)   THEN
3076                                  L_ETC_COST_FC:= L_POU_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_FC;
3077                          END    IF;
3078 
3079                          IF L_ETC_COST_FC <     0
3080                          THEN
3081                                  L_ETC_COST_FC  := 0;
3082                          END    IF;
3083 
3084                          IF (L_ETC_COST_PC IS NULL AND L_PRJ_OTH_BRDN_COST >= L_OTH_ACT_COST_TO_DATE_PC) THEN
3085                                  L_ETC_COST_PC:= L_PRJ_OTH_BRDN_COST - L_OTH_ACT_COST_TO_DATE_PC;
3086                          END    IF;
3087 
3088                          IF L_ETC_COST_PC <0
3089                          THEN
3090                                  L_ETC_COST_PC  :=0;
3091                          END    IF;
3092 
3093                          IF (L_PPL_ETC_COST_FC IS NULL AND      L_POU_LABOR_BRDN_COST >=        L_PPL_ACT_COST_TO_DATE_FC) THEN
3094                                  L_PPL_ETC_COST_FC      := (L_POU_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_FC);
3095                          END    IF;
3096 
3097                          IF L_PPL_ETC_COST_FC <0
3098                          THEN
3099                                  L_PPL_ETC_COST_FC      :=0;
3100                          END    IF;
3101 
3102                          IF (L_PPL_ETC_COST_PC IS NULL AND      L_PRJ_LABOR_BRDN_COST >=        L_PPL_ACT_COST_TO_DATE_PC) THEN
3103                                  L_PPL_ETC_COST_PC      := (L_PRJ_LABOR_BRDN_COST - L_PPL_ACT_COST_TO_DATE_PC);
3104                          END    IF;
3105 
3106                          IF L_PPL_ETC_COST_PC <0
3107                          THEN
3108                                  L_PPL_ETC_COST_PC      :=0;
3109                          END    IF;
3110 
3111                          IF ( L_EQPMT_ETC_COST_FC IS NULL AND L_POU_EQUIP_BRDN_COST     >= L_EQPMT_ACT_COST_TO_DATE_FC) THEN
3112                          L_EQPMT_ETC_COST_FC := (L_POU_EQUIP_BRDN_COST -        L_EQPMT_ACT_COST_TO_DATE_FC);
3113                          END    IF;
3114 
3115                          IF L_EQPMT_ETC_COST_FC <0
3116                          THEN
3117                          L_EQPMT_ETC_COST_FC :=0;
3118                          END    IF;
3119 
3120                          IF (L_EQPMT_ETC_COST_PC        IS NULL AND L_PRJ_EQUIP_BRDN_COST >= L_EQPMT_ACT_COST_TO_DATE_PC)  THEN
3121                                  L_EQPMT_ETC_COST_PC := (L_PRJ_EQUIP_BRDN_COST - L_EQPMT_ACT_COST_TO_DATE_PC);
3122                          END    IF;
3123 
3124                          IF L_EQPMT_ETC_COST_PC <0
3125                          THEN
3126                                  L_EQPMT_ETC_COST_PC :=0;
3127                          END    IF;
3128 
3129                          IF (L_ETC_RAWCOST_FC IS        NULL    AND L_POU_OTH_RAW_COST >=       L_OTH_ACT_RAWCOST_TO_DATE_FC)    THEN
3130                                  L_ETC_RAWCOST_FC:=     L_POU_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_FC;
3131                          END    IF;
3132 
3133                          IF L_ETC_RAWCOST_FC <0
3134                          THEN
3135                                  L_ETC_RAWCOST_FC :=0;
3136                          END    IF;
3137 
3138                          IF (L_ETC_RAWCOST_PC IS        NULL    AND L_PRJ_OTH_RAW_COST >=       L_OTH_ACT_RAWCOST_TO_DATE_PC)   THEN
3139                                  L_ETC_RAWCOST_PC:=     L_PRJ_OTH_RAW_COST - L_OTH_ACT_RAWCOST_TO_DATE_PC;
3140                          END    IF;
3141 
3142                          IF L_ETC_RAWCOST_PC <0
3143                          THEN
3144                                  L_ETC_RAWCOST_PC :=0;
3145                          END    IF;
3146 
3147                          IF (L_PPL_ETC_RAWCOST_FC IS NULL AND L_POU_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_FC) THEN
3148                                  L_PPL_ETC_RAWCOST_FC :=        (L_POU_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_FC);
3149                          END    IF;
3150 
3151                          IF L_PPL_ETC_RAWCOST_FC        <0
3152                          THEN
3153                                  L_PPL_ETC_RAWCOST_FC :=0;
3154                          END    IF;
3155 
3156                          IF (L_PPL_ETC_RAWCOST_PC IS NULL AND L_PRJ_LABOR_RAW_COST >= L_PPL_ACT_RAWCOST_TO_DATE_PC) THEN
3157                                  L_PPL_ETC_RAWCOST_PC :=        (L_PRJ_LABOR_RAW_COST - L_PPL_ACT_RAWCOST_TO_DATE_PC);
3158                          END    IF;
3159 
3160                          IF L_PPL_ETC_RAWCOST_PC        <0
3161                          THEN
3162                                  L_PPL_ETC_RAWCOST_PC :=0;
3163                          END    IF;
3164 
3165                          IF ( L_EQPMT_ETC_RAWCOST_FC IS NULL    AND L_POU_EQUIP_RAW_COST        >= L_EQPMT_ACT_RAWCOST_TO_DATE_FC)      THEN
3166                          L_EQPMT_ETC_RAWCOST_FC := (L_POU_EQUIP_RAW_COST        - L_EQPMT_ACT_RAWCOST_TO_DATE_FC);
3167                          END    IF;
3168 
3169                          IF L_EQPMT_ETC_RAWCOST_FC <0
3170                          THEN
3171                                  L_EQPMT_ETC_RAWCOST_FC :=0;
3172                          END    IF;
3173 
3174                          IF ( L_EQPMT_ETC_RAWCOST_PC IS NULL    AND L_PRJ_EQUIP_RAW_COST        >= L_EQPMT_ACT_RAWCOST_TO_DATE_PC)      THEN
3175                                  L_EQPMT_ETC_RAWCOST_PC :=      (L_PRJ_EQUIP_RAW_COST - L_EQPMT_ACT_RAWCOST_TO_DATE_PC);
3176                          END    IF;
3177 
3178                          IF L_EQPMT_ETC_RAWCOST_PC <0
3179                          THEN
3180                                  L_EQPMT_ETC_RAWCOST_PC :=0;
3181                          END    IF;
3182 */
3183 
3184                          IF p_working_wp_prog_flag = 'Y' OR l_published_structure =     'N'
3185                          --for working  version p_working_wp_prog_flag may      not be 'Y' because of   bug 3846353
3186                          THEN
3187                                  l_EQPMT_ETC_EFFORT     := null;
3188                                  l_remaining_effort1:= null;
3189                                  l_ETC_Cost_FC:= null;
3190                                  l_ETC_Cost_PC:= null;
3191                                  l_PPL_ETC_COST_FC:= null;
3192                                  l_PPL_ETC_COST_PC      := null;
3193                                  l_EQPMT_ETC_COST_FC:= null;
3194                                  l_EQPMT_ETC_COST_PC:= null;
3195                                  l_ETC_RAWCost_FC:=     null;
3196                                  l_ETC_RAWCost_PC := null;
3197                                  l_PPL_ETC_RAWCOST_FC:= null;
3198                                  l_PPL_ETC_RAWCOST_PC:= null;
3199                                  l_EQPMT_ETC_RAWCOST_FC:= null;
3200                                  l_EQPMT_ETC_RAWCOST_PC:= null;
3201                          END    IF;
3202 
3203                          -- Bug 3922325 : Move the task status Defauilting logic from above after Extraction of Actuals
3204                          IF g1_debug_mode  = 'Y' THEN
3205                                  pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Defaulting of Task Status', x_Log_Level=> 3);
3206                                  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);
3207                                  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);
3208                          END    IF;
3209 
3210                          IF cur_reverse_tree_rec.object_type = 'PA_TASKS' THEN
3211 
3212                                   --do not rollup on-hold task status. We dont need to worry   about
3213                                   --cancelled bcoz they are not selected.
3214 
3215                                  -- If Actual exists or Deliverable is In Progress for the task, Then Task SHould be In Progress
3216                                  l_actual_exists := 'N';
3217                                  ---5726773  changed '>0' to '<>0'
3218  	                         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
3219                                    IF g1_debug_mode      = 'Y' THEN
3220                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
3221                                    END IF;
3222                                    l_actual_exists := 'Y';
3223                                  END    IF;
3224 
3225                                  IF l_actual_exists = 'N' THEN -- Added This IF for performance: No need to open this if variable is already set to Y
3226                                    -- 14-Feb-2005 Patched thru Bug      4180026
3227                                    OPEN c_get_dlv_status(cur_reverse_tree_rec.proj_element_id);
3228                                    FETCH c_get_dlv_status INTO l_actual_exists;
3229                                    CLOSE c_get_dlv_status;
3230                                  END    IF;
3231 
3232                                  IF g1_debug_mode = 'Y' THEN
3233                                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_actual_exists='||l_actual_exists, x_Log_Level=> 3);
3234                                  END    IF;
3235 
3236                                  IF ( ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
3237                                    OR
3238                                    ( l_percent_complete1 > 0 OR  l_rolled_up_per_comp > 0 )
3239                                    OR l_actual_exists = 'Y'
3240                                  )      THEN
3241                                    -- Bug        3842084 : Initilaized l_status_code with l_existing_object_status
3242                                          --get the existing      status
3243                                    OPEN  c_get_object_status ( p_project_id, cur_reverse_tree_rec.proj_element_id);
3244                                          FETCH c_get_object_status INTO l_existing_object_status;
3245                                          CLOSE c_get_object_status;
3246 
3247                                    l_status_code := l_existing_object_status;
3248                                    l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); --Bug#5374114
3249                                    l_status_code_temp := l_status_code; --Bug#5374114
3250                                    l_system_status_code_temp := l_system_status_code; --Bug#5374114
3251 
3252                                          IF ( nvl(l_rollup_table1(i).task_status1,0)    <>      0 )
3253                                          THEN
3254                                         OPEN     cur_task_status (      to_char(l_rollup_table1(i).task_status1) );
3255                                                  FETCH cur_task_status INTO l_status_code;
3256                                         CLOSE cur_task_status;
3257                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
3258                                    END IF;
3259                                    -- Now       Defaulting of   Status will happen even if the status is returned by Scheuling API, but it is wrong
3260 
3261                                          l_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
3262                                    IF g1_debug_mode      = 'Y' THEN
3263                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code='||l_status_code, x_Log_Level=> 3);
3264                                         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);
3265                                         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);
3266                                    END IF;
3267 
3268                                          IF (NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_system_status_code <> 'COMPLETED')
3269                                          THEN
3270                                         l_status_code := '127';
3271                                         l_system_status_code := 'COMPLETED';
3272                                          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'))
3273                                          THEN
3274                                         l_status_code := '125';
3275                                         l_system_status_code := 'IN_PROGRESS';
3276                                         l_actual_finish_date := null;
3277                                    -- This is done to first time make task In Progress  if any sub-objects are in Progress
3278                                    ELSIF (l_actual_exists ='Y' AND      l_system_status_code    = 'NOT_STARTED')
3279                                    THEN
3280                                         l_status_code := '125';
3281                                         l_system_status_code := 'IN_PROGRESS';
3282                                         l_actual_finish_date := null;
3283                                    END IF;
3284 
3285 /* Changes by shanif for bug#5374114 - START */
3286 
3287                     IF (l_system_status_code = l_system_status_code_temp) THEN
3288                         l_system_status_code := l_system_status_code_temp;
3289                         l_status_code  := l_status_code_temp;
3290                     END IF;
3291 
3292 /* Changes by shanif for bug#5374114 - END */
3293 
3294                                    IF g1_debug_mode      = 'Y' THEN
3295                                         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);
3296                                         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);
3297                                    END IF;
3298 
3299                                    IF l_structure_version_id IS NULL THEN -- Bug 3922325  : This  does    not make sense  for     working wp version rollup
3300                                         UPDATE pa_proj_elements
3301                                         SET status_code = l_status_code
3302                                         WHERE project_id = p_project_id
3303                                         AND proj_element_id     = cur_reverse_tree_rec.proj_element_id;
3304                                    END IF;
3305 
3306 
3307                                    IF p_structure_type = 'WORKPLAN' THEN
3308                                         OPEN c_get_dates (p_project_id, cur_reverse_tree_rec.object_id_to1);
3309                                         FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
3310                                         CLOSE c_get_dates;
3311                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3312                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3313                                                 l_actual_finish_date := to_date(null);
3314                                         END IF;
3315                     -- Bug 4232099 : added folling IF
3316                     IF l_actual_finish_date IS NOT NULL AND l_system_status_code = 'IN_PROGRESS' THEN
3317                         l_actual_finish_date := to_date(null);
3318                     END IF;
3319                                         IF l_actual_start_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3320                                                 l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
3321                                         END IF;
3322                                         IF l_actual_finish_date IS NULL AND l_system_status_code = 'COMPLETED' THEN
3323                                                 l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
3324                                         END IF;
3325 
3326                                         IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL     THEN
3327                                                 IF l_actual_finish_date < l_actual_start_date THEN
3328                                                   IF TRUNC(SYSDATE)  < l_actual_start_date THEN
3329                                                           l_actual_finish_date := l_actual_start_date;
3330                                                   ELSE
3331                                                           l_actual_finish_date := TRUNC(SYSDATE);
3332                                                   END IF;
3333                                                 END IF;
3334                                         END IF;
3335                                    END IF;
3336 
3337                                    UPDATE pa_percent_completes
3338                                    SET status_code = l_status_code
3339                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
3340                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
3341                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
3342                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3343                                    AND project_id = p_project_id
3344                                    --AND PA_PROGRESS_UTILS.get_system_task_status( status_code )        NOT IN  ( 'CANCELLED',  'COMPLETED' )
3345                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
3346                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
3347                                    AND current_flag = 'N' and published_flag  = 'N'
3348                                    ;
3349 
3350                                    -- 14-Feb-2005 :     Added Patched thru Bug 4180026
3351                                    UPDATE pa_percent_completes
3352                                    SET status_code = l_status_code
3353                                    , actual_start_date = l_actual_start_date     --      Bug 3956299
3354                                    , actual_finish_date = l_actual_finish_date -- Bug   3956299
3355                                    WHERE object_id = cur_reverse_tree_rec.proj_element_id
3356                                    AND object_Type = cur_reverse_tree_rec.object_Type ---4743866
3357                                    AND project_id = p_project_id
3358                                    AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN   (       'CANCELLED' ) -- 02/06/04 Satish
3359                                    AND structure_type = p_structure_type --     FPM     Dev CR 3
3360                                    AND published_flag = 'Y' ---4743866
3361                                    AND current_flag = 'Y'
3362                                    AND trunc(date_computed) = trunc(p_as_of_date)
3363                                    ;
3364 
3365                                  END    IF;
3366                          END    IF;
3367 
3368                          IF NVL(l_track_wp_cost_flag,'Y') = 'N' THEN
3369                                  l_ETC_Cost_FC:= null;
3370                                  l_ETC_Cost_PC:= null;
3371                                  l_PPL_ETC_COST_FC:= null;
3372                                  l_PPL_ETC_COST_PC      := null;
3373                                  l_EQPMT_ETC_COST_FC:= null;
3374                                  l_EQPMT_ETC_COST_PC:= null;
3375                                  l_ETC_RAWCost_FC:=     null;
3376                                  l_ETC_RAWCost_PC := null;
3377                                  l_PPL_ETC_RAWCOST_FC:= null;
3378                                  l_PPL_ETC_RAWCOST_PC:= null;
3379                                  l_EQPMT_ETC_RAWCOST_FC:= null;
3380                                  l_EQPMT_ETC_RAWCOST_PC:= null;
3381                                  l_OTH_ACT_COST_TO_DATE_PC:= null;
3382                                  l_OTH_ACT_COST_TO_DATE_FC:= null;
3383                                  l_PPL_ACT_COST_TO_DATE_PC:= null;
3384                                  l_PPL_ACT_COST_TO_DATE_FC:= null;
3385                                  l_EQPMT_ACT_COST_TO_DATE_PC:= null;
3386                                  l_EQPMT_ACT_COST_TO_DATE_FC:= null;
3387                                  l_OTH_ACT_RAWCOST_TO_DATE_PC:= null;
3388                                  l_OTH_ACT_RAWCOST_TO_DATE_FC:= null;
3389                                  l_PPL_ACT_RAWCOST_TO_DATE_PC:= null;
3390                                  l_PPL_ACT_RAWCOST_TO_DATE_FC:= null;
3391                                  l_EQPMT_ACT_RAWCOST_TO_DATE_PC:= null;
3392                                  l_EQPMT_ACT_RAWCOST_TO_DATE_FC:= null;
3393                         END IF;
3394 
3395 
3396                 END IF; -- IF  p_structure_type = 'WORKPLAN' --bug 4317491
3397 
3398 
3399 		-- Bug 4651304 Begin
3400 		-- One solution for this issue could be to pass
3401 		-- p_upd_new_elem_ver_id_flag as 'N' from rollup API call in
3402 		-- program_rollup_pvt, rollup_future_progress_pvt, and recursive call of Rollup API
3403 		-- within Rollup API. This solution works for Case 1 and Case2, but not Case 3
3404 		-- Best way is to always retain the existing object_version_id in pa_progress_rollup
3405 		-- table in case of update, in case of insert, use the new object version id
3406 
3407 		-- Commented below code and added new condition
3408 
3409 
3410 		--IF p_upd_new_elem_ver_id_flag = 'Y' THEN
3411 		--	l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3412 		--END IF;
3413 
3414 		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
3415 			null; -- Don't do anything .. let l_tsk_object_version_id_tab old value to be retained
3416 		ELSE
3417 			l_tsk_object_version_id_tab(task_index) := l_rollup_table1(i).object_id;
3418 		END IF;
3419 		-- Bug 4651304 End
3420 
3421 		l_tsk_proj_element_id_tab(task_index) := l_task_id;
3422 		l_tsk_roll_comp_percent_tab(task_index) := l_percent_complete1;
3423                     -- 4392189 : Program Reporting Changes - Phase 2
3424                     -- Having Set2 columns to get Project level % complete
3425                                         -- 4506461 l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3426                     -- Bug 4506461 Begin
3427                     l_tsk_base_percent_comp_tab(task_index) := nvl(l_tsk_over_percent_comp_tab(task_index),l_percent_complete1);
3428                     -- 4540890 : Removed l_subproject_found check from below
3429                     IF p_structure_type = 'WORKPLAN' THEN --AND l_subproject_found = 'Y' THEN
3430                         l_rederive_base_pc := 'N';
3431                         OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
3432                         FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
3433                         CLOSE c_get_any_childs_have_subprj;
3434                         IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
3435                             l_tsk_base_percent_comp_tab(task_index) := l_percent_complete2;
3436                         END IF;
3437                     END IF;
3438                     -- Bug 4506461 End
3439 
3440                     l_tsk_earned_value_tab(task_index) := l_earned_value1;
3441                                         l_tsk_task_wt_basis_code_tab(task_index) := l_rollup_method;
3442                                         l_tsk_structure_version_id_tab(task_index) := l_structure_version_id;
3443 
3444 
3445                                         IF p_structure_type = 'WORKPLAN' THEN
3446                                                 l_tsk_est_start_date_tab(task_index) := l_rollup_table1(i).start_date2;
3447                                                 l_tsk_est_finish_date_tab(task_index) := l_rollup_table1(i).finish_date2;
3448                                                 l_tsk_actual_start_date_tab(task_index) := l_actual_start_date;
3449                                                 l_tsk_actual_finish_date_tab(task_index) := l_actual_finish_date;
3450 						-- 4533112 : Base Progress Status is not used
3451                                                 --l_tsk_base_prog_stat_code_tab(task_index) :=    l_rolled_up_base_prog_stat;
3452                                                 l_tsk_EFF_ROLL_PRG_ST_CODE_tab(task_index) := l_eff_rollup_status_code;
3453 
3454                                                 IF p_progress_mode <> 'BACKDATED' THEN
3455                                                         l_tsk_ppl_act_eff_tab(task_index) := l_ppl_act_effort_to_date;
3456                                                         l_tsk_ppl_act_cost_pc_tab(task_index) := l_ppl_act_cost_to_date_pc;
3457                                                         l_tsk_ppl_act_cost_fc_tab(task_index) := l_ppl_act_cost_to_date_fc;
3458                                                         l_tsk_ppl_act_rawcost_pc_tab(task_index) := l_ppl_act_rawcost_to_date_pc;
3459                                                         l_tsk_ppl_act_rawcost_fc_tab(task_index) := l_ppl_act_rawcost_to_date_fc;
3460                                                         l_tsk_est_rem_effort_tab(task_index) := l_remaining_effort1;
3461                                                         l_tsk_ppl_etc_cost_pc_tab(task_index) := l_ppl_etc_cost_pc;
3462                                                         l_tsk_ppl_etc_cost_fc_tab(task_index) := l_ppl_etc_cost_fc;
3463                                                         l_tsk_ppl_etc_rawcost_pc_tab(task_index) := l_ppl_etc_rawcost_pc;
3464                                                         l_tsk_ppl_etc_rawcost_fc_tab(task_index) := l_ppl_etc_rawcost_fc;
3465 
3466                                                         l_tsk_eqpmt_act_effort_tab(task_index) := l_eqpmt_act_effort_to_date;
3467                                                         l_tsk_eqpmt_act_cost_pc_tab(task_index) := l_eqpmt_act_cost_to_date_pc;
3468                                                         l_tsk_eqpmt_act_cost_fc_tab(task_index) := l_eqpmt_act_cost_to_date_fc;
3469                                                         l_tsk_eqpmt_act_rawcost_pc_tab(task_index) := l_eqpmt_act_rawcost_to_date_pc;
3470                                                         l_tsk_eqpmt_act_rawcost_fc_tab(task_index) := l_eqpmt_act_rawcost_to_date_fc;
3471                                                         l_tsk_eqpmt_etc_effort_tab(task_index) := l_eqpmt_etc_effort;
3472                                                         l_tsk_eqpmt_etc_cost_pc_tab(task_index) := l_eqpmt_etc_cost_pc;
3473                                                         l_tsk_eqpmt_etc_cost_fc_tab(task_index) := l_eqpmt_etc_cost_fc;
3474                                                         l_tsk_eqpmt_etc_rawcost_pc_tab(task_index) := l_eqpmt_etc_rawcost_pc;
3475                                                         l_tsk_eqpmt_etc_rawcost_fc_tab(task_index) := l_eqpmt_etc_rawcost_fc;
3476 
3477                                                         l_tsk_oth_act_cost_pc_tab(task_index) := l_oth_act_cost_to_date_pc;
3478                                                         l_tsk_oth_act_cost_fc_tab(task_index) := l_oth_act_cost_to_date_fc;
3479                                                         l_tsk_oth_act_rawcost_pc_tab(task_index) := l_oth_act_rawcost_to_date_pc;
3480                                                         l_tsk_oth_act_rawcost_fc_tab(task_index) := l_oth_act_rawcost_to_date_fc;
3481                                                         l_tsk_oth_etc_cost_pc_tab(task_index) := l_etc_cost_pc;
3482                                                         l_tsk_oth_etc_cost_fc_tab(task_index) := l_etc_cost_fc;
3483                                                         l_tsk_oth_etc_rawcost_pc_tab(task_index) := l_etc_rawcost_pc;
3484                                                         l_tsk_oth_etc_rawcost_fc_tab(task_index) := l_etc_rawcost_fc;
3485 
3486                                                 END IF; -- p_progress_mode <> 'BACKDATED'
3487 
3488                                                 -- 5119716 Begin
3489                                                 -- In early Rollup API, there used to be call of PA_TASK_PUB1.update_schedule_version API
3490                                                 -- For performance changes, it was removed and replaced with direct update statement
3491                                                 -- The follwoing portion for dirty schedule was missing out.
3492                                                 IF PA_PROJECT_STRUCTURE_UTILS.CHECK_THIRD_PARTY_SCH_FLAG(p_project_id)= 'Y' THEN
3493 
3494                                                         PA_PROJECT_STRUCTURE_PVT1.update_sch_dirty_flag(
3495                                                                 p_structure_version_id  => p_structure_version_id
3496                                                                 ,p_dirty_flag           => 'Y'
3497                                                                 ,x_return_status        => x_return_status
3498                                                                 ,x_msg_count            => x_msg_count
3499                                                                 ,x_msg_data             => x_msg_data
3500                                                                 );
3501 
3502                                                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3503                                                                 raise FND_API.G_EXC_ERROR;
3504                                                         END IF;
3505 
3506                                                 END IF;
3507                                                 -- 5119716 End
3508 
3509                                                  UPDATE pa_proj_elem_ver_schedule
3510                                                  SET    ACTUAL_START_DATE = l_actual_start_date
3511                                                  , ACTUAL_FINISH_DATE = l_actual_finish_date
3512                                                  , ESTIMATED_START_DATE = l_rollup_table1(i).start_date2
3513                                                  , ESTIMATED_FINISH_DATE = l_rollup_table1(i).finish_date2
3514                                                  , record_version_number = record_version_number+1
3515                                                  -- 5119716 Begin
3516                                                  , estimated_duration = trunc(l_rollup_table1(i).finish_date2) - trunc(l_rollup_table1(i).start_date2) + 1
3517                                                  , actual_duration = trunc(l_actual_finish_date) - trunc(l_actual_start_date) + 1
3518                                                  -- 5119716 End
3519                                                  , last_updated_by = l_user_id
3520                                                  , last_update_date= sysdate
3521                                                  , last_update_login = l_login_id
3522                                                  WHERE project_id = p_project_id
3523                                                  AND element_version_id = l_rollup_table1(i).object_id;
3524 
3525 
3526                                                 IF l_rollup_table1(i).object_type = 'PA_STRUCTURES' THEN
3527                                                         UPDATE pa_projects_all
3528                                                         SET actual_start_date = l_rollup_table1(i).start_date1,
3529                                                             actual_finish_date = l_rollup_table1(i).finish_date1
3530                                                         WHERE project_id = p_project_id;
3531                                                 END IF;
3532                                         END IF; -- p_structure_type     = 'WORKPLAN'
3533 
3534                     IF l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3535                         l_tsk_update_required(task_index):='Y';
3536                     ELSE
3537                         -- Bug 4320336 : Added the following condition for FUTURE_ROLLUP
3538                         IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3539                             l_tsk_create_required(task_index):='Y';
3540                             BEGIN
3541                                 SELECT percent_complete_id
3542                                 INTO l_percent_complete_id
3543                                 FROM pa_percent_completes
3544                                 WHERE project_id = p_project_id
3545                                 AND object_id =  cur_reverse_tree_rec.proj_element_id
3546                                 AND object_Type = l_rollup_table1(i).object_Type
3547                                 AND structure_type = p_structure_type
3548                                 AND date_computed = ( SELECT max(date_computed)
3549                                             FROM    pa_percent_completes
3550                                             WHERE project_id = p_project_id
3551                                             AND object_id =  cur_reverse_tree_rec.proj_element_id
3552                                             AND object_Type = l_rollup_table1(i).object_Type
3553                                             AND structure_type = p_structure_type
3554                                             AND date_computed <= p_as_of_date);
3555                             EXCEPTION WHEN OTHERS THEN
3556                                 l_percent_complete_id := null;
3557                             END;
3558                             l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
3559                                             (p_project_id   => p_project_id,
3560                                             p_object_id     => cur_reverse_tree_rec.proj_element_id,
3561                                             p_object_type   => l_rollup_table1(i).object_type,
3562                                             p_structure_type =>     p_structure_type,
3563                                             p_structure_version_id => l_structure_version_id,
3564                                             p_proj_element_id => cur_reverse_tree_rec.proj_element_id
3565                                      );
3566 
3567                             IF l_max_rollup_as_of_date2 > p_as_of_date  THEN
3568                                 l_current_flag  := 'N';
3569                             ELSE
3570                                 l_current_flag  := 'Y';
3571                             END IF;
3572                             l_tsk_current_flag_tab(task_index)      := l_current_flag;
3573                             l_tsk_prog_pa_period_name_tab(task_index) :=    l_prog_pa_period_name;
3574                             l_tsk_prog_gl_period_name_tab(task_index) :=    l_prog_gl_period_name;
3575 
3576 
3577                             IF l_max_rollup_as_of_date2 < p_as_of_date THEN
3578                                 UPDATE pa_progress_rollup
3579                                    SET current_flag = 'N'
3580                                  WHERE project_id = p_project_id
3581                                    AND object_id = cur_reverse_tree_rec.proj_element_id
3582                                    AND object_type = l_rollup_table1(i).object_type
3583                                    AND current_flag <> 'W'
3584                                    AND structure_type = p_structure_type
3585                                    AND ((l_published_structure = 'Y'   AND structure_version_id is null) OR (l_published_structure =        'N' AND structure_version_id =  p_structure_version_id))
3586                                    ;
3587                             END IF;
3588                         END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3589                     END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL THEN
3590                 END IF;--       p_rollup_entire_wbs='N' OR l_child_rollup_rec_exists =  'Y'
3591                 exit;
3592             END IF; -- cur_reverse_tree_rec.object_id_to1 = p_rollup_table(i).object_id
3593         END LOOP;
3594         END LOOP;
3595 
3596         FORALL i in 1..l_tsk_object_version_id_tab.count
3597                 UPDATE pa_progress_rollup
3598                 SET
3599                 object_version_id = l_tsk_object_version_id_tab(i)
3600                 , last_update_date = sysdate
3601                 , last_updated_by = l_user_id
3602                 , last_update_login = l_login_id
3603                 , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3604                 , completed_percentage = decode(p_progress_mode,'TRANSFER_WP_PC', '', completed_percentage) /* 7588620 */
3605         -- Bug 4284353 : Used decode above
3606                 , estimated_start_date = l_tsk_est_start_date_tab(i)
3607                 , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3608                 , actual_start_date = l_tsk_actual_start_date_tab(i)
3609                 , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3610                 , record_version_number = record_version_number +1
3611                 , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3612                 , base_progress_status_code = l_tsk_base_prog_stat_code_tab(i)
3613                 , eff_rollup_prog_stat_code = l_tsk_eff_roll_prg_st_code_tab(i)
3614                 , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3615                 , ppl_act_effort_to_date = l_tsk_ppl_act_eff_tab(i)
3616                 , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3617                 , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3618                 , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3619                 , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3620                 , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3621                 , ppl_etc_cost_pc = l_tsk_ppl_etc_cost_pc_tab(i)
3622                 , ppl_etc_cost_fc = l_tsk_ppl_etc_cost_fc_tab(i)
3623                 , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3624                 , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3625                 , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3626                 , eqpmt_act_cost_to_date_pc = l_tsk_eqpmt_act_cost_pc_tab(i)
3627                 , eqpmt_act_cost_to_date_fc = l_tsk_eqpmt_act_cost_fc_tab(i)
3628                 , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3629                 , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3630                 , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3631                 , eqpmt_etc_cost_pc = l_tsk_eqpmt_etc_cost_pc_tab(i)
3632                 , eqpmt_etc_cost_fc = l_tsk_eqpmt_etc_cost_fc_tab(i)
3633                 , eqpmt_etc_rawcost_pc = l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3634                 , eqpmt_etc_rawcost_fc = l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3635                 , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3636                 , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3637                 , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3638                 , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3639                 , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3640                 , oth_etc_cost_fc = l_tsk_oth_etc_cost_fc_tab(i)
3641                 , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3642                 , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3643                 , earned_value = l_tsk_earned_value_tab(i)
3644                 , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3645         , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3646                 WHERE l_tsk_update_required(i) = 'Y'
3647                 AND progress_rollup_id = l_tsk_progress_rollup_id_tab(i)
3648                 ;
3649 
3650 
3651         IF p_structure_type = 'WORKPLAN' AND l_structure_version_id IS NULL AND p_progress_mode <> 'BACKDATED'  THEN
3652                 FORALL i in 1..l_tsk_object_version_id_tab.count
3653                         UPDATE pa_progress_rollup
3654                         SET
3655                         object_version_id =     l_tsk_object_version_id_tab(i)
3656                         , last_update_date = sysdate
3657                         , last_updated_by =     l_user_id
3658                         , last_update_login     = l_login_id
3659                         , eff_rollup_percent_comp = l_tsk_roll_comp_percent_tab(i)
3660                         , estimated_start_date =        l_tsk_est_start_date_tab(i)
3661                         , estimated_finish_date = l_tsk_est_finish_date_tab(i)
3662                         , actual_start_date     = l_tsk_actual_start_date_tab(i)
3663                         , actual_finish_date = l_tsk_actual_finish_date_tab(i)
3664                         , record_version_number = record_version_number +1
3665                         , base_percent_comp_deriv_code = l_tsk_deriv_method_tab(i)
3666                         , base_progress_status_code =   l_tsk_base_prog_stat_code_tab(i)
3667                         , eff_rollup_prog_stat_code =   l_tsk_eff_roll_prg_st_code_tab(i)
3668                         , percent_complete_id = l_tsk_percent_complete_id_tab(i)
3669                         , ppl_act_effort_to_date        = l_tsk_ppl_act_eff_tab(i)
3670                         , ppl_act_cost_to_date_pc = l_tsk_ppl_act_cost_pc_tab(i)
3671                         , ppl_act_cost_to_date_fc = l_tsk_ppl_act_cost_fc_tab(i)
3672                         , ppl_act_rawcost_to_date_pc = l_tsk_ppl_act_rawcost_pc_tab(i)
3673                         , ppl_act_rawcost_to_date_fc = l_tsk_ppl_act_rawcost_fc_tab(i)
3674                         , estimated_remaining_effort = l_tsk_est_rem_effort_tab(i)
3675                         , ppl_etc_cost_pc =     l_tsk_ppl_etc_cost_pc_tab(i)
3676                         , ppl_etc_cost_fc =     l_tsk_ppl_etc_cost_fc_tab(i)
3677                         , ppl_etc_rawcost_pc = l_tsk_ppl_etc_rawcost_pc_tab(i)
3678                         , ppl_etc_rawcost_fc = l_tsk_ppl_etc_rawcost_fc_tab(i)
3679                         , eqpmt_act_effort_to_date = l_tsk_eqpmt_act_effort_tab(i)
3680                         , eqpmt_act_cost_to_date_pc =   l_tsk_eqpmt_act_cost_pc_tab(i)
3681                         , eqpmt_act_cost_to_date_fc =   l_tsk_eqpmt_act_cost_fc_tab(i)
3682                         , eqpmt_act_rawcost_to_date_pc = l_tsk_eqpmt_act_rawcost_pc_tab(i)
3683                         , eqpmt_act_rawcost_to_date_fc = l_tsk_eqpmt_act_rawcost_fc_tab(i)
3684                         , eqpmt_etc_effort = l_tsk_eqpmt_etc_effort_tab(i)
3685                         , eqpmt_etc_cost_pc     = l_tsk_eqpmt_etc_cost_pc_tab(i)
3686                         , eqpmt_etc_cost_fc     = l_tsk_eqpmt_etc_cost_fc_tab(i)
3687                         , eqpmt_etc_rawcost_pc =        l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3688                         , eqpmt_etc_rawcost_fc =        l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3689                         , oth_act_cost_to_date_pc = l_tsk_oth_act_cost_pc_tab(i)
3690                         , oth_act_cost_to_date_fc = l_tsk_oth_act_cost_fc_tab(i)
3691                         , oth_act_rawcost_to_date_pc = l_tsk_oth_act_rawcost_pc_tab(i)
3692                         , oth_act_rawcost_to_date_fc = l_tsk_oth_act_rawcost_fc_tab(i)
3693                         , oth_etc_cost_pc= l_tsk_oth_etc_cost_pc_tab(i)
3694                         , oth_etc_cost_fc =     l_tsk_oth_etc_cost_fc_tab(i)
3695                         , oth_etc_rawcost_pc = l_tsk_oth_etc_rawcost_pc_tab(i)
3696                         , oth_etc_rawcost_fc = l_tsk_oth_etc_rawcost_fc_tab(i)
3697                         , earned_value  = l_tsk_earned_value_tab(i)
3698                         , task_wt_basis_code = l_tsk_task_wt_basis_code_tab(i)
3699                 , base_percent_complete = l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3700                         WHERE l_tsk_update_required(i) = 'Y'
3701                         AND project_id  = p_project_id
3702                         AND object_id = l_tsk_object_id_tab(i)
3703                         AND proj_element_id     = l_tsk_proj_element_id_tab(i)
3704                         AND object_type = l_tsk_object_type_tab(i)
3705                         AND as_of_date  >= p_as_of_date
3706                         AND current_flag = 'W'
3707                         AND structure_type = 'WORKPLAN'
3708                         AND structure_version_id is null
3709                         ;
3710         END IF;
3711 
3712     -- Bug 4242787 : This is effective solution for the bug 4097710
3713     -- We should not create new records if the rollup is called from Future Rollup API
3714     -- It should just update.
3715     IF p_calling_mode <> 'FUTURE_ROLLUP' OR p_calling_mode IS NULL THEN
3716         FORALL i in 1..l_tsk_object_version_id_tab.count
3717                 INSERT INTO pa_progress_rollup
3718                 (
3719                 progress_rollup_id
3720                 ,project_id
3721                 ,object_id
3722                 ,object_type
3723                 ,as_of_date
3724                 ,object_version_id
3725                 ,last_update_date
3726                 ,last_updated_by
3727                 ,creation_date
3728                 ,created_by
3729                 ,progress_status_code
3730                 ,last_update_login
3731                 ,eff_rollup_percent_comp
3732                 ,completed_percentage
3733                 ,estimated_start_date
3734                 ,estimated_finish_date
3735                 ,actual_start_date
3736                 ,actual_finish_date
3737                 ,record_version_number
3738                 ,base_percent_comp_deriv_code
3739                 ,base_progress_status_code
3740                 ,eff_rollup_prog_stat_code
3741                 ,percent_complete_id
3742                 ,structure_type
3743                 ,proj_element_id
3744                 ,structure_version_id
3745                 ,ppl_act_effort_to_date
3746                 ,ppl_act_cost_to_date_pc
3747                 ,ppl_act_cost_to_date_fc
3748                 ,ppl_act_rawcost_to_date_pc
3749                 ,ppl_act_rawcost_to_date_fc
3750                 ,estimated_remaining_effort
3751                 ,ppl_etc_cost_pc
3752                 ,ppl_etc_cost_fc
3753                 ,ppl_etc_rawcost_pc
3754                 ,ppl_etc_rawcost_fc
3755                 ,eqpmt_act_effort_to_date
3756                 ,eqpmt_act_cost_to_date_pc
3757                 ,eqpmt_act_cost_to_date_fc
3758                 ,eqpmt_act_rawcost_to_date_pc
3759                 ,eqpmt_act_rawcost_to_date_fc
3760                 ,eqpmt_etc_effort
3761                 ,eqpmt_etc_cost_pc
3762                 ,eqpmt_etc_cost_fc
3763                 ,eqpmt_etc_rawcost_pc
3764                 ,eqpmt_etc_rawcost_fc
3765                 ,oth_quantity_to_date
3766                 ,oth_act_cost_to_date_pc
3767                 ,oth_act_cost_to_date_fc
3768                 ,oth_act_rawcost_to_date_pc
3769                 ,oth_act_rawcost_to_date_fc
3770                 ,oth_etc_quantity
3771                 ,oth_etc_cost_pc
3772                 ,oth_etc_cost_fc
3773                 ,oth_etc_rawcost_pc
3774                 ,oth_etc_rawcost_fc
3775                 ,earned_value
3776                 ,task_wt_basis_code
3777                 ,current_flag
3778                 ,projfunc_cost_rate_type
3779                 ,projfunc_cost_exchange_rate
3780                 ,projfunc_cost_rate_date
3781                 ,proj_cost_rate_type
3782                 ,proj_cost_exchange_rate
3783                 ,proj_cost_rate_date
3784                 ,txn_currency_code
3785                 ,prog_pa_period_name
3786                 ,prog_gl_period_name
3787         ,base_percent_complete
3788                 )
3789                 SELECT
3790                 PA_PROGRESS_ROLLUP_S.nextval
3791                 , p_project_id
3792                 , l_tsk_object_id_tab(i)
3793                 , l_tsk_object_type_tab(i)
3794                 , p_as_of_date
3795                 , l_tsk_object_version_id_tab(i)
3796                 , sysdate
3797                 , l_user_id
3798                 , sysdate
3799                 , l_user_id
3800                 , l_tsk_progress_stat_code_tab(i)
3801                 , l_login_id
3802                 , l_tsk_roll_comp_percent_tab(i)
3803                 , l_tsk_over_percent_comp_tab(i) /* 7588620 */
3804         -- Bug 4284353 : Used decode above
3805                 , l_tsk_est_start_date_tab(i)
3806                 , l_tsk_est_finish_date_tab(i)
3807                 , l_tsk_actual_start_date_tab(i)
3808                 , l_tsk_actual_finish_date_tab(i)
3809                 , 1
3810                 , l_tsk_deriv_method_tab(i)
3811                 , l_tsk_base_prog_stat_code_tab(i)
3812                 , l_tsk_eff_roll_prg_st_code_tab(i)
3813                 , l_tsk_percent_complete_id_tab(i)
3814                 , p_structure_type
3815                 , l_tsk_proj_element_id_tab(i)
3816                 , l_structure_version_id
3817                 , l_tsk_ppl_act_eff_tab(i)
3818                 , l_tsk_ppl_act_cost_pc_tab(i)
3819                 , l_tsk_ppl_act_cost_fc_tab(i)
3820                 , l_tsk_ppl_act_rawcost_pc_tab(i)
3821                 , l_tsk_ppl_act_rawcost_fc_tab(i)
3822                 , l_tsk_est_rem_effort_tab(i)
3823                 , l_tsk_ppl_etc_cost_pc_tab(i)
3824                 , l_tsk_ppl_etc_cost_fc_tab(i)
3825                 , l_tsk_ppl_etc_rawcost_pc_tab(i)
3826                 , l_tsk_ppl_etc_rawcost_fc_tab(i)
3827                 , l_tsk_eqpmt_act_effort_tab(i)
3828                 , l_tsk_eqpmt_act_cost_pc_tab(i)
3829                 , l_tsk_eqpmt_act_cost_fc_tab(i)
3830                 , l_tsk_eqpmt_act_rawcost_pc_tab(i)
3831                 , l_tsk_eqpmt_act_rawcost_fc_tab(i)
3832                 , l_tsk_eqpmt_etc_effort_tab(i)
3833                 , l_tsk_eqpmt_etc_cost_pc_tab(i)
3834                 , l_tsk_eqpmt_etc_cost_fc_tab(i)
3835                 , l_tsk_eqpmt_etc_rawcost_pc_tab(i)
3836                 , l_tsk_eqpmt_etc_rawcost_fc_tab(i)
3837                 , l_tsk_oth_quantity_tab(i)
3838                 , l_tsk_oth_act_cost_pc_tab(i)
3839                 , l_tsk_oth_act_cost_fc_tab(i)
3840                 , l_tsk_oth_act_rawcost_pc_tab(i)
3841                 , l_tsk_oth_act_rawcost_fc_tab(i)
3842                 , l_tsk_oth_etc_quantity_tab(i)
3843                 , l_tsk_oth_etc_cost_pc_tab(i)
3844                 , l_tsk_oth_etc_cost_fc_tab(i)
3845                 , l_tsk_oth_etc_rawcost_pc_tab(i)
3846                 , l_tsk_oth_etc_rawcost_fc_tab(i)
3847                 , l_tsk_earned_value_tab(i)
3848                 , l_tsk_task_wt_basis_code_tab(i)
3849                 , l_tsk_current_flag_tab(i)
3850                 , l_tsk_pf_cost_rate_type_tab(i)
3851                 , l_tsk_pf_cost_exc_rate_tab(i)
3852                 , l_tsk_pf_cost_rate_date_tab(i)
3853                 , l_tsk_p_cost_rate_type_tab(i)
3854                 , l_tsk_p_cost_exc_rate_tab(i)
3855                 , l_tsk_p_cost_rate_date_tab(i)
3856                 , l_tsk_txn_currency_code_tab(i)
3857                 , l_tsk_prog_pa_period_name_tab(i)
3858                 , l_tsk_prog_gl_period_name_tab(i)
3859         , l_tsk_base_percent_comp_tab(i) -- 4392189 : Program Reporting Changes - Phase 2
3860                 FROM
3861                 DUAL
3862                 WHERE l_tsk_create_required(i) = 'Y'
3863                 ;
3864     END IF; -- IF p_calling_mode <> 'FUTURE_ROLLUP'  OR p_calling_mode IS NULL THEN
3865 
3866     -- Bug 4242787
3867     -- Do not delete here. Delete it at last. This will be used in Future Rollup Too.
3868         -- DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3869 
3870         ----    **************  Updation Ends   ******************      ----------
3871 
3872     -- Bug 4242787
3873     -- In Mass Rollup Case, Future Rollup is also done here. The calling API's need not call
3874     -- Future rollup seprately if they are calling Mass Rollup
3875     IF p_rollup_entire_wbs = 'Y' AND l_structure_version_id IS NULL THEN
3876         IF g1_debug_mode  = 'Y' THEN
3877             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Future Rollup Starts', x_Log_Level=> 3);
3878         END IF;
3879 
3880         FOR cur_tree_rollup_rec IN cur_tree_rollup_dates LOOP
3881             IF g1_debug_mode  = 'Y' THEN
3882                 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);
3883                 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);
3884                 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);
3885                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'Calling Rollup for Future Date', x_Log_Level=> 3);
3886             END IF;
3887             -- Bug 4573257 Begin
3888             -- We need to call PJI tmp table population
3889             -- otherwise we will get incorrect actual and etc for future dates records
3890             IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
3891 
3892                 IF (l_base_struct_ver_id = -1) THEN
3893                     l_base_struct_ver_id := p_structure_version_id;
3894                 END IF;
3895 
3896                 PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
3897                     p_calling_module    => p_calling_module
3898                     ,p_project_id           => p_project_id
3899                     ,p_structure_version_id => p_structure_version_id
3900                     ,p_baselined_str_ver_id => l_base_struct_ver_id
3901                     ,p_program_rollup_flag  => 'Y'
3902                     ,p_calling_context  => 'ROLLUP'
3903                     ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
3904                     ,x_return_status        => x_return_status
3905                     ,x_msg_count            => x_msg_count
3906                     ,x_msg_data             => x_msg_data
3907                     );
3908                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3909                     RAISE  FND_API.G_EXC_ERROR;
3910                 END IF;
3911                 l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
3912             END IF;
3913             -- Bug 4573257 End
3914 
3915             PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
3916                  p_init_msg_list                => 'F'
3917                 ,p_calling_module       => p_calling_module
3918                 ,p_calling_mode         => 'FUTURE_ROLLUP'
3919                 ,p_commit                       => 'F'
3920                 ,p_validate_only                => 'F'
3921                 ,p_project_id                   => p_project_id
3922                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
3923                 ,P_OBJECT_ID                    => cur_tree_rollup_rec.child_task_id
3924                 ,p_object_version_id            => cur_tree_rollup_rec.child_task_ver_id
3925                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
3926                 ,p_lowest_level_task            => p_lowest_level_task
3927                 ,p_process_whole_tree           => 'N'
3928                 ,p_structure_type               => p_structure_type
3929                 ,p_structure_version_id         => p_structure_version_id
3930                 ,p_rollup_entire_wbs            => 'N'
3931                 ,p_fin_rollup_method            => p_fin_rollup_method
3932                 ,p_wp_rollup_method             => p_wp_rollup_method
3933                 ,p_task_version_id              => cur_tree_rollup_rec.child_task_ver_id
3934                 ,x_return_status                => x_return_status
3935                 ,x_msg_count                    => x_msg_count
3936                 ,x_msg_data                     => x_msg_data);
3937 
3938             IF g1_debug_mode  = 'Y' THEN
3939                 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);
3940             END IF;
3941 
3942             IF x_return_status <> 'S' THEN
3943                 raise FND_API.G_EXC_ERROR;
3944             END IF;
3945         END LOOP;
3946     END IF; -- p_rollup_entire_wbs = 'Y'
3947 
3948         DELETE from pa_proj_rollup_temp where process_number= l_process_number_temp;
3949 
3950 
3951 
3952         x_return_status := FND_API.G_RET_STS_SUCCESS;
3953 
3954         IF (p_commit =  FND_API.G_TRUE) THEN
3955                 COMMIT;
3956         END IF;
3957 
3958 
3959         IF g1_debug_mode  =     'Y'     THEN
3960                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT', x_Msg => 'PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT END', x_Log_Level=> 3);
3961         END IF;
3962 
3963 EXCEPTION
3964         WHEN    FND_API.G_EXC_ERROR     THEN
3965                 --BUG 4355204
3966         --IF p_commit = FND_API.G_TRUE THEN
3967                         rollback to ROLLUP_PROGRESS_PVT2;
3968                 --END IF;
3969                 x_return_status := FND_API.G_RET_STS_ERROR;
3970         WHEN    FND_API.G_EXC_UNEXPECTED_ERROR THEN
3971                 --BUG 4355204
3972         --IF p_commit = FND_API.G_TRUE THEN
3973                         rollback to ROLLUP_PROGRESS_PVT2;
3974                 --END IF;
3975                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3976                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
3977                                  p_procedure_name => 'ROLLUP_PROGRESS_PVT',
3978                                  p_error_text      => SUBSTRB(SQLERRM,1,120));
3979         WHEN    OTHERS THEN
3980                 --BUG 4355204
3981         --IF p_commit = FND_API.G_TRUE THEN
3982                         rollback to ROLLUP_PROGRESS_PVT2;
3983                 --END IF;
3984                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3985                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
3986                                  p_procedure_name => 'ROLLUP_PROGRESS_PVT',
3987                                  p_error_text      => SUBSTRB(SQLERRM,1,120));
3988                 raise;
3989 END ROLLUP_PROGRESS_PVT;
3990 
3991 -- Start of comments
3992 --      API name        : UPDATE_ROLLUP_PROGRESS_PVT
3993 --      Type            : Private
3994 --      Pre-reqs        : ROLLUP_PROGRESS_PVT shd have been called.
3995 --      Purpose         : Updates the Rolled up data
3996 --      Parameters Desc :
3997 --              P_OBJECT_TYPE                   Possible values PA_ASSIGNMENTS, PA_DELIVERABLES, PA_TASKS
3998 --              P_OBJECT_ID                     For assignments, pass resource_assignment_id, otherwise
3999 --                                              proj_element_id of the deliverable and task
4000 --              p_object_version_id             For Assignments, pass task_version_id, otherwise
4001 --                                              element_version_id of the deliverable and task
4002 --              p_task_version_id               For tasks, assignments, deliverables pass the task version id
4003 --                                              , for struture pass null
4004 --              p_lowest_level_task             Does not seem to be required
4005 --              p_structure_version_id          Structure version id of the publsihed or working structure version
4006 --              p_structure_type                Possible values WORKPLAN, FINANCIAL
4007 --              p_fin_rollup_method             Possible values are COST, EFFORT
4008 --              p_wp_rollup_method              Possible values are COST, EFFORT, MANUAL, DURATION
4009 --              p_published_structure           To indicate if the passed structure version is published
4010 --      History         : 17-MAR-04  amksingh   Rewritten For FPM Development Tracking Bug 3420093
4011 
4012 -- End of comments
4013 
4014 PROCEDURE UPDATE_ROLLUP_PROGRESS_PVT(
4015   p_api_version                         IN      NUMBER                  :=1.0
4016  ,p_init_msg_list                       IN      VARCHAR2                :=FND_API.G_TRUE
4017  ,p_commit                              IN      VARCHAR2                :=FND_API.G_FALSE
4018  ,p_validate_only                       IN      VARCHAR2                :=FND_API.G_TRUE
4019  ,p_validation_level                    IN      NUMBER                  :=FND_API.G_VALID_LEVEL_FULL
4020  ,p_calling_module                      IN      VARCHAR2                :='SELF_SERVICE'
4021  ,p_calling_mode            IN      VARCHAR2                :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4022  ,p_debug_mode                          IN      VARCHAR2                :='N'
4023  ,p_max_msg_count                       IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4024  ,p_project_id                          IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4025  ,p_object_version_id                   IN      NUMBER                  := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4026  ,p_as_of_date                          IN      DATE                    := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4027  ,p_rollup_table                        IN      PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE
4028  ,p_lowest_level_task                   IN      VARCHAR2                := 'N'
4029  ,p_task_version_id                     IN      NUMBER
4030  ,p_structure_version_id                IN      NUMBER
4031  ,p_structure_type                      IN      VARCHAR2                := 'WORKPLAN'
4032  ,p_fin_rollup_method                   IN      VARCHAR2                := 'COST'
4033  ,p_wp_rollup_method                    IN      VARCHAR2                := 'COST'
4034  ,p_published_structure                 IN      VARCHAR2
4035  ,p_rollup_entire_wbs                   IN      VARCHAR2                := 'N' -- FPM Dev CR 7
4036  ,p_working_wp_prog_flag                 IN      VARCHAR2        := 'N'  --bug 3829341
4037  ,p_upd_new_elem_ver_id_flag             IN      VARCHAR2        := 'Y'  -- rtarway, for BUG 3951024
4038  ,p_progress_mode           IN  VARCHAR2        := 'FUTURE'  -- 4091457
4039  ,x_return_status                       OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4040  ,x_msg_count                           OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4041  ,x_msg_data                            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4042 ) IS
4043    l_api_name                      CONSTANT VARCHAR(30) := 'UPDATE_ROLLUP_PROGRESS_PVT' ;
4044    l_api_version                   CONSTANT NUMBER      := 1.0                          ;
4045 
4046    l_return_status                 VARCHAR2(1)                                          ;
4047    l_msg_count                     NUMBER                                               ;
4048    l_msg_data                      VARCHAR2(250)                                        ;
4049    l_data                          VARCHAR2(250)                                        ;
4050    l_msg_index_out                 NUMBER                                               ;
4051    l_error_msg_code                VARCHAR2(250)                                        ;
4052    l_user_id                       NUMBER                       := FND_GLOBAL.USER_ID   ;
4053    l_login_id                      NUMBER                       := FND_GLOBAL.LOGIN_ID  ;
4054 
4055 BEGIN
4056 -- Bug 4242787 : Commented update_rollup_progress_pvt, IT is merged into rollup_progress_pvt
4057 x_return_status := FND_API.G_RET_STS_SUCCESS;
4058         IF (p_commit = FND_API.G_TRUE) THEN
4059                 COMMIT;
4060         END IF;
4061 EXCEPTION
4062     WHEN FND_API.G_EXC_ERROR THEN
4063                 IF g1_debug_mode  = 'Y' THEN
4064                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_ERROR', x_Log_Level=> 3);
4065                 END IF;
4066 
4067                 IF p_commit = FND_API.G_TRUE THEN
4068                 rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4069                 END IF;
4070              x_return_status := FND_API.G_RET_STS_ERROR;
4071     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4072 
4073                 IF g1_debug_mode  = 'Y' THEN
4074                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'FND_API.G_EXC_UNEXPECTED_ERROR', x_Log_Level=> 3);
4075                 END IF;
4076 
4077                 IF p_commit = FND_API.G_TRUE THEN
4078                         rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4079                 END IF;
4080                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4081                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4082                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4083                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4084     WHEN OTHERS THEN
4085                 IF g1_debug_mode  = 'Y' THEN
4086                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'OTHERS = '||sqlerrm, x_Log_Level=> 3);
4087                 END IF;
4088 
4089                 IF p_commit = FND_API.G_TRUE THEN
4090                         rollback to UPDATE_ROLLUP_PROGRESS_PVT2;
4091                 END IF;
4092                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4093                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4094                               p_procedure_name => 'UPDATE_ROLLUP_PROGRESS_PVT',
4095                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4096                 raise;
4097 END UPDATE_ROLLUP_PROGRESS_PVT;
4098 
4099 PROCEDURE ROLLUP_FUTURE_PROGRESS_PVT(
4100  p_project_id              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4101  ,P_OBJECT_TYPE            IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4102  ,P_OBJECT_ID              IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4103  ,p_object_version_id      IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4104  ,p_as_of_date             IN   DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4105  ,p_lowest_level_task      IN   VARCHAR2        := 'N'
4106  ,p_calling_module         IN   VARCHAR2        := 'SELF_SERVICE'
4107  ,p_calling_mode       IN VARCHAR2          :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR -- Bug 4097710
4108  ,p_structure_type         IN   VARCHAR2        := 'WORKPLAN'
4109  ,p_structure_version_id   IN   NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4110  ,p_fin_rollup_method      IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4111  ,p_wp_rollup_method       IN   VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4112  ,p_rollup_entire_wbs      IN   VARCHAR2        := 'N' -- Bug 3606627
4113  ,x_return_status          OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4114  ,x_msg_count              OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
4115  ,x_msg_data               OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4116 )
4117  IS
4118 
4119 -- 4537865
4120      l_msg_count                  NUMBER ;
4121      l_data                       VARCHAR2(2000);
4122      l_msg_data                   VARCHAR2(2000);
4123      l_msg_index_out              NUMBER;
4124 
4125    CURSOR cur_reverse_tree
4126    IS
4127    SELECT proj_element_id, object_id_from1, object_id_to1, object_type
4128        FROM
4129       ( select object_id_from1, object_id_to1
4130           from pa_object_relationships
4131           where p_rollup_entire_wbs='N'
4132           AND relationship_type = 'S' -- FPM
4133          start with object_id_to1 = p_object_version_id
4134          --and relationship_type = 'S'  -- Bug 3603636
4135          and relationship_type = 'S' -- Bug 4122809 : Added this
4136          connect by prior object_id_from1 = object_id_to1
4137      and relationship_type = 'S'  -- Bug 3958686
4138      ) pobj, pa_proj_element_versions ppev
4139        WHERE element_version_id = object_id_to1
4140        AND p_rollup_entire_wbs='N'
4141    UNION -- AMG Changes
4142      SELECT ever.proj_element_id, obj.object_id_from1 object_id_from1, ever.element_version_id object_id_to1, ever.object_type object_type
4143      FROM pa_proj_element_versions ever
4144      , pa_object_relationships obj
4145      WHERE ever.project_id = p_project_id
4146      and ever.parent_structure_version_id = p_structure_version_id
4147      -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
4148 --     and PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(ever.element_version_id) = 'N'
4149      and PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(ever.element_version_id) = 'Y'
4150      and ever.object_type = 'PA_TASKS'
4151      AND obj.object_id_to1 = ever.element_version_id
4152      AND obj.relationship_type = 'S'
4153      and p_rollup_entire_wbs='Y';
4154 
4155 
4156     l_object_id    NUMBER;
4157     -- Bug 3764224 : This cursor deals with tasks only, so no need to add join of proj_element_id
4158     CURSOR cur_tree_rollup_dates
4159     IS
4160     select as_of_date, published_flag, ppc.current_flag
4161       from pa_progress_rollup ppr, pa_percent_completes ppc
4162      where ppr.project_id = p_project_id
4163        and ppr.object_id = l_object_id
4164        and ppr.as_of_Date > p_as_of_date
4165        and ppr.project_id = ppc.project_id(+)
4166        and ppr.object_id = ppc.object_id(+)
4167        and ppr.as_of_date = ppc.date_computed(+)
4168        and ppr.structure_type = p_structure_type
4169        and ppr.structure_version_id is null -- For Future Rollup no need to check for structure version id
4170      order by as_of_date;
4171 
4172      cur_tree_rollup_rec  cur_tree_rollup_dates%rowtype;
4173      l_structure_version_id            NUMBER;
4174      g1_debug_mode                     VARCHAR2(1);
4175 
4176      l_base_struct_ver_id       NUMBER; -- Bug 4573257
4177      l_last_as_of_date          DATE; -- Bug 4573257
4178 BEGIN
4179 
4180         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4181 
4182         IF g1_debug_mode  = 'Y' THEN
4183                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT');
4184         END IF;
4185 
4186         IF g1_debug_mode  = 'Y' THEN
4187                 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);
4188                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4189                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_TYPE='||P_OBJECT_TYPE, x_Log_Level=> 3);
4190                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'P_OBJECT_ID='||P_OBJECT_ID, x_Log_Level=> 3);
4191                 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);
4192                 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);
4193                 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);
4194                 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);
4195                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4196                 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);
4197                 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);
4198         END IF;
4199 
4200     For cur_tree_rec in cur_reverse_tree loop
4201 
4202            select proj_element_id into l_object_id
4203              from pa_proj_element_versions
4204             where element_version_id = cur_tree_rec.object_id_from1;
4205 
4206         IF g1_debug_mode  = 'Y' THEN
4207                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'l_object_id'||l_object_id, x_Log_Level=> 3);
4208         END IF;
4209 
4210 
4211           open cur_tree_rollup_dates;
4212           loop
4213              fetch cur_tree_rollup_dates into cur_tree_rollup_rec;
4214              if cur_tree_rollup_dates%notfound then
4215                 exit;
4216              end if;
4217              ----------------dbms_output.put_line(cur_tree_rec.proj_element_id||'  '||cur_tree_rollup_rec.as_of_date);
4218              if nvl(cur_tree_rollup_rec.current_flag,'X') = 'N' and nvl(cur_tree_rollup_rec.published_flag,'X') = 'Y' then
4219                 null;
4220              else
4221 
4222             IF g1_debug_mode  = 'Y' THEN
4223                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'Calling ROLLUP_PROGRESS_PVT', x_Log_Level=> 3);
4224                 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);
4225             END IF;
4226 
4227         -- Bug 4573257 Begin
4228         -- We need to call PJI tmp table population
4229         -- otherwise we will get incorrect actual and etc for future dates records
4230         IF l_last_as_of_date IS NULL OR cur_tree_rollup_rec.as_of_date <> l_last_as_of_date THEN
4231                 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(p_project_id);
4232             IF (l_base_struct_ver_id = -1) THEN
4233                 l_base_struct_ver_id := p_structure_version_id;
4234             END IF;
4235 
4236             PA_PROGRESS_PUB.POPULATE_PJI_TAB_FOR_PLAN(
4237                 p_calling_module    => p_calling_module
4238                 ,p_project_id           => p_project_id
4239                 ,p_structure_version_id => p_structure_version_id
4240                 ,p_baselined_str_ver_id => l_base_struct_ver_id
4241                 ,p_program_rollup_flag  => 'Y'
4242                 ,p_calling_context  => 'ROLLUP'
4243                 ,p_as_of_date       => cur_tree_rollup_rec.as_of_date
4244                 ,x_return_status        => x_return_status
4245                 ,x_msg_count            => x_msg_count
4246                 ,x_msg_data             => x_msg_data
4247                 );
4248             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4249                 RAISE  FND_API.G_EXC_ERROR;
4250             END IF;
4251             l_last_as_of_date := cur_tree_rollup_rec.as_of_date;
4252         END IF;
4253         -- Bug 4573257 End
4254 
4255         -- Bug 4097710 : Changed the API from PUB to PVT.
4256         -- It is not good idea to call PUB APi from PVT
4257 
4258                 PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
4259                  p_init_msg_list                => 'F'
4260             --Added by rtarway for BUG 3696263
4261                 ,p_calling_module       => p_calling_module
4262         ,p_calling_mode         => 'FUTURE_ROLLUP' -- Bug 4097710, 4242787 Changed back to FUTURE_ROLLUP
4263                 ,p_commit                       => 'F'
4264                 ,p_validate_only                => 'F'
4265                 ,p_project_id                   => p_project_id
4266                 ,P_OBJECT_TYPE                  => 'PA_TASKS'
4267                 ,P_OBJECT_ID                    => cur_tree_rec.proj_element_id
4268                 ,p_object_version_id            => cur_tree_rec.object_id_to1
4269                 ,p_as_of_date                   => cur_tree_rollup_rec.as_of_date
4270                 ,p_lowest_level_task            => p_lowest_level_task
4271                 ,p_process_whole_tree           => 'N'
4272                 ,p_structure_type               => p_structure_type
4273                 ,p_structure_version_id         => p_structure_version_id
4274                 ,p_rollup_entire_wbs            => 'N'
4275                 ,p_fin_rollup_method            => p_fin_rollup_method
4276                 ,p_wp_rollup_method             => p_wp_rollup_method
4277                 ,p_task_version_id              => cur_tree_rec.object_id_to1
4278                 ,x_return_status                => x_return_status
4279                 ,x_msg_count                    => x_msg_count
4280                 ,x_msg_data                     => x_msg_data);
4281 
4282         -- Start : 4537865
4283         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4284                  RAISE FND_API.G_EXC_ERROR;
4285             END IF;
4286         -- End : 4537865
4287              end if;
4288           end loop;
4289           close cur_tree_rollup_dates;
4290     END loop;
4291     IF g1_debug_mode  = 'Y' THEN
4292          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT', x_Msg => 'End ', x_Log_Level=> 3);
4293     END IF;
4294 EXCEPTION
4295 -- 4537865 : Start
4296     when FND_API.G_EXC_ERROR then
4297       x_return_status := FND_API.G_RET_STS_ERROR;
4298 
4299       l_msg_count := Fnd_Msg_Pub.count_msg;
4300 
4301       IF l_msg_count = 1 AND x_msg_data IS NULL
4302       THEN
4303           Pa_Interface_Utils_Pub.get_messages
4304               ( p_encoded        => Fnd_Api.G_FALSE
4305               , p_msg_index      => 1
4306               , p_msg_count      => l_msg_count
4307               , p_msg_data       => l_msg_data
4308               , p_data           => l_data
4309               , p_msg_index_out  => l_msg_index_out);
4310           x_msg_data := l_data;
4311       x_msg_count := l_msg_count;
4312       END IF;
4313 
4314 -- 4537865 : End
4315     WHEN OTHERS THEN
4316                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4317         x_msg_count := 1 ; -- 4537865
4318         x_msg_data := SUBSTRB(SQLERRM,1,120); -- 4537865
4319                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
4320                               p_procedure_name => 'ROLLUP_FUTURE_PROGRESS_PVT',
4321                               p_error_text     => SUBSTRB(SQLERRM,1,120));
4322                 raise;
4323 END ROLLUP_FUTURE_PROGRESS_PVT;
4324 
4325 PROCEDURE program_rollup_pvt(
4326   p_api_version                 IN      NUMBER          :=1.0
4327  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
4328  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
4329  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
4330  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
4331  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
4332  ,p_debug_mode                  IN      VARCHAR2        :='N'
4333  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4334  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4335  ,p_as_of_date                  IN      DATE            := PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
4336  ,p_structure_type              IN      VARCHAR2        := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
4337  ,p_structure_ver_id            IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4338  ,x_return_status               OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4339  ,x_msg_count                   OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
4340  ,x_msg_data                    OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4341 )
4342 IS
4343    l_api_name           CONSTANT   VARCHAR2(30)    := 'PROGRAM_ROLLUP_PVT';
4344    l_api_version        CONSTANT   NUMBER          := p_api_version;
4345    l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
4346    l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
4347    l_return_status                 VARCHAR2(1);
4348    l_msg_count                     NUMBER;
4349    l_msg_data                      VARCHAR2(250);
4350 
4351    l_parent_task_id                NUMBER;
4352    l_parent_struc_ver_id           NUMBER;
4353 
4354 CURSOR c1 (p_project_id NUMBER) IS
4355        /* select *
4356         from pa_structures_links_v
4357         where sub_project_id = p_project_id;*/
4358 --bug 4033869
4359 SELECT
4360   ppv2.project_id                     sub_project_id
4361  ,ppv2.element_version_id             SUB_STRUCTURE_VER_ID
4362  ,ppv1.project_id                     PARENT_PROJECT_ID
4363  ,ppv1.parent_structure_version_id    PARENT_STRUCTURE_VER_ID
4364  ,ppv1.element_version_id             PARENT_TASK_VERSION_ID
4365  ,ppv1.proj_element_id                PARENT_TASK_ID
4366 FROM
4367      pa_proj_element_versions ppv1
4368     ,pa_proj_elem_ver_structure ppevs1
4369     ,pa_proj_element_versions ppv2
4370     ,pa_proj_elem_ver_structure ppevs2
4371     ,pa_object_relationships por1
4372     ,pa_object_relationships por2
4373 WHERE
4374      ppv2.element_version_id = por1.object_id_to1
4375  AND por1.object_id_from1 = por2.object_id_to1
4376  AND por2.object_id_from1 = ppv1.element_version_id
4377  AND ppv2.object_type = 'PA_STRUCTURES'
4378 -- AND por1.relationship_type in ( 'LW', 'LF' )
4379  AND por1.relationship_type = 'LW'
4380  AND ppevs1.element_version_id = ppv1.parent_structure_version_id
4381  AND ppevs1.project_id = ppv1.project_id
4382  AND ppevs1.status_code = 'STRUCTURE_PUBLISHED'
4383  AND ppevs1.latest_eff_published_flag = 'Y'
4384  AND ppevs2.element_version_id = ppv2.element_version_id
4385  AND ppevs2.project_id = ppv2.project_id
4386  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
4387  AND ppevs2.latest_eff_published_flag = 'Y'
4388  AND ppv2.project_id=p_project_id
4389  ;
4390 
4391 l_parent_task_status     VARCHAR2(30);
4392 l_parent_as_of_date      DATE;
4393 l_pln_parent_task_self   NUMBER;
4394 l_parent_plan_version_id NUMBER;
4395 
4396 --This cursor returns self planned value for a task.
4397 CURSOR cur_self_planned ( c_project_id NUMBER, c_proj_element_id NUMBER,
4398                           c_plan_version_id NUMBER, c_base_percnt_deriv_code VARCHAR2)
4399 IS
4400 select decode(c_base_percnt_deriv_code, 'COST',  sum(brdn_cost), 'EFFORT', sum(nvl(labor_hrs,0)+nvl(equipment_hours,0)))
4401 from pji_fp_xbs_accum_f
4402 where project_id =  c_project_id
4403 and plan_version_id = c_plan_version_id
4404 and project_element_id = c_proj_element_id
4405 and calendar_type = 'A'
4406 and wbs_rollup_flag = 'N'
4407 and bitand(curr_record_type_id,  8) = 8
4408 and rbs_aggr_level = 'T'
4409 and prg_rollup_flag = 'N'
4410 ;
4411 --end bug 4033869
4412 l_c1rec                         c1%rowtype;
4413 l_base_prcnt_comp_drv_code      VARCHAR2(30);
4414 
4415 l_bcwp                  NUMBER := 0;
4416 l_bac                   NUMBER := 0;
4417 l_pln_parent_task       NUMBER :=0;
4418 l_pln_sub_project       NUMBER :=0;
4419 l_eff_rollup_prcnt_comp NUMBER :=0;
4420 l_mode                  VARCHAR2(1) := NULL;
4421 l_progress_rollup_id    NUMBER;
4422 
4423 l_msg_code NUMBER;
4424 l_calling_module        VARCHAR2(30);
4425 
4426 CURSOR c_get_parent_base_per_comp_der(c_project_id number, c_task_id number) IS
4427 SELECT base_percent_comp_deriv_code
4428       ,status_code   --bug 4033869
4429 FROM pa_proj_elements
4430 WHERE project_id = c_project_id
4431 AND proj_element_id = c_task_id;
4432 
4433 CURSOR c_get_task_weightage_method(c_project_id number) IS
4434 SELECT task_weight_basis_code,progress_cycle_id   ---4701759, 4701727
4435 FROM pa_proj_progress_attr
4436 WHERE project_id = c_project_id
4437 AND structure_type = 'WORKPLAN';
4438 
4439 CURSOR c_get_sub_proj_rollup IS
4440 SELECT *
4441 FROM pa_progress_rollup
4442 WHERE project_id = p_project_id
4443 AND object_type = 'PA_STRUCTURES'
4444 AND structure_type = 'WORKPLAN'
4445 AND structure_version_id  is NULL
4446 AND as_of_date = p_as_of_date;
4447 
4448 CURSOR c_get_par_task_rollup(c_object_id NUMBER, c_project_id NUMBER) IS
4449 SELECT *
4450 FROM pa_progress_rollup
4451 WHERE object_id = c_object_id
4452 AND project_id = c_project_id
4453 AND object_type = 'PA_TASKS'
4454 AND structure_type = 'WORKPLAN'
4455 AND structure_version_id is null
4456 AND as_of_date = p_as_of_date;
4457 
4458 CURSOR cur_get_status( c_status_weight VARCHAR2, c_status_type VARCHAR2  ) IS
4459 SELECT project_status_code
4460 FROM pa_project_statuses
4461 WHERE project_status_weight = c_status_weight
4462 AND status_type = c_status_type
4463 AND predefined_flag = 'Y';
4464 
4465 CURSOR cur_get_status_weight(c_status_code VARCHAR2, c_status_type VARCHAR2 ) IS
4466 SELECT project_status_weight
4467 FROM pa_project_statuses
4468 WHERE project_status_code = c_status_code
4469 AND status_type = c_status_type;
4470 
4471 l_child_prog_cycle_id       number;  ---4701759, 4701727
4472 l_par_prog_cycle_id         number;
4473 l_sub_project_rec  c_get_sub_proj_rollup%ROWTYPE;
4474 l_parent_task_rec  c_get_par_task_rollup%ROWTYPE;
4475 l_task_weight_basis_code pa_proj_progress_attr.task_weight_basis_code%TYPE;
4476 L_BASE_STRUCT_VER_ID   NUMBER;
4477 
4478 l_remaining_effort1    NUMBER ;
4479 l_ETC_Cost_PC              NUMBER ;
4480 l_PPL_ETC_COST_PC          NUMBER ;
4481 l_EQPMT_ETC_COST_PC        NUMBER ;
4482 l_ETC_Cost_FC              NUMBER ;
4483 l_PPL_ETC_COST_FC          NUMBER ;
4484 l_EQPMT_ETC_COST_FC        NUMBER ;
4485 l_EQPMT_ETC_EFFORT         NUMBER ;
4486 l_OTH_ACT_COST_TO_DATE_PC  NUMBER ;
4487 l_PPL_ACT_COST_TO_DATE_PC  NUMBER ;
4488 l_EQPMT_ACT_COST_TO_DATE_PC NUMBER;
4489 l_OTH_ACT_COST_TO_DATE_FC  NUMBER ;
4490 l_PPL_ACT_COST_TO_DATE_FC  NUMBER ;
4491 l_EQPMT_ACT_COST_TO_DATE_FC NUMBER;
4492 l_PPL_ACT_EFFORT_TO_DATE   NUMBER ;
4493 l_EQPMT_ACT_EFFORT_TO_DATE NUMBER ;
4494 l_PERIOD_NAME              VARCHAR2(10);
4495 g1_debug_mode              VARCHAR2(1);
4496 l_OTH_ACT_RAWCOST_TO_DATE_PC         NUMBER;
4497 l_PPL_ACT_RAWCOST_TO_DATE_PC         NUMBER;
4498 l_EQPMT_ACT_RAWCOST_TO_DATE_PC       NUMBER;
4499 l_OTH_ACT_RAWCOST_TO_DATE_FC         NUMBER;
4500 l_PPL_ACT_RAWCOST_TO_DATE_FC         NUMBER;
4501 l_EQPMT_ACT_RAWCOST_TO_DATE_FC       NUMBER;
4502 l_ETC_RAWCost_PC                     NUMBER;
4503 l_PPL_ETC_RAWCOST_PC                 NUMBER;
4504 l_EQPMT_ETC_RAWCOST_PC               NUMBER;
4505 l_ETC_RAWCost_FC                     NUMBER;
4506 l_PPL_ETC_RAWCOST_FC                 NUMBER;
4507 l_EQPMT_ETC_RAWCOST_FC               NUMBER;
4508 l_LABOR_HOURS           NUMBER;
4509 l_EQUIPMENT_HOURS           NUMBER;
4510 l_POU_LABOR_BRDN_COST   NUMBER := null;
4511 l_PRJ_LABOR_BRDN_COST   NUMBER := null;
4512 l_POU_EQUIP_BRDN_COST   NUMBER := null;
4513 l_PRJ_EQUIP_BRDN_COST   NUMBER := null;
4514 l_POU_LABOR_RAW_COST    NUMBER := null;
4515 l_PRJ_LABOR_RAW_COST    NUMBER := null;
4516 l_POU_EQUIP_RAW_COST    NUMBER := null;
4517 l_PRJ_EQUIP_RAW_COST    NUMBER := null;
4518 l_POU_OTH_BRDN_COST     NUMBER := null;
4519 l_PRJ_OTH_BRDN_COST     NUMBER := null;
4520 l_POU_OTH_RAW_COST     NUMBER := null;
4521 l_PRJ_OTH_RAW_COST     NUMBER := null;
4522 l_current_flag         VARCHAR2(1);
4523 l_dummy VARCHAR2(1);
4524 l_parent_progress_status pa_progress_rollup.progress_status_code%TYPE;
4525 l_child_progress_status pa_progress_rollup.progress_status_code%TYPE;
4526 l_par_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4527 l_child_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4528 l_progress_status_weight pa_project_statuses.project_status_weight%TYPE;
4529 l_eff_rollup_progress_status pa_progress_rollup.progress_status_code%TYPE;
4530 l_actual_start_date DATE;
4531 l_actual_finish_date DATE;
4532 l_estimated_start_date DATE;
4533 l_estimated_finish_date DATE;
4534 BEGIN
4535 
4536 --Open Question:
4537 --1. The parent Project progress record should go to the parent project cycle date.
4538 --As of now it is going with just passed as of date.
4539 --2.
4540     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
4541 
4542         IF g1_debug_mode  = 'Y' THEN
4543                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4544         END IF;
4545 
4546         IF g1_debug_mode  = 'Y' THEN
4547                 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);
4548                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
4549                 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);
4550                 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);
4551                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'p_structure_type='||p_structure_type, x_Log_Level=> 3);
4552         END IF;
4553 
4554     IF g1_debug_mode  = 'Y' THEN
4555                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT');
4556         END IF;
4557 
4558         IF (p_commit = FND_API.G_TRUE) THEN
4559                 savepoint PROGRAM_ROLLUP_PVT2;
4560         END IF;
4561 
4562         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
4563                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4564         END IF;
4565 
4566         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
4567                 FND_MSG_PUB.initialize;
4568         END IF;
4569 
4570         x_return_status := FND_API.G_RET_STS_SUCCESS;
4571 
4572         -- Get the parent task of the project.
4573 
4574     IF p_structure_type <> 'WORKPLAN' THEN
4575         return;
4576     END IF;
4577 
4578         l_calling_module := p_calling_module;  ---4492493
4579 
4580         IF (l_calling_module = 'ASGMT_PLAN_CHANGE') then  --4492493
4581             l_calling_module := 'SELF_SERVICE';
4582         END IF;
4583 
4584         OPEN c1(p_project_id);
4585         ---4701759, 4701727
4586         OPEN c_get_task_weightage_method(p_project_id);
4587         FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_child_prog_cycle_id;
4588         CLOSE c_get_task_weightage_method;
4589     LOOP
4590              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
4591                 (p_calling_module <> 'ASGMT_PLAN_CHANGE')) then  --4492493
4592             FETCH c1 INTO l_c1rec;
4593             EXIT WHEN c1%NOTFOUND;
4594 
4595             IF g1_debug_mode  = 'Y' THEN
4596                 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);
4597                 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);
4598                 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);
4599                 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);
4600             END IF;
4601 
4602             IF (p_structure_type = 'WORKPLAN') THEN
4603 
4604                 -- Bug 3807299 Program_rollup redesign
4605                 --l_base_prcnt_comp_drv_code    := null;
4606 
4607                 --OPEN c_get_parent_base_per_comp_der(l_c1rec.parent_project_id,l_c1rec.parent_task_id);
4608                 --FETCH c_get_parent_base_per_comp_der INTO l_base_prcnt_comp_drv_code,
4609                 --  l_parent_task_status;   --bug 4033869
4610                 --CLOSE c_get_parent_base_per_comp_der;
4611 
4612                 OPEN c_get_task_weightage_method(l_c1rec.parent_project_id);
4613                 FETCH c_get_task_weightage_method INTO l_task_weight_basis_code,l_par_prog_cycle_id;
4614                 CLOSE c_get_task_weightage_method;
4615 
4616                 ---4701759, 4701727
4617                 if (l_child_prog_cycle_id <> l_par_prog_cycle_id) then
4618                     l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
4619                                            p_project_id => l_c1rec.parent_project_id
4620                                           ,p_task_id => l_c1rec.parent_task_id
4621                                           ,p_start_date => trunc(p_as_of_date)-1);
4622                 else
4623                     l_parent_as_of_date := trunc(p_as_of_date);
4624                 end if;
4625 
4626                 IF g1_debug_mode  = 'Y' THEN
4627                     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);
4628                     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);
4629                 END IF;
4630 
4631                 -- 4586449 : This is not related to this but but putting this fix with this bug.
4632                 -- In this API we earlier decided that we do not need to call PJI temp table
4633                 -- population, because update_progress_bulk or get_summarized_actuals have already
4634                 -- populated it for the entire hierarchy upwards for the given p_as_of_date.
4635                 -- But note that program project next cycle date  might be ahead than the passed p_as_of_date.
4636                 -- In this case, we will get wrong data for program. So we need to populate it here too..
4637 
4638                 IF l_parent_as_of_date > p_as_of_date THEN
4639                     pa_progress_pub.populate_pji_tab_for_plan(
4640                             p_init_msg_list     => FND_API.G_FALSE
4641                             ,p_commit       => FND_API.G_FALSE
4642                             ,p_calling_module   => l_calling_module
4643                             ,p_project_id       => l_c1rec.parent_project_id
4644                             ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4645                             ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(l_c1rec.parent_project_id)
4646                             ,p_structure_type       => 'WORKPLAN'
4647                             ,p_program_rollup_flag  => 'Y'
4648                             ,p_calling_context  => 'SUMMARIZE'
4649                             ,p_as_of_date       => l_parent_as_of_date
4650                             ,x_return_status        => x_return_status
4651                             ,x_msg_count            => x_msg_count
4652                             ,x_msg_data             => x_msg_data);
4653 
4654                     IF x_return_status <> 'S' THEN
4655                         RAISE FND_API.G_EXC_ERROR;
4656                     END IF;
4657                 END IF;
4658 
4659                 /* Bug 4392189 : Now Rollup API will take care of everything. No need to do anything here
4660 
4661                 -- Amit : Reducing the scope of this IF condition as COST or EFFORT should rollup even
4662                 -- if task derivation method is other than COST or EFFORT
4663                 --IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
4664                 --THEN
4665                 -- Calculating BCWP.
4666                 l_sub_project_rec := null;
4667 
4668                 OPEN c_get_sub_proj_rollup;
4669                 FETCH c_get_sub_proj_rollup INTO l_sub_project_rec;
4670                 CLOSE c_get_sub_proj_rollup;
4671 
4672                 l_parent_task_rec := null;
4673 
4674                 OPEN c_get_par_task_rollup(l_c1rec.parent_task_id, l_c1rec.parent_project_id);
4675                 FETCH c_get_par_task_rollup INTO l_parent_task_rec;
4676                 CLOSE c_get_par_task_rollup;
4677 
4678                                 --bug 4033869
4679                 -- Get sub project plan in terms of derivation method of parent task
4680                 l_pln_sub_project := pa_progress_utils.Get_BAC_Value(p_project_id => p_project_id
4681                                  ,p_task_weight_method => l_base_prcnt_comp_drv_code
4682                                  ,p_proj_element_id => l_sub_project_rec.object_id
4683                                  ,p_structure_version_id => p_structure_ver_id
4684                                  ,p_structure_type => 'WORKPLAN');
4685                                 --l_pln_parent_task_self
4686                 --get the plan version id of the parent structure ver id.
4687                 IF g1_debug_mode  = 'Y' THEN
4688                     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);
4689                     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);
4690                 END IF;
4691 
4692                 BEGIN
4693                     l_parent_plan_version_id := Pa_Fp_wp_gen_amt_utils.get_wp_version_id(
4694                                                       p_project_id => l_c1rec.parent_project_id,
4695                                                       p_plan_type_id => -1,
4696                                                       p_proj_str_ver_id => l_c1rec.parent_structure_ver_id) ;
4697                                 EXCEPTION
4698                     WHEN OTHERS THEN
4699                         fnd_msg_pub.add_exc_msg(p_pkg_name => 'PA_PROGRESS_PVT',
4700                         p_procedure_name => 'PROGRAM_ROLLUP_PVT',
4701                         p_error_text => SUBSTRB('Call of PA_FP_WP_GEN_AMT_UTILS.GET_WP_VERSION_ID Failed: SQLERRM'||SQLERRM,1,120));
4702                         RAISE FND_API.G_EXC_ERROR;
4703                                 END;
4704 
4705                 IF g1_debug_mode  = 'Y' THEN
4706                     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);
4707                 END IF;
4708 
4709                 --if l_base_prcnt_comp_drv_code is COST then select self planned COST for parent task in l_pln_parent_task_self
4710                 --if l_base_prcnt_comp_drv_code is EFFORT then select self planned EFFORT for parent task in l_pln_parent_task_self
4711 
4712                 OPEN cur_self_planned ( l_c1rec.parent_project_id, l_c1rec.parent_task_id,
4713                                                        l_parent_plan_version_id, l_base_prcnt_comp_drv_code);
4714                                 FETCH cur_self_planned INTO l_pln_parent_task_self;
4715                 CLOSE cur_self_planned;
4716                                 --End bug 4033869
4717 
4718                 IF g1_debug_mode  = 'Y' THEN
4719                     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);
4720                 END IF;
4721 
4722                 IF l_parent_task_rec.project_id IS NOT NULL THEN
4723                     IF g1_debug_mode  = 'Y' THEN
4724                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Update U', x_Log_Level=> 3);
4725                     END IF;
4726 
4727                     l_mode := 'U';
4728 
4729                                         --l_bcwp := nvl(l_parent_task_rec.earned_value,0) + nvl(l_sub_project_rec.earned_value,0);
4730                     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)
4731                              nvl((nvl(l_sub_project_rec.completed_percentage,l_sub_project_rec.eff_rollup_percent_comp)*l_pln_sub_project)/100,0); --bug 4033869
4732                     --l_eff_rollup_prcnt_comp := l_parent_task_rec.eff_rollup_percent_comp;
4733 
4734                     IF g1_debug_mode  = 'Y' THEN
4735                         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);
4736                         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);
4737                         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);
4738                         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);
4739                         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);
4740                         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);
4741                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4742                     END IF;
4743 
4744 
4745                     IF PA_PROGRESS_UTILS.get_system_task_status(l_parent_task_status) NOT IN ( 'CANCELLED', 'ON_HOLD', 'COMPLETED' )
4746                     --bug 4033869 If parent is ON-HOLD, CANCELLED or COMPLETED then do not rollup any progress attributes.
4747                     THEN
4748                         --l_parent_progress_status := nvl(l_parent_task_rec.PROGRESS_STATUS_CODE, l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE);
4749                         --l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4750                         l_parent_progress_status := l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE;
4751                         l_child_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4752 
4753                         IF g1_debug_mode  = 'Y' THEN
4754                             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);
4755                             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);
4756                         END IF;
4757 
4758                         IF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NOT NULL THEN
4759                             OPEN cur_get_status_weight(l_parent_progress_status, 'PROGRESS');
4760                             FETCH cur_get_status_weight INTO l_par_progress_status_weight;
4761                             CLOSE cur_get_status_weight;
4762 
4763                             OPEN cur_get_status_weight(l_child_progress_status, 'PROGRESS');
4764                             FETCH cur_get_status_weight INTO l_child_progress_status_weight;
4765                             CLOSE cur_get_status_weight;
4766 
4767                             SELECT GREATEST(l_par_progress_status_weight, l_child_progress_status_weight)
4768                             INTO l_progress_status_weight
4769                             FROM DUAL;
4770 
4771                             IF g1_debug_mode  = 'Y' THEN
4772                                 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);
4773                                 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);
4774                                 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);
4775                             END IF;
4776 
4777                             OPEN cur_get_status(l_progress_status_weight, 'PROGRESS');
4778                             FETCH cur_get_status INTO l_eff_rollup_progress_status;
4779                             CLOSE cur_get_status;
4780 
4781                             IF l_eff_rollup_progress_status IS NULL THEN
4782                                 l_eff_rollup_progress_status := l_parent_progress_status;
4783                             END IF;
4784                         ELSIF l_parent_progress_status IS NULL AND l_child_progress_status IS NOT NULL THEN
4785                             l_eff_rollup_progress_status := l_child_progress_status;
4786                         ELSIF l_parent_progress_status IS NOT NULL AND l_child_progress_status IS NULL THEN
4787                             l_eff_rollup_progress_status := l_parent_progress_status;
4788                         ELSE
4789                             l_eff_rollup_progress_status := null;
4790                         END IF;
4791 
4792                         IF g1_debug_mode  = 'Y' THEN
4793                             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);
4794                         END IF;
4795 
4796 
4797                         IF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4798                             SELECT LEAST(l_sub_project_rec.ACTUAL_START_DATE, l_parent_task_rec.ACTUAL_START_DATE)
4799                             INTO l_actual_start_date
4800                             FROM DUAL;
4801                         ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NOT NULL THEN
4802                             l_actual_start_date := l_parent_task_rec.ACTUAL_START_DATE;
4803                         ELSIF l_sub_project_rec.ACTUAL_START_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_START_DATE IS NULL THEN
4804                             l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4805                         ELSE
4806                             l_actual_start_date := null;
4807                         END IF;
4808 
4809                         IF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4810                             SELECT GREATEST(l_sub_project_rec.ACTUAL_FINISH_DATE, l_parent_task_rec.ACTUAL_FINISH_DATE)
4811                             INTO l_actual_finish_date
4812                             FROM DUAL;
4813                         ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NOT NULL THEN
4814                             l_actual_finish_date := l_parent_task_rec.ACTUAL_FINISH_DATE;
4815                         ELSIF l_sub_project_rec.ACTUAL_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ACTUAL_FINISH_DATE IS NULL THEN
4816                             l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4817                         ELSE
4818                             l_actual_finish_date := null;
4819                         END IF;
4820 
4821                         IF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4822                             SELECT LEAST(l_sub_project_rec.ESTIMATED_START_DATE, l_parent_task_rec.ESTIMATED_START_DATE)
4823                             INTO l_estimated_start_date
4824                             FROM DUAL;
4825                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NOT NULL THEN
4826                             l_estimated_start_date := l_parent_task_rec.ESTIMATED_START_DATE;
4827                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_START_DATE IS NULL THEN
4828                             l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4829                         ELSE
4830                             l_estimated_start_date := null;
4831                         END IF;
4832 
4833                         IF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4834                             SELECT GREATEST(l_sub_project_rec.ESTIMATED_FINISH_DATE, l_parent_task_rec.ESTIMATED_FINISH_DATE)
4835                             INTO l_estimated_finish_date
4836                             FROM DUAL;
4837                         ELSIF l_sub_project_rec.ESTIMATED_FINISH_DATE IS NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NOT NULL THEN
4838                             l_estimated_finish_date := l_parent_task_rec.ESTIMATED_FINISH_DATE;
4839                         ELSIF l_sub_project_rec.ESTIMATED_START_DATE IS NOT NULL AND l_parent_task_rec.ESTIMATED_FINISH_DATE IS NULL THEN
4840                             l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4841                         ELSE
4842                             l_estimated_finish_date := null;
4843                         END IF;
4844 
4845                         IF g1_debug_mode  = 'Y' THEN
4846                             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);
4847                             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);
4848                             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);
4849                             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);
4850                         END IF;
4851 
4852                     -- For Task Status Rollup, we can use PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS
4853                     -- First we need to confirm that whether we are inserting/updating in PPC table
4854                     END IF;  --PA_PROGRESS_UTILS.get_system_task_status bug 4033869
4855                 ELSE
4856                     IF g1_debug_mode  = 'Y' THEN
4857                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Mode is Insert I', x_Log_Level=> 3);
4858                     END IF;
4859 
4860                                         l_mode := 'I';
4861                     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
4862                     l_eff_rollup_prcnt_comp := null;
4863                     l_actual_start_date := l_sub_project_rec.ACTUAL_START_DATE;
4864                     l_actual_finish_date := l_sub_project_rec.ACTUAL_FINISH_DATE;
4865                     l_estimated_start_date := l_sub_project_rec.ESTIMATED_START_DATE;
4866                     l_estimated_finish_date := l_sub_project_rec.ESTIMATED_FINISH_DATE;
4867                     --task status can not rollup as we are not creating records in percent complete table
4868                     --l_task_status :=
4869                     l_eff_rollup_progress_status := nvl(l_sub_project_rec.PROGRESS_STATUS_CODE, l_sub_project_rec.EFF_ROLLUP_PROG_STAT_CODE);
4870                 END IF;
4871 
4872                 IF g1_debug_mode  = 'Y' THEN
4873                     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);
4874                     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);
4875                 END IF;
4876                 */
4877 
4878 
4879                 /* Bug 4392189 : No need to call populate_pji_tab_for_plan for parnet here.
4880                  The temp table will be having data up in the complete hierrachy of program
4881                 l_base_struct_ver_id := pa_project_structure_utils.get_baseline_struct_ver(l_c1rec.parent_project_id);
4882 
4883                 pa_progress_pub.populate_pji_tab_for_plan(
4884                     p_init_msg_list => 'F',
4885                     p_calling_module => l_calling_module,
4886                     p_project_id   => l_c1rec.parent_project_id,
4887                     p_structure_version_id => l_c1rec.parent_structure_ver_id,
4888                     p_baselined_str_ver_id => l_base_struct_ver_id,
4889                     p_structure_type => 'WORKPLAN',
4890                     x_return_status => x_return_status,
4891                     x_msg_count     =>  x_msg_count,
4892                     x_msg_data      =>  x_msg_data);
4893 
4894                 IF x_return_status <> 'S' THEN
4895                     RAISE FND_API.G_EXC_ERROR;
4896                 END IF;
4897                 */
4898                 /*
4899 
4900                 l_pln_parent_task := pa_progress_utils.Get_BAC_Value(p_project_id => l_c1rec.parent_project_id
4901                                  ,p_task_weight_method => l_base_prcnt_comp_drv_code
4902                                  ,p_proj_element_id => l_c1rec.parent_task_id
4903                                  ,p_structure_version_id => l_c1rec.parent_structure_ver_id
4904                                  ,p_structure_type => 'WORKPLAN');
4905 
4906 
4907                                 --parent plan includes child plan. --bug 4033869
4908                                 l_bac := nvl(l_pln_parent_task,0);
4909 
4910                 IF g1_debug_mode  = 'Y' THEN
4911                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bcwp='||l_bcwp, x_Log_Level=> 3);
4912                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'l_bac='||l_bac, x_Log_Level=> 3);
4913                 END IF;
4914 
4915                                 -- Calculating rollup percent_complete.
4916                 IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT') THEN
4917                     IF (l_bac > 0) THEN
4918                         l_eff_rollup_prcnt_comp := (l_bcwp/l_bac) * 100;
4919                     ELSE
4920                         l_eff_rollup_prcnt_comp := NULL;
4921                     END IF;
4922                 END IF;
4923 
4924                 IF g1_debug_mode  = 'Y' THEN
4925                     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);
4926                 END IF;
4927 
4928 
4929                 BEGIN
4930                                        SELECT
4931                 */
4932                         /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
4933                 /*
4934                            PERIOD_NAME
4935                                              , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
4936                                              , ACT_PRJ_LABOR_BRDN_COST
4937                                              , ACT_PRJ_EQUIP_BRDN_COST
4938                                              , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
4939                                              , ACT_POU_LABOR_BRDN_COST
4940                                              , ACT_POU_EQUIP_BRDN_COST
4941                                              , ACT_LABOR_HRS
4942                                              , ACT_EQUIP_HRS
4943                                              , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
4944                                              , ETC_PRJ_LABOR_BRDN_COST
4945                                              , ETC_PRJ_EQUIP_BRDN_COST
4946                                              , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
4947                                              , ETC_POU_LABOR_BRDN_COST
4948                                              , ETC_POU_EQUIP_BRDN_COST
4949                                              , ETC_LABOR_HRS
4950                                              , ETC_EQUIP_HRS
4951                                              , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
4952                                              , ACT_PRJ_LABOR_RAW_COST
4953                                              , ACT_PRJ_EQUIP_RAW_COST
4954                                              , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
4955                                              , ACT_POU_LABOR_RAW_COST
4956                                              , ACT_POU_EQUIP_RAW_COST
4957                                              , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
4958                                              , ETC_PRJ_LABOR_RAW_COST
4959                                              , ETC_PRJ_EQUIP_RAW_COST
4960                                              , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
4961                                              , ETC_POU_LABOR_RAW_COST
4962                                              , ETC_POU_EQUIP_RAW_COST
4963                          , LABOR_HOURS
4964                          , EQUIPMENT_HOURS
4965                              , POU_LABOR_BRDN_COST
4966                          , PRJ_LABOR_BRDN_COST
4967                              , POU_EQUIP_BRDN_COST
4968                          , PRJ_EQUIP_BRDN_COST
4969                          , POU_BRDN_COST - ( POU_EQUIP_BRDN_COST + POU_LABOR_BRDN_COST )
4970                                              , PRJ_BRDN_COST - ( PRJ_EQUIP_BRDN_COST + PRJ_LABOR_BRDN_COST )
4971                                              , POU_LABOR_RAW_COST
4972                                              , PRJ_LABOR_RAW_COST
4973                                              , POU_EQUIP_RAW_COST
4974                                              , PRJ_EQUIP_RAW_COST
4975                                              , POU_RAW_COST - ( POU_EQUIP_RAW_COST + POU_LABOR_RAW_COST )
4976                                              , PRJ_RAW_COST - ( PRJ_EQUIP_RAW_COST + PRJ_LABOR_RAW_COST )
4977                                         INTO   l_PERIOD_NAME
4978                                              , l_OTH_ACT_COST_TO_DATE_PC
4979                                              , l_PPL_ACT_COST_TO_DATE_PC
4980                                              , l_EQPMT_ACT_COST_TO_DATE_PC
4981                                              , l_OTH_ACT_COST_TO_DATE_FC
4982                                              , l_PPL_ACT_COST_TO_DATE_FC
4983                                              , l_EQPMT_ACT_COST_TO_DATE_FC
4984                                              , l_PPL_ACT_EFFORT_TO_DATE
4985                                              , l_EQPMT_ACT_EFFORT_TO_DATE
4986                                              , l_ETC_Cost_PC
4987                                              , l_PPL_ETC_COST_PC
4988                                              , l_EQPMT_ETC_COST_PC
4989                                              , l_ETC_Cost_FC
4990                                              , l_PPL_ETC_COST_FC
4991                                              , l_EQPMT_ETC_COST_FC
4992                                              , l_remaining_effort1
4993                                              , l_EQPMT_ETC_EFFORT
4994                                              , l_OTH_ACT_RAWCOST_TO_DATE_PC
4995                                              , l_PPL_ACT_RAWCOST_TO_DATE_PC
4996                                              , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
4997                                              , l_OTH_ACT_RAWCOST_TO_DATE_FC
4998                                              , l_PPL_ACT_RAWCOST_TO_DATE_FC
4999                                              , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5000                                              , l_ETC_RAWCost_PC
5001                                              , l_PPL_ETC_RAWCOST_PC
5002                                              , l_EQPMT_ETC_RAWCOST_PC
5003                                              , l_ETC_RAWCost_FC
5004                                              , l_PPL_ETC_RAWCOST_FC
5005                                              , l_EQPMT_ETC_RAWCOST_FC
5006                          , l_LABOR_HOURS
5007                          , l_EQUIPMENT_HOURS
5008                                              , l_POU_LABOR_BRDN_COST
5009                                              , l_PRJ_LABOR_BRDN_COST
5010                                              , l_POU_EQUIP_BRDN_COST
5011                                              , l_PRJ_EQUIP_BRDN_COST
5012                          , l_POU_OTH_BRDN_COST
5013                          , l_PRJ_OTH_BRDN_COST
5014                          , l_POU_LABOR_RAW_COST
5015                          , l_PRJ_LABOR_RAW_COST
5016                          , l_POU_EQUIP_RAW_COST
5017                          , l_PRJ_EQUIP_RAW_COST
5018                          , l_POU_OTH_RAW_COST
5019                          , l_PRJ_OTH_RAW_COST
5020                                          FROM PJI_FM_XBS_ACCUM_TMP1
5021                                          WHERE project_id = l_c1rec.parent_project_id
5022                                          AND struct_version_id = l_c1rec.parent_structure_ver_id
5023                                          AND project_element_id = l_c1rec.parent_task_id
5024                                          AND plan_version_id > 0
5025                                          AND txn_currency_code is null
5026                                          AND calendar_type = 'A'
5027                                          AND res_list_member_id is null;
5028                                 EXCEPTION
5029                                          WHEN NO_DATA_FOUND THEN
5030                                               null;
5031                                          WHEN OTHERS THEN
5032                                               fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5033                                                                    p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5034                                                                    p_error_text     => SUBSTRB('Select from PJI_FM_XBS_ACCUM_TMP1 Failed: SQLERRM'||SQLERRM,1,120));
5035                                              RAISE FND_API.G_EXC_ERROR;
5036                 END;
5037 
5038 
5039                 IF g1_debug_mode  = 'Y' THEN
5040                     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);
5041                     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);
5042                 END IF;
5043 
5044 
5045                 -- Rollup the attributes from the structure progress record into parent task record
5046                 IF l_mode = 'U' THEN
5047 
5048                     l_parent_as_of_date := l_parent_task_rec.AS_OF_DATE;   --bug 4033869
5049 
5050                     PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
5051                     X_PROGRESS_ROLLUP_ID            =>      l_parent_task_rec.PROGRESS_ROLLUP_ID
5052                     ,X_PROJECT_ID                   =>      l_parent_task_rec.PROJECT_ID
5053                     ,X_OBJECT_ID                    =>      l_parent_task_rec.OBJECT_ID
5054                     ,X_OBJECT_TYPE                  =>      l_parent_task_rec.OBJECT_TYPE
5055                     ,X_AS_OF_DATE                   =>      l_parent_task_rec.AS_OF_DATE
5056                     ,X_OBJECT_VERSION_ID            =>      l_parent_task_rec.OBJECT_VERSION_ID
5057                     ,X_LAST_UPDATE_DATE             =>      sysdate
5058                     ,X_LAST_UPDATED_BY              =>      l_user_id
5059                     ,X_PROGRESS_STATUS_CODE         =>      l_parent_task_rec.PROGRESS_STATUS_CODE
5060                     ,X_LAST_UPDATE_LOGIN            =>      l_login_id
5061                     ,X_INCREMENTAL_WORK_QTY         =>      l_parent_task_rec.INCREMENTAL_WORK_QUANTITY
5062                     ,X_CUMULATIVE_WORK_QTY          =>      l_parent_task_rec.CUMULATIVE_WORK_QUANTITY
5063                     ,X_BASE_PERCENT_COMPLETE        =>      l_parent_task_rec.BASE_PERCENT_COMPLETE
5064                     ,X_EFF_ROLLUP_PERCENT_COMP      =>      l_eff_rollup_prcnt_comp
5065                     ,X_COMPLETED_PERCENTAGE         =>      l_parent_task_rec.COMPLETED_PERCENTAGE
5066                     ,X_ESTIMATED_START_DATE         =>      l_estimated_start_date -- l_parent_task_rec.ESTIMATED_START_DATE
5067                     ,X_ESTIMATED_FINISH_DATE        =>      l_estimated_finish_date -- l_parent_task_rec.ESTIMATED_FINISH_DATE
5068                     ,X_ACTUAL_START_DATE            =>      l_actual_start_date --l_parent_task_rec.ACTUAL_START_DATE
5069                     ,X_ACTUAL_FINISH_DATE           =>      l_actual_finish_date -- l_parent_task_rec.ACTUAL_FINISH_DATE
5070                     ,X_EST_REMAINING_EFFORT         =>      l_remaining_effort1
5071                     ,X_BASE_PERCENT_COMP_DERIV_CODE =>      l_parent_task_rec.BASE_PERCENT_COMP_DERIV_CODE
5072                     ,X_BASE_PROGRESS_STATUS_CODE    =>      l_parent_task_rec.BASE_PROGRESS_STATUS_CODE
5073                     ,X_EFF_ROLLUP_PROG_STAT_CODE    =>      l_eff_rollup_progress_status--l_parent_task_rec.EFF_ROLLUP_PROG_STAT_CODE
5074                     ,X_RECORD_VERSION_NUMBER        =>      l_parent_task_rec.RECORD_VERSION_NUMBER
5075                     ,X_percent_complete_id          =>      l_parent_task_rec.percent_complete_id
5076                     ,X_STRUCTURE_TYPE               =>      l_parent_task_rec.STRUCTURE_TYPE
5077                     ,X_PROJ_ELEMENT_ID              =>      l_parent_task_rec.PROJ_ELEMENT_ID
5078                     ,X_STRUCTURE_VERSION_ID         =>      l_parent_task_rec.STRUCTURE_VERSION_ID
5079                     ,X_PPL_ACT_EFFORT_TO_DATE       =>      l_PPL_ACT_EFFORT_TO_DATE
5080                     ,X_EQPMT_ACT_EFFORT_TO_DATE     =>      l_EQPMT_ACT_EFFORT_TO_DATE
5081                     ,X_EQPMT_ETC_EFFORT             =>      l_EQPMT_ETC_EFFORT
5082                     ,X_OTH_ACT_COST_TO_DATE_TC      =>      l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5083                     ,X_OTH_ACT_COST_TO_DATE_FC      =>      l_OTH_ACT_COST_TO_DATE_FC
5084                     ,X_OTH_ACT_COST_TO_DATE_PC      =>      l_OTH_ACT_COST_TO_DATE_PC
5085                     ,X_OTH_ETC_COST_TC              =>      l_parent_task_rec.OTH_ETC_COST_TC
5086                     ,X_OTH_ETC_COST_FC              =>      l_ETC_Cost_FC
5087                     ,X_OTH_ETC_COST_PC              =>      l_ETC_Cost_PC
5088                     ,X_PPL_ACT_COST_TO_DATE_TC      =>      l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5089                     ,X_PPL_ACT_COST_TO_DATE_FC      =>      l_PPL_ACT_COST_TO_DATE_FC
5090                     ,X_PPL_ACT_COST_TO_DATE_PC      =>      l_PPL_ACT_COST_TO_DATE_PC
5091                     ,X_PPL_ETC_COST_TC              =>      l_parent_task_rec.PPL_ETC_COST_TC
5092                     ,X_PPL_ETC_COST_FC              =>      l_PPL_ETC_COST_FC
5093                     ,X_PPL_ETC_COST_PC              =>      l_PPL_ETC_COST_PC
5094                     ,X_EQPMT_ACT_COST_TO_DATE_TC    =>      l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5095                     ,X_EQPMT_ACT_COST_TO_DATE_FC    =>      l_EQPMT_ACT_COST_TO_DATE_FC
5096                     ,X_EQPMT_ACT_COST_TO_DATE_PC    =>      l_EQPMT_ACT_COST_TO_DATE_PC
5097                     ,X_EQPMT_ETC_COST_TC            =>      l_parent_task_rec.EQPMT_ETC_COST_TC
5098                     ,X_EQPMT_ETC_COST_FC            =>      l_EQPMT_ETC_COST_FC
5099                     ,X_EQPMT_ETC_COST_PC            =>      l_EQPMT_ETC_COST_PC
5100                     ,X_EARNED_VALUE                 =>      l_bcwp
5101                     ,X_TASK_WT_BASIS_CODE           =>      l_parent_task_rec.TASK_WT_BASIS_CODE
5102                     ,X_SUBPRJ_PPL_ACT_EFFORT        =>      null
5103                     ,X_SUBPRJ_EQPMT_ACT_EFFORT      =>      null
5104                     ,X_SUBPRJ_PPL_ETC_EFFORT        =>      null
5105                     ,X_SUBPRJ_EQPMT_ETC_EFFORT      =>      null
5106                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC =>      null
5107                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC =>      null
5108                     ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC =>      null
5109                     ,X_SUBPRJ_PPL_ACT_COST_TC       =>      null
5110                     ,X_SUBPRJ_PPL_ACT_COST_FC       =>      null
5111                     ,X_SUBPRJ_PPL_ACT_COST_PC       =>      null
5112                     ,X_SUBPRJ_EQPMT_ACT_COST_TC     =>      null
5113                     ,X_SUBPRJ_EQPMT_ACT_COST_FC     =>      null
5114                     ,X_SUBPRJ_EQPMT_ACT_COST_PC     =>      null
5115                     ,X_SUBPRJ_OTH_ETC_COST_TC       =>      null
5116                     ,X_SUBPRJ_OTH_ETC_COST_FC       =>      null
5117                     ,X_SUBPRJ_OTH_ETC_COST_PC       =>      null
5118                     ,X_SUBPRJ_PPL_ETC_COST_TC       =>      null
5119                     ,X_SUBPRJ_PPL_ETC_COST_FC       =>      null
5120                     ,X_SUBPRJ_PPL_ETC_COST_PC       =>      null
5121                     ,X_SUBPRJ_EQPMT_ETC_COST_TC     =>      null
5122                     ,X_SUBPRJ_EQPMT_ETC_COST_FC     =>      null
5123                     ,X_SUBPRJ_EQPMT_ETC_COST_PC     =>      null
5124                     ,X_SUBPRJ_EARNED_VALUE          =>      null
5125                     ,X_CURRENT_FLAG                 =>      l_parent_task_rec.CURRENT_FLAG
5126                     ,X_PROJFUNC_COST_RATE_TYPE      =>      l_parent_task_rec.PROJFUNC_COST_RATE_TYPE
5127                     ,X_PROJFUNC_COST_EXCHANGE_RATE  =>      l_parent_task_rec.PROJFUNC_COST_EXCHANGE_RATE
5128                     ,X_PROJFUNC_COST_RATE_DATE      =>      l_parent_task_rec.PROJFUNC_COST_RATE_DATE
5129                     ,X_PROJ_COST_RATE_TYPE          =>      l_parent_task_rec.PROJ_COST_RATE_TYPE
5130                     ,X_PROJ_COST_EXCHANGE_RATE      =>      l_parent_task_rec.PROJ_COST_EXCHANGE_RATE
5131                     ,X_PROJ_COST_RATE_DATE          =>      l_parent_task_rec.PROJ_COST_RATE_DATE
5132                     ,X_TXN_CURRENCY_CODE            =>      l_parent_task_rec.TXN_CURRENCY_CODE
5133                     ,X_PROG_PA_PERIOD_NAME          =>      l_parent_task_rec.PROG_PA_PERIOD_NAME
5134                     ,X_PROG_GL_PERIOD_NAME          =>      l_parent_task_rec.PROG_GL_PERIOD_NAME
5135                     ,X_OTH_QUANTITY_TO_DATE         =>      l_parent_task_rec.oth_quantity_to_date
5136                     ,X_OTH_ETC_QUANTITY             =>      l_parent_task_rec.oth_etc_quantity
5137                     ,X_OTH_ACT_RAWCOST_TO_DATE_TC   =>  l_parent_task_rec.OTH_ACT_RAWCOST_TO_DATE_TC
5138                     ,X_OTH_ACT_RAWCOST_TO_DATE_FC   =>  l_OTH_ACT_RAWCOST_TO_DATE_FC
5139                     ,X_OTH_ACT_RAWCOST_TO_DATE_PC   =>  l_OTH_ACT_RAWCOST_TO_DATE_PC
5140                     ,X_OTH_ETC_RAWCOST_TC       =>  l_parent_task_rec.OTH_ETC_RAWCOST_TC
5141                     ,X_OTH_ETC_RAWCOST_FC       =>  l_ETC_RAWCost_FC
5142                     ,X_OTH_ETC_RAWCOST_PC       =>  l_ETC_RAWCost_PC
5143                     ,X_PPL_ACT_RAWCOST_TO_DATE_TC   =>  l_parent_task_rec.PPL_ACT_RAWCOST_TO_DATE_TC
5144                     ,X_PPL_ACT_RAWCOST_TO_DATE_FC   =>  l_PPL_ACT_RAWCOST_TO_DATE_FC
5145                     ,X_PPL_ACT_RAWCOST_TO_DATE_PC   =>  l_PPL_ACT_RAWCOST_TO_DATE_PC
5146                     ,X_PPL_ETC_RAWCOST_TC       =>  l_parent_task_rec.PPL_ETC_RAWCOST_TC
5147                     ,X_PPL_ETC_RAWCOST_FC       =>  l_PPL_ETC_RAWCOST_FC
5148                     ,X_PPL_ETC_RAWCOST_PC       =>  l_PPL_ETC_RAWCOST_PC
5149                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC =>  l_parent_task_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC
5150                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC =>  l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5151                     ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC =>  l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5152                     ,X_EQPMT_ETC_RAWCOST_TC     =>  l_parent_task_rec.EQPMT_ETC_RAWCOST_TC
5153                     ,X_EQPMT_ETC_RAWCOST_FC     =>  l_EQPMT_ETC_RAWCOST_FC
5154                     ,X_EQPMT_ETC_RAWCOST_PC     =>  l_EQPMT_ETC_RAWCOST_PC
5155                     ,X_SP_OTH_ACT_RAWCOST_TODATE_TC =>  null
5156                     ,X_SP_OTH_ACT_RAWCOST_TODATE_FC =>  null
5157                     ,X_SP_OTH_ACT_RAWCOST_TODATE_PC =>  null
5158                     ,X_SUBPRJ_PPL_ACT_RAWCOST_TC    =>  null
5159                     ,X_SUBPRJ_PPL_ACT_RAWCOST_FC    =>  null
5160                     ,X_SUBPRJ_PPL_ACT_RAWCOST_PC    =>  null
5161                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC  =>  null
5162                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC  =>  null
5163                     ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC  =>  null
5164                     ,X_SUBPRJ_OTH_ETC_RAWCOST_TC    =>  null
5165                     ,X_SUBPRJ_OTH_ETC_RAWCOST_FC    =>  null
5166                     ,X_SUBPRJ_OTH_ETC_RAWCOST_PC    =>  null
5167                     ,X_SUBPRJ_PPL_ETC_RAWCOST_TC    =>  null
5168                     ,X_SUBPRJ_PPL_ETC_RAWCOST_FC    =>  null
5169                     ,X_SUBPRJ_PPL_ETC_RAWCOST_PC    =>  null
5170                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC  =>  null
5171                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC  =>  null
5172                     ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC  =>  null
5173                     );
5174 
5175                     -- FPM Dev CR 6
5176                     IF Fnd_Msg_Pub.count_msg > 0 THEN
5177                         RAISE  FND_API.G_EXC_ERROR;
5178                     END IF;
5179                   ELSE -- IF l_mode = 'U' THEN
5180                       BEGIN
5181                         SELECT 'X'
5182                         INTO l_dummy
5183                         FROM pa_progress_rollup
5184                         WHERE project_id =  l_c1rec.parent_project_id
5185                         AND object_id = l_c1rec.parent_task_id
5186                         AND object_type = 'PA_TASKS'
5187                         AND structure_type = 'WORKPLAN'
5188                         AND structure_version_id is NULL
5189                         AND trunc(as_of_date) > p_as_of_date
5190                         AND current_flag = 'Y';
5191 
5192                         l_current_flag := 'N';
5193                       EXCEPTION
5194                         WHEN NO_DATA_FOUND THEN
5195                             l_current_flag := 'Y';
5196 
5197                         UPDATE pa_progress_rollup
5198                         SET current_flag = 'N'
5199                         WHERE project_id =  l_c1rec.parent_project_id
5200                         AND object_id = l_c1rec.parent_task_id
5201                         AND object_type = 'PA_TASKS'
5202                         AND structure_type = 'WORKPLAN'
5203                         AND structure_version_id is NULL
5204                         AND current_flag = 'Y';
5205                       END;
5206                       --bug 4033869
5207                                           --derive as of date for parent task relative to p_as_of_date
5208                       l_parent_as_of_date := pa_progress_utils.get_next_progress_cycle(
5209                                                      p_project_id => l_c1rec.parent_project_id
5210                                                     ,p_task_id => l_c1rec.parent_task_id
5211                                                     ,p_start_date => p_as_of_date);
5212                       --End bug 4033869
5213                       PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
5214                            X_PROGRESS_ROLLUP_ID              => l_progress_rollup_id
5215                           ,X_PROJECT_ID                      => l_c1rec.parent_project_id
5216                           ,X_OBJECT_ID                       => l_c1rec.parent_task_id
5217                           ,X_OBJECT_TYPE                     => 'PA_TASKS'
5218                           ,X_AS_OF_DATE                      => l_parent_as_of_date    --bug 4033869
5219                           ,X_OBJECT_VERSION_ID               => l_c1rec.parent_task_version_id
5220                           ,X_LAST_UPDATE_DATE                => SYSDATE
5221                           ,X_LAST_UPDATED_BY                 => l_user_id
5222                           ,X_CREATION_DATE                   => SYSDATE
5223                           ,X_CREATED_BY                      => l_user_id
5224                           ,X_PROGRESS_STATUS_CODE            => null
5225                           ,X_LAST_UPDATE_LOGIN               => l_login_id
5226                           ,X_INCREMENTAL_WORK_QTY            => null
5227                           ,X_CUMULATIVE_WORK_QTY             => null
5228                           ,X_BASE_PERCENT_COMPLETE           => null
5229                           ,X_EFF_ROLLUP_PERCENT_COMP         => l_eff_rollup_prcnt_comp
5230                           ,X_COMPLETED_PERCENTAGE            => null
5231                           ,X_ESTIMATED_START_DATE            => l_estimated_start_date
5232                           ,X_ESTIMATED_FINISH_DATE           => l_estimated_finish_date
5233                           ,X_ACTUAL_START_DATE               => l_actual_start_date
5234                           ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date
5235                           ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
5236                           ,X_BASE_PERCENT_COMP_DERIV_CODE    => null
5237                           ,X_BASE_PROGRESS_STATUS_CODE       => null
5238                           ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_progress_status
5239                           ,x_percent_complete_id             => null
5240                           ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
5241                           ,X_PROJ_ELEMENT_ID                 => l_c1rec.parent_task_id
5242                           ,X_STRUCTURE_VERSION_ID            => null
5243                           ,X_PPL_ACT_EFFORT_TO_DATE      => l_PPL_ACT_EFFORT_TO_DATE
5244                           ,X_EQPMT_ACT_EFFORT_TO_DATE    => l_EQPMT_ACT_EFFORT_TO_DATE
5245                           ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
5246                           ,X_OTH_ACT_COST_TO_DATE_TC         => l_parent_task_rec.OTH_ACT_COST_TO_DATE_TC
5247                           ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
5248                           ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
5249                           ,X_OTH_ETC_COST_TC                 => l_parent_task_rec.OTH_ETC_COST_TC
5250                           ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
5251                           ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
5252                           ,X_PPL_ACT_COST_TO_DATE_TC         => l_parent_task_rec.PPL_ACT_COST_TO_DATE_TC
5253                           ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
5254                           ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
5255                           ,X_PPL_ETC_COST_TC                 => l_parent_task_rec.PPL_ETC_COST_TC
5256                           ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
5257                           ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
5258                           ,X_EQPMT_ACT_COST_TO_DATE_TC       => l_parent_task_rec.EQPMT_ACT_COST_TO_DATE_TC
5259                           ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
5260                           ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
5261                           ,X_EQPMT_ETC_COST_TC               => l_parent_task_rec.EQPMT_ETC_COST_TC
5262                           ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
5263                           ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
5264                           ,X_EARNED_VALUE                    => l_bcwp
5265                           ,X_TASK_WT_BASIS_CODE              => l_task_weight_basis_code
5266                           ,X_SUBPRJ_PPL_ACT_EFFORT           => null
5267                           ,X_SUBPRJ_EQPMT_ACT_EFFORT         => null
5268                           ,X_SUBPRJ_PPL_ETC_EFFORT           => null
5269                           ,X_SUBPRJ_EQPMT_ETC_EFFORT         => null
5270                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
5271                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => null
5272                           ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => null
5273                           ,X_SUBPRJ_PPL_ACT_COST_TC          => null
5274                           ,X_SUBPRJ_PPL_ACT_COST_FC          => null
5275                           ,X_SUBPRJ_PPL_ACT_COST_PC          => null
5276                           ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
5277                           ,X_SUBPRJ_EQPMT_ACT_COST_FC        => null
5278                           ,X_SUBPRJ_EQPMT_ACT_COST_PC        => null
5279                           ,X_SUBPRJ_OTH_ETC_COST_TC          => null
5280                           ,X_SUBPRJ_OTH_ETC_COST_FC          => null
5281                           ,X_SUBPRJ_OTH_ETC_COST_PC          => null
5282                           ,X_SUBPRJ_PPL_ETC_COST_TC          => null
5283                           ,X_SUBPRJ_PPL_ETC_COST_FC          => null
5284                           ,X_SUBPRJ_PPL_ETC_COST_PC          => null
5285                           ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
5286                           ,X_SUBPRJ_EQPMT_ETC_COST_FC        => null
5287                           ,X_SUBPRJ_EQPMT_ETC_COST_PC        => null
5288                           ,X_SUBPRJ_EARNED_VALUE             => null
5289                           ,X_CURRENT_FLAG                    => l_current_flag
5290                           ,X_PROJFUNC_COST_RATE_TYPE         => l_sub_project_rec.PROJFUNC_COST_RATE_TYPE
5291                           ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_sub_project_rec.PROJFUNC_COST_EXCHANGE_RATE
5292                               ,X_PROJFUNC_COST_RATE_DATE         => l_sub_project_rec.PROJFUNC_COST_RATE_DATE
5293                           ,X_PROJ_COST_RATE_TYPE             => l_sub_project_rec.PROJ_COST_RATE_TYPE
5294                               ,X_PROJ_COST_EXCHANGE_RATE         => l_sub_project_rec.PROJ_COST_EXCHANGE_RATE
5295                               ,X_PROJ_COST_RATE_DATE             => l_sub_project_rec.PROJ_COST_RATE_DATE
5296                               ,X_TXN_CURRENCY_CODE               => l_sub_project_rec.TXN_CURRENCY_CODE
5297                               ,X_PROG_PA_PERIOD_NAME             => l_sub_project_rec.PROG_PA_PERIOD_NAME
5298                               ,X_PROG_GL_PERIOD_NAME             => l_sub_project_rec.PROG_GL_PERIOD_NAME
5299                               ,X_OTH_QUANTITY_TO_DATE            => null
5300                               ,X_OTH_ETC_QUANTITY                => null
5301                               ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
5302                               ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
5303                               ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
5304                               ,X_OTH_ETC_RAWCOST_TC      => null
5305                               ,X_OTH_ETC_RAWCOST_FC      => l_ETC_RAWCost_FC
5306                               ,X_OTH_ETC_RAWCOST_PC      => l_ETC_RAWCost_PC
5307                               ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
5308                               ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
5309                               ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
5310                               ,X_PPL_ETC_RAWCOST_TC      => null
5311                               ,X_PPL_ETC_RAWCOST_FC      => l_PPL_ETC_RAWCOST_FC
5312                               ,X_PPL_ETC_RAWCOST_PC      => l_PPL_ETC_RAWCOST_PC
5313                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
5314                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
5315                               ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
5316                               ,X_EQPMT_ETC_RAWCOST_TC        => null
5317                               ,X_EQPMT_ETC_RAWCOST_FC        => l_EQPMT_ETC_RAWCOST_FC
5318                               ,X_EQPMT_ETC_RAWCOST_PC        => l_EQPMT_ETC_RAWCOST_PC
5319                               ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => null
5320                               ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => null
5321                               ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => null
5322                               ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => null
5323                               ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => null
5324                               ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => null
5325                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => null
5326                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => null
5327                               ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => null
5328                               ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => null
5329                               ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => null
5330                               ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => null
5331                               ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => null
5332                               ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => null
5333                               ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => null
5334                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => null
5335                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => null
5336                               ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => null
5337                           );
5338                   END IF;
5339                 */
5340                   -- Call rollup_progress_pvt api for the parent project.
5341 
5342                  IF g1_debug_mode  = 'Y' THEN
5343                     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Done with Insert/Update, Calling Rollup', x_Log_Level=> 3);
5344                  END IF;
5345                     -- Bug 4097710 : Changed the API from PUB to PVT.
5346                     -- It is not good idea to call PUB APi from PVT
5347 
5348                   PA_PROGRESS_PVT.ROLLUP_PROGRESS_PVT(
5349                      p_init_msg_list             => p_init_msg_list
5350                     ,p_commit                    => p_commit
5351                     ,p_calling_module        => l_calling_module
5352                     ,p_validate_only             => p_validate_only
5353                     ,p_project_id                => l_c1rec.parent_project_id
5354                     ,p_object_type           => 'PA_TASKS'
5355                     ,p_object_id                 => l_c1rec.parent_task_id
5356                     ,p_object_version_id         => l_c1rec.parent_task_version_id
5357                     ,p_task_version_id       => l_c1rec.parent_task_version_id
5358                     ,p_structure_version_id      => l_c1rec.parent_structure_ver_id
5359                     ,p_structure_type            => 'WORKPLAN'
5360                     ,p_wp_rollup_method      => l_task_weight_basis_code
5361                     ,p_as_of_date                => l_parent_as_of_date   --bug 4033869
5362                     ,p_lowest_level_task         => 'Y'  -- Bug 4392189
5363                     ,x_return_status             => l_return_status
5364                     ,x_msg_count                 => l_msg_count
5365                     ,x_msg_data                  => l_msg_data);
5366 
5367                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5368                     x_msg_data := l_msg_data;
5369                     x_return_status := 'E';
5370                     x_msg_count := l_msg_count;
5371                     RAISE  FND_API.G_EXC_ERROR;
5372                 END IF;
5373 
5374                 -- 4392189 : Added call of ROLLUP_FUTURE_PROGRESS_PVT
5375 
5376                 PA_PROGRESS_PVT.ROLLUP_FUTURE_PROGRESS_PVT(
5377                       p_project_id               => l_c1rec.parent_project_id
5378                      ,P_OBJECT_TYPE              => 'PA_TASKS'
5379                      ,P_OBJECT_ID                => l_c1rec.parent_task_id
5380                      ,p_object_version_id        => l_c1rec.parent_task_version_id
5381                      ,p_as_of_date               => l_parent_as_of_date
5382                      ,p_lowest_level_task        => 'Y'
5383                      ,p_calling_module           => l_calling_module
5384                      ,p_structure_type           => 'WORKPLAN'
5385                      ,p_structure_version_id     => l_c1rec.parent_structure_ver_id
5386                      ,p_wp_rollup_method         => l_task_weight_basis_code
5387                      ,x_return_status            => l_return_status
5388                      ,x_msg_count                => l_msg_count
5389                      ,x_msg_data                 => l_msg_data
5390                    );
5391 
5392                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5393                     x_msg_data := l_msg_data;
5394                     x_return_status := 'E';
5395                     x_msg_count := l_msg_count;
5396                     RAISE  FND_API.G_EXC_ERROR;
5397                 END IF;
5398 
5399                          --  END IF; -- IF (l_base_prcnt_comp_drv_code = 'COST' or l_base_prcnt_comp_drv_code = 'EFFORT')
5400             END IF; -- p_structure_type = 'WORKPLAN'
5401 
5402                         --bug 4033869
5403                 IF g1_debug_mode  = 'Y' THEN
5404                            pa_debug.write(x_Module=>'PA_PROGRESS_PVT.PROGRAM_ROLLUP_PVT', x_Msg => 'Calling program_rollup_pvt in recursion', x_Log_Level=> 3);
5405                         END IF;
5406             -- Bug 4097710 : Changed the API from PUB to PVT.
5407             -- It is not good idea to call PUB APi from PVT
5408                         pa_progress_pvt.program_rollup_pvt(
5409                              p_init_msg_list        => 'F'
5410                             ,p_calling_module       => p_calling_module  --4492493
5411                             ,p_commit               => 'F'
5412                             ,p_validate_only        => 'F'
5413                             ,p_project_id           => l_c1rec.parent_project_id
5414                             ,p_as_of_date           => p_as_of_date
5415                             ,p_structure_type       => p_structure_type
5416                             ,p_structure_ver_id     => l_c1rec.parent_structure_ver_id
5417                             ,x_return_status        => l_return_status
5418                             ,x_msg_count            => l_msg_count
5419                             ,x_msg_data             => l_msg_data);
5420                        IF g1_debug_mode  = 'Y' THEN
5421                            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);
5422                        END IF;
5423 
5424                    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5425               x_msg_data := l_msg_data;
5426               x_return_status := 'E';
5427               x_msg_count := l_msg_count;
5428               RAISE  FND_API.G_EXC_ERROR;
5429                END IF;
5430                        --end bug 4033869
5431                     end if;   ---4492493
5432                 END LOOP;
5433         CLOSE C1;
5434 
5435         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5436                 x_msg_data := l_msg_data;
5437                 x_return_status := 'E';
5438                 x_msg_count := l_msg_count;
5439                 RAISE  FND_API.G_EXC_ERROR;
5440         END IF;
5441 
5442         IF (p_commit = FND_API.G_TRUE) THEN
5443                 COMMIT;
5444         END IF;
5445 
5446 
5447 EXCEPTION
5448     when FND_API.G_EXC_ERROR then
5449       if p_commit = FND_API.G_TRUE then
5450          rollback to PROGRAM_ROLLUP_PVT2;
5451       end if;
5452       x_return_status := FND_API.G_RET_STS_ERROR;
5453     when FND_API.G_EXC_UNEXPECTED_ERROR then
5454       if p_commit = FND_API.G_TRUE then
5455          rollback to PROGRAM_ROLLUP_PVT2;
5456       end if;
5457       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5458       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5459                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5460                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5461     when OTHERS then
5462       if p_commit = FND_API.G_TRUE then
5463          rollback to PROGRAM_ROLLUP_PVT2;
5464       end if;
5465       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5466       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
5467                               p_procedure_name => 'PROGRAM_ROLLUP_PVT',
5468                               p_error_text     => SUBSTRB(SQLERRM,1,120));
5469       raise;
5470 END program_rollup_pvt;
5471 
5472 -- Bug 3614828 : Created this procedure for partial rollup.
5473 -- Start of comments
5474 --      API name        : ASGN_DLV_TO_TASK_ROLLUP_PVT
5475 --      Type            : Private
5476 --      Pre-reqs        : None.
5477 --      Purpose         : This API is intdended to be called for Assignment, Deliverables in Task Progress Details page when user clicks Recalculate button
5478 --                      : This does partial rollup of working progress records
5479 --      History         : 15-JUNE-04  amksingh   Rewritten For FPM Development Bug 3614828
5480 -- End of comments
5481 
5482 PROCEDURE ASGN_DLV_TO_TASK_ROLLUP_PVT(
5483  p_api_version                          IN      NUMBER          :=1.0
5484 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_FALSE -- Since it is a private API so false
5485 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
5486 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
5487 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
5488 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
5489 ,p_debug_mode                           IN      VARCHAR2        :='N'
5490 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5491 ,p_project_id                           IN      NUMBER
5492 ,p_task_id                              IN      NUMBER
5493 ,p_task_version_id                      IN      NUMBER
5494 ,p_as_of_date                           IN      DATE
5495 ,p_structure_version_id                 IN      NUMBER
5496 ,p_wp_rollup_method                     IN      VARCHAR2        := 'COST'
5497 ,x_return_status                        OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5498 ,x_msg_count                            OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
5499 ,x_msg_data                             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5500 )
5501  IS
5502 
5503    l_api_name                   CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT'                           ;
5504    l_api_version                CONSTANT NUMBER      := 1.0                                                     ;
5505    l_return_status              VARCHAR2(1)                                                                     ;
5506    l_msg_count                  NUMBER                                                                          ;
5507    l_msg_data                   VARCHAR2(250)                                                                   ;
5508    l_data                       VARCHAR2(250)                                                                   ;
5509    l_msg_index_out              NUMBER                                                                          ;
5510    l_error_msg_code             VARCHAR2(250)                                                                   ;
5511    l_user_id                    NUMBER := FND_GLOBAL.USER_ID                                                    ;
5512    l_login_id                   NUMBER := FND_GLOBAL.LOGIN_ID                                                   ;
5513    l_lowest_task                VARCHAR2(1)                                                                     ;
5514    l_published_structure        VARCHAR2(1)                                                                     ;
5515    l_task_version_id            NUMBER                                                                          ;
5516    l_rollup_table1              PA_SCHEDULE_OBJECTS_PVT.PA_SCHEDULE_OBJECTS_TBL_TYPE                            ;
5517    l_index                      NUMBER   := 0                                                                   ;
5518    l_parent_count               NUMBER   := 0                                                                   ;
5519    l_process_number             NUMBER                                                                          ;
5520    j                            NUMBER                                                                          ;
5521    l_wbs_level                  NUMBER                                                                          ;
5522    l_action_allowed             VARCHAR2(1)                                                                     ;
5523    l_sharing_Enabled            VARCHAR2(1)                                                                     ;
5524    L_TASK_DERIVATION_CODE       pa_proj_elements.base_percent_comp_deriv_code%TYPE                              ;
5525    l_split_workplan             VARCHAR2(1)                                                                     ;
5526    l_structure_version_id       NUMBER                                                                          ;
5527    g1_debug_mode                VARCHAR2(1)                                                                     ;
5528    l_Rollup_Method              pa_proj_progress_attr.task_weight_basis_code%TYPE                               ;
5529 
5530 
5531    --This cursor selects the given task.
5532    CURSOR cur_tasks( c_task_ver_id NUMBER )
5533    IS
5534        SELECT     obj.object_id_from1
5535                 , obj.object_type_from parent_object_type
5536                 , ppev.wbs_level-1 parent_wbs_level
5537                 , ppev.element_version_id object_id_to1
5538                 , ppev.object_type object_type
5539                 , ppev.wbs_level wbs_level
5540                 , obj.weighting_percentage
5541                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5542                 , ppr.completed_percentage override_percent_complete
5543                 , ppr.base_percent_complete
5544                 , ppr.actual_start_date
5545                 , ppr.actual_finish_date
5546                 , ppr.estimated_start_date
5547                 , ppr.estimated_finish_date
5548                 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5549                 , pps2.project_status_weight override_weight2 ---override progress status code
5550                 , pps3.project_status_weight base_weight3     --base prog status
5551                 , ppr.ESTIMATED_REMAINING_EFFORT
5552                 , to_number( null ) task_weight4       --task status
5553                 , to_char(null) status_code
5554                 , ppev.proj_element_id
5555                 , ppr.STRUCTURE_TYPE
5556                 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5557                 , ppr.PPL_ACT_EFFORT_TO_DATE
5558                 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5559                 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5560                 , ppr.EQPMT_ETC_EFFORT
5561                 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5562                 , ppr.OTH_ACT_COST_TO_DATE_TC
5563                 , ppr.OTH_ACT_COST_TO_DATE_PC
5564                 , ppr.OTH_ACT_COST_TO_DATE_FC
5565                 , ppr.OTH_ETC_COST_TC
5566                 , ppr.OTH_ETC_COST_PC
5567                 , ppr.OTH_ETC_COST_FC
5568                 , ppr.PPL_ACT_COST_TO_DATE_TC
5569                 , ppr.PPL_ACT_COST_TO_DATE_PC
5570                 , ppr.PPL_ACT_COST_TO_DATE_FC
5571                 , ppr.PPL_ETC_COST_TC
5572                 , ppr.PPL_ETC_COST_PC
5573                 , ppr.PPL_ETC_COST_FC
5574                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5575                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5576                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5577                 , 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
5578                 , 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
5579                 , 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
5580                 , ppr.EQPMT_ETC_COST_TC
5581                 , ppr.EQPMT_ETC_COST_PC
5582                 , ppr.EQPMT_ETC_COST_FC
5583                 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5584                 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5585                 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5586 --Bug 3614828 Begin
5587                 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5588                 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5589                 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5590                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5591                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5592                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5593                 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5594                 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5595                 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5596                 , ppr.OTH_ETC_RAWCost_TC
5597                 , ppr.OTH_ETC_RAWCost_PC
5598                 , ppr.OTH_ETC_RAWCost_FC
5599                 , ppr.PPL_ETC_RAWCOST_TC
5600                 , ppr.PPL_ETC_RAWCOST_PC
5601                 , ppr.PPL_ETC_RAWCOST_FC
5602                 , ppr.EQPMT_ETC_RAWCOST_TC
5603                 , ppr.EQPMT_ETC_RAWCOST_PC
5604                 , ppr.EQPMT_ETC_RAWCOST_FC
5605 --Bug 3614828 End
5606                 , ppr.SUBPRJ_PPL_ACT_EFFORT
5607                 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5608                 , ppr.SUBPRJ_PPL_ETC_EFFORT
5609                 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5610                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC
5611                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC
5612                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC
5613                 , ppr.SUBPRJ_PPL_ACT_COST_TC
5614                 , ppr.SUBPRJ_PPL_ACT_COST_FC
5615                 , ppr.SUBPRJ_PPL_ACT_COST_PC
5616                 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5617                 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5618                 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5619                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5620                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5621                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5622                 , ppr.SUBPRJ_OTH_ETC_COST_TC
5623                 , ppr.SUBPRJ_OTH_ETC_COST_FC
5624                 , ppr.SUBPRJ_OTH_ETC_COST_PC
5625                 , ppr.SUBPRJ_PPL_ETC_COST_TC
5626                 , ppr.SUBPRJ_PPL_ETC_COST_FC
5627                 , ppr.SUBPRJ_PPL_ETC_COST_PC
5628                 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5629                 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
5630                 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
5631                 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
5632                 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
5633                 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
5634                 , ppr.SUBPRJ_EARNED_VALUE
5635                 , ppr.CURRENT_FLAG
5636                 , ppr.PROJFUNC_COST_RATE_TYPE
5637                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
5638                 , ppr.PROJFUNC_COST_RATE_DATE
5639                 , ppr.PROJ_COST_RATE_TYPE
5640                 , ppr.PROJ_COST_EXCHANGE_RATE
5641                 , ppr.PROJ_COST_RATE_DATE
5642                 , ppr.TXN_CURRENCY_CODE
5643                 , ppr.PROG_PA_PERIOD_NAME
5644                 , ppr.PROG_GL_PERIOD_NAME
5645                 , 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
5646                 , 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
5647                 , null earned_value
5648 		, ppr.Oth_quantity_to_date
5649 		, ppr.Oth_etc_quantity
5650 		-- 4533112 : Added base_progress_status_code
5651 		, decode(ppr.base_progress_status_code, 'Y' , 'Y', 'N') base_progress_status_code
5652        FROM pa_proj_element_versions ppev,
5653             pa_object_relationships  obj,
5654             pa_progress_rollup ppr,
5655             pa_project_statuses pps1,
5656             pa_project_statuses pps2,
5657             pa_project_statuses pps3,
5658         pa_proj_elements ppe -- 4392189
5659        WHERE ppev.element_version_id = c_task_ver_id
5660        AND ppev.element_version_id = obj.object_id_to1
5661        AND obj.relationship_type = 'S'
5662        AND ppev.object_type = 'PA_TASKS'
5663        AND ppev.proj_element_id = ppe.proj_element_id -- 4392189
5664        AND ppe.link_task_flag <> 'Y' -- 4392189
5665        AND ppr.project_id = ppev.project_id
5666        AND ppr.object_id = ppev.proj_element_id
5667        AND ppr.proj_element_id = ppev.proj_element_id -- Bug 3764224
5668 --       AND ppr.as_of_date = trunc(p_as_of_date)
5669        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
5670        -- It is to select only the rollup record till passed as of date
5671        AND ppr.as_of_date = (SELECT max(as_of_date)
5672                  FROM pa_progress_rollup
5673                  WHERE project_id = p_project_id
5674                  AND object_id = ppev.proj_element_id
5675                  AND proj_element_id = ppev.proj_element_id
5676                  AND object_type = 'PA_TASKS'
5677                  AND structure_type = 'WORKPLAN'
5678                  AND structure_version_id is null
5679                  AND as_of_date <= p_as_of_date
5680                 )
5681         AND (ppr.current_flag = 'W'
5682            OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
5683            AND NOT EXISTS (select 1
5684                            from pa_progress_rollup ppc1
5685                           where ppc1.project_id = p_project_id
5686                             and ppc1.object_id = ppev.proj_element_id
5687                             and ppc1.proj_element_id = ppev.proj_element_id
5688                             and ppc1.object_Type = 'PA_TASKS'
5689                             and ppc1.structure_type = 'WORKPLAN'
5690                 and ppc1.as_of_date <= p_as_of_date
5691                             and ppc1.structure_version_id is null
5692                             and ppc1.current_flag = 'W')))
5693 --       AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5694 --                              ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */)
5695          AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
5696          AND ppr.progress_status_code = pps2.project_status_code(+)
5697          AND ppr.base_progress_status_code = pps3.project_status_code(+)
5698          AND ppr.structure_type = 'WORKPLAN'
5699          AND ppr.structure_version_id is null
5700 --         AND ppr.current_flag = 'W'     --bug 3879461
5701 UNION ALL
5702        SELECT to_number(null) object_id_from1
5703                 , ppev.object_type parent_object_type
5704                 , wbs_level parent_wbs_level
5705                 , element_version_id object_id_to1
5706                 , ppev.object_type object_type
5707                 , wbs_level wbs_level
5708                 , to_number( null ) weighting_percentage
5709                 , to_number(null) rollup_completed_percentage
5710                 , to_number(null) override_percent_complete
5711                 , to_number(null) base_percent_complete
5712                 , to_date(null) actual_start_date
5713                 , to_date(null) actual_finish_date
5714                 , to_date(null) estimated_start_date
5715                 , to_date(null) estimated_finish_date
5716                 , to_number(null) rollup_weight1 ---rollup progress status code
5717                 , to_number(null) override_weight2 ---override progress status code
5718                 , to_number(null) base_weight3     --base prog status
5719                 , to_number(null) ESTIMATED_REMAINING_EFFORT
5720                 , to_number( null ) task_weight4       --task status
5721                 , to_char(null) status_code
5722                 , ppev.proj_element_id
5723                 , to_char(null) STRUCTURE_TYPE
5724                 , to_number(null) rollup_proj_element_id
5725                 , to_number(null) PPL_ACT_EFFORT_TO_DATE
5726                 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
5727                 , to_number(null) total_act_effort_to_date
5728                 , to_number(null) EQPMT_ETC_EFFORT
5729                 , to_number(null) total_etc_effort
5730                 , to_number(null) OTH_ACT_COST_TO_DATE_TC
5731                 , to_number(null) OTH_ACT_COST_TO_DATE_PC
5732                 , to_number(null) OTH_ACT_COST_TO_DATE_FC
5733                 , to_number(null) OTH_ETC_COST_TC
5734                 , to_number(null) OTH_ETC_COST_PC
5735                 , to_number(null) OTH_ETC_COST_FC
5736                 , to_number(null) PPL_ACT_COST_TO_DATE_TC
5737                 , to_number(null) PPL_ACT_COST_TO_DATE_PC
5738                 , to_number(null) PPL_ACT_COST_TO_DATE_FC
5739                 , to_number(null) PPL_ETC_COST_TC
5740                 , to_number(null) PPL_ETC_COST_PC
5741                 , to_number(null) PPL_ETC_COST_FC
5742                 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
5743                 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
5744                 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
5745                 , to_number(null) total_act_cost_to_date_tc
5746                 , to_number(null) total_act_cost_to_date_pc
5747                 , to_number(null) total_act_cost_to_date_fc
5748                 , to_number(null) EQPMT_ETC_COST_TC
5749                 , to_number(null) EQPMT_ETC_COST_PC
5750                 , to_number(null) EQPMT_ETC_COST_FC
5751                 , to_number(null) total_etc_cost_tc
5752                 , to_number(null) total_etc_cost_pc
5753                 , to_number(null) total_etc_cost_fc
5754 --Bug 3614828 Begin
5755                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
5756                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
5757                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
5758                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
5759                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
5760                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
5761                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
5762                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
5763                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
5764                 , to_number(null) OTH_ETC_RAWCost_TC
5765                 , to_number(null) OTH_ETC_RAWCost_PC
5766                 , to_number(null) OTH_ETC_RAWCost_FC
5767                 , to_number(null) PPL_ETC_RAWCOST_TC
5768                 , to_number(null) PPL_ETC_RAWCOST_PC
5769                 , to_number(null) PPL_ETC_RAWCOST_FC
5770                 , to_number(null) EQPMT_ETC_RAWCOST_TC
5771                 , to_number(null) EQPMT_ETC_RAWCOST_PC
5772                 , to_number(null) EQPMT_ETC_RAWCOST_FC
5773 --Bug 3614828 End
5774                 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
5775                 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
5776                 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
5777                 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
5778                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_TC
5779                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_FC
5780                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_PC
5781                 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
5782                 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
5783                 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
5784                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
5785                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
5786                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
5787                 , to_number(null) total_subproj_act_cost_tc
5788                 , to_number(null) total_subproj_act_cost_pc
5789                 , to_number(null) total_subproj_act_cost_fc
5790                 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
5791                 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
5792                 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
5793                 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
5794                 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
5795                 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
5796                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
5797                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
5798                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
5799                 , to_number(null) total_subproj_etc_cost_tc
5800                 , to_number(null) total_subproj_etc_cost_pc
5801                 , to_number(null) total_subproj_etc_cost_fc
5802                 , to_number(null) SUBPRJ_EARNED_VALUE
5803                 , to_char(null) CURRENT_FLAG
5804                 , to_char(null) PROJFUNC_COST_RATE_TYPE
5805                 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
5806                 , to_date(null) PROJFUNC_COST_RATE_DATE
5807                 , to_char(null) PROJ_COST_RATE_TYPE
5808                 , to_number(null) PROJ_COST_EXCHANGE_RATE
5809                 , to_date(null) PROJ_COST_RATE_DATE
5810                 , to_char(null) TXN_CURRENCY_CODE
5811                 , to_char(null) PROG_PA_PERIOD_NAME
5812                 , to_char(null) PROG_GL_PERIOD_NAME
5813                 , 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
5814                 , 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
5815                 , null earned_value
5816 		, to_number(null) Oth_quantity_to_date
5817 		, to_number(null) Oth_etc_quantity
5818 		-- 4533112 : Added base_progress_status_code
5819 		, 'N' base_progress_status_code
5820        FROM pa_proj_element_versions ppev
5821        WHERE ppev.element_version_id = c_task_ver_id
5822        AND ppev.object_type = 'PA_TASKS'
5823        -- Bug 3879461 Begin
5824        AND NOT EXISTS (SELECT 1
5825                  FROM pa_progress_rollup
5826                  WHERE project_id = p_project_id
5827                  AND object_id = ppev.proj_element_id
5828                  AND proj_element_id = ppev.proj_element_id
5829                  AND object_type = 'PA_TASKS'
5830                  AND structure_type = 'WORKPLAN'
5831                  AND structure_version_id is null
5832                  AND as_of_date <= p_as_of_date
5833                 )
5834 --       AND pa_progress_utils.get_max_rollup_asofdate2(ppev.project_id,
5835 --                              ppev.proj_element_id, ppev.object_type,'WORKPLAN',null, ppev.proj_element_id/* Bug 3764224 */) IS NULL
5836        -- Bug 3879461 End
5837 -- Begin fix for Bug # 4032987.
5838 -- This query returns the progress of immediate sub-tasks of the input task.
5839 UNION ALL
5840        SELECT     obj.object_id_from1
5841                 , obj.object_type_from parent_object_type
5842                 , ppev1.wbs_level-1 parent_wbs_level
5843                 , ppev2.element_version_id object_id_to1
5844                 , ppev2.object_type object_type
5845                 , ppev2.wbs_level wbs_level
5846                 , obj.weighting_percentage
5847                 , ppr.EFF_ROLLUP_PERCENT_COMP rollup_completed_percentage
5848                 , ppr.completed_percentage override_percent_complete
5849                 , ppr.base_percent_complete
5850                 , ppr.actual_start_date
5851                 , ppr.actual_finish_date
5852                 , ppr.estimated_start_date
5853                 , ppr.estimated_finish_date
5854                 , pps1.project_status_weight rollup_weight1 ---rollup progress status code
5855                 , pps2.project_status_weight override_weight2 ---override progress status code
5856                 , pps3.project_status_weight base_weight3     --base prog status
5857                 , ppr.ESTIMATED_REMAINING_EFFORT
5858                 , to_number( null ) task_weight4       --task status
5859                 , to_char(null) status_code
5860                 , ppev2.proj_element_id
5861                 , ppr.STRUCTURE_TYPE
5862                 , ppr.PROJ_ELEMENT_ID rollup_proj_element_id
5863                 , ppr.PPL_ACT_EFFORT_TO_DATE
5864                 , ppr.EQPMT_ACT_EFFORT_TO_DATE
5865                 , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
5866                 , ppr.EQPMT_ETC_EFFORT
5867                 , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
5868                 , ppr.OTH_ACT_COST_TO_DATE_TC
5869                 , ppr.OTH_ACT_COST_TO_DATE_PC
5870                 , ppr.OTH_ACT_COST_TO_DATE_FC
5871                 , ppr.OTH_ETC_COST_TC
5872                 , ppr.OTH_ETC_COST_PC
5873                 , ppr.OTH_ETC_COST_FC
5874                 , ppr.PPL_ACT_COST_TO_DATE_TC
5875                 , ppr.PPL_ACT_COST_TO_DATE_PC
5876                 , ppr.PPL_ACT_COST_TO_DATE_FC
5877                 , ppr.PPL_ETC_COST_TC
5878                 , ppr.PPL_ETC_COST_PC
5879                 , ppr.PPL_ETC_COST_FC
5880                 , ppr.EQPMT_ACT_COST_TO_DATE_TC
5881                 , ppr.EQPMT_ACT_COST_TO_DATE_PC
5882                 , ppr.EQPMT_ACT_COST_TO_DATE_FC
5883                 , 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
5884                 , 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
5885                 , 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
5886                 , ppr.EQPMT_ETC_COST_TC
5887                 , ppr.EQPMT_ETC_COST_PC
5888                 , ppr.EQPMT_ETC_COST_FC
5889                 , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
5890                 , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
5891                 , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
5892                 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
5893                 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
5894                 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
5895                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
5896                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
5897                 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
5898                 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
5899                 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
5900                 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
5901                 , ppr.OTH_ETC_RAWCost_TC
5902                 , ppr.OTH_ETC_RAWCost_PC
5903                 , ppr.OTH_ETC_RAWCost_FC
5904                 , ppr.PPL_ETC_RAWCOST_TC
5905                 , ppr.PPL_ETC_RAWCOST_PC
5906                 , ppr.PPL_ETC_RAWCOST_FC
5907                 , ppr.EQPMT_ETC_RAWCOST_TC
5908                 , ppr.EQPMT_ETC_RAWCOST_PC
5909                 , ppr.EQPMT_ETC_RAWCOST_FC
5910                 , ppr.SUBPRJ_PPL_ACT_EFFORT
5911                 , ppr.SUBPRJ_EQPMT_ACT_EFFORT
5912                 , ppr.SUBPRJ_PPL_ETC_EFFORT
5913                 , ppr.SUBPRJ_EQPMT_ETC_EFFORT
5914                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC
5915                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC
5916                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC
5917                 , ppr.SUBPRJ_PPL_ACT_COST_TC
5918                 , ppr.SUBPRJ_PPL_ACT_COST_FC
5919                 , ppr.SUBPRJ_PPL_ACT_COST_PC
5920                 , ppr.SUBPRJ_EQPMT_ACT_COST_TC
5921                 , ppr.SUBPRJ_EQPMT_ACT_COST_FC
5922                 , ppr.SUBPRJ_EQPMT_ACT_COST_PC
5923                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_TC + ppr.SUBPRJ_PPL_ACT_COST_TC + ppr.SUBPRJ_EQPMT_ACT_COST_TC total_subproj_act_cost_tc
5924                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_PC + ppr.SUBPRJ_PPL_ACT_COST_PC + ppr.SUBPRJ_EQPMT_ACT_COST_PC total_subproj_act_cost_pc
5925                 , ppr.SUBPRJ_OTH_ACT_COST_TO_DATE_FC + ppr.SUBPRJ_PPL_ACT_COST_FC + ppr.SUBPRJ_EQPMT_ACT_COST_FC total_subproj_act_cost_fc
5926                 , ppr.SUBPRJ_OTH_ETC_COST_TC
5927                 , ppr.SUBPRJ_OTH_ETC_COST_FC
5928                 , ppr.SUBPRJ_OTH_ETC_COST_PC
5929                 , ppr.SUBPRJ_PPL_ETC_COST_TC
5930                 , ppr.SUBPRJ_PPL_ETC_COST_FC
5931                 , ppr.SUBPRJ_PPL_ETC_COST_PC
5932                 , ppr.SUBPRJ_EQPMT_ETC_COST_TC
5933                 , ppr.SUBPRJ_EQPMT_ETC_COST_FC
5934                 , ppr.SUBPRJ_EQPMT_ETC_COST_PC
5935                 , ppr.SUBPRJ_OTH_ETC_COST_TC + ppr.SUBPRJ_PPL_ETC_COST_TC + ppr.SUBPRJ_EQPMT_ETC_COST_TC total_subproj_etc_cost_tc
5936                 , ppr.SUBPRJ_OTH_ETC_COST_PC + ppr.SUBPRJ_PPL_ETC_COST_PC + ppr.SUBPRJ_EQPMT_ETC_COST_PC total_subproj_etc_cost_pc
5937                 , ppr.SUBPRJ_OTH_ETC_COST_FC + ppr.SUBPRJ_PPL_ETC_COST_FC + ppr.SUBPRJ_EQPMT_ETC_COST_FC total_subproj_etc_cost_fc
5938                 , ppr.SUBPRJ_EARNED_VALUE
5939                 , ppr.CURRENT_FLAG
5940                 , ppr.PROJFUNC_COST_RATE_TYPE
5941                 , ppr.PROJFUNC_COST_EXCHANGE_RATE
5942                 , ppr.PROJFUNC_COST_RATE_DATE
5943                 , ppr.PROJ_COST_RATE_TYPE
5944                 , ppr.PROJ_COST_EXCHANGE_RATE
5945                 , ppr.PROJ_COST_RATE_DATE
5946                 , ppr.TXN_CURRENCY_CODE
5947                 , ppr.PROG_PA_PERIOD_NAME
5948                 , ppr.PROG_GL_PERIOD_NAME
5949                 , 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
5950                 , 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
5951                 , null earned_value
5952 		, ppr.Oth_quantity_to_date
5953 		, ppr.Oth_etc_quantity
5954 		-- 4533112 : Added base_progress_status_code
5955 		, decode(ppr.base_progress_status_code,'Y','Y','N') base_progress_status_code
5956        FROM pa_proj_element_versions ppev1,
5957         pa_proj_element_versions ppev2,
5958             pa_object_relationships  obj,
5959             pa_progress_rollup ppr,
5960             pa_project_statuses pps1,
5961             pa_project_statuses pps2,
5962             pa_project_statuses pps3,
5963         pa_proj_elements ppe -- 4392189
5964        WHERE obj.object_id_from1 = c_task_ver_id
5965        AND obj.object_id_from1 = ppev1.element_version_id
5966        AND obj.object_id_to1 = ppev2.element_version_id
5967        AND obj.relationship_type = 'S'
5968        AND ppev1.object_type = 'PA_TASKS'
5969        AND ppev2.object_type = 'PA_TASKS'
5970        AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
5971        AND ppe.link_task_flag <> 'Y' -- 4392189
5972        AND ppr.project_id = ppev2.project_id
5973        AND ppr.object_id = ppev2.proj_element_id
5974        AND ppr.proj_element_id = ppev2.proj_element_id
5975        AND ppr.as_of_date = (SELECT max(as_of_date)
5976                  FROM pa_progress_rollup
5977                  WHERE project_id = p_project_id
5978                  AND object_id = ppev2.proj_element_id
5979                  AND proj_element_id = ppev2.proj_element_id
5980                  AND object_type = 'PA_TASKS'
5981                  AND structure_type = 'WORKPLAN'
5982                  AND structure_version_id is null
5983                  AND as_of_date <= p_as_of_date
5984                  )
5985         AND (ppr.current_flag = 'W'
5986            OR (ppr.current_flag IN( 'Y', 'N') -- Bug 4336720 : Added Y and N Both
5987            AND NOT EXISTS (select 1
5988                            from pa_progress_rollup ppc1
5989                           where ppc1.project_id = p_project_id
5990                             and ppc1.object_id = ppev2.proj_element_id
5991                             and ppc1.proj_element_id = ppev2.proj_element_id
5992                             and ppc1.object_Type = 'PA_TASKS'
5993                             and ppc1.structure_type = 'WORKPLAN'
5994                 and ppc1.as_of_date <= p_as_of_date
5995                             and ppc1.structure_version_id is null
5996                             and ppc1.current_flag = 'W')))
5997          AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
5998          AND ppr.progress_status_code = pps2.project_status_code(+)
5999          AND ppr.base_progress_status_code = pps3.project_status_code(+)
6000          AND ppr.structure_type = 'WORKPLAN'
6001          AND ppr.structure_version_id is null
6002 -- This query returns etc value = planned value when ther is no progress for the immediate sub-tasks.
6003 UNION ALL
6004        SELECT
6005         /*+ INDEX(pji_fm_xbs_accum_tmp1 pji_fm_xbs_accum_tmp1_n1)*/ -- Fix for Bug # 4162534.
6006          obj.object_id_from1 object_id_from1
6007                 , ppev1.object_type parent_object_type
6008                 , ppev1.wbs_level-1 parent_wbs_level
6009                 , ppev2.element_version_id object_id_to1
6010                 , ppev2.object_type object_type
6011                 , ppev2.wbs_level wbs_level
6012                 --, to_number( null ) weighting_percentage --bug 4191181
6013                 , obj.weighting_percentage weighting_percentage
6014                 , to_number(null) rollup_completed_percentage
6015                 , to_number(null) override_percent_complete
6016                 , to_number(null) base_percent_complete
6017                 , to_date(null) actual_start_date
6018                 , to_date(null) actual_finish_date
6019                 , to_date(null) estimated_start_date
6020                 , to_date(null) estimated_finish_date
6021                 , to_number(null) rollup_weight1 ---rollup progress status code
6022                 , to_number(null) override_weight2 ---override progress status code
6023                 , to_number(null) base_weight3     --base prog status
6024                 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) ESTIMATED_REMAINING_EFFORT
6025                 , to_number( null ) task_weight4       --task status
6026                 , to_char(null) status_code
6027                 , ppev2.proj_element_id
6028                 , to_char(null) STRUCTURE_TYPE
6029                 , to_number(null) rollup_proj_element_id
6030                 , to_number(null) PPL_ACT_EFFORT_TO_DATE
6031                 , to_number(null) EQPMT_ACT_EFFORT_TO_DATE
6032                 , to_number(null) total_act_effort_to_date
6033                 , pfxat.equipment_hours EQPMT_ETC_EFFORT
6034                 , (nvl(pfxat.LABOR_HOURS,0) + nvl(pfxat.EQUIPMENT_HOURS,0)) total_etc_effort
6035                 , to_number(null) OTH_ACT_COST_TO_DATE_TC
6036                 , to_number(null) OTH_ACT_COST_TO_DATE_PC
6037                 , to_number(null) OTH_ACT_COST_TO_DATE_FC
6038                 , (nvl(pfxat.txn_brdn_cost,0) - (nvl(pfxat.txn_labor_brdn_cost,0) + nvl(pfxat.txn_equip_brdn_cost,0))) OTH_ETC_COST_TC
6039                 , (nvl(pfxat.prj_brdn_cost,0) - (nvl(pfxat.prj_labor_brdn_cost,0) + nvl(pfxat.prj_equip_brdn_cost,0))) OTH_ETC_COST_PC
6040                 , (nvl(pfxat.pou_brdn_cost,0) - (nvl(pfxat.pou_labor_brdn_cost,0) + nvl(pfxat.pou_equip_brdn_cost,0))) OTH_ETC_COST_FC
6041                 , to_number(null) PPL_ACT_COST_TO_DATE_TC
6042                 , to_number(null) PPL_ACT_COST_TO_DATE_PC
6043                 , to_number(null) PPL_ACT_COST_TO_DATE_FC
6044                 , pfxat.txn_labor_brdn_cost PPL_ETC_COST_TC
6045                 , pfxat.prj_labor_brdn_cost PPL_ETC_COST_PC
6046                 , pfxat.pou_labor_brdn_cost PPL_ETC_COST_FC
6047                 , to_number(null) EQPMT_ACT_COST_TO_DATE_TC
6048                 , to_number(null) EQPMT_ACT_COST_TO_DATE_PC
6049                 , to_number(null) EQPMT_ACT_COST_TO_DATE_FC
6050                 , to_number(null) total_act_cost_to_date_tc
6051                 , to_number(null) total_act_cost_to_date_pc
6052                 , to_number(null) total_act_cost_to_date_fc
6053                 , pfxat.txn_equip_brdn_cost EQPMT_ETC_COST_TC
6054                 , pfxat.prj_equip_brdn_cost EQPMT_ETC_COST_PC
6055                 , pfxat.pou_equip_brdn_cost EQPMT_ETC_COST_FC
6056                 , pfxat.txn_brdn_cost total_etc_cost_tc
6057                 , pfxat.prj_brdn_cost total_etc_cost_pc
6058                 , pfxat.pou_brdn_cost total_etc_cost_fc
6059                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_TC
6060                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_PC
6061                 , to_number(null) OTH_ACT_RAWCOST_TO_DATE_FC
6062                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_TC
6063                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_PC
6064                 , to_number(null) EQPMT_ACT_RAWCOST_TO_DATE_FC
6065                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_TC
6066                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_PC
6067                 , to_number(null) PPL_ACT_RAWCOST_TO_DATE_FC
6068                 , (nvl(pfxat.txn_raw_cost,0) - (nvl(pfxat.txn_labor_raw_cost,0) + nvl(pfxat.txn_equip_raw_cost,0))) OTH_ETC_RAWCost_TC
6069                 , (nvl(pfxat.prj_raw_cost,0) - (nvl(pfxat.prj_labor_raw_cost,0) + nvl(pfxat.prj_equip_raw_cost,0))) OTH_ETC_RAWCost_PC
6070                 , (nvl(pfxat.pou_raw_cost,0) - (nvl(pfxat.pou_labor_raw_cost,0) + nvl(pfxat.pou_equip_raw_cost,0))) OTH_ETC_RAWCost_FC
6071                 , pfxat.txn_labor_raw_cost PPL_ETC_RAWCOST_TC
6072                 , pfxat.prj_labor_raw_cost PPL_ETC_RAWCOST_PC
6073                 , pfxat.pou_labor_raw_cost PPL_ETC_RAWCOST_FC
6074                 , pfxat.txn_equip_raw_cost EQPMT_ETC_RAWCOST_TC
6075                 , pfxat.prj_equip_raw_cost EQPMT_ETC_RAWCOST_PC
6076                 , pfxat.pou_equip_raw_cost EQPMT_ETC_RAWCOST_FC
6077                 , to_number(null) SUBPRJ_PPL_ACT_EFFORT
6078                 , to_number(null) SUBPRJ_EQPMT_ACT_EFFORT
6079                 , to_number(null) SUBPRJ_PPL_ETC_EFFORT
6080                 , to_number(null) SUBPRJ_EQPMT_ETC_EFFORT
6081                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_TC
6082                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_FC
6083                 , to_number(null) SUBPRJ_OTH_ACT_COST_TO_DATE_PC
6084                 , to_number(null) SUBPRJ_PPL_ACT_COST_TC
6085                 , to_number(null) SUBPRJ_PPL_ACT_COST_FC
6086                 , to_number(null) SUBPRJ_PPL_ACT_COST_PC
6087                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_TC
6088                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_FC
6089                 , to_number(null) SUBPRJ_EQPMT_ACT_COST_PC
6090                 , to_number(null) total_subproj_act_cost_tc
6091                 , to_number(null) total_subproj_act_cost_pc
6092                 , to_number(null) total_subproj_act_cost_fc
6093                 , to_number(null) SUBPRJ_OTH_ETC_COST_TC
6094                 , to_number(null) SUBPRJ_OTH_ETC_COST_FC
6095                 , to_number(null) SUBPRJ_OTH_ETC_COST_PC
6096                 , to_number(null) SUBPRJ_PPL_ETC_COST_TC
6097                 , to_number(null) SUBPRJ_PPL_ETC_COST_FC
6098                 , to_number(null) SUBPRJ_PPL_ETC_COST_PC
6099                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_TC
6100                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_FC
6101                 , to_number(null) SUBPRJ_EQPMT_ETC_COST_PC
6102                 , to_number(null) total_subproj_etc_cost_tc
6103                 , to_number(null) total_subproj_etc_cost_pc
6104                 , to_number(null) total_subproj_etc_cost_fc
6105                 , to_number(null) SUBPRJ_EARNED_VALUE
6106                 , to_char(null) CURRENT_FLAG
6107                 , to_char(null) PROJFUNC_COST_RATE_TYPE
6108                 , to_number(null) PROJFUNC_COST_EXCHANGE_RATE
6109                 , to_date(null) PROJFUNC_COST_RATE_DATE
6110                 , to_char(null) PROJ_COST_RATE_TYPE
6111                 , to_number(null) PROJ_COST_EXCHANGE_RATE
6112                 , to_date(null) PROJ_COST_RATE_DATE
6113                 , to_char(null) TXN_CURRENCY_CODE
6114                 , to_char(null) PROG_PA_PERIOD_NAME
6115                 , to_char(null) PROG_GL_PERIOD_NAME
6116                 , 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
6117                 , 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
6118                 , null earned_value
6119 		, to_number(null) Oth_quantity_to_date
6120 		, to_number(null) Oth_etc_quantity
6121 		-- 4533112 : Added base_progress_status_code
6122 		, 'N' base_progress_status_code
6123        FROM pa_proj_element_versions ppev1,
6124         pa_proj_element_versions ppev2,
6125         pa_object_relationships  obj,
6126         pji_fm_xbs_accum_tmp1 pfxat,
6127         pa_proj_elements ppe -- 4392189
6128        WHERE obj.object_id_from1 = c_task_ver_id
6129        AND obj.object_id_from1 = ppev1.element_version_id
6130        AND obj.object_id_to1 = ppev2.element_version_id
6131        AND obj.relationship_type = 'S'
6132        AND ppev2.proj_element_id = ppe.proj_element_id -- 4392189
6133        AND ppe.link_task_flag <> 'Y' -- 4392189
6134        AND ppev1.object_type = 'PA_TASKS'
6135        AND ppev2.object_type = 'PA_TASKS'
6136        AND pfxat.project_id(+) = ppev2.project_id
6137        AND pfxat.struct_version_id(+) = ppev2.parent_structure_version_id
6138        AND pfxat.project_element_id(+) = ppev2.proj_element_id
6139        AND pfxat.calendar_type(+) = 'A'
6140        AND pfxat.plan_version_id(+) > 0
6141        AND pfxat.txn_currency_code(+) is null
6142        AND NOT EXISTS (SELECT 1
6143                  FROM pa_progress_rollup
6144                  WHERE project_id = p_project_id
6145                  AND object_id = ppev2.proj_element_id
6146                  AND proj_element_id = ppev2.proj_element_id
6147                  AND object_type = 'PA_TASKS'
6148                  AND structure_type = 'WORKPLAN'
6149                  AND structure_version_id is null
6150                  AND as_of_date <= p_as_of_date
6151             )
6152 -- End fix for Bug # 4032987.
6153 ;
6154 
6155    --This cursor selects the task assignments of a given task.
6156    --sql id:14905993  bug:4871809
6157    CURSOR cur_assgn( c_task_id NUMBER, c_task_ver_id NUMBER, c_task_per_comp_deriv_method VARCHAR2 )
6158    IS
6159      SELECT asgn.task_version_id
6160         , 'PA_TASKS' parent_object_type
6161         , asgn.resource_assignment_id object_id_to1
6162         , asgn.task_version_id object_id_from1
6163         , 'PA_ASSIGNMENTS' object_type
6164         , asgn.resource_class_code
6165         , asgn.rate_based_flag
6166         , decode(asgn.rate_based_flag,'Y','EFFORT','N','COST') assignment_type
6167         , ppr.actual_start_date
6168         , ppr.actual_finish_date
6169         , ppr.estimated_start_date
6170         , ppr.estimated_finish_date
6171         --, ppr.ESTIMATED_REMAINING_EFFORT --bug 3977167
6172         , nvl(ppr.ESTIMATED_REMAINING_EFFORT,
6173           decode(asgn.resource_class_code,'PEOPLE',
6174                             decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6175                             nvl(asgn.planned_quantity,0) - nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))
6176           , 0)) ESTIMATED_REMAINING_EFFORT
6177         , ppr.STRUCTURE_VERSION_ID
6178         , ppr.STRUCTURE_TYPE
6179         , ppr.PROJ_ELEMENT_ID
6180         , ppr.PPL_ACT_EFFORT_TO_DATE
6181         , ppr.EQPMT_ACT_EFFORT_TO_DATE
6182         , ppr.PPL_ACT_EFFORT_TO_DATE + ppr.EQPMT_ACT_EFFORT_TO_DATE total_act_effort_to_date
6183         --, ppr.EQPMT_ETC_EFFORT --bug 3977167
6184         , nvl(ppr.EQPMT_ETC_EFFORT,
6185             decode(asgn.resource_class_code,'EQUIPMENT',
6186                             decode(sign(nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0)), -1, 0,
6187                             nvl(asgn.planned_quantity,0) - nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE, 0))
6188            , 0)) EQPMT_ETC_EFFORT
6189         , ppr.EQPMT_ETC_EFFORT + ppr.estimated_remaining_effort total_etc_effort
6190         , ppr.OTH_ACT_COST_TO_DATE_TC
6191         , ppr.OTH_ACT_COST_TO_DATE_PC
6192         , ppr.OTH_ACT_COST_TO_DATE_FC
6193         --, ppr.OTH_ETC_COST_TC  --bug 3977167
6194         --, ppr.OTH_ETC_COST_PC  --bug 3977167
6195         --, ppr.OTH_ETC_COST_FC  --bug 3977167
6196         , nvl(ppr.OTH_ETC_COST_TC,
6197               decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6198                      decode( sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6199                          nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_TC, 0))
6200           )) OTH_ETC_COST_TC
6201         ,nvl(ppr.OTH_ETC_COST_PC,
6202              decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6203                    decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6204                    nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_PC, 0))
6205           )) OTH_ETC_COST_PC
6206         , nvl(ppr.OTH_ETC_COST_FC,
6207             decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6208                 decode( sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6209                 nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.OTH_ACT_COST_TO_DATE_FC, 0))
6210            )) OTH_ETC_COST_FC
6211         , ppr.PPL_ACT_COST_TO_DATE_TC
6212         , ppr.PPL_ACT_COST_TO_DATE_PC
6213         , ppr.PPL_ACT_COST_TO_DATE_FC
6214         --, ppr.PPL_ETC_COST_TC  --bug 3977167
6215         --, ppr.PPL_ETC_COST_PC  --bug 3977167
6216         --, ppr.PPL_ETC_COST_FC  --bug 3977167
6217         , nvl(ppr.PPL_ETC_COST_TC,
6218                  decode(asgn.resource_class_code,'PEOPLE',
6219                            decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6220                                nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_TC, 0))
6221              ,0)) PPL_ETC_COST_TC
6222         , nvl(ppr.PPL_ETC_COST_PC,
6223                decode(asgn.resource_class_code,'PEOPLE',
6224                             decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6225                                nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_PC, 0))
6226              ,0)) PPL_ETC_COST_PC
6227         , nvl(ppr.PPL_ETC_COST_FC,
6228                   decode(asgn.resource_class_code,'PEOPLE',
6229                             decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6230                                    nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.PPL_ACT_COST_TO_DATE_FC, 0))
6231             ,0)) PPL_ETC_COST_FC
6232         , ppr.EQPMT_ACT_COST_TO_DATE_TC
6233         , ppr.EQPMT_ACT_COST_TO_DATE_PC
6234         , ppr.EQPMT_ACT_COST_TO_DATE_FC
6235         , 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
6236         , 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
6237         , 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
6238         --, ppr.EQPMT_ETC_COST_TC  --bug 3977167
6239         --, ppr.EQPMT_ETC_COST_PC  --bug 3977167
6240         --, ppr.EQPMT_ETC_COST_FC  --bug 3977167
6241         , nvl(ppr.EQPMT_ETC_COST_TC,
6242              decode(asgn.resource_class_code,'EQUIPMENT',
6243                   decode(sign(nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0)), -1, 0,
6244                          nvl(asgn.planned_bur_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_TC, 0))
6245             ,0)) EQPMT_ETC_COST_TC
6246         , nvl(ppr.EQPMT_ETC_COST_PC,
6247                 decode(asgn.resource_class_code,'EQUIPMENT',
6248                             decode(sign(nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0)), -1, 0,
6249                                    nvl(asgn.planned_bur_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC, 0))
6250              ,0)) EQPMT_ETC_COST_PC
6251         , nvl(ppr.EQPMT_ETC_COST_FC,
6252                      decode(asgn.resource_class_code,'EQUIPMENT',
6253                               decode(sign(nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0)), -1, 0,
6254                                    nvl(asgn.planned_bur_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_COST_TO_DATE_FC, 0))
6255            ,0)) EQPMT_ETC_COST_FC
6256         , ppr.OTH_ETC_COST_TC + ppr.PPL_ETC_COST_TC + ppr.EQPMT_ETC_COST_TC total_etc_cost_tc
6257         , ppr.OTH_ETC_COST_PC + ppr.PPL_ETC_COST_PC + ppr.EQPMT_ETC_COST_PC total_etc_cost_pc
6258         , ppr.OTH_ETC_COST_FC + ppr.PPL_ETC_COST_FC + ppr.EQPMT_ETC_COST_FC total_etc_cost_fc
6259 --Bug 3614828 Begin
6260         , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6261         , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6262         , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6263         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6264         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6265         , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6266         , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6267         , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6268         , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6269         --, ppr.OTH_ETC_RAWCost_TC  --bug 3977167
6270         --, ppr.OTH_ETC_RAWCost_PC  --bug 3977167
6271         --, ppr.OTH_ETC_RAWCost_FC  --bug 3977167
6272         , nvl(ppr.OTH_ETC_RAWCost_TC,
6273                          decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6274                                  decode( sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0)), -1, 0,
6275                                       nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_TC, 0))
6276            )) OTH_ETC_RAWCost_TC
6277         , nvl(ppr.OTH_ETC_RAWCost_PC,
6278                       decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6279                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0)), -1, 0,
6280                                       nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_PC, 0))
6281              )) OTH_ETC_RAWCost_PC
6282         , nvl(ppr.OTH_ETC_RAWCost_FC,
6283                          decode(asgn.resource_class_code,'PEOPLE', 0, 'EQUIPMENT', 0,
6284                                       decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0)), -1, 0,
6285                                              nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.OTH_ACT_RAWCOST_TO_DATE_FC, 0))
6286              )) OTH_ETC_RAWCost_FC
6287         --, ppr.PPL_ETC_RAWCOST_TC  --bug 3977167
6288         --, ppr.PPL_ETC_RAWCOST_PC  --bug 3977167
6289         --, ppr.PPL_ETC_RAWCOST_FC  --bug 3977167
6290         , nvl(ppr.PPL_ETC_RAWCOST_TC,
6291                      decode(asgn.resource_class_code,'PEOPLE',
6292                        decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6293                                nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_TC, 0))
6294                ,0)) PPL_ETC_RAWCOST_TC
6295         , nvl(ppr.PPL_ETC_RAWCOST_PC,
6296                    decode(asgn.resource_class_code,'PEOPLE',
6297                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6298                                         nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_PC, 0))
6299             ,0)) PPL_ETC_RAWCOST_PC
6300         , nvl(ppr.PPL_ETC_RAWCOST_FC,
6301                   decode(asgn.resource_class_code,'PEOPLE',
6302                          decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6303                                  nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.PPL_ACT_RAWCOST_TO_DATE_FC, 0))
6304            ,0)) PPL_ETC_RAWCOST_FC
6305         --, ppr.EQPMT_ETC_RAWCOST_TC  --bug 3977167
6306         --, ppr.EQPMT_ETC_RAWCOST_PC  --bug 3977167
6307         --, ppr.EQPMT_ETC_RAWCOST_FC  --bug 3977167
6308         , nvl(ppr.EQPMT_ETC_RAWCOST_TC,
6309                      decode(asgn.resource_class_code,'EQUIPMENT',
6310                        decode(sign(nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0)),-1,0,
6311                                nvl(asgn.planned_raw_cost_txn_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0))
6312                ,0)) EQPMT_ETC_RAWCOST_TC
6313         , nvl(ppr.EQPMT_ETC_RAWCOST_PC,
6314                    decode(asgn.resource_class_code,'EQUIPMENT',
6315                                decode(sign(nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0)),-1,0,
6316                                         nvl(asgn.planned_raw_cost_proj_cur,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0))
6317             ,0)) EQPMT_ETC_RAWCOST_PC
6318         , nvl(ppr.EQPMT_ETC_RAWCOST_FC,
6319                   decode(asgn.resource_class_code,'EQUIPMENT',
6320                          decode(sign(nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0)),-1,0,
6321                                  nvl(asgn.planned_raw_cost_projfunc,0) - nvl(ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0))
6322            ,0)) EQPMT_ETC_RAWCOST_FC
6323 --Bug 3614828 End
6324         , ppr.CURRENT_FLAG
6325         , ppr.PROJFUNC_COST_RATE_TYPE
6326         , ppr.PROJFUNC_COST_EXCHANGE_RATE
6327         , ppr.PROJFUNC_COST_RATE_DATE
6328         , ppr.PROJ_COST_RATE_TYPE
6329         , ppr.PROJ_COST_EXCHANGE_RATE
6330         , ppr.PROJ_COST_RATE_DATE
6331         , ppr.TXN_CURRENCY_CODE
6332         , ppr.PROG_PA_PERIOD_NAME
6333         , ppr.PROG_GL_PERIOD_NAME
6334         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)),
6335             ( 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
6336         ,decode(p_wp_rollup_method, 'COST', nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)
6337                 + nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,0) + nvl(ppr.PPL_ETC_COST_PC,0)
6338                 + nvl(ppr.EQPMT_ETC_COST_PC,0), 'EFFORT', decode(rate_based_flag,'N', 0, nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)
6339                 + 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
6340 --bug 3815252
6341         ,decode(c_task_per_comp_deriv_method,'EFFORT', ( NVL( decode( asgn.rate_based_flag, 'Y',
6342                                         decode( asgn.resource_class_code,
6343                                             'PEOPLE', nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0) + nvl(ppr.estimated_remaining_effort,
6344                                               decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0)), -1, 0,
6345                                                  nvl(asgn.planned_quantity,0)-nvl(ppr.PPL_ACT_EFFORT_TO_DATE,0))),
6346                                             'EQUIPMENT', nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(ppr.EQPMT_ETC_EFFORT,
6347                                               decode( sign(nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)), -1, 0,
6348                                                  nvl(asgn.planned_quantity,0)-nvl(ppr.EQPMT_ACT_EFFORT_TO_DATE,0)))),0),0) -- Bug 4213130 nvl(asgn.planned_quantity,0))
6349                                    ),
6350                                  ( NVL( decode( asgn.resource_class_code,
6351                                        'FINANCIAL_ELEMENTS',
6352                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6353                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6354                                                  nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6355                                        'MATERIAL_ITEMS',
6356                                          nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0) + nvl(ppr.OTH_ETC_COST_PC,
6357                                             decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0)), -1, 0,
6358                                                  nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.OTH_ACT_COST_TO_DATE_PC,0))),
6359                                        'PEOPLE',
6360                                         nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0) + nvl(ppr.PPL_ETC_COST_PC,
6361                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0)), -1, 0,
6362                                                        nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.PPL_ACT_COST_TO_DATE_PC,0))),
6363                                        'EQUIPMENT',
6364                                         nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0) + nvl(ppr.EQPMT_ETC_COST_PC,
6365                                          decode( sign(nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)), -1, 0,
6366                                                        nvl(asgn.planned_bur_cost_proj_cur,0)-nvl(ppr.EQPMT_ACT_COST_TO_DATE_PC,0)))),
6367                                     nvl(asgn.planned_bur_cost_proj_cur,0)
6368                                     ))
6369                                        ) bac_value_in_task_deriv
6370         , ppr.Oth_quantity_to_date
6371         , ppr.Oth_etc_quantity
6372     FROM
6373                pa_task_asgmts_v  asgn,
6374                pa_progress_rollup ppr
6375      WHERE asgn.task_version_id = c_task_ver_id
6376        AND asgn.task_id = c_task_id
6377        AND asgn.project_id = p_project_id
6378        AND asgn.project_id = ppr.project_id(+)
6379        AND asgn.RESOURCE_LIST_MEMBER_ID = ppr.object_id(+) -- Bug 3764224
6380        AND asgn.task_id = ppr.proj_element_id(+) -- Bug 3764224
6381        AND ppr.object_type(+) = 'PA_ASSIGNMENTS'
6382        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6383        -- It is to select only the rollup record till passed as of date
6384        AND ppr.structure_type(+) = 'WORKPLAN'
6385        AND ppr.structure_version_id(+) is null
6386        AND ppr.as_of_date(+) <= p_as_of_date
6387        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);
6388 
6389      /* (SELECT nvl(max(progress_rollup_id),-99)
6390                  FROM pa_progress_rollup
6391                  WHERE project_id = p_project_id
6392                  AND object_id = asgn.RESOURCE_LIST_MEMBER_ID
6393                  AND proj_element_id = asgn.task_id
6394                  AND object_type = 'PA_ASSIGNMENTS'
6395                  AND structure_type = 'WORKPLAN'
6396                  AND structure_version_id is null
6397                  AND as_of_date <= p_as_of_date
6398                  AND (ppr.current_flag = 'W'
6399                  --OR (ppr.current_flag ='Y' --bug 4183176
6400                  OR (ppr.current_flag IN ('Y', 'N')
6401                      AND NOT EXISTS (select 1
6402                            from pa_progress_rollup ppc1
6403                           where ppc1.project_id = p_project_id
6404                             and ppc1.object_id = asgn.RESOURCE_LIST_MEMBER_ID
6405                             and ppc1.proj_element_id = asgn.task_id
6406                             and ppc1.object_Type = 'PA_ASSIGNMENTS'
6407                             and ppc1.structure_type = 'WORKPLAN'
6408                             and ppc1.as_of_date <= p_as_of_date
6409                             and ppc1.structure_version_id is null
6410                             and ppc1.current_flag = 'W'))))
6411 --       AND ppr.as_of_date = pa_progress_utils.get_max_rollup_asofdate2(asgn.project_id,
6412 --                               asgn.RESOURCE_LIST_MEMBER_ID, 'PA_ASSIGNMENTS','WORKPLAN', null, asgn.task_id)  ---Bug 3764224
6413        --bug 3958686, hidden assignments should not to be selected
6414 --       AND asgn.ta_display_flag = 'Y' --   Bug 4323537
6415         ; */
6416 
6417 
6418    --sql id: 14906033  bug: 4871809
6419    --This cursor selects the deliverables of a given task.
6420    CURSOR cur_deliverables(c_task_proj_elem_id NUMBER, c_task_ver_id NUMBER, c_project_id NUMBER)
6421    IS
6422      SELECT obj.object_type_from
6423      , 'PA_TASKS' parent_object_type
6424      ,  obj.object_id_to2 object_id
6425      ,  obj.object_id_to1
6426      ,  obj.object_id_from1
6427      , 'PA_DELIVERABLES' object_type
6428      , ppr.actual_finish_date
6429      , ppr.completed_percentage
6430      , ppr.STRUCTURE_TYPE
6431      , ppr.PROJ_ELEMENT_ID
6432      , ppr.STRUCTURE_VERSION_ID
6433      , ppr.TASK_WT_BASIS_CODE
6434      , elem.progress_weight weighting_percentage
6435      , ppr.base_percent_complete
6436      , pps2.project_status_weight override_weight ---override progress status code
6437      , pps3.project_status_weight base_weight     --base prog status
6438     FROM pa_proj_elements elem
6439     , pa_object_relationships obj
6440     , pa_progress_rollup ppr
6441     , pa_project_statuses pps2
6442     , pa_project_statuses pps3
6443      WHERE  obj.object_id_from2= c_task_proj_elem_id
6444      ---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
6445      AND obj.object_type_from = 'PA_TASKS'
6446      AND obj.object_type_to = 'PA_DELIVERABLES'
6447      AND obj.relationship_type = 'A'
6448      AND obj.relationship_subtype = 'TASK_TO_DELIVERABLE'
6449      AND elem.proj_element_id = obj.object_id_to2
6450      AND elem.object_type = 'PA_DELIVERABLES'
6451      and elem.project_id = c_project_id
6452      AND ppr.project_id(+) = c_project_id
6453      AND ppr.object_id(+) = obj.object_id_to2
6454      AND ppr.object_type(+) = 'PA_DELIVERABLES'
6455      AND ppr.as_of_date(+) <= p_as_of_date
6456        -- Bug 3879461 : After discussion with Sameer Realeraskar, Majid
6457        -- It is to select only the rollup record till passed as of date
6458      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)
6459      AND ppr.base_progress_status_code = pps3.project_status_code(+)
6460      AND ppr.progress_status_code = pps2.project_status_code(+);
6461 
6462     /* (SELECT nvl(max(progress_rollup_id),-99)
6463                  FROM pa_progress_rollup
6464                  WHERE project_id = p_project_id
6465                  AND object_id = obj.object_id_to2
6466                  --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6467                  --AND proj_element_id = obj.object_id_from2
6468                  AND object_type = 'PA_DELIVERABLES'
6469                  AND structure_type = 'WORKPLAN'
6470                  AND structure_version_id is null
6471                  AND as_of_date <= p_as_of_date
6472     --bug 4182870, added for selecting only one record
6473                  AND (ppr.current_flag = 'W'
6474                       OR (ppr.current_flag IN ('Y', 'N')
6475                       AND NOT EXISTS (select 1
6476                            from pa_progress_rollup ppc1
6477                           where ppc1.project_id = p_project_id
6478                             and ppc1.object_id = obj.object_id_to2
6479                 --bug 4250623, do not check for proj_element_id as deliverable may not be associated with task
6480                             --and ppc1.proj_element_id = obj.object_id_from2
6481                             and ppc1.object_Type = 'PA_DELIVERABLES'
6482                             and ppc1.structure_type = 'WORKPLAN'
6483                             and ppc1.as_of_date <= p_as_of_date
6484                             and ppc1.structure_version_id is null
6485                             and ppc1.current_flag = 'W'))))
6486 --     AND ppr.as_of_date(+) = pa_progress_utils.get_max_rollup_asofdate2(c_project_id,
6487 --                               obj.object_id_to2, 'PA_DELIVERABLES','WORKPLAN', null, obj.object_id_from2 ) -- bug 3764224 Bug 3808044 : Changed to2 to from2
6488      AND ppr.structure_type(+) = 'WORKPLAN'
6489      AND ppr.structure_version_id(+) is null
6490 --     AND ppr.current_flag(+) = 'W'     --bug 3879461
6491      AND ppr.base_progress_status_code = pps3.project_status_code(+)
6492      AND ppr.progress_status_code = pps2.project_status_code(+)
6493      ; */
6494 
6495    CURSOR cur_base_p_comp_deriv_code(c_task_proj_elem_id NUMBER, c_project_id NUMBER)
6496    IS
6497    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
6498    FROM pa_proj_elements elem
6499    , pa_task_types ttype
6500    , pa_project_statuses stat
6501    where elem.proj_element_id = c_task_proj_elem_id
6502    AND elem.project_id = c_project_id
6503    AND elem.object_type ='PA_TASKS'
6504    AND elem.type_id = ttype.task_type_id
6505    AND elem.status_code = stat.project_status_code(+);
6506 
6507    CURSOR cur_status( c_status_weight VARCHAR2 )
6508    IS
6509      select lookup_code
6510        from fnd_lookup_values
6511       where attribute4 = c_status_weight
6512         and lookup_type = 'PROGRESS_SYSTEM_STATUS'
6513         and language = 'US'
6514 	AND VIEW_APPLICATION_ID = 275 ; -- Bug ref # 6507900;
6515 
6516    CURSOR cur_task_status( c_status_weight VARCHAR2 )
6517    IS
6518      select project_status_code
6519        from pa_project_statuses
6520       where project_status_weight = c_status_weight
6521         and status_type = 'TASK'
6522         and predefined_flag = 'Y';
6523 
6524    CURSOR cur_rollup( c_progress_rollup_id NUMBER )
6525    IS
6526      SELECT * from pa_progress_rollup
6527        WHERE progress_rollup_id = c_progress_rollup_id;
6528 
6529    CURSOR cur_pa_rollup1( c_proj_element_id NUMBER )
6530    IS
6531      SELECT *
6532        FROM pa_progress_rollup
6533       WHERE project_id = p_project_id
6534         AND object_id = c_proj_element_id
6535         AND structure_type = 'WORKPLAN'
6536          AND structure_version_id is null
6537         AND as_of_date = ( SELECT max( as_of_date )
6538                              FROM pa_progress_rollup
6539                             WHERE project_id = p_project_id
6540                               AND object_id = c_proj_element_id
6541                               AND structure_type = 'WORKPLAN'
6542                               AND structure_version_id is null
6543                               AND as_of_date <= p_as_of_date );
6544 
6545 
6546 
6547         l_eff_rollup_status_code        VARCHAR2(150)                                   ;
6548         l_cur_rollup_rec                cur_rollup%ROWTYPE                              ;
6549         l_pev_schedule_id               NUMBER                                          ;
6550         l_sch_rec_ver_number            NUMBER                                          ;
6551         l_total_tasks                   NUMBER                                          ;
6552         l_PROGRESS_ROLLUP_ID            NUMBER                                          ;
6553         l_progress_exists_on_aod        VARCHAR2(15)                                    ;
6554         l_percent_complete_id           NUMBER                                          ;
6555         l_rollup_rec_ver_number         NUMBER                                          ;
6556         l_progress_status_code          VARCHAR2(150)                                   ;
6557         l_rolled_up_base_per_comp       NUMBER                                          ;
6558         l_rolled_up_base_prog_stat      VARCHAR2(150)                                   ;
6559         l_rolled_up_per_comp            NUMBER                                          ;
6560         l_rolled_up_prog_stat           VARCHAR2(150)                                   ;
6561         l_cur_pa_rollup1_rec            cur_pa_rollup1%ROWTYPE                          ;
6562         l_status_code                   VARCHAR2(150)                                   ;
6563         l_working_aod                   DATE                                            ;
6564         l_PROGRESS_ROLLUP_ID2           NUMBER                                          ;
6565         l_rollup_rec_ver_number2        NUMBER                                          ;
6566         l_cur_rollup_rec2               cur_rollup%ROWTYPE                              ;
6567         l_remaining_effort1             NUMBER                                          ;
6568         l_percent_complete1             NUMBER                                          ;
6569         l_percent_complete2             NUMBER                                          ;
6570         l_ETC_Cost_PC                   NUMBER                                          ;
6571         l_PPL_ETC_COST_PC               NUMBER                                          ;
6572         l_EQPMT_ETC_COST_PC             NUMBER                                          ;
6573         l_ETC_Cost_FC                   NUMBER                                          ;
6574         l_PPL_ETC_COST_FC               NUMBER                                          ;
6575         l_EQPMT_ETC_COST_FC             NUMBER                                          ;
6576         l_EQPMT_ETC_EFFORT              NUMBER                                          ;
6577         l_SUB_PRJ_ETC_COST_PC           NUMBER                                          ;
6578         l_SUB_PRJ_PPL_ETC_COST_PC       NUMBER                                          ;
6579         l_SUB_PRJ_EQPMT_ETC_COST_PC     NUMBER                                          ;
6580         l_SUB_PRJ_ETC_COST_FC           NUMBER                                          ;
6581         l_SUB_PRJ_PPL_ETC_COST_FC       NUMBER                                          ;
6582         l_SUB_PRJ_EQPMT_ETC_COST_FC     NUMBER                                          ;
6583         l_SUB_PRJ_PPL_ETC_EFFORT        NUMBER                                          ;
6584         l_SUB_PRJ_EQPMT_ETC_EFFORT      NUMBER                                          ;
6585         l_BAC_VALUE1                    NUMBER                                          ;
6586         l_EARNED_VALUE1                 NUMBER                                          ;
6587         l_bcwp                          NUMBER                                          ;
6588         l_OTH_ACT_COST_TO_DATE_PC       NUMBER                                          ;
6589         l_PPL_ACT_COST_TO_DATE_PC       NUMBER                                          ;
6590         l_EQPMT_ACT_COST_TO_DATE_PC     NUMBER                                          ;
6591         l_OTH_ACT_COST_TO_DATE_FC       NUMBER                                          ;
6592         l_PPL_ACT_COST_TO_DATE_FC       NUMBER                                          ;
6593         l_EQPMT_ACT_COST_TO_DATE_FC     NUMBER                                          ;
6594         l_PPL_ACT_EFFORT_TO_DATE        NUMBER                                          ;
6595         l_EQPMT_ACT_EFFORT_TO_DATE      NUMBER                                          ;
6596         l_PERIOD_NAME                   VARCHAR2(10)                                    ;
6597         l_project_ids                   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()      ;
6598         l_struture_version_ids          SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.pa_num_tbl_type()      ;
6599         l_proj_thru_dates_tbl           SYSTEM.pa_date_tbl_type:= SYSTEM.pa_date_tbl_type()     ;
6600         l_prog_pa_period_name           VARCHAR2(30)                                    ;
6601         l_prog_gl_period_name           VARCHAR2(30)                                    ;
6602         l_current_flag                  VARCHAR2(1):= 'W'               ;
6603         l_max_rollup_as_of_date2        DATE                                            ;
6604         l_structure_sharing_code        pa_projects_all.structure_sharing_code%TYPE     ;
6605         l_OTH_ACT_RAWCOST_TO_DATE_PC    NUMBER                                          ;
6606         l_PPL_ACT_RAWCOST_TO_DATE_PC    NUMBER                                          ;
6607         l_EQPMT_ACT_RAWCOST_TO_DATE_PC  NUMBER                                          ;
6608         l_OTH_ACT_RAWCOST_TO_DATE_FC    NUMBER                                          ;
6609         l_PPL_ACT_RAWCOST_TO_DATE_FC    NUMBER                                          ;
6610         l_EQPMT_ACT_RAWCOST_TO_DATE_FC  NUMBER                                          ;
6611         l_ETC_RAWCost_PC                NUMBER                                          ;
6612         l_PPL_ETC_RAWCOST_PC            NUMBER                                          ;
6613         l_EQPMT_ETC_RAWCOST_PC          NUMBER                                          ;
6614         l_ETC_RAWCost_FC                NUMBER                                          ;
6615         l_PPL_ETC_RAWCOST_FC            NUMBER                                          ;
6616         l_EQPMT_ETC_RAWCOST_FC          NUMBER                                          ;
6617         l_EQUIPMENT_HOURS               NUMBER                                          ;
6618         l_POU_LABOR_BRDN_COST           NUMBER                                          ;
6619         l_PRJ_LABOR_BRDN_COST           NUMBER                                          ;
6620         l_POU_EQUIP_BRDN_COST           NUMBER                                          ;
6621         l_PRJ_EQUIP_BRDN_COST           NUMBER                                          ;
6622         l_POU_LABOR_RAW_COST            NUMBER                                          ;
6623         l_PRJ_LABOR_RAW_COST            NUMBER                                          ;
6624         l_POU_EQUIP_RAW_COST            NUMBER                                          ;
6625         l_PRJ_EQUIP_RAW_COST            NUMBER                                          ;
6626         L_TASK_STATUS_CODE              pa_project_statuses.project_status_code%TYPE    ;
6627         l_task_system_status_code       pa_project_statuses.project_system_status_code%TYPE;
6628         L_TASK_WEIGHTING_PERCENTAGE     NUMBER                                          ;
6629         L_PROG_ENTRY_ENABLE_FLAG        VARCHAR2(1)                                     ;
6630         l_BASE_PERCENT_COMP_DERIV_CODE  VARCHAR2(30)                                    ;
6631         -- Bug 5675437
6632         l_PROGRESS_ROLLUP_ID3           NUMBER                                          ;
6633         l_cur_rollup_rec3               cur_rollup%ROWTYPE                              ;
6634         l_rollup_rec_ver_number3        NUMBER                                          ;
6635 
6636 -- Bug 3879461 Begin
6637 CURSOR c_get_object_status (l_project_id NUMBER, l_proj_element_id NUMBER)
6638 IS
6639 SELECT STATUS_CODE
6640 FROM PA_PROJ_ELEMENTS
6641 WHERE PROJ_ELEMENT_ID=l_proj_element_id
6642 AND PROJECT_ID = l_project_id;
6643 
6644 L_EXISTING_OBJECT_STATUS        pa_project_statuses.project_status_code%TYPE    ;
6645 l_Oth_quantity_to_date NUMBER;
6646 l_Oth_etc_quantity NUMBER;
6647 
6648 -- Bug 3879461 End
6649 
6650 l_prj_currency_code VARCHAR2(15); --bug 3949093
6651 
6652 -- Bug 3956299 Begin
6653 CURSOR c_get_dates (c_project_id NUMBER, c_element_version_id NUMBER)
6654 IS
6655 SELECT scheduled_start_date, scheduled_finish_date
6656 FROM pa_proj_elem_ver_schedule
6657 WHERE PROJECT_ID = c_project_id
6658 AND element_version_id = c_element_version_id;
6659 
6660 l_tsk_scheduled_start_date Date;
6661 l_tsk_scheduled_finish_date Date;
6662 l_actual_start_date Date;
6663 l_actual_finish_date Date;
6664 l_estimated_start_date Date;
6665 l_estimated_finish_date Date;
6666 -- Bug 3956299 End
6667 
6668 -- Bug 3922325 Begin
6669 CURSOR c_get_dlv_status IS
6670 SELECT 'Y' FROM DUAL
6671 WHERE EXISTS
6672 (SELECT 'xyz'
6673 FROM pa_percent_completes
6674 WHERE project_id = p_project_id
6675 AND task_id = p_task_id
6676 AND object_type = 'PA_DELIVERABLES'
6677 AND trunc(date_computed)<= trunc(p_as_of_date)
6678 AND structure_type = 'WORKPLAN'
6679 AND PA_PROGRESS_UTILS.get_system_task_status( status_code, 'PA_DELIVERABLES') = 'DLVR_IN_PROGRESS'
6680 );
6681 
6682 l_actual_exists VARCHAR2(1):='N';
6683 -- Bug 3922325 End
6684 
6685 -- Bug 4392189 Begin
6686 CURSOR c_get_sub_project (c_task_version_id NUMBER, c_task_per_comp_deriv_method VARCHAR2) IS
6687 SELECT
6688   ppv2.project_id                     sub_project_id
6689  ,ppv2.element_version_id             sub_structure_ver_id
6690  ,ppv2.proj_element_id                sub_proj_element_id
6691 , pa_progress_utils.Get_BAC_Value(ppv2.project_id, c_task_per_comp_deriv_method,  ppv2.proj_element_id,  ppv2.parent_structure_version_id,
6692                                     'WORKPLAN','N')    sub_project_bac_value
6693 FROM
6694      pa_proj_element_versions ppv2
6695     ,pa_proj_elem_ver_structure ppevs2
6696     ,pa_object_relationships por1
6697     ,pa_object_relationships por2
6698 WHERE
6699   por1.object_id_from1 = c_task_version_id
6700  AND por1.object_id_to1 = por2.object_id_from1
6701  AND por2.object_id_to1 = ppv2.element_version_id
6702  AND ppv2.object_type = 'PA_STRUCTURES'
6703 -- AND por2.relationship_type in ( 'LW', 'LF' )
6704  AND por2.relationship_type = 'LW'
6705  AND ppevs2.element_version_id = ppv2.element_version_id
6706  AND ppevs2.project_id = ppv2.project_id
6707  AND ppevs2.status_code = 'STRUCTURE_PUBLISHED'
6708  AND ppevs2.latest_eff_published_flag = 'Y';
6709 
6710 l_sub_project_id    NUMBER;
6711 l_sub_structure_ver_id  NUMBER;
6712 l_sub_proj_element_id   NUMBER;
6713 l_sub_project_bac_value NUMBER;
6714 
6715 --- sql id: 14906260  bug 4871809
6716 CURSOR c_get_sub_project_progress (c_sub_project_id NUMBER, c_sub_str_version_id NUMBER, c_sub_proj_element_id NUMBER
6717 , c_as_of_date Date, c_task_per_comp_deriv_method VARCHAR2) IS
6718 SELECT /*+ index(pfxat pji_fm_xbs_accum_tmp1_n1) */
6719 ppr.progress_rollup_id
6720 , ppr.as_of_date
6721 , ppr.actual_start_date
6722 , ppr.actual_finish_date
6723 , ppr.estimated_start_date
6724 , ppr.estimated_finish_date
6725 , ppr.PPL_ACT_EFFORT_TO_DATE
6726 , ppr.PPL_ACT_COST_TO_DATE_TC
6727 , ppr.PPL_ACT_COST_TO_DATE_PC
6728 , ppr.PPL_ACT_COST_TO_DATE_FC
6729 , ppr.PPL_ACT_RAWCOST_TO_DATE_TC
6730 , ppr.PPL_ACT_RAWCOST_TO_DATE_PC
6731 , ppr.PPL_ACT_RAWCOST_TO_DATE_FC
6732 , ppr.EQPMT_ACT_EFFORT_TO_DATE
6733 , ppr.EQPMT_ACT_COST_TO_DATE_TC
6734 , ppr.EQPMT_ACT_COST_TO_DATE_PC
6735 , ppr.EQPMT_ACT_COST_TO_DATE_FC
6736 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_TC
6737 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_PC
6738 , ppr.EQPMT_ACT_RAWCOST_TO_DATE_FC
6739 , ppr.OTH_QUANTITY_TO_DATE
6740 , ppr.OTH_ACT_COST_TO_DATE_TC
6741 , ppr.OTH_ACT_COST_TO_DATE_PC
6742 , ppr.OTH_ACT_COST_TO_DATE_FC
6743 , ppr.OTH_ACT_RAWCOST_TO_DATE_TC
6744 , ppr.OTH_ACT_RAWCOST_TO_DATE_PC
6745 , ppr.OTH_ACT_RAWCOST_TO_DATE_FC
6746 , decode(ppr.progress_rollup_id,null,pfxat.ETC_LABOR_HRS,ppr.ESTIMATED_REMAINING_EFFORT) ESTIMATED_REMAINING_EFFORT
6747 , ppr.PPL_ETC_COST_TC
6748 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_BRDN_COST,ppr.PPL_ETC_COST_PC) PPL_ETC_COST_PC
6749 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_BRDN_COST,ppr.PPL_ETC_COST_FC) PPL_ETC_COST_FC
6750 , ppr.PPL_ETC_RAWCOST_TC
6751 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_PC) PPL_ETC_RAWCOST_PC
6752 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_LABOR_RAW_COST,ppr.PPL_ETC_RAWCOST_FC) PPL_ETC_RAWCOST_FC
6753 , decode(ppr.progress_rollup_id,null,pfxat.ETC_EQUIP_HRS,ppr.EQPMT_ETC_EFFORT) EQPMT_ETC_EFFORT
6754 , ppr.EQPMT_ETC_COST_TC
6755 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_PC) EQPMT_ETC_COST_PC
6756 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_BRDN_COST,ppr.EQPMT_ETC_COST_FC) EQPMT_ETC_COST_FC
6757 , ppr.EQPMT_ETC_RAWCOST_TC
6758 , decode(ppr.progress_rollup_id,null,pfxat.ETC_PRJ_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_PC) EQPMT_ETC_RAWCOST_PC
6759 , decode(ppr.progress_rollup_id,null,pfxat.ETC_POU_EQUIP_RAW_COST,ppr.EQPMT_ETC_RAWCOST_FC) EQPMT_ETC_RAWCOST_FC
6760 , ppr.OTH_ETC_QUANTITY
6761 , ppr.OTH_ETC_COST_TC
6762 , 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
6763 , 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
6764 , ppr.OTH_ETC_RAWCost_TC
6765 , 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
6766 , 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
6767 , pps1.project_status_weight rollup_weight1
6768 , pps2.project_status_weight override_weight2
6769 , pps3.project_status_weight base_weight3
6770 , pps4.project_status_weight task_weight4
6771 -- 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)),
6772 --                                    ( 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
6773 , 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,
6774      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))
6775         , 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,
6776         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
6777 , nvl(ppr.completed_percentage, ppr.eff_rollup_percent_comp) completed_percentage -- Bug 4506009
6778 FROM
6779 pa_progress_rollup ppr
6780 ,pa_project_statuses pps1
6781 ,pa_project_statuses pps2
6782 ,pa_project_statuses pps3
6783 ,pa_project_statuses pps4
6784 ,pa_proj_elements ppe
6785 ,pji_fm_xbs_accum_tmp1 pfxat
6786 WHERE
6787 ppr.project_id = c_sub_project_id
6788 AND ppe.project_id = c_sub_project_id
6789 AND ppe.object_type = 'PA_STRUCTURES'
6790 AND ppe.proj_element_id = c_sub_proj_element_id
6791 AND ppr.object_id(+) = c_sub_proj_element_id
6792 AND ppr.object_type(+) = 'PA_STRUCTURES'
6793 AND ppr.structure_version_id(+) is null
6794 AND ppr.structure_type(+) = 'WORKPLAN'
6795 AND ppr.current_flag(+) <> 'W'  ---IN ('Y', 'N')
6796 AND ppr.as_of_date(+) <= c_as_of_date
6797 AND ppr.EFF_ROLLUP_PROG_STAT_CODE = pps1.project_status_code(+)
6798 AND ppr.progress_status_code =  pps2.project_status_code(+)
6799 AND ppr.base_progress_status_code = pps3.project_status_code(+)
6800 AND ppe.status_code = pps4.project_status_code(+)
6801 AND pfxat.project_id = ppe.project_id
6802 AND pfxat.struct_version_id = c_sub_str_version_id
6803 AND pfxat.project_element_id = ppe.proj_element_id
6804 AND pfxat.plan_version_id > 0
6805 AND pfxat.txn_currency_code is null
6806 AND pfxat.calendar_type = 'A'
6807 AND pfxat.res_list_member_id is null
6808 order by as_of_date desc
6809  ;
6810 
6811 l_sub_rec           c_get_sub_project_progress%ROWTYPE;
6812 l_subproj_prog_rollup_id    NUMBER;
6813 l_subproj_act_start_date    DATE;
6814 l_subproj_act_finish_date   DATE;
6815 l_subproj_est_start_date    DATE;
6816 l_subproj_est_finish_date   DATE;
6817 l_subproj_rollup_weight1    NUMBER;
6818 l_subproj_override_weight2  NUMBER;
6819 l_subproj_base_weight3      NUMBER;
6820 l_subproj_task_weight4      NUMBER;
6821 l_subproj_earned_value      NUMBER;
6822 l_subproj_bac_value     NUMBER;
6823 l_actual_lowest_task        VARCHAR2(1) := 'N';
6824 -- Bug 4392189 End
6825 
6826 -- Bug 4506461 Begin
6827 CURSOR c_get_any_childs_have_subprj(c_task_version_id NUMBER) IS
6828 SELECT 'Y'
6829 FROM pa_object_relationships
6830 WHERE --relationship_type in ( 'LW', 'LF' )
6831 relationship_type = 'LW'
6832 AND object_id_from1 IN
6833     (SELECT object_id_to1
6834     FROM pa_object_relationships
6835     START WITH  object_id_from1 = c_task_version_id
6836     AND relationship_type = 'S'
6837     CONNECT BY PRIOR object_id_to1 = object_id_from1
6838     AND relationship_type = 'S')
6839     ;
6840 l_subproject_found VARCHAR2(1):='N';
6841 l_rederive_base_pc VARCHAR2(1):='N';
6842 l_override_pc_temp NUMBER;
6843 l_base_pc_temp     NUMBER;
6844 -- Bug 4506461 End
6845 
6846 l_subproj_task_version_id NUMBER;--4582956
6847 
6848 BEGIN
6849 
6850         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
6851 
6852         IF g1_debug_mode  = 'Y' THEN
6853                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT');
6854         END IF;
6855 
6856         IF g1_debug_mode  = 'Y' THEN
6857                 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);
6858                 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);
6859                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'p_commit='||p_commit, x_Log_Level=> 3);
6860                 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);
6861                 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);
6862                 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);
6863                 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);
6864                 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);
6865                 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);
6866                 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);
6867                 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);
6868                 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);
6869                 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);
6870                 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);
6871         END IF;
6872 
6873         IF p_structure_version_id IS NULL THEN
6874                 return;
6875         END IF;
6876 
6877         IF (p_commit = FND_API.G_TRUE) THEN
6878                 savepoint ASGN_DLV_TO_TASK_ROLLUP_PVT2;
6879         END IF;
6880 
6881         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
6882                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6883         END IF;
6884 
6885         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
6886                 FND_MSG_PUB.initialize;
6887         END IF;
6888 
6889         l_sharing_Enabled := PA_PROJECT_STRUCTURE_UTILS.check_sharing_enabled(p_project_id);
6890         l_structure_sharing_code := PA_PROJECT_STRUCTURE_UTILS.get_Structure_sharing_code(p_project_id);
6891 
6892         --bug 3949093
6893         SELECT project_currency_code  INTO  l_prj_currency_code  FROM pa_projects_all WHERE project_id = p_project_id;
6894 
6895         IF (l_sharing_Enabled = 'N' OR (l_sharing_Enabled = 'Y' AND l_structure_sharing_code <> 'SHARE_FULL')) THEN
6896                 l_split_workplan := 'Y';
6897         ELSE
6898                 l_split_workplan := 'N';
6899         END IF;
6900 
6901         l_structure_version_id := null;
6902         l_task_version_id := p_task_version_id;
6903         l_rollup_method := p_wp_rollup_method;
6904 
6905         IF g1_debug_mode  = 'Y' THEN
6906                 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);
6907                 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);
6908                 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);
6909         END IF;
6910 
6911 
6912         l_task_derivation_code := null;
6913         l_task_status_code := null;
6914         l_task_weighting_percentage := 0;
6915 
6916         OPEN cur_base_p_comp_deriv_code(p_task_id, p_project_id);
6917         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;
6918         CLOSE cur_base_p_comp_deriv_code;
6919 
6920 
6921         IF g1_debug_mode  = 'Y' THEN
6922                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);
6923                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);
6924                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);
6925         END IF;
6926 
6927         -- Cursor: cur_tasks returns the input task and its immediate sub-tasks. -- Fix for Bug # 4032987.
6928         FOR cur_tasks_rec in cur_tasks(p_task_version_id) LOOP
6929 
6930                 IF g1_debug_mode  = 'Y' THEN
6931                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Inside Tasks Loop', x_Log_Level=> 3);
6932                         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);
6933                 END IF;
6934 
6935                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
6936 
6937     -- We only populate the asssignment and deliverable records n the PL/SQL table for the input task
6938     -- , assignments and deliverables of the sub-tasks are not considered. -- Fix for Bug # 4032987.
6939 
6940     if (cur_tasks_rec.object_id_to1 = p_task_version_id) then -- Fix for Bug # 4032987.
6941 
6942         l_override_pc_temp := cur_tasks_rec.override_percent_complete; -- Bug 4506461
6943 
6944         -- Bug 4392189 : Program Changes Begin
6945         l_sub_project_id := null;
6946         l_sub_rec   := null;
6947 
6948         -- 4587527 : It was not supporting multiple sub projects at link task
6949         -- So converted it into FOR LOOP
6950 
6951         FOR rec_subproj IN c_get_sub_project(p_task_version_id, l_task_derivation_code) LOOP
6952             --OPEN c_get_sub_project (p_task_version_id, l_task_derivation_code);
6953             --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;
6954             --CLOSE c_get_sub_project;
6955 
6956             --IF l_sub_project_id IS NOT NULL THEN
6957             IF g1_debug_mode = 'Y' THEN
6958                  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);
6959                  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);
6960                  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);
6961                  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);
6962             END IF;
6963             l_subproject_found := 'Y' ; -- Bug 4506461
6964             l_subproj_task_version_id := p_task_version_id;--4582956
6965 
6966             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);
6967             FETCH c_get_sub_project_progress INTO l_sub_rec;
6968             CLOSE c_get_sub_project_progress;
6969 
6970             IF g1_debug_mode = 'Y' THEN
6971                  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);
6972             END IF;
6973 
6974             l_index := l_index + 1;
6975 
6976             l_rollup_table1(l_index).OBJECT_TYPE                    := 'PA_SUBPROJECTS';
6977             l_rollup_table1(l_index).OBJECT_ID                      := (-1 * l_index);
6978             l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := 'PA_TASKS';
6979             l_rollup_table1(l_index).PARENT_OBJECT_ID               := p_task_version_id;
6980             l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; --  Assigning some value so that order by in   scheduling API  works
6981             l_rollup_table1(l_index).CALENDAR_ID                    := l_index;
6982 
6983 	    -- 4533112 : Added following check
6984 	    IF nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN
6985 		l_rollup_table1(l_index).START_DATE1			:= l_sub_rec.actual_start_date;
6986 		l_rollup_table1(l_index).FINISH_DATE1                   := l_sub_rec.actual_finish_date;
6987 		l_rollup_table1(l_index).START_DATE2                    := l_sub_rec.estimated_start_date;
6988 		l_rollup_table1(l_index).FINISH_DATE2                   := l_sub_rec.estimated_finish_date;
6989 	    END IF;
6990 
6991 
6992             -- 4582956 Begin : LInk task should be treated as summaru task which means
6993             -- we should be passing % complete of sub project and bac value of sub project
6994             /*
6995 
6996             -- Bug 4563049 : Do not take l_subproj_bac_value as it may be 0 if actuals and etc is not there
6997             -- This is additional sefety fix
6998 
6999             -- Bug 4506009 : Deriving l_subproj_earned_value
7000             IF l_task_derivation_code = 'EFFORT' THEN
7001                 --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);
7002                 -- 4579654 : For more accuracy, Do not round the earned value here.
7003                 --l_subproj_earned_value := nvl(round((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100), 5),0);
7004                 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7005             ELSE
7006                 --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);
7007                 -- 4579654 : For more accuracy, Do not round the earned value here.
7008                 --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);
7009                 l_subproj_earned_value := nvl((NVL(l_sub_project_bac_value, 0)*nvl(l_sub_rec.completed_percentage,0)/100),0);
7010             END IF;
7011 
7012             l_rollup_table1(l_index).EARNED_VALUE1                  := nvl(l_subproj_earned_value,0) ; --NVL( l_sub_rec.earned_value, 0 );
7013             --l_rollup_table1(l_index).BAC_VALUE1                     := NVL( l_sub_rec.bac_value, NVL(l_sub_project_bac_value, 0) );
7014             l_rollup_table1(l_index).BAC_VALUE1                     := NVL(l_sub_project_bac_value, 0);
7015             */
7016 
7017             l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl(l_sub_rec.completed_percentage, 0);
7018             l_rollup_table1(l_index).BAC_VALUE1                      := NVL(rec_subproj.sub_project_bac_value, 0);
7019             -- 4582956 End
7020 
7021 
7022             --    Rollup Progress Status Rollup
7023             l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(l_sub_rec.rollup_weight1,0);       --rollup prog status
7024             l_rollup_table1(l_index).PROGRESS_override1              := l_sub_rec.override_weight2;    --override prg  status
7025 
7026             --    Base Progress Status Rollup
7027 	    -- 4533112 : Now base progress status is not used
7028             --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( l_sub_rec.base_weight3, 0 );  --base prog status
7029             --l_rollup_table1(l_index).PROGRESS_override2                 :=      0;  -- FPM Dev  CR 2
7030 
7031             --    Task Status Rollup
7032             l_rollup_table1(l_index).task_status1                    := nvl(l_sub_rec.task_weight4, 0 );  -- task status
7033 
7034 
7035             l_rollup_table1(l_index).REMAINING_EFFORT1              := NVL( l_sub_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7036             l_rollup_table1(l_index).EQPMT_ETC_EFFORT1              := NVL( l_sub_rec.EQPMT_ETC_EFFORT, 0 );
7037 
7038             -- ETC Burden Cost in Project Currency Rollup
7039             l_rollup_table1(l_index).ETC_COST1                      := NVL( l_sub_rec.OTH_ETC_COST_PC, 0 );
7040             l_rollup_table1(l_index).PPL_ETC_COST1                  := NVL( l_sub_rec.PPL_ETC_COST_PC, 0 );
7041             l_rollup_table1(l_index).EQPMT_ETC_COST1                := NVL( l_sub_rec.EQPMT_ETC_COST_PC, 0 );
7042 
7043             -- ETC Burden Cost in Project Functional Currency Rollup
7044             l_rollup_table1(l_index).ETC_COST2                      := NVL( l_sub_rec.OTH_ETC_COST_FC, 0 );
7045             l_rollup_table1(l_index).PPL_ETC_COST2                  := NVL( l_sub_rec.PPL_ETC_COST_FC, 0 );
7046             l_rollup_table1(l_index).EQPMT_ETC_COST2                := NVL( l_sub_rec.EQPMT_ETC_COST_FC, 0 );
7047 
7048 
7049 
7050             -- ETC Burden Cost in Transaction Currency Rollup
7051             l_rollup_table1(l_index).ETC_COST3                      := NVL( l_sub_rec.OTH_ETC_COST_TC, 0 );
7052             l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( l_sub_rec.PPL_ETC_COST_TC, 0 );
7053             l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( l_sub_rec.EQPMT_ETC_COST_TC, 0 );
7054 
7055             -- ETC Raw Cost in Transaction Currency Rollup
7056             -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7057             --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7058             --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7059             --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7060 
7061             l_rollup_table1(l_index).ETC_COST4                      := NVL( l_sub_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7062             l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( l_sub_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7063 
7064             -- ETC Raw Cost in Project Currency Rollup
7065             l_rollup_table1(l_index).ETC_COST5                      := NVL( l_sub_rec.OTH_ETC_RAWCost_PC, 0 );
7066             l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( l_sub_rec.PPL_ETC_RAWCOST_PC, 0 );
7067             l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7068 
7069             -- ETC Raw Cost in PRoject Functional Currency Rollup
7070             l_rollup_table1(l_index).ETC_COST6                      := NVL( l_sub_rec.OTH_ETC_RAWCost_FC, 0 );
7071             l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( l_sub_rec.PPL_ETC_RAWCOST_FC, 0 );
7072             l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( l_sub_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7073 
7074             -- Actual Burden Cost in Transaction Currency Rollup
7075             l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7076             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7077             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7078             -- Actual Burden Cost in Project Currency Rollup
7079             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7080             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7081             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7082             -- Actual Burden Cost in Project Functional Currency Rollup
7083             l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( l_sub_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7084             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( l_sub_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7085             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( l_sub_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7086 
7087             -- Actual Raw Cost in Transaction Currency Rollup
7088             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7089             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7090             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7091             -- Actual Raw Cost in Project Currency Rollup
7092             l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7093             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7094             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7095             -- Actual Raw Cost in Project Functional Currency Rollup
7096             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( l_sub_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7097             l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( l_sub_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7098             l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( l_sub_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7099 
7100             l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( l_sub_rec.Oth_quantity_to_date, 0 );
7101             l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( l_sub_rec.oth_etc_quantity, 0 );
7102 
7103 
7104             l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7105             l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7106             l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7107             l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7108             l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7109             l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7110 
7111             IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7112                 l_action_allowed := 'N';
7113             END IF;
7114 
7115             l_action_allowed := 'Y';   --temporarrily setting it to Y, need to investigate as why it is N
7116 
7117             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);
7118 
7119             l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
7120             l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
7121             l_rollup_table1(l_index).rollup_node3                       := l_action_allowed;
7122             l_rollup_table1(l_index).rollup_node4                       := l_action_allowed;
7123             l_rollup_table1(l_index).rollup_node5                       := l_action_allowed;
7124             l_rollup_table1(l_index).rollup_node6                       := l_action_allowed;
7125         END LOOP;
7126             --END IF;
7127             -- Bug 4392189 : Program Changes End
7128 
7129 
7130         -- Loop thru all task assignments of a passed task
7131                 FOR cur_assgn_rec in cur_assgn(p_task_id, p_task_version_id, l_task_derivation_code) LOOP
7132 
7133                         l_index := l_index + 1;
7134 
7135                         l_rollup_table1(l_index).OBJECT_TYPE                    := cur_assgn_rec.object_type;
7136                         l_rollup_table1(l_index).OBJECT_ID                      := cur_assgn_rec.object_id_to1; -- Reaource Assignment Id
7137                         l_rollup_table1(l_index).PARENT_OBJECT_TYPE             := cur_assgn_rec.parent_object_type;
7138                         l_rollup_table1(l_index).PARENT_OBJECT_ID               := cur_assgn_rec.object_id_from1; -- Task Version Id
7139                         l_rollup_table1(l_index).WBS_LEVEL                      := 9999999; -- Assigning some value so that order by in scheduling API works
7140 
7141                         -- Percent Complete needs to be derived using Earned Value and BAC Value
7142 
7143                         -- Percent Complete at Assignment level does not get calculated
7144 
7145 			-- 4533112 : Added following check for base_progress_status_code
7146 			    IF l_task_derivation_code IN ('EFFORT', 'COST') AND nvl(cur_tasks_rec.base_progress_status_code, 'N') <> 'Y' THEN -- Bug 3956299
7147 				-- Actual Date Rollup : Only Start Date gets rolls up.
7148 				l_rollup_table1(l_index).START_DATE1                    := cur_assgn_rec.actual_start_date;
7149 				l_rollup_table1(l_index).FINISH_DATE1                    := cur_assgn_rec.actual_finish_date;
7150 
7151 				-- Estimated Date Rollup  : Only Start Date gets rolls up.
7152 				l_rollup_table1(l_index).START_DATE2                    := cur_assgn_rec.estimated_start_date;
7153 				l_rollup_table1(l_index).FINISH_DATE2                    := cur_assgn_rec.estimated_finish_date;
7154 			    END IF;
7155 
7156 
7157                         -- Progress Status entry is not there at assignment level
7158 
7159                         -- Assignment Status entry is not there at assignment level
7160 
7161                         -- ETC Effort Rollup
7162                         l_rollup_table1(l_index).REMAINING_EFFORT1              := NVL( cur_assgn_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7163                         l_rollup_table1(l_index).EQPMT_ETC_EFFORT1              := NVL( cur_assgn_rec.EQPMT_ETC_EFFORT, 0 );
7164 
7165                         -- ETC Burden Cost in Project Currency Rollup
7166                         l_rollup_table1(l_index).ETC_COST1                      := NVL( cur_assgn_rec.OTH_ETC_COST_PC, 0 );
7167                         l_rollup_table1(l_index).PPL_ETC_COST1                  := NVL( cur_assgn_rec.PPL_ETC_COST_PC, 0 );
7168                         l_rollup_table1(l_index).EQPMT_ETC_COST1                := NVL( cur_assgn_rec.EQPMT_ETC_COST_PC, 0 );
7169 
7170                         -- ETC Burden Cost in Project Functional Currency Rollup
7171                         l_rollup_table1(l_index).ETC_COST2                      := NVL( cur_assgn_rec.OTH_ETC_COST_FC, 0 );
7172                         l_rollup_table1(l_index).PPL_ETC_COST2                  := NVL( cur_assgn_rec.PPL_ETC_COST_FC, 0 );
7173                         l_rollup_table1(l_index).EQPMT_ETC_COST2                := NVL( cur_assgn_rec.EQPMT_ETC_COST_FC, 0 );
7174 
7175                         -- Earned Value and BAC Rollup
7176                         l_rollup_table1(l_index).EARNED_VALUE1                  := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7177                         l_rollup_table1(l_index).BAC_VALUE1                     := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7178 
7179 			-- 4392189 : Program Reporting Changes - Phase 2
7180 			-- Having Set2 columns to get Project level % complete
7181                         l_rollup_table1(l_index).EARNED_VALUE2                  := NVL( cur_assgn_rec.EARNED_VALUE, 0 );
7182                         l_rollup_table1(l_index).BAC_VALUE2                     := NVL( cur_assgn_rec.bac_value_in_task_deriv, 0 );
7183 
7184 
7185                         --Bug 3614828 Begin
7186 
7187                         -- ETC Burden Cost in Transaction Currency Rollup
7188                         l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_assgn_rec.OTH_ETC_COST_TC, 0 );
7189                         l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_assgn_rec.PPL_ETC_COST_TC, 0 );
7190                         l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_assgn_rec.EQPMT_ETC_COST_TC, 0 );
7191 
7192                         -- ETC Raw Cost in Transaction Currency Rollup
7193                         -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7194                         --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_assgn_rec.OTH_ETC_RAWCost_TC, 0 );
7195                         --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_TC, 0 );
7196                         --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7197 
7198                         l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_assgn_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7199                         l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_assgn_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7200 
7201                         -- ETC Raw Cost in Project Currency Rollup
7202                         l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_assgn_rec.OTH_ETC_RAWCost_PC, 0 );
7203                         l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_PC, 0 );
7204                         l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7205 
7206                         -- ETC Raw Cost in PRoject Functional Currency Rollup
7207                         l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_assgn_rec.OTH_ETC_RAWCost_FC, 0 );
7208                         l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_assgn_rec.PPL_ETC_RAWCOST_FC, 0 );
7209                         l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_assgn_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7210 
7211                         -- Actual Burden Cost in Transaction Currency Rollup
7212                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7213                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7214                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7215                         -- Actual Burden Cost in Project Currency Rollup
7216                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7217                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7218                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7219                         -- Actual Burden Cost in Project Functional Currency Rollup
7220                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_assgn_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7221                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_assgn_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7222                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_assgn_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7223 
7224                         -- Actual Raw Cost in Transaction Currency Rollup
7225                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7226                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7227                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7228                         -- Actual Raw Cost in Project Currency Rollup
7229                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7230                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7231                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7232                         -- Actual Raw Cost in Project Functional Currency Rollup
7233                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_assgn_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7234                         l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_assgn_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7235                         l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_assgn_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7236 
7237 			-- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7238                         l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_assgn_rec.Oth_quantity_to_date, 0 );
7239                         l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_assgn_rec.oth_etc_quantity, 0 );
7240 
7241 
7242                         --Bug 3614828 End
7243 
7244 
7245                         l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7246                         l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7247                         l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7248                         l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7249                         l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7250                         l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7251 
7252                         IF nvl( l_task_weighting_percentage, 0 ) = 0 OR nvl(l_prog_entry_enable_flag,'N') = 'N' THEN
7253                                 l_action_allowed := 'N';
7254                         END IF;
7255 
7256                         l_action_allowed := 'Y';   --temporarrily setting it to Y, need to investigate as why it is N
7257 
7258                         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);
7259 
7260                         l_rollup_table1(l_index).rollup_node1                       := l_action_allowed;
7261                         l_rollup_table1(l_index).rollup_node2                       := l_action_allowed;
7262                         l_rollup_table1(l_index).rollup_node3                       := l_action_allowed;
7263                         l_rollup_table1(l_index).rollup_node4                       := l_action_allowed;
7264                         l_rollup_table1(l_index).rollup_node5                       := l_action_allowed;
7265                         l_rollup_table1(l_index).rollup_node6                       := l_action_allowed;
7266                 END LOOP; -- Assignments Loop cur_assgn_rec
7267 
7268 
7269                 IF l_task_derivation_code = 'DELIVERABLE' THEN
7270 
7271                         FOR cur_del_rec in cur_deliverables(p_task_id, p_task_version_id, p_project_id) LOOP
7272 
7273                                 l_index := l_index + 1;
7274 
7275                                 l_rollup_table1(l_index).OBJECT_TYPE          := cur_del_rec.object_type;
7276                                 l_rollup_table1(l_index).OBJECT_ID            := cur_del_rec.object_id_to1;--Object Version Id of Deliverable
7277                                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE   := cur_del_rec.parent_object_type;
7278                                 l_rollup_table1(l_index).PARENT_OBJECT_ID     := p_task_version_id;
7279                                 l_rollup_table1(l_index).WBS_LEVEL            := 9999999;
7280 
7281                                 -- Rollup Percent Complete Rollup
7282                                 l_rollup_table1(l_index).task_weight1         := nvl( cur_del_rec.weighting_percentage, 0 );
7283                                 l_rollup_table1(l_index).PERCENT_COMPLETE1    := nvl( cur_del_rec.completed_percentage, 0 );
7284                                 --l_rollup_table1(l_index).PERCENT_OVERRIDE1    := 0; -- FPM Dev CR 2
7285 
7286 				-- 4392189 : Program Reporting Changes - Phase 2
7287 				-- Having Set2 columns to get Project level % complete
7288                                 l_rollup_table1(l_index).task_weight2         := nvl( cur_del_rec.weighting_percentage, 0 );
7289                                 l_rollup_table1(l_index).PERCENT_COMPLETE2    := nvl( cur_del_rec.completed_percentage, 0 );
7290 
7291 
7292                                 -- Base Percent Complete Rollup
7293                                 -- l_rollup_table1(l_index).task_weight2      := nvl( cur_del_rec.weighting_percentage, 0 );
7294                                 -- l_rollup_table1(l_index).PERCENT_COMPLETE2 := nvl( cur_del_rec.base_percent_complete, 0 );
7295                                 -- l_rollup_table1(l_index).PERCENT_OVERRIDE2 := 0;
7296 
7297                                 -- Dates will not get rolled up for deliverable
7298                                 -- Rollup Progress Status Rollup
7299 
7300                                 -- l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1 := 0;    --rollup prog status is 0 for deliverable as it is lowest -- FPM Dev CR 2
7301                                 l_rollup_table1(l_index).PROGRESS_override1      := cur_del_rec.override_weight;    --override prg status
7302 
7303                                 -- Base Progress Status Rollup
7304 				-- 4533112 : Now base progress status weight is not used
7305                                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_del_rec.base_weight, 0);
7306                                 -- l_rollup_table1(l_index).PROGRESS_override2      := 0;
7307 
7308                                 l_rollup_table1(l_index).DIRTY_FLAG1      := 'Y';
7309                                 l_rollup_table1(l_index).DIRTY_FLAG2      := 'Y';
7310 
7311                                 -- Deliverable Status will not get rolled up for deliverable
7312 
7313                                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED(cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7314 
7315                                 IF nvl( l_task_weighting_percentage, 0 ) = 0 THEN
7316                                      l_action_allowed := 'N';
7317                                 END IF;
7318 
7319                                 IF nvl( cur_del_rec.weighting_percentage, 0 ) = 0 THEN
7320                                      l_action_allowed := 'N';
7321                                 END IF;
7322 
7323                                 IF g1_debug_mode  = 'Y' THEN
7324                                         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);
7325                                         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);
7326                                 END IF;
7327 
7328                                 l_rollup_table1(l_index).rollup_node1          := l_action_allowed;
7329                                 l_rollup_table1(l_index).rollup_node2          := l_action_allowed;
7330 
7331                                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7332                                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7333 
7334                         END LOOP; -- Delivertables Loop cur_del_rec
7335                 END IF; -- l_task_derivation_code = 'DELIVERABLES' THEN
7336 
7337     end if;  -- Fix for Bug # 4032987.
7338 
7339                 l_index := l_index + 1;
7340 
7341                 l_rollup_table1(l_index).OBJECT_TYPE                     := cur_tasks_rec.object_type;
7342                 l_rollup_table1(l_index).OBJECT_ID                       := cur_tasks_rec.object_id_to1;--Task Version Id
7343                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := cur_tasks_rec.parent_object_type;
7344                 l_rollup_table1(l_index).PARENT_OBJECT_ID                := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7345                 l_rollup_table1(l_index).WBS_LEVEL                       := NVL( cur_tasks_rec.wbs_level, 0 );
7346 
7347 		-- 4582956 Begin
7348                 -- l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG             := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);--4370746
7349 		IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789) THEN
7350 			-- 4586449 : Passing L for link tasks
7351 			l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := 'L'; --Link task shd be treated as summary task
7352 			--l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG       := 'Y'; --Link task shd be treated as summary task
7353 		ELSE
7354 			l_rollup_table1(l_index).SUMMARY_OBJECT_FLAG         := PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(cur_tasks_rec.object_id_to1);
7355 		END IF;
7356 		-- 4582956 end
7357 
7358                      -- Rollup Percent Complete Rollup
7359                 l_rollup_table1(l_index).task_weight1                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7360                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7361                 l_rollup_table1(l_index).PERCENT_OVERRIDE1               := cur_tasks_rec.override_percent_complete;
7362 
7363 		-- 4392189 : Program Reporting Changes - Phase 2
7364 		-- Having Set2 columns to get Project level % complete
7365                 l_rollup_table1(l_index).task_weight2                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7366                 l_rollup_table1(l_index).PERCENT_COMPLETE2               := nvl( cur_tasks_rec.base_percent_complete, 0 );
7367 		--4557541 : For self % complete Override at tasks level would not be considered
7368                 --l_rollup_table1(l_index).PERCENT_OVERRIDE2               := cur_tasks_rec.override_percent_complete;
7369 		l_rollup_table1(l_index).PERCENT_OVERRIDE2               := null;
7370 
7371 
7372                      -- Base Percent Complete Rollup
7373                         -- l_rollup_table1(l_index).task_weight2            := nvl( cur_tasks_rec.weighting_percentage, 0 );
7374                         -- l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_tasks_rec.base_percent_complete, 0 );
7375                         -- l_rollup_table1(l_index).PERCENT_OVERRIDE2       := 0;
7376 
7377                      -- Actual Date Rollup
7378                 l_rollup_table1(l_index).START_DATE1                     := cur_tasks_rec.actual_start_date;
7379                 l_rollup_table1(l_index).FINISH_DATE1                    := cur_tasks_rec.actual_finish_date;
7380 
7381                      -- Estimated Date Rollup
7382                 l_rollup_table1(l_index).START_DATE2                     := cur_tasks_rec.estimated_start_date;
7383                 l_rollup_table1(l_index).FINISH_DATE2                    := cur_tasks_rec.estimated_finish_date;
7384 
7385                      -- Rollup Progress Status Rollup
7386                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
7387                 l_rollup_table1(l_index).PROGRESS_override1              := cur_tasks_rec.override_weight2;    --override prg status
7388 
7389                 -- Base Progress Status Rollup
7390 		-- 4533112 : Now base_progress_status_code is not used
7391                 --l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 );  --base prog status
7392                 --l_rollup_table1(l_index).PROGRESS_override2              := 0;  -- FPM Dev CR 2
7393 
7394                      -- Task Status Rollup
7395                 l_rollup_table1(l_index).task_status1                    := nvl( cur_tasks_rec.task_weight4, 0 );  -- task status
7396 
7397                      -- ETC Effort Rollup
7398                 l_rollup_table1(l_index).REMAINING_EFFORT1               := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7399                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1               := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7400 
7401                      -- ETC Burden Cost in Project Currency Rollup
7402                 l_rollup_table1(l_index).ETC_COST1                       := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7403                 l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7404                 l_rollup_table1(l_index).EQPMT_ETC_COST1                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7405 
7406                 -- ETC Burden Cost in Project Functional Currency Rollup
7407                 l_rollup_table1(l_index).ETC_COST2                       := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7408                 l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7409                 l_rollup_table1(l_index).EQPMT_ETC_COST2                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7410 
7411                      -- Sub Project ETC Effort Rollup
7412                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7413                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7414 
7415                      -- Sub Project ETC Cost in Project Currency Rollup
7416                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7417                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7418                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7419 
7420                 -- Sub Project ETC Cost in Project Functional Currency Rollup
7421                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7422                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7423                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7424 
7425 		-- 4392189 : Program Reporting Changes - Phase 2
7426 		-- Having Set2 columns to get Project level % complete
7427 
7428                  -- Earned Value and BAC Rollup
7429                 l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7430 		l_rollup_table1(l_index).EARNED_VALUE2           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7431 
7432 		-- 4586449 Begin : For link tasks, pass BAC_VALUE in terms of derivation method of the task
7433 		-- in EARNED_VALUE1
7434 		IF cur_tasks_rec.object_id_to1 = nvl(l_subproj_task_version_id, -789)
7435 		AND cur_tasks_rec.object_id_to1 = p_task_version_id
7436 		THEN
7437 
7438 			l_rollup_table1(l_index).EARNED_VALUE1 := pa_progress_utils.Get_BAC_Value(p_project_id
7439 				, l_task_derivation_code, p_task_id,  p_structure_version_id,
7440 				'WORKPLAN','N','Y');
7441 			-- Bug 4636100 Issue 1 : We should always pass self plan for link task as 1
7442 			--l_rollup_table1(l_index).EARNED_VALUE2 := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 );
7443 			l_rollup_table1(l_index).EARNED_VALUE2 := 1;
7444 		END IF;
7445 
7446 		l_rollup_table1(l_index).BAC_VALUE1              := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7447 
7448 		IF g1_debug_mode = 'Y' THEN
7449 			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);
7450 			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);
7451 			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);
7452                 END IF;
7453 		-- 4586449 End
7454 
7455 
7456                 l_rollup_table1(l_index).BAC_VALUE2              := NVL( cur_tasks_rec.BAC_VALUE_SELF, 0 ); -- Bug 4493105
7457 
7458 
7459                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7460                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE2 := l_task_derivation_code;
7461 
7462                 --Bug 3614828 Begin
7463                         -- ETC Burden Cost in Transaction Currency Rollup
7464                 l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7465                 l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7466                 l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7467 
7468                 -- ETC Raw Cost in Transaction Currency Rollup
7469                 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7470                 --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7471                 --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7472                 --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7473 
7474                 l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7475                 l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7476 
7477                 -- ETC Raw Cost in Project Currency Rollup
7478                 l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7479                 l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7480                 l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7481 
7482                 -- ETC Raw Cost in PRoject Functional Currency Rollup
7483                 l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7484                 l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7485                 l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7486 
7487 
7488                 -- Actual Burden Cost in Transaction Currency Rollup
7489                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7490                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7491                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7492                 -- Actual Burden Cost in Project Currency Rollup
7493                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7494                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7495                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7496                 -- Actual Burden Cost in Project Functional Currency Rollup
7497                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7498                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7499                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7500 
7501                 -- Actual Raw Cost in Transaction Currency Rollup
7502                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7503                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7504                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7505                 -- Actual Raw Cost in Project Currency Rollup
7506                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7507                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7508                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7509                 -- Actual Raw Cost in Project Functional Currency Rollup
7510                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7511                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7512                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7513 
7514                 --Bug 3614828 End
7515 
7516         -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7517                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7518                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7519 
7520 
7521 
7522                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7523                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7524                 l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7525                 l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7526                 l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7527                 l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7528 
7529                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7530                         l_action_allowed := 'N';
7531                 END IF;
7532 
7533                 IF g1_debug_mode  = 'Y' THEN
7534                      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);
7535                      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);
7536                 END IF;
7537 
7538                 l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
7539                 l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
7540                 l_rollup_table1(l_index).rollup_node3                    := l_action_allowed;
7541                 l_rollup_table1(l_index).rollup_node4                    := l_action_allowed;
7542                 l_rollup_table1(l_index).rollup_node5                    := l_action_allowed;
7543                 l_rollup_table1(l_index).rollup_node6                    := l_action_allowed;
7544 
7545                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7546                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7547                 l_rollup_table1(l_index).rollup_node3          := 'Y';
7548                 l_rollup_table1(l_index).rollup_node4          := 'Y';
7549                 l_rollup_table1(l_index).rollup_node5          := 'Y';
7550                 l_rollup_table1(l_index).rollup_node6          := 'Y';
7551 
7552         END LOOP; -- Tasks Loop
7553 
7554 /*
7555         --bug 3951982
7556         --populate scheduling pl/sql table with sub-tasks of a summary tasks if it has assignments.
7557         IF PA_PROJ_ELEMENTS_UTILS.IS_LOWEST_TASK(p_task_version_id => p_task_version_id ) = 'N'
7558            AND pa_progress_utils.check_assignment_exists(p_project_id,p_task_version_id, 'PA_TASKS') = 'Y'
7559         THEN
7560             -- Loop thru all tasks of a passed task
7561             FOR cur_tasks_rec in cur_tasks( p_task_version_id ) LOOP
7562               IF cur_tasks_rec.object_type = 'PA_TASKS'
7563               THEN
7564                 IF g1_debug_mode  = 'Y' THEN
7565                    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);
7566                    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);
7567                 END IF;
7568 
7569                 l_action_allowed  := PA_PROJ_ELEMENTS_UTILS.CHECK_TASK_STUS_ACTION_ALLOWED( cur_tasks_rec.status_code, 'PROGRESS_ROLLUP' );
7570 
7571                 IF g1_debug_mode  = 'Y' THEN
7572                    pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'l_index='||l_index, x_Log_Level=> 3);
7573                 END IF;
7574 
7575                 l_index := l_index + 1;
7576 
7577                 l_rollup_table1(l_index).OBJECT_TYPE                     := cur_tasks_rec.object_type;
7578                 l_rollup_table1(l_index).OBJECT_ID                       := cur_tasks_rec.object_id_to1;--Task Version Id
7579                 l_rollup_table1(l_index).PARENT_OBJECT_TYPE              := cur_tasks_rec.parent_object_type;
7580                 l_rollup_table1(l_index).PARENT_OBJECT_ID                := cur_tasks_rec.object_id_from1; --Parent Task Version Id
7581                 l_rollup_table1(l_index).WBS_LEVEL                       := NVL( cur_tasks_rec.wbs_level, 0 );
7582 
7583                      -- Rollup Percent Complete Rollup
7584                 l_rollup_table1(l_index).task_weight1                    := nvl( cur_tasks_rec.weighting_percentage, 0 );
7585                 l_rollup_table1(l_index).PERCENT_COMPLETE1               := nvl( cur_tasks_rec.rollup_completed_percentage, 0 );
7586                 l_rollup_table1(l_index).PERCENT_OVERRIDE1               := cur_tasks_rec.override_percent_complete;
7587 
7588                      -- Base Percent Complete Rollup
7589                         -- l_rollup_table1(l_index).task_weight2            := nvl( cur_tasks_rec.weighting_percentage, 0 );
7590                         -- l_rollup_table1(l_index).PERCENT_COMPLETE2       := nvl( cur_tasks_rec.base_percent_complete, 0 );
7591                         -- l_rollup_table1(l_index).PERCENT_OVERRIDE2       := 0;
7592 
7593                      -- Actual Date Rollup
7594                 l_rollup_table1(l_index).START_DATE1                     := cur_tasks_rec.actual_start_date;
7595                 l_rollup_table1(l_index).FINISH_DATE1                    := cur_tasks_rec.actual_finish_date;
7596 
7597                      -- Estimated Date Rollup
7598                 l_rollup_table1(l_index).START_DATE2                     := cur_tasks_rec.estimated_start_date;
7599                 l_rollup_table1(l_index).FINISH_DATE2                    := cur_tasks_rec.estimated_finish_date;
7600 
7601                      -- Rollup Progress Status Rollup
7602                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT1         := nvl(cur_tasks_rec.rollup_weight1,0);    --rollup prog status
7603                 l_rollup_table1(l_index).PROGRESS_override1              := cur_tasks_rec.override_weight2;    --override prg status
7604 
7605                      -- Base Progress Status Rollup
7606                 l_rollup_table1(l_index).PROGRESS_STATUS_WEIGHT2 := nvl( cur_tasks_rec.base_weight3, 0 );  --base prog status
7607                 --l_rollup_table1(l_index).PROGRESS_override2              := 0;  -- FPM Dev CR 2
7608 
7609                      -- Task Status Rollup
7610                 l_rollup_table1(l_index).task_status1                    := nvl( cur_tasks_rec.task_weight4, 0 );  -- task status
7611 
7612                      -- ETC Effort Rollup
7613                 l_rollup_table1(l_index).REMAINING_EFFORT1               := NVL( cur_tasks_rec.ESTIMATED_REMAINING_EFFORT, 0 ); --etc_people_effort
7614                 l_rollup_table1(l_index).EQPMT_ETC_EFFORT1               := NVL( cur_tasks_rec.EQPMT_ETC_EFFORT, 0 );
7615 
7616                      -- ETC Burden Cost in Project Currency Rollup
7617                 l_rollup_table1(l_index).ETC_COST1                       := NVL( cur_tasks_rec.OTH_ETC_COST_PC, 0 );
7618                 l_rollup_table1(l_index).PPL_ETC_COST1                   := NVL( cur_tasks_rec.PPL_ETC_COST_PC, 0 );
7619                 l_rollup_table1(l_index).EQPMT_ETC_COST1                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_PC, 0 );
7620 
7621                 -- ETC Burden Cost in Project Functional Currency Rollup
7622                 l_rollup_table1(l_index).ETC_COST2                       := NVL( cur_tasks_rec.OTH_ETC_COST_FC, 0 );
7623                 l_rollup_table1(l_index).PPL_ETC_COST2                   := NVL( cur_tasks_rec.PPL_ETC_COST_FC, 0 );
7624                 l_rollup_table1(l_index).EQPMT_ETC_COST2                 := NVL( cur_tasks_rec.EQPMT_ETC_COST_FC, 0 );
7625 
7626                      -- Sub Project ETC Effort Rollup
7627                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_EFFORT, 0 );
7628                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_EFFORT, 0 );
7629 
7630                      -- Sub Project ETC Cost in Project Currency Rollup
7631                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST1       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_PC, 0 );
7632                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST1   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_PC, 0 );
7633                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST1 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_PC, 0 );
7634 
7635                 -- Sub Project ETC Cost in Project Functional Currency Rollup
7636                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST2       := NVL( cur_tasks_rec.SUBPRJ_OTH_ETC_COST_FC, 0 );
7637                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST2   := NVL( cur_tasks_rec.SUBPRJ_PPL_ETC_COST_FC, 0 );
7638                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST2 := NVL( cur_tasks_rec.SUBPRJ_EQPMT_ETC_COST_FC, 0 );
7639 
7640                        -- Earned Value and BAC Rollup
7641                 l_rollup_table1(l_index).EARNED_VALUE1           := 0; --NVL( cur_tasks_rec.EARNED_VALUE, 0 );
7642                 l_rollup_table1(l_index).BAC_VALUE1              := NVL( cur_tasks_rec.BAC_VALUE, 0 );
7643 
7644                 l_rollup_table1(l_index).PERC_COMP_DERIVATIVE_CODE1 := l_task_derivation_code;
7645 
7646                 --Bug 3614828 Begin
7647                         -- ETC Burden Cost in Transaction Currency Rollup
7648                 l_rollup_table1(l_index).ETC_COST3                      := NVL( cur_tasks_rec.OTH_ETC_COST_TC, 0 );
7649                 l_rollup_table1(l_index).PPL_ETC_COST3                  := NVL( cur_tasks_rec.PPL_ETC_COST_TC, 0 );
7650                 l_rollup_table1(l_index).EQPMT_ETC_COST3                := NVL( cur_tasks_rec.EQPMT_ETC_COST_TC, 0 );
7651 
7652                 -- ETC Raw Cost in Transaction Currency Rollup
7653                 -- We do not use Transaction currency, so we can utilize this set to do actual effort rollup
7654                 --l_rollup_table1(l_index).ETC_COST4                    := NVL( cur_tasks_rec.OTH_ETC_RAWCost_TC, 0 );
7655                 --l_rollup_table1(l_index).PPL_ETC_COST4                        := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_TC, 0 );
7656                 --l_rollup_table1(l_index).EQPMT_ETC_COST4              := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_TC, 0 );
7657 
7658                 l_rollup_table1(l_index).ETC_COST4                      := NVL( cur_tasks_rec.PPL_ACT_EFFORT_TO_DATE, 0 );
7659                 l_rollup_table1(l_index).PPL_ETC_COST4                  := NVL( cur_tasks_rec.EQPMT_ACT_EFFORT_TO_DATE, 0 );
7660 
7661                 -- ETC Raw Cost in Project Currency Rollup
7662                 l_rollup_table1(l_index).ETC_COST5                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_PC, 0 );
7663                 l_rollup_table1(l_index).PPL_ETC_COST5                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_PC, 0 );
7664                 l_rollup_table1(l_index).EQPMT_ETC_COST5                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_PC, 0 );
7665 
7666                 -- ETC Raw Cost in PRoject Functional Currency Rollup
7667                 l_rollup_table1(l_index).ETC_COST6                      := NVL( cur_tasks_rec.OTH_ETC_RAWCost_FC, 0 );
7668                 l_rollup_table1(l_index).PPL_ETC_COST6                  := NVL( cur_tasks_rec.PPL_ETC_RAWCOST_FC, 0 );
7669                 l_rollup_table1(l_index).EQPMT_ETC_COST6                := NVL( cur_tasks_rec.EQPMT_ETC_RAWCOST_FC, 0 );
7670 
7671 
7672                 -- Actual Burden Cost in Transaction Currency Rollup
7673                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST3              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_TC, 0 );
7674                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST3          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_TC, 0 );
7675                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST3        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_TC, 0 );
7676                 -- Actual Burden Cost in Project Currency Rollup
7677                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT3        := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_PC, 0 );
7678                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT3      := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_PC, 0 );
7679                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT3            := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_PC, 0 );
7680                 -- Actual Burden Cost in Project Functional Currency Rollup
7681                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST4              := NVL( cur_tasks_rec.OTH_ACT_COST_TO_DATE_FC, 0 );
7682                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST4          := NVL( cur_tasks_rec.PPL_ACT_COST_TO_DATE_FC, 0 );
7683                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST4        := NVL( cur_tasks_rec.EQPMT_ACT_COST_TO_DATE_FC, 0 );
7684 
7685                 -- Actual Raw Cost in Transaction Currency Rollup
7686                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT4        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_TC, 0 );
7687                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT4      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_TC, 0 );
7688                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT4            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_TC, 0 );
7689                 -- Actual Raw Cost in Project Currency Rollup
7690                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST5              := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_PC, 0 );
7691                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST5          := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_PC, 0 );
7692                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_COST5        := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC, 0 );
7693                 -- Actual Raw Cost in Project Functional Currency Rollup
7694                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_EFFORT5        := NVL( cur_tasks_rec.OTH_ACT_RAWCOST_TO_DATE_FC, 0 );
7695                 l_rollup_table1(l_index).SUB_PRJ_EQPMT_ETC_EFFORT5      := NVL( cur_tasks_rec.PPL_ACT_RAWCOST_TO_DATE_FC, 0 );
7696                 l_rollup_table1(l_index).PPL_UNPLAND_EFFORT5            := NVL( cur_tasks_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC, 0 );
7697 
7698                 --Bug 3614828 End
7699 
7700         -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
7701                 l_rollup_table1(l_index).SUB_PRJ_ETC_COST6              := NVL( cur_tasks_rec.Oth_quantity_to_date, 0 );
7702                 l_rollup_table1(l_index).SUB_PRJ_PPL_ETC_COST6          := NVL( cur_tasks_rec.oth_etc_quantity, 0 );
7703 
7704 
7705 
7706                 l_rollup_table1(l_index).DIRTY_FLAG1         := 'Y';
7707                 l_rollup_table1(l_index).DIRTY_FLAG2         := 'Y';
7708                 l_rollup_table1(l_index).DIRTY_FLAG3         := 'Y';
7709                 l_rollup_table1(l_index).DIRTY_FLAG4         := 'Y';
7710                 l_rollup_table1(l_index).DIRTY_FLAG5         := 'Y';
7711                 l_rollup_table1(l_index).DIRTY_FLAG6         := 'Y';
7712 
7713                 IF nvl( cur_tasks_rec.weighting_percentage, 0 ) = 0 THEN
7714                         l_action_allowed := 'N';
7715                 END IF;
7716 
7717                 IF g1_debug_mode  = 'Y' THEN
7718                      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);
7719                      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);
7720                 END IF;
7721 
7722                 l_rollup_table1(l_index).rollup_node1                    := l_action_allowed;
7723                 l_rollup_table1(l_index).rollup_node2                    := l_action_allowed;
7724                 l_rollup_table1(l_index).rollup_node3                    := l_action_allowed;
7725                 l_rollup_table1(l_index).rollup_node4                    := l_action_allowed;
7726                 l_rollup_table1(l_index).rollup_node5                    := l_action_allowed;
7727                 l_rollup_table1(l_index).rollup_node6                    := l_action_allowed;
7728 
7729                 l_rollup_table1(l_index).rollup_node1          := 'Y';
7730                 l_rollup_table1(l_index).rollup_node2          := 'Y';
7731                 l_rollup_table1(l_index).rollup_node3          := 'Y';
7732                 l_rollup_table1(l_index).rollup_node4          := 'Y';
7733                 l_rollup_table1(l_index).rollup_node5          := 'Y';
7734                 l_rollup_table1(l_index).rollup_node6          := 'Y';
7735 
7736               END IF; --<<cur_tasks_rec.object_type = 'PA_TASKS'
7737             END LOOP;
7738         END IF;
7739         --end bug 3951982
7740 */
7741 
7742         IF g1_debug_mode  = 'Y' THEN
7743                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Calling GENERATE_SCHEDULE', x_Log_Level=> 3);
7744                 FOR i IN 1..l_rollup_table1.count LOOP
7745                         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);
7746                         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);
7747                         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);
7748                         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);
7749                         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);
7750                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7751                                 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7752                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7753                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7754                                 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7755                         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||
7756                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7757                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7758                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7759                                 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7760                                         ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7761                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7762                                 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7763                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7764                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7765                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7766                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7767                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7768                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7769                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7770                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7771                                 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7772                                         ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7773                         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||
7774                                 ' 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||
7775                         ' 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);
7776                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7777             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||
7778                                 ' 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);
7779                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7780             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||
7781                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2|| ' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7782                         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 ='
7783                                 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7784                         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 ='
7785                                 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7786                         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);
7787                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7788                 END LOOP;
7789         END IF;
7790     -- Bug 4207995 : Commented partial_flags in the below call
7791         --Call generate schedule with the second table.
7792         PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE(
7793                  p_commit                                => p_commit
7794                 ,p_debug_mode                           => 'Y'
7795                 ,x_return_status                        => l_return_status
7796                 ,x_msg_count                            => l_msg_count
7797                 ,x_msg_data                             => l_msg_data
7798                 ,x_process_number                       => l_process_number
7799 		,p_number_digit                         => 2               --bug 3941447
7800                 ,p_data_structure                       => l_rollup_table1
7801                 ,p_process_flag1                        => 'Y'
7802                 ,p_process_rollup_flag1                 => 'Y'
7803                 ,p_process_progress_flag1               => 'Y'
7804                 ,p_process_percent_flag1                => 'Y'
7805                 ,p_process_effort_flag1                 => 'Y'
7806                 ,p_process_task_status_flag1            => 'Y'
7807                 ,p_process_flag2                        => 'Y'
7808                 ,p_process_rollup_flag2                 => 'Y'
7809                 ,p_process_progress_flag2               => 'Y'
7810                 ,p_process_percent_flag2                => 'Y'
7811 --                ,p_partial_process_flag1                => 'Y'
7812 --                ,p_partial_process_flag2                => 'Y'
7813 --                ,p_partial_dates_flag1                  => 'Y'
7814 --                ,p_partial_dates_flag2                  => 'Y'
7815 --                ,p_partial_progress_flag1               => 'Y'
7816 --                ,p_partial_progress_flag2               => 'Y'
7817 --                ,p_partial_task_status_flag1            => 'N'
7818 --                ,p_partial_effort_flag1                 => 'Y'
7819 --                ,p_partial_percent_flag1                => 'Y'
7820 --                ,p_partial_percent_flag2                => 'Y'
7821 --                ,p_process_ETC_Flag1                    => 'Y'
7822 --                ,p_partial_ETC_Flag1                    => 'Y'
7823 --                ,p_process_ETC_Flag2                    => 'Y'
7824 --                ,p_partial_ETC_Flag2                    => 'Y'
7825                 --Bug 3614828 Begin
7826                 ,p_process_flag3                        => 'Y'
7827                 ,p_process_rollup_flag3                 => 'Y'
7828                 ,p_process_progress_flag3               => 'Y'
7829                 ,p_process_percent_flag3                => 'Y'
7830                 ,p_process_effort_flag3                 => 'Y'
7831                 ,p_process_task_status_flag3            => 'Y'
7832                 ,p_process_ETC_Flag3                    => 'Y'
7833 --                ,p_partial_ETC_Flag3                    => 'Y'
7834                 ,p_process_flag4                        => 'Y'
7835                 ,p_process_rollup_flag4                 => 'Y'
7836                 ,p_process_progress_flag4               => 'Y'
7837                 ,p_process_percent_flag4                => 'Y'
7838                 ,p_process_effort_flag4                 => 'Y'
7839                 ,p_process_task_status_flag4            => 'Y'
7840                 ,p_process_ETC_Flag4                    => 'Y'
7841 --                ,p_partial_ETC_Flag4                    => 'Y'
7842                 ,p_process_flag5                        => 'Y'
7843                 ,p_process_rollup_flag5                 => 'Y'
7844                 ,p_process_progress_flag5               => 'Y'
7845                 ,p_process_percent_flag5                => 'Y'
7846                 ,p_process_effort_flag5                 => 'Y'
7847                 ,p_process_task_status_flag5            => 'Y'
7848                 ,p_process_ETC_Flag5                    => 'Y'
7849 --                ,p_partial_ETC_Flag5                    => 'Y'
7850                 ,p_process_flag6                        => 'Y'
7851                 ,p_process_rollup_flag6                 => 'Y'
7852                 ,p_process_progress_flag6               => 'Y'
7853                 ,p_process_percent_flag6                => 'Y'
7854                 ,p_process_effort_flag6                 => 'Y'
7855                 ,p_process_task_status_flag6            => 'Y'
7856                 ,p_process_ETC_Flag6                    => 'Y'
7857 --                ,p_partial_ETC_Flag6                    => 'Y'
7858                 --Bug 3614828 End
7859                 ,p_Rollup_Method                        => l_Rollup_Method
7860                 );
7861 
7862         IF g1_debug_mode  = 'Y' THEN
7863                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After  GENERATE_SCHEDULE', x_Log_Level=> 3);
7864         END IF;
7865 
7866         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7867                 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7868                                            p_msg_name       => l_msg_data
7869                                 );
7870                 x_msg_data := l_msg_data;
7871           x_return_status := 'E';
7872           RAISE  FND_API.G_EXC_ERROR;
7873         END IF;
7874 
7875         -- Updating the Rolled up Task Record
7876         IF g1_debug_mode  = 'Y' THEN
7877                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '******Returned from Genertate Schedule ***', x_Log_Level=> 3);
7878                 FOR i IN 1..l_rollup_table1.count LOOP
7879                         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);
7880                         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);
7881                         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);
7882                         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);
7883                         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);
7884                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'START_DATE1 ='||l_rollup_table1(i).START_DATE1||
7885                                 ' FINISH_DATE1 ='||l_rollup_table1(i).FINISH_DATE1||
7886                                 ' START_DATE2 ='||l_rollup_table1(i).START_DATE2||' FINISH_DATE2 ='||l_rollup_table1(i).FINISH_DATE2, x_Log_Level=> 3);
7887                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_STATUS1 ='||l_rollup_table1(i).TASK_STATUS1||
7888                                 ' TASK_STATUS2 ='||l_rollup_table1(i).TASK_STATUS2, x_Log_Level=> 3);
7889                         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||
7890                                 ' PROGRESS_OVERRIDE1 ='||l_rollup_table1(i).PROGRESS_OVERRIDE1||' PROGRESS_STATUS_WEIGHT2 ='||l_rollup_table1(i).PROGRESS_STATUS_WEIGHT2||
7891                                         ' PROGRESS_OVERRIDE2 ='||l_rollup_table1(i).PROGRESS_OVERRIDE2, x_Log_Level=> 3);
7892                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'PERCENT_COMPLETE1 ='||l_rollup_table1(i).PERCENT_COMPLETE1||
7893                                 ' PERCENT_OVERRIDE1 ='||l_rollup_table1(i).PERCENT_OVERRIDE1||' PERCENT_COMPLETE2 ='||l_rollup_table1(i).PERCENT_COMPLETE2||
7894                                         ' PERCENT_OVERRIDE2 ='||l_rollup_table1(i).PERCENT_OVERRIDE2, x_Log_Level=> 3);
7895                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'TASK_WEIGHT1 ='||l_rollup_table1(i).TASK_WEIGHT1||
7896                                 ' TASK_WEIGHT2 ='||l_rollup_table1(i).TASK_WEIGHT2, x_Log_Level=> 3);
7897                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ROLLUP_NODE1 ='||l_rollup_table1(i).ROLLUP_NODE1||
7898                                 ' DIRTY_FLAG1 ='||l_rollup_table1(i).DIRTY_FLAG1||' ROLLUP_NODE2 ='||l_rollup_table1(i).ROLLUP_NODE2||
7899                                         ' DIRTY_FLAG2 ='||l_rollup_table1(i).DIRTY_FLAG2, x_Log_Level=> 3);
7900                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'ETC_Cost1 ='||l_rollup_table1(i).ETC_Cost1||
7901                                 ' PPL_ETC_COST1 ='||l_rollup_table1(i).PPL_ETC_COST1||' EQPMT_ETC_COST1 ='||l_rollup_table1(i).EQPMT_ETC_COST1||
7902                                         ' ETC_Cost2 ='||l_rollup_table1(i).ETC_Cost2||' PPL_ETC_COST2 ='||l_rollup_table1(i).PPL_ETC_COST2||
7903                                                 ' EQPMT_ETC_COST2 ='||l_rollup_table1(i).EQPMT_ETC_COST2, x_Log_Level=> 3);
7904                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'REMAINING_EFFORT1 ='||l_rollup_table1(i).REMAINING_EFFORT1||
7905                                 ' EQPMT_ETC_EFFORT1 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT1||' REMAINING_EFFORT2 ='||l_rollup_table1(i).REMAINING_EFFORT2||
7906                                         ' EQPMT_ETC_EFFORT2 ='||l_rollup_table1(i).EQPMT_ETC_EFFORT2, x_Log_Level=> 3);
7907                         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||
7908                                 ' 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||
7909                         ' 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);
7910                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7911 			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||
7912                                 ' 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);
7913                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT',
7914 			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||
7915                                 ' BAC_VALUE2 ='||l_rollup_table1(i).BAC_VALUE2||' BAC_VALUE6 ='||l_rollup_table1(i).BAC_VALUE6, x_Log_Level=> 3);
7916                         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 ='
7917                                 ||l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE2, x_Log_Level=> 3);
7918                         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 ='
7919                                 ||l_rollup_table1(i).PPL_ETC_COST4, x_Log_Level=> 3);
7920                         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);
7921                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => '**********************************************************', x_Log_Level=> 3);
7922                 END LOOP;
7923     END IF;
7924 
7925         l_percent_complete_id := null;
7926 
7927         l_total_tasks := l_rollup_table1.count; -- Actually it is not the tasks count, it is count of all the objects.
7928 
7929         IF g1_debug_mode  = 'Y' THEN
7930                 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);
7931                 FOR i IN 1..l_total_tasks LOOP
7932                         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);
7933                         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);
7934                         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);
7935                         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);
7936                         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);
7937                 END LOOP;
7938         END IF;
7939 
7940         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Getting Periods', x_Log_Level=> 3);
7941         BEGIN
7942                 l_prog_pa_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_Pa_Period_Name(p_as_of_date),null);
7943                 l_prog_gl_period_name := nvl(PA_PROGRESS_UTILS.Prog_Get_GL_Period_Name(p_as_of_date),null);
7944         EXCEPTION
7945                 WHEN OTHERS THEN
7946                         PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
7947                                     p_msg_name       => 'PA_FP_INVALID_DATE_RANGE');
7948                         x_msg_data := 'PA_FP_INVALID_DATE_RANGE';
7949                         x_return_status := 'E';
7950                         x_msg_count := fnd_msg_pub.count_msg;
7951                         RAISE  FND_API.G_EXC_ERROR;
7952         END ;
7953 
7954         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'After Getting Periods', x_Log_Level=> 3);
7955 
7956 
7957         IF l_total_tasks > 0 THEN
7958                 FOR i in 1..l_total_tasks LOOP
7959                         IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
7960                         THEN
7961                                 IF g1_debug_mode  = 'Y' THEN
7962                                         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);
7963                                 END IF;
7964 
7965                                 l_BASE_PERCENT_COMP_DERIV_CODE := l_rollup_table1(i).PERC_COMP_DERIVATIVE_CODE1;
7966                                 l_eff_rollup_status_code := null;
7967                                 l_progress_status_code := null;
7968 
7969                                 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight1) ); --get the eff rollup status
7970                                 FETCH cur_status INTO l_eff_rollup_status_code;
7971                                 CLOSE cur_status;
7972 
7973                                 OPEN cur_status( to_char(l_rollup_table1(i).progress_status_weight2) );  --get the base prog status
7974                                 FETCH cur_status INTO l_progress_status_code;
7975                                 CLOSE cur_status;
7976 
7977                                 IF g1_debug_mode  = 'Y' THEN
7978                                         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);
7979                                         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);
7980                                 END IF;
7981 
7982 
7983 
7984                                 l_rolled_up_per_comp := null;
7985                                 l_rolled_up_prog_stat := null;
7986                                 l_rolled_up_base_prog_stat := null;
7987                                 l_rolled_up_prog_stat := null;
7988                                 l_remaining_effort1 := null;
7989                                 l_percent_complete1 := null;
7990                                 l_ETC_Cost_PC    := null;
7991                                 l_PPL_ETC_COST_PC := null;
7992                                 l_EQPMT_ETC_COST_PC := null;
7993                                 l_ETC_Cost_FC       := null;
7994                                 l_PPL_ETC_COST_FC   := null;
7995                                 l_EQPMT_ETC_COST_FC := null;
7996                                 l_EQPMT_ETC_EFFORT := null;
7997                                 l_SUB_PRJ_ETC_COST_PC := null;
7998                                 l_SUB_PRJ_PPL_ETC_COST_PC := null;
7999                                 l_SUB_PRJ_EQPMT_ETC_COST_PC := null;
8000                                 l_SUB_PRJ_ETC_COST_FC := null;
8001                                 l_SUB_PRJ_PPL_ETC_COST_FC := null;
8002                                 l_SUB_PRJ_EQPMT_ETC_COST_FC := null;
8003                                 l_SUB_PRJ_PPL_ETC_EFFORT := null;
8004                                 l_SUB_PRJ_EQPMT_ETC_EFFORT := null;
8005                                 l_BAC_VALUE1 := null;
8006                                 l_EARNED_VALUE1 := null;
8007                                 l_remaining_effort1 := null;
8008                                 l_EQPMT_ETC_EFFORT := null;
8009                                 l_OTH_ACT_COST_TO_DATE_PC := null;
8010                                 l_PPL_ACT_COST_TO_DATE_PC := null;
8011                                 l_EQPMT_ACT_COST_TO_DATE_PC := null;
8012                                 l_OTH_ACT_COST_TO_DATE_FC := null;
8013                                 l_PPL_ACT_COST_TO_DATE_FC := null;
8014                                 l_EQPMT_ACT_COST_TO_DATE_FC := null;
8015                                 l_PPL_ACT_EFFORT_TO_DATE := null;
8016                                 l_EQPMT_ACT_EFFORT_TO_DATE := null;
8017                                 l_cur_pa_rollup1_rec := null;
8018                                 l_cur_rollup_rec := null;
8019                                 -- Bug 3621404 : Raw Cost Changes
8020                                 l_OTH_ACT_RAWCOST_TO_DATE_PC := null;
8021                                 l_PPL_ACT_RAWCOST_TO_DATE_PC := null;
8022                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := null;
8023                                 l_OTH_ACT_RAWCOST_TO_DATE_FC := null;
8024                                 l_PPL_ACT_RAWCOST_TO_DATE_FC := null;
8025                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := null;
8026                                 l_ETC_RAWCost_PC := null;
8027                                 l_PPL_ETC_RAWCOST_PC := null;
8028                                 l_EQPMT_ETC_RAWCOST_PC := null;
8029                                 l_ETC_RAWCost_FC := null;
8030                                 l_PPL_ETC_RAWCOST_FC := null;
8031                                 l_EQPMT_ETC_RAWCOST_FC := null;
8032 				-- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8033 				l_Oth_quantity_to_date := null;
8034 				l_oth_etc_quantity := null;
8035 				-- Bug 3956299 Begin
8036 				l_actual_start_date := l_rollup_table1(i).start_date1;
8037 				l_actual_finish_date := l_rollup_table1(i).finish_date1;
8038 				l_estimated_start_date := l_rollup_table1(i).start_date2;
8039 				l_estimated_finish_date := l_rollup_table1(i).finish_date2;
8040 				-- Bug 3956299 End
8041 
8042                                 -- Bug 5675437
8043                                 l_cur_rollup_rec3 := null;
8044 
8045                                 OPEN cur_pa_rollup1(p_task_id);
8046                                 FETCH  cur_pa_rollup1 INTO l_cur_pa_rollup1_rec;
8047                                 CLOSE cur_pa_rollup1;
8048 
8049                                 l_rolled_up_per_comp :=  l_cur_pa_rollup1_rec.completed_percentage;
8050                                 l_rolled_up_prog_stat := l_cur_pa_rollup1_rec.progress_status_code;
8051                                 IF g1_debug_mode  = 'Y' THEN
8052                                         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);
8053                                         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);
8054                                 END IF;
8055                                 -- 4490532 : changed from IS_LOWEST_TASK to is_summary_task_or_structure
8056 				-- 4533112 : Now base_progress_status_code is not used
8057 				/*
8058                                 IF PA_PROJ_ELEMENTS_UTILS.is_summary_task_or_structure(p_task_version_id )= 'Y'
8059                                 THEN
8060                                         -- l_rolled_up_base_per_comp := nvl(l_cur_pa_rollup1_rec.base_percent_complete,0);
8061                                         l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8062                                 ELSE
8063 					-- l_rolled_up_base_per_comp := nvl(l_rollup_table1(i).percent_complete2,0);
8064                                         l_rolled_up_base_prog_stat := l_progress_status_code;
8065                                 END IF;
8066 				*/
8067 				l_rolled_up_base_prog_stat := l_cur_pa_rollup1_rec.base_progress_status_code;
8068 
8069                                 --Check whether there exists any rollup record for the task.
8070                                 --if exists then update otherwise create.
8071                                 l_PROGRESS_ROLLUP_ID := PA_PROGRESS_UTILS.get_prog_rollup_id(
8072                                                    p_project_id                 => p_project_id
8073                                                   ,p_object_id                  => p_task_id
8074                                                   ,p_object_type                => 'PA_TASKS'
8075                                                   ,p_object_version_id          => p_task_version_id
8076                                                   ,p_as_of_date                 => p_as_of_date
8077                                                   ,p_structure_type             => 'WORKPLAN'
8078                                                   ,p_structure_version_id       => l_structure_version_id
8079 						  ,p_proj_element_id            => p_task_id
8080 						  ,p_action                     => 'SAVE' -- Bug 3879461
8081                                                   ,x_record_version_number      => l_rollup_rec_ver_number
8082                                                 );
8083 
8084                                 IF g1_debug_mode  = 'Y' THEN
8085                                         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);
8086                                         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);
8087                                 END IF;
8088 
8089 
8090 				--bug 3949093, round the values
8091                                 --l_percent_complete1 := nvl(l_rollup_table1(i).percent_complete1,0);
8092                                 --l_remaining_effort1 := nvl(l_rollup_table1(i).remaining_effort1,0);
8093 
8094 				-- 4392189 : Program Reporting Changes - Phase 2
8095 				-- Having Set2 columns to get Project level % complete
8096 
8097                                 l_percent_complete1 := nvl(round(l_rollup_table1(i).percent_complete1,2),0);
8098                                 -- 4506461 l_percent_complete2 := nvl(round(l_rollup_table1(i).percent_complete2,2),0);
8099 				l_base_pc_temp      := nvl(round(l_rollup_table1(i).percent_complete2,2),0);
8100                                 l_remaining_effort1 := nvl(round(l_rollup_table1(i).remaining_effort1,5),0);
8101                                 --bug 3949093, end
8102 
8103 				-- Bug 4506461 Begin
8104 				l_percent_complete2 := nvl(l_override_pc_temp,l_percent_complete1);
8105 				-- 4540890 : Removed l_subproject_found check from below
8106 				--IF  l_subproject_found = 'Y' THEN
8107 				l_rederive_base_pc := 'N';
8108 				OPEN c_get_any_childs_have_subprj(l_rollup_table1(i).object_id);
8109 				FETCH c_get_any_childs_have_subprj INTO l_rederive_base_pc;
8110 				CLOSE c_get_any_childs_have_subprj;
8111 				IF nvl(l_rederive_base_pc,'N') = 'Y' THEN
8112 					l_percent_complete2 := l_base_pc_temp;
8113 				END IF;
8114                 --END IF;
8115                 -- Bug 4506461 End
8116 
8117 
8118                                 --do not rollup on-hold task status. We dont need to worry about
8119                                 --cancelled bcoz they are not selected.
8120                                 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);
8121                                 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);
8122 
8123                 -- Bug 3922325 : Moved the code for status defaulting and updating after Actual is derived
8124 
8125                 --Bug 3614828 Begin
8126 
8127                                 l_BAC_VALUE1 := nvl(l_rollup_table1(i).BAC_VALUE1,0); -- Bug 3764224
8128                 --bug 3949093, rund the earned value
8129                                 --l_EARNED_VALUE1 := nvl(l_rollup_table1(i).EARNED_VALUE1,0); -- Bug 3764224
8130 
8131                 IF g1_debug_mode  = 'Y' THEN
8132                     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);
8133                     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);
8134                     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);
8135                 END IF;
8136 
8137                 l_EARNED_VALUE1 := l_rollup_table1(i).EARNED_VALUE1;
8138 
8139                 IF p_wp_rollup_method = 'EFFORT'
8140                 THEN
8141                     l_EARNED_VALUE1 := nvl(round(l_EARNED_VALUE1, 5),0);
8142                 ELSE
8143                     l_EARNED_VALUE1 := nvl(pa_currency.round_trans_currency_amt(l_EARNED_VALUE1, l_prj_currency_code),0);
8144                 END IF;
8145                 --bug 3949093, end
8146 
8147                                 l_OTH_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT3;
8148                                 l_PPL_ACT_COST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT3;
8149                                 l_EQPMT_ACT_COST_TO_DATE_PC := l_rollup_table1(i).PPL_UNPLAND_EFFORT3;
8150                                 l_OTH_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_ETC_COST4;
8151                                 l_PPL_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST4;
8152                                 l_EQPMT_ACT_COST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST4;
8153                                 l_PPL_ACT_EFFORT_TO_DATE := l_rollup_table1(i).ETC_COST4;
8154                                 l_EQPMT_ACT_EFFORT_TO_DATE := l_rollup_table1(i).PPL_ETC_COST4;
8155                                 l_ETC_Cost_PC := l_rollup_table1(i).ETC_COST1;
8156                                 l_PPL_ETC_COST_PC := l_rollup_table1(i).PPL_ETC_COST1;
8157                                 l_EQPMT_ETC_COST_PC := l_rollup_table1(i).EQPMT_ETC_COST1;
8158                                 l_ETC_Cost_FC := l_rollup_table1(i).ETC_COST2;
8159                                 l_PPL_ETC_COST_FC := l_rollup_table1(i).PPL_ETC_COST2;
8160                                 l_EQPMT_ETC_COST_FC := l_rollup_table1(i).EQPMT_ETC_COST2;
8161                                 l_remaining_effort1 := l_rollup_table1(i).REMAINING_EFFORT1;
8162                                 l_EQPMT_ETC_EFFORT := l_rollup_table1(i).EQPMT_ETC_EFFORT1;
8163                                 l_OTH_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_ETC_COST5;
8164                                 l_PPL_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST5;
8165                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_COST5;
8166                                 l_OTH_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_PPL_ETC_EFFORT5;
8167                                 l_PPL_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).SUB_PRJ_EQPMT_ETC_EFFORT5;
8168                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC := l_rollup_table1(i).PPL_UNPLAND_EFFORT5;
8169                                 l_ETC_RAWCost_PC := l_rollup_table1(i).ETC_COST5;
8170                                 l_PPL_ETC_RAWCOST_PC := l_rollup_table1(i).PPL_ETC_COST5;
8171                                 l_EQPMT_ETC_RAWCOST_PC := l_rollup_table1(i).EQPMT_ETC_COST5;
8172                                 l_ETC_RAWCost_FC := l_rollup_table1(i).ETC_COST6;
8173                                 l_PPL_ETC_RAWCOST_FC := l_rollup_table1(i).PPL_ETC_COST6;
8174                                 l_EQPMT_ETC_RAWCOST_FC := l_rollup_table1(i).EQPMT_ETC_COST6;
8175                 -- Bug 3879461 : Oth_quantity_to_date and oth_etc_quantity was not getting rolled up.
8176                 l_Oth_quantity_to_date := l_rollup_table1(i).SUB_PRJ_ETC_COST6;
8177                 l_oth_etc_quantity := l_rollup_table1(i).SUB_PRJ_PPL_ETC_COST6;
8178 
8179 
8180                                 --Bug 3614828 End
8181 
8182                 -- Bug 3922325 : Moved here the code from above
8183                 -- Begin
8184 
8185 
8186                 -- Bug 3879461 Begin : Commented this logic for defaulting status and added new
8187                                 /*IF (l_percent_complete1 > 0) THEN
8188                                         l_status_code := null;
8189 
8190                                         OPEN cur_task_status( to_char(l_rollup_table1(i).task_status1) );
8191                                         FETCH cur_task_status INTO l_status_code;
8192                                         CLOSE cur_task_status;
8193 
8194                                         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);
8195 
8196                                         IF (l_percent_complete1 = 100 AND l_task_system_status_code = 'NOT_STARTED')
8197                                         THEN
8198                                                 l_status_code := '127';
8199                                         ELSIF (l_percent_complete1 > 0 AND l_task_system_status_code = 'NOT_STARTED')
8200                                         THEN
8201                                                 l_status_code := '125';
8202                                         END IF;
8203 
8204 
8205                                         UPDATE pa_percent_completes
8206                                         SET status_code = l_status_code
8207                                         WHERE object_id = p_task_id
8208                                         AND project_id = p_project_id
8209                                         AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8210                                         AND structure_type = 'WORKPLAN'
8211                                         AND current_flag = 'N' and published_flag = 'N';
8212 
8213                                 END IF;*/
8214                 -- If Actual Exists or Deliverable is in progress then task shd be In PRogress
8215                 l_actual_exists := 'N';
8216                 ---5726773  changed '>0' to '<>0'
8217  	        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
8218                                     IF g1_debug_mode  = 'Y' THEN
8219                                         pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ASGN_DLV_TO_TASK_ROLLUP_PVT', x_Msg => 'Actual Exists', x_Log_Level=> 3);
8220                     END IF;
8221                     l_actual_exists := 'Y';
8222                 END IF;
8223                 OPEN c_get_dlv_status;
8224                 FETCH c_get_dlv_status INTO l_actual_exists;
8225                 CLOSE c_get_dlv_status;
8226 
8227                                 IF g1_debug_mode  = 'Y' THEN
8228                                     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);
8229                                         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);
8230                                         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);
8231                                         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);
8232                                 END IF;
8233 
8234 
8235                                 IF  (  ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8236                                        OR
8237                                       ( l_percent_complete1 > 0 OR l_rolled_up_per_comp > 0 )
8238                       OR l_actual_exists = 'Y'
8239                                      ) THEN
8240 
8241                                         OPEN  c_get_object_status ( p_project_id, p_task_id);
8242                                         FETCH c_get_object_status INTO l_existing_object_status;
8243                                         CLOSE c_get_object_status;
8244 
8245                     l_status_code := l_existing_object_status;
8246 
8247                                         IF ( nvl(l_rollup_table1(i).task_status1,0) <> 0 )
8248                                         THEN
8249                         OPEN  cur_task_status ( to_char(l_rollup_table1(i).task_status1) );
8250                                                 FETCH cur_task_status INTO l_status_code;
8251                                                 CLOSE cur_task_status;
8252                                                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.UPDATE_ROLLUP_PROGRESS_PVT', x_Msg => 'l_status_code ='||l_status_code, x_Log_Level=> 3);
8253                     END IF; -- Bug 3956299 : Reduced scope of IF.
8254                         -- Now Defaulting of Status will happen even if the status is returned by Scheuling API, but it is wrong
8255                                         --ELSE
8256                                         --l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_existing_object_status );  Bug 3956299
8257                                         l_task_system_status_code := PA_PROGRESS_UTILS.get_system_task_status( l_status_code ); -- Bug 3956299
8258 
8259                                     IF g1_debug_mode  = 'Y' THEN
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                                     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);
8262                                 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);
8263                     END IF;
8264 
8265 
8266                                     IF ( NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 AND l_task_system_status_code <> 'COMPLETED')
8267                                         THEN
8268                                             l_status_code := '127';
8269                         l_task_system_status_code := 'COMPLETED';
8270                     -- In the below check, Completed is also added as Scheduling API may return status as COMPLETED but % complete may not be as 100
8271                             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'))
8272                                         THEN
8273                                             l_status_code := '125';
8274                         l_task_system_status_code := 'IN_PROGRESS';
8275                         l_actual_finish_date := null;
8276                     -- This is done to first time make task In Progress if any sub-objects are in Progress
8277                             ELSIF (l_actual_exists ='Y' AND l_task_system_status_code = 'NOT_STARTED')
8278                                         THEN
8279                                             l_status_code := '125';
8280 						l_task_system_status_code := 'IN_PROGRESS';
8281                         l_actual_finish_date := null;
8282                                         END IF;
8283                                         --END IF;
8284 
8285                                     IF g1_debug_mode  = 'Y' THEN
8286                                         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);
8287                                         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);
8288                     END IF;
8289 
8290 
8291                     -- Bug 3956299 Begin
8292                     OPEN c_get_dates (p_project_id, p_task_version_id);
8293                     FETCH c_get_dates INTO l_tsk_scheduled_start_date, l_tsk_scheduled_finish_date;
8294                     CLOSE c_get_dates;
8295                     /* Bug 3922325  : Date defaulting should be based on Status rather % complete
8296                     IF l_actual_start_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) > 0 THEN
8297                          l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8298                     END IF;
8299                     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
8300                          l_actual_finish_date := null;
8301                     END IF;
8302                     IF l_actual_finish_date IS NULL AND NVL(l_rolled_up_per_comp, l_percent_complete1) = 100 THEN
8303                          l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8304                     END IF;
8305                     */
8306                     IF l_actual_start_date IS NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8307                         l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8308                         l_actual_finish_date := to_date(null);
8309                     END IF;
8310                     -- Bug 4232099 : added folling IF
8311                     IF l_actual_finish_date IS NOT NULL AND l_task_system_status_code = 'IN_PROGRESS' THEN
8312                         l_actual_finish_date := to_date(null);
8313                     END IF;
8314                     IF l_actual_start_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8315                         l_actual_start_date := nvl(l_estimated_start_date,l_tsk_scheduled_start_date);
8316                     END IF;
8317                     IF l_actual_finish_date IS NULL AND l_task_system_status_code = 'COMPLETED' THEN
8318                         l_actual_finish_date := nvl(l_estimated_finish_date,l_tsk_scheduled_finish_date);
8319                     END IF;
8320 
8321                     IF l_actual_start_date IS NOT NULL AND l_actual_finish_date IS NOT NULL THEN
8322                         IF l_actual_finish_date < l_actual_start_date THEN
8323                             IF TRUNC(SYSDATE) < l_actual_start_date THEN
8324                                 l_actual_finish_date := l_actual_start_date;
8325                             ELSE
8326                                 l_actual_finish_date := TRUNC(SYSDATE);
8327                             END IF;
8328                         END IF;
8329                     END IF;
8330                 -- Bug 3956299 End
8331 
8332                                         UPDATE pa_percent_completes
8333                                         SET status_code = l_status_code
8334                     , actual_start_date = l_actual_start_date -- Bug 3956299
8335                     , actual_finish_date = l_actual_finish_date -- Bug 3956299
8336                                         WHERE object_id = p_task_id
8337                                         AND project_id = p_project_id
8338                                         AND PA_PROGRESS_UTILS.get_system_task_status( status_code ) NOT IN ( 'CANCELLED' )
8339                                         AND structure_type = 'WORKPLAN'
8340                                         AND current_flag = 'N' and published_flag = 'N';
8341                                 END IF;
8342                 -- Bug 3879461 End
8343                 -- Bug 3922325 End
8344 
8345 
8346                                 --Bug 3614828 Begin
8347                                 /* In Save action, Actuals and ETC is not to be read from PJI.
8348                                 BEGIN
8349                                        SELECT
8350                         PERIOD_NAME
8351                                                 , ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST
8352                                                 , ACT_PRJ_LABOR_BRDN_COST
8353                                                 , ACT_PRJ_EQUIP_BRDN_COST
8354                                                 , ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST
8355                                                 , ACT_POU_LABOR_BRDN_COST
8356                                                 , ACT_POU_EQUIP_BRDN_COST
8357                                                 , ACT_LABOR_HRS
8358                                                 , ACT_EQUIP_HRS
8359                                                 , ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST
8360                                                 , ETC_PRJ_LABOR_BRDN_COST
8361                                                 , ETC_PRJ_EQUIP_BRDN_COST
8362                                                 , ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST
8363                                                 , ETC_POU_LABOR_BRDN_COST
8364                                                 , ETC_POU_EQUIP_BRDN_COST
8365                                                 , ETC_LABOR_HRS
8366                                                 , ETC_EQUIP_HRS
8367                                                 , ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST
8368                                                 , ACT_PRJ_LABOR_RAW_COST
8369                                                 , ACT_PRJ_EQUIP_RAW_COST
8370                                                 , ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST
8371                                                 , ACT_POU_LABOR_RAW_COST
8372                                                 , ACT_POU_EQUIP_RAW_COST
8373                                                 , ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST
8374                                                 , ETC_PRJ_LABOR_RAW_COST
8375                                                 , ETC_PRJ_EQUIP_RAW_COST
8376                                                 , ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST
8377                                                 , ETC_POU_LABOR_RAW_COST
8378                                                 , ETC_POU_EQUIP_RAW_COST
8379                                                 ,EQUIPMENT_HOURS
8380                                                 ,POU_LABOR_BRDN_COST
8381                                                 ,PRJ_LABOR_BRDN_COST
8382                                                 ,POU_EQUIP_BRDN_COST
8383                                                 ,PRJ_EQUIP_BRDN_COST
8384                                                 ,POU_LABOR_RAW_COST
8385                                                 ,PRJ_LABOR_RAW_COST
8386                                                 ,POU_EQUIP_RAW_COST
8387                                                 ,PRJ_EQUIP_RAW_COST
8388                                         INTO    l_PERIOD_NAME
8389                                                 , l_OTH_ACT_COST_TO_DATE_PC
8390                                                 , l_PPL_ACT_COST_TO_DATE_PC
8391                                                 , l_EQPMT_ACT_COST_TO_DATE_PC
8392                                                 , l_OTH_ACT_COST_TO_DATE_FC
8393                                                 , l_PPL_ACT_COST_TO_DATE_FC
8394                                                 , l_EQPMT_ACT_COST_TO_DATE_FC
8395                                                 , l_PPL_ACT_EFFORT_TO_DATE
8396                                                 , l_EQPMT_ACT_EFFORT_TO_DATE
8397                                                 , l_ETC_Cost_PC
8398                                                 , l_PPL_ETC_COST_PC
8399                                                 , l_EQPMT_ETC_COST_PC
8400                                                 , l_ETC_Cost_FC
8401                                                 , l_PPL_ETC_COST_FC
8402                                                 , l_EQPMT_ETC_COST_FC
8403                                                 , l_remaining_effort1
8404                                                 , l_EQPMT_ETC_EFFORT
8405                                                 , l_OTH_ACT_RAWCOST_TO_DATE_PC
8406                                                 , l_PPL_ACT_RAWCOST_TO_DATE_PC
8407                                                 , l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8408                                                 , l_OTH_ACT_RAWCOST_TO_DATE_FC
8409                                                 , l_PPL_ACT_RAWCOST_TO_DATE_FC
8410                                                 , l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8411                                                 , l_ETC_RAWCost_PC
8412                                                 , l_PPL_ETC_RAWCOST_PC
8413                                                 , l_EQPMT_ETC_RAWCOST_PC
8414                                                 , l_ETC_RAWCost_FC
8415                                                 , l_PPL_ETC_RAWCOST_FC
8416                                                 , l_EQPMT_ETC_RAWCOST_FC
8417                                                 ,l_EQUIPMENT_HOURS
8418                                                 ,l_POU_LABOR_BRDN_COST
8419                                                 ,l_PRJ_LABOR_BRDN_COST
8420                                                 ,l_POU_EQUIP_BRDN_COST
8421                                                 ,l_PRJ_EQUIP_BRDN_COST
8422                                                 ,l_POU_LABOR_RAW_COST
8423                                                 ,l_PRJ_LABOR_RAW_COST
8424                                                 ,l_POU_EQUIP_RAW_COST
8425                                                 ,l_PRJ_EQUIP_RAW_COST
8426                                          FROM PJI_FM_XBS_ACCUM_TMP1
8427                                          WHERE project_id = p_project_id
8428                                          AND struct_version_id = p_structure_version_id
8429                                          AND project_element_id = p_task_id
8430                                          AND plan_version_id > 0
8431                                          AND txn_currency_code is null
8432                                          AND calendar_type = 'A'
8433                                          AND res_list_member_id is null;
8434                                 EXCEPTION
8435                                          WHEN NO_DATA_FOUND THEN
8436                                               null;
8437                                          WHEN OTHERS THEN
8438                                               fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8439                                                                    p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
8440                                                                    p_error_text     => SUBSTRB('PJI_FM_XBS_ACCUM_TMP1:'||SQLERRM,1,120));
8441                                              RAISE FND_API.G_EXC_ERROR;
8442                                 END;
8443                                 */
8444                                 --Bug 3614828 End
8445 
8446 
8447                                 IF l_PROGRESS_ROLLUP_ID IS NOT NULL
8448                                 THEN
8449                                         --update
8450                                         OPEN cur_rollup( l_PROGRESS_ROLLUP_ID );
8451                                         FETCH cur_rollup INTO l_cur_rollup_rec;
8452                                         CLOSE cur_rollup;
8453                                         /* Do not update actuals if the project is of shared type. */
8454                                         -- 4623833 : Added l_subproj_task_version_id check
8455 					-- update_task_progress makes equip amount as null for link task
8456 					-- This should be updated back with the rolled amounts from sub projects
8457 					-- Ideally, the below code should not be there at all and alwsy values shd rollup
8458 					-- but for precuations at this last stage of build, just including link task check here
8459 
8460                                         IF l_split_workplan = 'N' AND l_subproj_task_version_id IS NULL
8461                                         THEN
8462                                            /* Start of changes for bug 5675437*/
8463                                              -- For hidden assignment case, we need to get the actuals from submitted record rather than current working one
8464 
8465                                              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
8466 
8467                                                 l_PROGRESS_ROLLUP_ID3 := PA_PROGRESS_UTILS.get_prog_rollup_id(
8468                                                      p_project_id                 => p_project_id
8469                                                     ,p_object_id                  => p_task_id
8470                                                     ,p_object_type                => 'PA_TASKS'
8471                                                     ,p_object_version_id          => p_task_version_id
8472                                                     ,p_as_of_date                 => p_as_of_date
8473                                                     ,p_structure_type             => 'WORKPLAN'
8474                                                     ,p_structure_version_id       => l_structure_version_id
8475                                                     ,p_proj_element_id            => p_task_id
8476                                                     ,x_record_version_number      => l_rollup_rec_ver_number3
8477                                                   );
8478                                                 OPEN cur_rollup( l_PROGRESS_ROLLUP_ID3 );
8479                                                  FETCH cur_rollup INTO l_cur_rollup_rec3;
8480                                                  CLOSE cur_rollup;
8481 
8482                                                  l_PPL_ACT_EFFORT_TO_DATE         :=     l_cur_rollup_rec3.PPL_ACT_EFFORT_TO_DATE;
8483                                                  l_EQPMT_ACT_EFFORT_TO_DATE       :=     l_cur_rollup_rec3.EQPMT_ACT_EFFORT_TO_DATE;
8484                                                  l_OTH_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_FC;
8485                                                  l_OTH_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec3.OTH_ACT_COST_TO_DATE_PC;
8486                                                  l_PPL_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_FC;
8487                                                  l_PPL_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec3.PPL_ACT_COST_TO_DATE_PC;
8488                                                  l_EQPMT_ACT_COST_TO_DATE_FC      :=     l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_FC;
8489                                                  l_EQPMT_ACT_COST_TO_DATE_PC      :=     l_cur_rollup_rec3.EQPMT_ACT_COST_TO_DATE_PC;
8490                                                  l_OTH_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_FC;
8491                                                  l_OTH_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec3.OTH_ACT_RAWCOST_TO_DATE_PC;
8492                                                  l_PPL_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_FC;
8493                                                  l_PPL_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec3.PPL_ACT_RAWCOST_TO_DATE_PC;
8494                                                  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;
8495                                                  l_Oth_quantity_to_date           :=     l_cur_rollup_rec3.Oth_quantity_to_date;
8496 
8497                                              ELSE
8498 
8499                                              /* End of changes for bug 5675437*/
8500 
8501                                                 l_PPL_ACT_EFFORT_TO_DATE         :=     l_cur_rollup_rec.PPL_ACT_EFFORT_TO_DATE;
8502                                                 l_EQPMT_ACT_EFFORT_TO_DATE       :=     l_cur_rollup_rec.EQPMT_ACT_EFFORT_TO_DATE;
8503                                                 l_OTH_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_FC;
8504                                                 l_OTH_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec.OTH_ACT_COST_TO_DATE_PC;
8505                                                 l_PPL_ACT_COST_TO_DATE_FC        :=     l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_FC;
8506                                                 l_PPL_ACT_COST_TO_DATE_PC        :=     l_cur_rollup_rec.PPL_ACT_COST_TO_DATE_PC;
8507                                                 l_EQPMT_ACT_COST_TO_DATE_FC      :=     l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_FC;
8508                                                 l_EQPMT_ACT_COST_TO_DATE_PC      :=     l_cur_rollup_rec.EQPMT_ACT_COST_TO_DATE_PC;
8509                                                 l_OTH_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_FC;
8510                                                 l_OTH_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec.OTH_ACT_RAWCOST_TO_DATE_PC;
8511                                                 l_PPL_ACT_RAWCOST_TO_DATE_FC     :=     l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_FC;
8512                                                 l_PPL_ACT_RAWCOST_TO_DATE_PC     :=     l_cur_rollup_rec.PPL_ACT_RAWCOST_TO_DATE_PC;
8513                                                 l_EQPMT_ACT_RAWCOST_TO_DATE_FC   :=     l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_FC;
8514                                                 l_EQPMT_ACT_RAWCOST_TO_DATE_PC   :=     l_cur_rollup_rec.EQPMT_ACT_RAWCOST_TO_DATE_PC;
8515                         l_Oth_quantity_to_date           :=     l_cur_rollup_rec.Oth_quantity_to_date;
8516                                             END IF;  --5675437
8517 
8518                                         END IF;
8519 
8520 
8521                                         /* if etc values are null, set them as planned - actual. */
8522 
8523                                                         PA_PROGRESS_ROLLUP_PKG.UPDATE_ROW(
8524                                                                     X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
8525                                                                    ,X_PROJECT_ID                      => p_project_id
8526                                                                    ,X_OBJECT_ID                       => p_task_id
8527                                                                    ,X_OBJECT_TYPE                     => l_rollup_table1(i).object_type
8528                                                                    ,X_AS_OF_DATE                      => p_as_of_date
8529                                                                    ,X_OBJECT_VERSION_ID               => l_rollup_table1(i).object_id
8530                                                                    ,X_LAST_UPDATE_DATE                => SYSDATE
8531                                                                    ,X_LAST_UPDATED_BY                 => l_user_id
8532                                                                    ,X_PROGRESS_STATUS_CODE            => l_cur_rollup_rec.progress_status_code
8533                                                                    ,X_LAST_UPDATE_LOGIN               => l_login_id
8534                                                                    ,X_INCREMENTAL_WORK_QTY            => l_cur_rollup_rec.incremental_work_quantity
8535                                                                    ,X_CUMULATIVE_WORK_QTY             => l_cur_rollup_rec.cumulative_work_quantity
8536                                                                    ,X_BASE_PERCENT_COMPLETE           => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8537                                                                    ,X_EFF_ROLLUP_PERCENT_COMP         => l_percent_complete1
8538                                                                    ,X_COMPLETED_PERCENTAGE            => l_cur_rollup_rec.completed_percentage
8539                                                                    ,X_ESTIMATED_START_DATE            => l_rollup_table1(i).start_date2
8540                                                                    ,X_ESTIMATED_FINISH_DATE           => l_rollup_table1(i).finish_date2
8541                                                                    ,X_ACTUAL_START_DATE               => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8542                                                                    ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8543                                                                    ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
8544                                                                    ,X_RECORD_VERSION_NUMBER           => l_rollup_rec_ver_number
8545                                                                    ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_cur_rollup_rec.BASE_PERCENT_COMP_DERIV_CODE
8546                                                                    ,X_BASE_PROGRESS_STATUS_CODE       => l_rolled_up_base_prog_stat
8547                                                                    ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_status_code
8548                                                                    ,x_percent_complete_id             => null
8549                                                                    ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
8550                                                                    ,X_PROJ_ELEMENT_ID                 => p_task_id
8551                                                                    ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
8552                                                                    ,X_PPL_ACT_EFFORT_TO_DATE          => l_PPL_ACT_EFFORT_TO_DATE
8553                                                                    ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_EQPMT_ACT_EFFORT_TO_DATE
8554                                                                    ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
8555                                                                    ,X_OTH_ACT_COST_TO_DATE_TC         => null
8556                                                                    ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
8557                                                                    ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
8558                                                                    ,X_OTH_ETC_COST_TC                 => null
8559                                                                    ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
8560                                                                    ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
8561                                                                    ,X_PPL_ACT_COST_TO_DATE_TC         => null
8562                                                                    ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
8563                                                                    ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
8564                                                                    ,X_PPL_ETC_COST_TC                 => null
8565                                                                    ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
8566                                                                    ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
8567                                                                    ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
8568                                                                    ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
8569                                                                    ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
8570                                                                    ,X_EQPMT_ETC_COST_TC               => null
8571                                                                    ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
8572                                                                    ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
8573                                                                    ,X_EARNED_VALUE                    => l_earned_value1
8574                                                                    ,X_TASK_WT_BASIS_CODE              => l_rollup_method
8575                                                                    ,X_SUBPRJ_PPL_ACT_EFFORT           => l_cur_rollup_rec.SUBPRJ_PPL_ACT_EFFORT
8576                                                                    ,X_SUBPRJ_EQPMT_ACT_EFFORT         => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_EFFORT
8577                                                                    ,X_SUBPRJ_PPL_ETC_EFFORT           => l_cur_rollup_rec.SUBPRJ_PPL_ETC_EFFORT
8578                                                                    ,X_SUBPRJ_EQPMT_ETC_EFFORT         => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_EFFORT
8579                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
8580                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_FC
8581                                                                    ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => l_cur_rollup_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_PC
8582                                                                    ,X_SUBPRJ_PPL_ACT_COST_TC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_TC
8583                                                                    ,X_SUBPRJ_PPL_ACT_COST_FC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_FC
8584                                                                    ,X_SUBPRJ_PPL_ACT_COST_PC          => l_cur_rollup_rec.SUBPRJ_PPL_ACT_COST_PC
8585                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_TC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_TC
8586                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_FC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_FC
8587                                                                    ,X_SUBPRJ_EQPMT_ACT_COST_PC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_COST_PC
8588                                                                    ,X_SUBPRJ_OTH_ETC_COST_TC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_TC
8589                                                                    ,X_SUBPRJ_OTH_ETC_COST_FC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_FC
8590                                                                    ,X_SUBPRJ_OTH_ETC_COST_PC          => l_cur_rollup_rec.SUBPRJ_OTH_ETC_COST_PC
8591                                                                    ,X_SUBPRJ_PPL_ETC_COST_TC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_TC
8592                                                                    ,X_SUBPRJ_PPL_ETC_COST_FC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_FC
8593                                                                    ,X_SUBPRJ_PPL_ETC_COST_PC          => l_cur_rollup_rec.SUBPRJ_PPL_ETC_COST_PC
8594                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_TC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_TC
8595                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_FC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_FC
8596                                                                    ,X_SUBPRJ_EQPMT_ETC_COST_PC        => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_COST_PC
8597                                                                    ,X_SUBPRJ_EARNED_VALUE             => l_cur_rollup_rec.SUBPRJ_EARNED_VALUE
8598                                                                    ,X_CURRENT_FLAG                    => l_cur_rollup_rec.CURRENT_FLAG
8599                                                                    ,X_PROJFUNC_COST_RATE_TYPE         => l_cur_rollup_rec.PROJFUNC_COST_RATE_TYPE
8600                                                                    ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_cur_rollup_rec.PROJFUNC_COST_EXCHANGE_RATE
8601                                                                    ,X_PROJFUNC_COST_RATE_DATE         => l_cur_rollup_rec.PROJFUNC_COST_RATE_DATE
8602                                                                    ,X_PROJ_COST_RATE_TYPE             => l_cur_rollup_rec.PROJ_COST_RATE_TYPE
8603                                                                    ,X_PROJ_COST_EXCHANGE_RATE         => l_cur_rollup_rec.PROJ_COST_EXCHANGE_RATE
8604                                                                    ,X_PROJ_COST_RATE_DATE             => l_cur_rollup_rec.PROJ_COST_RATE_DATE
8605                                                                    ,X_TXN_CURRENCY_CODE               => l_cur_rollup_rec.TXN_CURRENCY_CODE
8606                                                                    ,X_PROG_PA_PERIOD_NAME             => l_cur_rollup_rec.PROG_PA_PERIOD_NAME
8607                                                                    ,X_PROG_GL_PERIOD_NAME             => l_cur_rollup_rec.PROG_GL_PERIOD_NAME
8608                                                                    ,X_OTH_QUANTITY_TO_DATE            => l_Oth_quantity_to_date
8609                                                                    ,X_OTH_ETC_QUANTITY                => l_Oth_etc_quantity
8610                                                                    -- Bug 3621404 : Raw Cost Changes
8611                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
8612                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
8613                                                                    ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
8614                                                                    ,X_OTH_ETC_RAWCOST_TC              => null
8615                                                                    ,X_OTH_ETC_RAWCOST_FC              => l_ETC_RAWCost_FC
8616                                                                    ,X_OTH_ETC_RAWCOST_PC              => l_ETC_RAWCost_PC
8617                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
8618                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
8619                                                                    ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
8620                                                                    ,X_PPL_ETC_RAWCOST_TC              => null
8621                                                                    ,X_PPL_ETC_RAWCOST_FC              => l_PPL_ETC_RAWCOST_FC
8622                                                                    ,X_PPL_ETC_RAWCOST_PC              => l_PPL_ETC_RAWCOST_PC
8623                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
8624                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8625                                                                    ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8626                                                                    ,X_EQPMT_ETC_RAWCOST_TC            => null
8627                                                                    ,X_EQPMT_ETC_RAWCOST_FC            => l_EQPMT_ETC_RAWCOST_FC
8628                                                                    ,X_EQPMT_ETC_RAWCOST_PC            => l_EQPMT_ETC_RAWCOST_PC
8629                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_TC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_TC
8630                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_FC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_FC
8631                                                                    ,X_SP_OTH_ACT_RAWCOST_TODATE_PC    => l_cur_rollup_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_PC
8632                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8633                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8634                                                                    ,X_SUBPRJ_PPL_ACT_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8635                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8636                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8637                                                                    ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8638                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8639                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8640                                                                    ,X_SUBPRJ_OTH_ETC_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8641                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_TC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8642                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_FC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8643                                                                    ,X_SUBPRJ_PPL_ETC_RAWCOST_PC       => l_cur_rollup_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8644                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8645                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8646                                                                    ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC     => l_cur_rollup_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8647                                                              );
8648                                                                 -- FPM Dev CR 6
8649                                                                 IF Fnd_Msg_Pub.count_msg > 0 THEN
8650                                                                         RAISE  FND_API.G_EXC_ERROR;
8651                                                                 END IF;
8652 
8653                                                 --update progress_outdated_flag for summary tasks if there exists any ppc record
8654                                                 --for the summary task
8655 
8656                                                 l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8657                                                       p_task_id          => p_task_id
8658                               ,p_object_id       => p_task_id -- Bug 3764224
8659                                                      ,p_as_of_date         => p_as_of_date
8660                                                      ,p_project_id         => p_project_id
8661                                                      ,p_object_version_id  => l_rollup_table1(i).object_id
8662                                                      ,p_object_type        => l_rollup_table1(i).object_type
8663                                                   ,p_structure_type     => 'WORKPLAN'
8664                                                     );
8665 
8666                                        /* commenting out the code for bug   3851528
8667                                         IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8668                                                 UPDATE pa_proj_elements
8669                                                 SET progress_outdated_flag = 'Y'
8670                                                 WHERE proj_element_id = p_task_id
8671                                                 AND project_id = p_project_id
8672                                                 AND object_type = l_rollup_table1(i).object_type;
8673                                         END IF;
8674                                        */
8675                                 ELSE --l_PROGRESS_ROLLUP_ID IS NOT NULL
8676                                         -- get percent_complete_id
8677                                         BEGIN
8678                                                 SELECT percent_complete_id
8679                                                 INTO l_percent_complete_id
8680                                                 FROM pa_percent_completes
8681                                                 WHERE project_id = p_project_id
8682                                                 AND object_id =  p_task_id
8683                                                 AND object_Type = l_rollup_table1(i).object_Type
8684                                                 AND structure_type = 'WORKPLAN'
8685                                                 AND date_computed = ( SELECT max(date_computed)
8686                                                                 FROM pa_percent_completes
8687                                                                 WHERE project_id = p_project_id
8688                                                                 AND object_id =  p_task_id
8689                                                                 AND object_Type = l_rollup_table1(i).object_Type
8690                                                                 AND structure_type = 'WORKPLAN'
8691                                                                 AND date_computed <= p_as_of_date
8692                                                                 );
8693                                         EXCEPTION WHEN OTHERS THEN
8694                                                 l_percent_complete_id := null;
8695                                         END;
8696 
8697                     -- Bug 3879461 Begin : Code Not Required now
8698                     /*
8699                                         l_max_rollup_as_of_date2 := PA_PROGRESS_UTILS.get_max_rollup_asofdate2
8700                                                                 (p_project_id   => p_project_id,
8701                                                                  p_object_id    => p_task_id,
8702                                                                  p_object_type  => l_rollup_table1(i).object_type,
8703                                                                  p_structure_type => 'WORKPLAN',
8704                                                                  p_structure_version_id => l_structure_version_id,
8705                                  p_proj_element_id => p_task_id -- Bug 3764224
8706                                                                  );
8707 
8708 
8709                                         IF l_max_rollup_as_of_date2 > p_as_of_date
8710                                         THEN
8711                                                 l_current_flag := 'N';  --this means that there is a future record than the current one.
8712                                         ELSE
8713                                                 l_current_flag := 'Y';
8714                                         END IF;
8715                     */
8716                     -- Bug 3879461 End
8717 
8718                                         -- This code is not required if we do not do partail rollup from assignmnet progress details page
8719 
8720                                                          PA_PROGRESS_ROLLUP_PKG.INSERT_ROW(
8721                                                                           X_PROGRESS_ROLLUP_ID              => l_PROGRESS_ROLLUP_ID
8722                                                                          ,X_PROJECT_ID                      => p_project_id
8723                                                                          ,X_OBJECT_ID                       => p_task_id
8724                                                                          ,X_OBJECT_TYPE                     => l_rollup_table1(i).object_type
8725                                                                          ,X_AS_OF_DATE                      => p_as_of_date
8726                                                                          ,X_OBJECT_VERSION_ID               => l_rollup_table1(i).object_id
8727                                                                          ,X_LAST_UPDATE_DATE                => SYSDATE
8728                                                                          ,X_LAST_UPDATED_BY                 => l_user_id
8729                                                                          ,X_CREATION_DATE                   => SYSDATE
8730                                                                          ,X_CREATED_BY                      => l_user_id
8731                                                                          ,X_PROGRESS_STATUS_CODE            => l_rolled_up_prog_stat
8732                                                                          ,X_LAST_UPDATE_LOGIN               => l_login_id
8733                                                                          ,X_INCREMENTAL_WORK_QTY            => null
8734                                                                          ,X_CUMULATIVE_WORK_QTY             => null
8735                                                                          ,X_BASE_PERCENT_COMPLETE           => l_percent_complete2 -- 4392189 : Program Reporting Changes - Phase 2
8736                                                                          ,X_EFF_ROLLUP_PERCENT_COMP         => l_percent_complete1
8737                                                                          ,X_COMPLETED_PERCENTAGE            => l_rolled_up_per_comp
8738                                                                          ,X_ESTIMATED_START_DATE            => l_rollup_table1(i).start_date2
8739                                                                          ,X_ESTIMATED_FINISH_DATE           => l_rollup_table1(i).finish_date2
8740                                                                          ,X_ACTUAL_START_DATE               => l_actual_start_date -- Bug 3956299 l_rollup_table1(i).start_date1
8741                                                                          ,X_ACTUAL_FINISH_DATE              => l_actual_finish_date -- Bug 3956299 l_rollup_table1(i).finish_date1
8742                                                                          ,X_EST_REMAINING_EFFORT            => l_remaining_effort1
8743                                                                          ,X_BASE_PERCENT_COMP_DERIV_CODE    => l_BASE_PERCENT_COMP_DERIV_CODE
8744                                                                          ,X_BASE_PROGRESS_STATUS_CODE       => l_rolled_up_base_prog_stat
8745                                                                          ,X_EFF_ROLLUP_PROG_STAT_CODE       => l_eff_rollup_status_code
8746                                                                          ,x_percent_complete_id             => l_percent_complete_id
8747                                                                          ,X_STRUCTURE_TYPE                  => 'WORKPLAN'
8748                                                                          ,X_PROJ_ELEMENT_ID                 => p_task_id
8749                                                                          ,X_STRUCTURE_VERSION_ID            => l_structure_version_id
8750                                                                          ,X_PPL_ACT_EFFORT_TO_DATE          => l_PPL_ACT_EFFORT_TO_DATE
8751                                                                          ,X_EQPMT_ACT_EFFORT_TO_DATE        => l_EQPMT_ACT_EFFORT_TO_DATE
8752                                                                          ,X_EQPMT_ETC_EFFORT                => l_EQPMT_ETC_EFFORT
8753                                                                          ,X_OTH_ACT_COST_TO_DATE_TC         => null
8754                                                                          ,X_OTH_ACT_COST_TO_DATE_FC         => l_OTH_ACT_COST_TO_DATE_FC
8755                                                                          ,X_OTH_ACT_COST_TO_DATE_PC         => l_OTH_ACT_COST_TO_DATE_PC
8756                                                                          ,X_OTH_ETC_COST_TC                 => null
8757                                                                          ,X_OTH_ETC_COST_FC                 => l_ETC_Cost_FC
8758                                                                          ,X_OTH_ETC_COST_PC                 => l_ETC_Cost_PC
8759                                                                          ,X_PPL_ACT_COST_TO_DATE_TC         => null
8760                                                                          ,X_PPL_ACT_COST_TO_DATE_FC         => l_PPL_ACT_COST_TO_DATE_FC
8761                                                                          ,X_PPL_ACT_COST_TO_DATE_PC         => l_PPL_ACT_COST_TO_DATE_PC
8762                                                                          ,X_PPL_ETC_COST_TC                 => null
8763                                                                          ,X_PPL_ETC_COST_FC                 => l_PPL_ETC_COST_FC
8764                                                                          ,X_PPL_ETC_COST_PC                 => l_PPL_ETC_COST_PC
8765                                                                          ,X_EQPMT_ACT_COST_TO_DATE_TC       => null
8766                                                                          ,X_EQPMT_ACT_COST_TO_DATE_FC       => l_EQPMT_ACT_COST_TO_DATE_FC
8767                                                                          ,X_EQPMT_ACT_COST_TO_DATE_PC       => l_EQPMT_ACT_COST_TO_DATE_PC
8768                                                                          ,X_EQPMT_ETC_COST_TC               => null
8769                                                                          ,X_EQPMT_ETC_COST_FC               => l_EQPMT_ETC_COST_FC
8770                                                                          ,X_EQPMT_ETC_COST_PC               => l_EQPMT_ETC_COST_PC
8771                                                                          ,X_EARNED_VALUE                    => l_earned_value1
8772                                                                          ,X_TASK_WT_BASIS_CODE              => l_rollup_method
8773                                                                          ,X_SUBPRJ_PPL_ACT_EFFORT           => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_EFFORT
8774                                                                          ,X_SUBPRJ_EQPMT_ACT_EFFORT         => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_EFFORT
8775                                                                          ,X_SUBPRJ_PPL_ETC_EFFORT           => l_SUB_PRJ_PPL_ETC_EFFORT
8776                                                                          ,X_SUBPRJ_EQPMT_ETC_EFFORT         => l_SUB_PRJ_EQPMT_ETC_EFFORT
8777                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_TC    => null
8778                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_FC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_FC
8779                                                                          ,X_SBPJ_OTH_ACT_COST_TO_DATE_PC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ACT_COST_TO_DATE_PC
8780                                                                          ,X_SUBPRJ_PPL_ACT_COST_TC          => null
8781                                                                          ,X_SUBPRJ_PPL_ACT_COST_FC          => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_FC
8782                                                                          ,X_SUBPRJ_PPL_ACT_COST_PC          => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_COST_PC
8783                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_TC        => null
8784                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_FC        => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_FC
8785                                                                          ,X_SUBPRJ_EQPMT_ACT_COST_PC        => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_COST_PC
8786                                                                          ,X_SUBPRJ_OTH_ETC_COST_TC          => null
8787                                                                          ,X_SUBPRJ_OTH_ETC_COST_FC          => l_SUB_PRJ_ETC_COST_FC
8788                                                                          ,X_SUBPRJ_OTH_ETC_COST_PC          => l_SUB_PRJ_ETC_COST_PC
8789                                                                          ,X_SUBPRJ_PPL_ETC_COST_TC          => null
8790                                                                          ,X_SUBPRJ_PPL_ETC_COST_FC          => l_SUB_PRJ_PPL_ETC_COST_FC
8791                                                                          ,X_SUBPRJ_PPL_ETC_COST_PC          => l_SUB_PRJ_PPL_ETC_COST_PC
8792                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_TC        => null
8793                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_FC        => l_SUB_PRJ_EQPMT_ETC_COST_FC
8794                                                                          ,X_SUBPRJ_EQPMT_ETC_COST_PC        => l_SUB_PRJ_EQPMT_ETC_COST_PC
8795                                                                          ,X_SUBPRJ_EARNED_VALUE             => l_cur_pa_rollup1_rec.SUBPRJ_EARNED_VALUE
8796                                                                          ,X_CURRENT_FLAG                    => l_current_flag --maaansari FPM Dev CR2
8797                                                                          ,X_PROJFUNC_COST_RATE_TYPE         => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_TYPE
8798                                                                          ,X_PROJFUNC_COST_EXCHANGE_RATE     => l_cur_pa_rollup1_rec.PROJFUNC_COST_EXCHANGE_RATE
8799                                                                          ,X_PROJFUNC_COST_RATE_DATE         => l_cur_pa_rollup1_rec.PROJFUNC_COST_RATE_DATE
8800                                                                          ,X_PROJ_COST_RATE_TYPE             => l_cur_pa_rollup1_rec.PROJ_COST_RATE_TYPE
8801                                                                          ,X_PROJ_COST_EXCHANGE_RATE         => l_cur_pa_rollup1_rec.PROJ_COST_EXCHANGE_RATE
8802                                                                          ,X_PROJ_COST_RATE_DATE             => l_cur_pa_rollup1_rec.PROJ_COST_RATE_DATE
8803                                                                          ,X_TXN_CURRENCY_CODE               => l_cur_pa_rollup1_rec.TXN_CURRENCY_CODE
8804                                                                          ,X_PROG_PA_PERIOD_NAME             => l_prog_pa_period_name
8805                                                                          ,X_PROG_GL_PERIOD_NAME             => l_prog_gl_period_name
8806                                                                        ,X_OTH_QUANTITY_TO_DATE            => l_Oth_quantity_to_date
8807                                                                    ,X_OTH_ETC_QUANTITY                => l_Oth_etc_quantity
8808                                                                            -- Bug 3621404 : Raw Cost Changes
8809                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_TC      => null
8810                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_FC      => l_OTH_ACT_RAWCOST_TO_DATE_FC
8811                                                                            ,X_OTH_ACT_RAWCOST_TO_DATE_PC      => l_OTH_ACT_RAWCOST_TO_DATE_PC
8812                                                                            ,X_OTH_ETC_RAWCOST_TC              => null
8813                                                                            ,X_OTH_ETC_RAWCOST_FC              => l_ETC_RAWCost_FC
8814                                                                            ,X_OTH_ETC_RAWCOST_PC              => l_ETC_RAWCost_PC
8815                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_TC      => null
8816                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_FC      => l_PPL_ACT_RAWCOST_TO_DATE_FC
8817                                                                            ,X_PPL_ACT_RAWCOST_TO_DATE_PC      => l_PPL_ACT_RAWCOST_TO_DATE_PC
8818                                                                            ,X_PPL_ETC_RAWCOST_TC              => null
8819                                                                            ,X_PPL_ETC_RAWCOST_FC              => l_PPL_ETC_RAWCOST_FC
8820                                                                            ,X_PPL_ETC_RAWCOST_PC              => l_PPL_ETC_RAWCOST_PC
8821                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_TC    => null
8822                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_FC    => l_EQPMT_ACT_RAWCOST_TO_DATE_FC
8823                                                                            ,X_EQPMT_ACT_RAWCOST_TO_DATE_PC    => l_EQPMT_ACT_RAWCOST_TO_DATE_PC
8824                                                                            ,X_EQPMT_ETC_RAWCOST_TC            => null
8825                                                                            ,X_EQPMT_ETC_RAWCOST_FC            => l_EQPMT_ETC_RAWCOST_FC
8826                                                                            ,X_EQPMT_ETC_RAWCOST_PC            => l_EQPMT_ETC_RAWCOST_PC
8827                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_TC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_TC
8828                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_FC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_FC
8829                                                                          ,X_SP_OTH_ACT_RAWCOST_TODATE_PC         => l_cur_pa_rollup1_rec.SPJ_OTH_ACT_RAWCOST_TO_DATE_PC
8830                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_TC
8831                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_FC
8832                                                                          ,X_SUBPRJ_PPL_ACT_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ACT_RAWCOST_PC
8833                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_TC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_TC
8834                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_FC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_FC
8835                                                                          ,X_SUBPRJ_EQPMT_ACT_RAWCOST_PC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ACT_RAWCOST_PC
8836                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_TC
8837                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_FC
8838                                                                          ,X_SUBPRJ_OTH_ETC_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_OTH_ETC_RAWCOST_PC
8839                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_TC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_TC
8840                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_FC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_FC
8841                                                                          ,X_SUBPRJ_PPL_ETC_RAWCOST_PC    => l_cur_pa_rollup1_rec.SUBPRJ_PPL_ETC_RAWCOST_PC
8842                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_TC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_TC
8843                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_FC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_FC
8844                                                                          ,X_SUBPRJ_EQPMT_ETC_RAWCOST_PC  => l_cur_pa_rollup1_rec.SUBPRJ_EQPMT_ETC_RAWCOST_PC
8845                                                        );
8846                     -- Bug 3879461 Begin : Code nOt required now
8847                     /*
8848                                          --update all previous record current flag to 'N'
8849                                         IF l_max_rollup_as_of_date2 < p_as_of_date --creating a new progress record.
8850                                         THEN
8851                                                 UPDATE pa_progress_rollup
8852                                                 SET current_flag = 'N'
8853                                                 WHERE progress_rollup_id <> l_progress_rollup_id
8854                                                 AND project_id = p_project_id
8855                                                 AND object_id = p_task_id
8856                                                 AND object_type = l_rollup_table1(i).object_type
8857                                                 AND structure_type = 'WORKPLAN'
8858                                                 AND structure_version_id is null
8859                                                            ;
8860                                         END IF;
8861 
8862 
8863                                         --update progress_outdated_flag for summary tasks if there exists any ppc record
8864                                         --for the summary task
8865 
8866                                         l_progress_exists_on_aod := PA_PROGRESS_UTILS.check_prog_exists_on_aod(
8867                                                       p_task_id          => p_task_id
8868                               ,p_object_id       => p_task_id -- Bug 3764224
8869                                                      ,p_as_of_date         => p_as_of_date
8870                                                      ,p_project_id         => p_project_id
8871                                                      ,p_object_version_id  => l_rollup_table1(i).object_id
8872                                                      ,p_object_type        => l_rollup_table1(i).object_type
8873                                                      ,p_structure_type     => 'WORKPLAN'
8874                                                    );
8875                            */
8876                     -- Bug 3879461 End
8877 
8878                                       /* commenting out the code for bug    3851528
8879                                         IF l_progress_exists_on_aod = 'PUBLISHED' THEN
8880                                                 UPDATE pa_proj_elements
8881                                                 SET progress_outdated_flag = 'Y'
8882                                                 WHERE proj_element_id = p_task_id
8883                                                 AND project_id = p_project_id
8884                                                 AND object_type = l_rollup_table1(i).object_type;
8885                                         END IF;
8886                                       */
8887                                 END IF; -- l_PROGRESS_ROLLUP_ID IS NOT NULL
8888                         END IF; -- IF p_task_version_id = l_rollup_table1(i).object_id AND l_rollup_table1(i).object_type = 'PA_TASKS'
8889                         END LOOP;
8890                 END IF;  --<< l_total_tasks >>
8891 
8892                 /* We need to confirm that whether this needs to be called for working progress rollup or not
8893                 IF l_split_workplan =  'Y'
8894                 THEN
8895                 BEGIN
8896                         l_project_ids.extend(1);
8897                         l_project_ids(1) := p_project_id;
8898                         l_struture_version_ids.extend(1);
8899                         l_struture_version_ids(1) := p_structure_version_id;
8900                         l_proj_thru_dates_tbl.extend(1);
8901                         l_proj_thru_dates_tbl(1) := p_as_of_date;
8902                         PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
8903                           (P_PROJECT_ID_TAB                   => l_project_ids,
8904                            P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
8905                            P_ACTUALS_THRU_DATE     => l_proj_thru_dates_tbl,
8906                            P_CALLING_CONTEXT                  => 'WP_PROGRESS',
8907                            X_RETURN_STATUS                    => l_return_status,
8908                            X_MSG_COUNT                        => l_msg_count,
8909                            X_MSG_DATA                         => l_msg_data
8910                         );
8911 
8912 
8913                         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8914                                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
8915                                         p_msg_name       => l_msg_data);
8916                                        x_msg_data := l_msg_data;
8917                                        x_return_status := 'E';
8918                                        x_msg_count := l_msg_count;
8919                                        RAISE  FND_API.G_EXC_ERROR;
8920                         END IF;
8921                 EXCEPTION
8922                  WHEN OTHERS THEN
8923                      fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8924                                    p_procedure_name => 'update_ASGN_DLV_TO_TASK_ROLLUP_PVT',
8925                      p_error_text     => SUBSTRB('PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP:'||SQLERRM,1,120));
8926                      RAISE FND_API.G_EXC_ERROR;
8927                 END;
8928                 END IF;*/
8929 
8930 
8931         x_return_status := FND_API.G_RET_STS_SUCCESS;
8932 
8933         IF (p_commit = FND_API.G_TRUE) THEN
8934                 COMMIT;
8935         END IF;
8936 
8937         IF g1_debug_mode  = 'Y' THEN
8938                 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);
8939         END IF;
8940 
8941 
8942         x_return_status := FND_API.G_RET_STS_SUCCESS;
8943 
8944         IF (p_commit = FND_API.G_TRUE) THEN
8945                 COMMIT;
8946         END IF;
8947 
8948 
8949         IF g1_debug_mode  = 'Y' THEN
8950                 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);
8951         END IF;
8952 
8953 EXCEPTION
8954         WHEN FND_API.G_EXC_ERROR THEN
8955                 IF p_commit = FND_API.G_TRUE THEN
8956                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
8957                 END IF;
8958                 x_return_status := FND_API.G_RET_STS_ERROR;
8959         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8960                 IF p_commit = FND_API.G_TRUE THEN
8961                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
8962                 END IF;
8963                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8964                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8965                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
8966                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8967         WHEN OTHERS THEN
8968                 IF p_commit = FND_API.G_TRUE THEN
8969                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
8970                 END IF;
8971                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8972                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
8973                               p_procedure_name => 'ASGN_DLV_TO_TASK_ROLLUP_PVT',
8974                               p_error_text     => SUBSTRB(SQLERRM,1,120));
8975                 raise;
8976 END ASGN_DLV_TO_TASK_ROLLUP_PVT;
8977 
8978 
8979  --bug 3935699
8980 
8981 
8982 PROCEDURE convert_task_prog_to_assgn
8983 (
8984  p_api_version                          IN      NUMBER          :=1.0
8985 ,p_init_msg_list                        IN      VARCHAR2        :=FND_API.G_FALSE -- Since it is a private API so false
8986 ,p_commit                               IN      VARCHAR2        :=FND_API.G_FALSE
8987 ,p_validate_only                        IN      VARCHAR2        :=FND_API.G_TRUE
8988 ,p_validation_level                     IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
8989 ,p_calling_module                       IN      VARCHAR2        :='SELF_SERVICE'
8990 ,p_debug_mode                           IN      VARCHAR2        :='N'
8991 ,p_max_msg_count                        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
8992 ,p_resource_list_mem_id         IN      NUMBER
8993 ,p_project_id               IN      NUMBER
8994 ,p_task_id              IN      NUMBER
8995 ,p_structure_version_id         IN      NUMBER
8996 ,p_as_of_date               IN      DATE -- Bug 3958686
8997 ,p_action               IN      VARCHAR2 -- Bug 3958686
8998 ,p_subprj_actual_exists         IN      VARCHAR2 := 'N' -- Bug 4490532
8999 ,p_object_version_id            IN      NUMBER := null -- Bug 4490532
9000 ,x_return_status            OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9001 ,x_msg_count                OUT     NOCOPY NUMBER --File.Sql.39 bug 4440895
9002 ,x_msg_data             OUT     NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9003 ) IS
9004 
9005    g1_debug_mode                VARCHAR2(1);
9006    l_version_enabled_flag        VARCHAR2(1);
9007 
9008    x_percent_complete_id     NUMBER;
9009    X_PROGRESS_ROLLUP_ID      NUMBER;
9010 
9011    l_api_name                   CONSTANT VARCHAR(30) := 'ASGN_DLV_TO_TASK_ROLLUP_PVT'                           ;
9012    l_api_version                CONSTANT NUMBER      := 1.0                                                     ;
9013    l_return_status              VARCHAR2(1)                                                                     ;
9014    l_msg_count                  NUMBER                                                                          ;
9015    l_msg_data                   VARCHAR2(250)                                                                   ;
9016    l_data                       VARCHAR2(250)                                                                   ;
9017    l_msg_index_out              NUMBER                                                                          ;
9018    l_error_msg_code             VARCHAR2(250)                                                                   ;
9019    l_user_id                    NUMBER          := FND_GLOBAL.USER_ID                                           ;
9020    l_login_id                   NUMBER          := FND_GLOBAL.LOGIN_ID                                          ;
9021 
9022    -- Bug 3958686 : Commented
9023    /*
9024    CURSOR cur_chk_asgn
9025    IS
9026      SELECT 'x'
9027       FROM pa_progress_rollup
9028      WHERE object_id = p_resource_list_mem_id
9029        and structure_version_id = p_structure_version_id
9030        and proj_element_id = p_task_id
9031        and structure_type = 'WORKPLAN'
9032        and object_type = 'PA_ASSIGNMENTS'
9033        and current_flag = 'Y';
9034    */
9035 
9036 -- Bug 4490532 Begin
9037 CURSOR c_get_subproject IS
9038 SELECT obj2.object_id_to1 subprj_str_ver_id
9039 , obj2.object_id_to2 subprj_id
9040 , ver.proj_element_id subprj_proj_elem_id
9041 from pa_object_relationships obj1
9042 , pa_object_relationships obj2
9043 , pa_proj_element_versions ver
9044 WHERE obj1.object_id_from1 = p_object_version_id
9045 AND obj1.relationship_type = 'S'
9046 AND obj1.object_id_to1 = obj2.object_id_from1
9047 AND obj2.relationship_type = 'LW'
9048 AND obj2.object_id_to1 = ver.element_version_id
9049 ;
9050 l_subprj_str_ver_id NUMBER;
9051 l_subprj_id NUMBER;
9052 l_subprj_proj_elem_id NUMBER;
9053 
9054 -- We canot use directly the parent project
9055 -- from pji_fm_xbs_accum_tmp1 table
9056 -- because PJI table stores self amounts p_xxx
9057 -- only for PC and not for PFC.
9058 
9059 CURSOR c_get_subproj_act(c_str_version_id NUMBER, c_project_id NUMBER, c_proj_element_id NUMBER) IS
9060   SELECT
9061        ETC_LABOR_HRS ESTIMATED_REMAINING_EFFORT
9062       ,ACT_LABOR_HRS PPL_ACT_EFFORT_TO_DATE
9063       ,ACT_EQUIP_HRS EQPMT_ACT_EFFORT_TO_DATE
9064       ,ETC_EQUIP_HRS EQPMT_ETC_EFFORT
9065       ,ACT_POU_BRDN_COST-ACT_POU_LABOR_BRDN_COST-ACT_POU_EQUIP_BRDN_COST OTH_ACT_COST_TO_DATE_FC
9066       ,ACT_PRJ_BRDN_COST-ACT_PRJ_EQUIP_BRDN_COST-ACT_PRJ_LABOR_BRDN_COST  OTH_ACT_COST_TO_DATE_PC
9067       ,ETC_POU_BRDN_COST-ETC_POU_LABOR_BRDN_COST-ETC_POU_EQUIP_BRDN_COST OTH_ETC_COST_FC
9068       ,ETC_PRJ_BRDN_COST-ETC_PRJ_EQUIP_BRDN_COST-ETC_PRJ_LABOR_BRDN_COST OTH_ETC_COST_PC
9069       ,ACT_POU_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_FC
9070       ,ACT_PRJ_LABOR_BRDN_COST PPL_ACT_COST_TO_DATE_PC
9071       ,ETC_POU_LABOR_BRDN_COST PPL_ETC_COST_FC
9072       ,ETC_PRJ_LABOR_BRDN_COST PPL_ETC_COST_PC
9073       ,ACT_POU_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_FC
9074       ,ACT_PRJ_EQUIP_BRDN_COST EQPMT_ACT_COST_TO_DATE_PC
9075       ,ETC_POU_EQUIP_BRDN_COST EQPMT_ETC_COST_FC
9076       ,ETC_PRJ_EQUIP_BRDN_COST EQPMT_ETC_COST_PC
9077       ,ACT_POU_RAW_COST-ACT_POU_LABOR_RAW_COST-ACT_POU_EQUIP_RAW_COST OTH_ACT_RAWCOST_TO_DATE_FC
9078       ,ACT_PRJ_RAW_COST-ACT_PRJ_EQUIP_RAW_COST-ACT_PRJ_LABOR_RAW_COST OTH_ACT_RAWCOST_TO_DATE_PC
9079       ,ETC_POU_RAW_COST-ETC_POU_LABOR_RAW_COST-ETC_POU_EQUIP_RAW_COST OTH_ETC_RAWCOST_FC
9080       ,ETC_PRJ_RAW_COST-ETC_PRJ_EQUIP_RAW_COST-ETC_PRJ_LABOR_RAW_COST OTH_ETC_RAWCOST_PC
9081       ,ACT_POU_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_FC
9082       ,ACT_PRJ_LABOR_RAW_COST PPL_ACT_RAWCOST_TO_DATE_PC
9083       ,ETC_POU_LABOR_RAW_COST PPL_ETC_RAWCOST_FC
9084       ,ETC_PRJ_LABOR_RAW_COST PPL_ETC_RAWCOST_PC
9085       ,ACT_POU_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_FC
9086       ,ACT_PRJ_EQUIP_RAW_COST EQPMT_ACT_RAWCOST_TO_DATE_PC
9087       ,ETC_POU_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_FC
9088       ,ETC_PRJ_EQUIP_RAW_COST EQPMT_ETC_RAWCOST_PC
9089   FROM pji_fm_xbs_accum_tmp1 pjitmp
9090  WHERE pjitmp.project_id  = c_project_id
9091 AND struct_version_id = c_str_version_id
9092 AND project_element_id =  c_proj_element_id
9093 AND plan_version_id > 0
9094 AND txn_currency_code is null
9095 AND calendar_type = 'A'
9096 AND res_list_member_id is null;
9097 l_subproj_rec  c_get_subproj_act%ROWTYPE;
9098 -- Bug 4490532 End
9099 
9100 -- Bug 4661350 begin : Introduced local variables for sum of subprojects values
9101 sp_ESTIMATED_REMAINING_EFFORT		NUMBER;
9102 sp_PPL_ACT_EFFORT_TO_DATE		NUMBER;
9103 sp_EQPMT_ACT_EFFORT_TO_DATE		NUMBER;
9104 sp_EQPMT_ETC_EFFORT			NUMBER;
9105 sp_OTH_ACT_COST_TO_DATE_FC		NUMBER;
9106 sp_OTH_ACT_COST_TO_DATE_PC		NUMBER;
9107 sp_OTH_ETC_COST_FC			NUMBER;
9108 sp_OTH_ETC_COST_PC			NUMBER;
9109 sp_PPL_ACT_COST_TO_DATE_FC		NUMBER;
9110 sp_PPL_ACT_COST_TO_DATE_PC		NUMBER;
9111 sp_PPL_ETC_COST_FC			NUMBER;
9112 sp_PPL_ETC_COST_PC			NUMBER;
9113 sp_EQPMT_ACT_COST_TO_DATE_FC		NUMBER;
9114 sp_EQPMT_ACT_COST_TO_DATE_PC		NUMBER;
9115 sp_EQPMT_ETC_COST_FC			NUMBER;
9116 sp_EQPMT_ETC_COST_PC			NUMBER;
9117 sp_OTH_ACT_RAWCOST_TO_DATE_FC		NUMBER;
9118 sp_OTH_ACT_RAWCOST_TO_DATE_PC		NUMBER;
9119 sp_OTH_ETC_RAWCOST_FC			NUMBER;
9120 sp_OTH_ETC_RAWCOST_PC			NUMBER;
9121 sp_PPL_ACT_RAWCOST_TO_DATE_FC		NUMBER;
9122 sp_PPL_ACT_RAWCOST_TO_DATE_PC		NUMBER;
9123 sp_PPL_ETC_RAWCOST_FC			NUMBER;
9124 sp_PPL_ETC_RAWCOST_PC			NUMBER;
9125 sp_EQPMT_ACT_RAWCOST_TODATE_FC		NUMBER;
9126 sp_EQPMT_ACT_RAWCOST_TODATE_PC		NUMBER;
9127 sp_EQPMT_ETC_RAWCOST_FC			NUMBER;
9128 sp_EQPMT_ETC_RAWCOST_PC			NUMBER;
9129 -- Bug 4661350 end
9130 
9131 BEGIN
9132 
9133         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9134 
9135         IF g1_debug_mode  = 'Y' THEN
9136                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.convert_task_prog_to_assgn');
9137         END IF;
9138 
9139         IF (p_commit = FND_API.G_TRUE) THEN
9140                 savepoint convert_task_prog_to_assgn;
9141         END IF;
9142 
9143         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
9144                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9145         END IF;
9146 
9147         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
9148                 FND_MSG_PUB.initialize;
9149         END IF;
9150 
9151      IF g1_debug_mode  = 'Y' THEN
9152 
9153          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);
9154          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);
9155          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);
9156          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);
9157          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);
9158          pa_debug.write(x_Module=>'PA_PROGRESS_PVT.convert_task_prog_to_assgn', x_Msg => 'p_action='||p_action, x_Log_Level=> 3);
9159      END IF;
9160 
9161      --bug 3958686, start
9162 
9163        IF p_action = 'SAVE' THEN
9164      delete from pa_percent_completes
9165          where project_id= p_project_id
9166          and task_id = p_task_id
9167          and object_id = p_resource_list_mem_id
9168      and object_type = 'PA_ASSIGNMENTS'
9169          and published_flag = 'N'
9170          and structure_type = 'WORKPLAN'
9171          ;
9172 
9173          delete from pa_progress_rollup
9174          where project_id= p_project_id
9175          and proj_element_id = p_task_id
9176          and object_id = p_resource_list_mem_id
9177          and current_flag = 'W'
9178      and object_type = 'PA_ASSIGNMENTS'
9179          and structure_type = 'WORKPLAN'
9180          and structure_version_id is null
9181          ;
9182        END IF;
9183 
9184 
9185     IF  p_action = 'PUBLISH' THEN
9186          delete from pa_percent_completes
9187          where project_id= p_project_id
9188          and task_id = p_task_id
9189          and object_id = p_resource_list_mem_id
9190      and object_type = 'PA_ASSIGNMENTS'
9191          and published_flag = 'N'
9192          and date_computed <= p_as_of_date
9193          and structure_type = 'WORKPLAN'
9194          ;
9195 
9196      delete from pa_percent_completes
9197      WHERE project_id = p_project_id
9198          and object_id = p_resource_list_mem_id
9199      and task_id = p_task_id
9200      and trunc(date_computed) = trunc(p_as_of_date)
9201      and structure_type = 'WORKPLAN'
9202      and object_type = 'PA_ASSIGNMENTS'
9203      and published_flag = 'Y';
9204 
9205 
9206          delete from pa_progress_rollup
9207          where project_id= p_project_id
9208          and proj_element_id = p_task_id
9209          and object_id = p_resource_list_mem_id
9210      and object_type = 'PA_ASSIGNMENTS'
9211          and current_flag = 'W'
9212          and as_of_date <= p_as_of_date
9213          and structure_type = 'WORKPLAN'
9214          and structure_version_id is null
9215          ;
9216 
9217          delete from pa_progress_rollup
9218          WHERE project_id = p_project_id
9219          and object_id = p_resource_list_mem_id
9220      and structure_version_id is null
9221          and proj_element_id = p_task_id
9222          and trunc(as_of_date) = trunc(p_as_of_date)
9223          and structure_type = 'WORKPLAN'
9224          and object_type = 'PA_ASSIGNMENTS'
9225          and current_flag in ('Y', 'N');
9226 
9227     end if;
9228 
9229      --bug 3958686, end
9230 
9231        --Create records in percent completes and rollup table for new assignment.
9232 
9233 
9234 -- Added update code to set current_flag as N otherwise upon publishinh it will give error
9235 -- ORA-00001: unique constraint (PA.PA_BUDGET_LINES_U1) violated in Package PA_FP_MAINTAIN_ACTUAL_PUB Procedure MAINTAIN_ACTUAL_AMT_RA
9236 -- Patched thru Bug 4183307
9237 IF  p_action = 'PUBLISH' THEN
9238   UPDATE pa_percent_completes
9239         SET current_flag = 'N'
9240         WHERE project_id = p_project_id
9241         AND object_id = p_resource_list_mem_id
9242         AND task_id = p_task_id
9243         AND current_flag = 'Y'
9244         AND object_type =  'PA_ASSIGNMENTS';
9245 
9246  UPDATE pa_progress_rollup
9247         SET current_flag = 'N'
9248         WHERE project_id = p_project_id
9249         AND object_id = p_resource_list_mem_id
9250         AND proj_element_id = p_task_id
9251         AND current_flag = 'Y'
9252         AND object_type = 'PA_ASSIGNMENTS'
9253     AND structure_version_id is null
9254     AND structure_type = 'WORKPLAN'
9255     ;
9256  END IF;
9257 
9258     -- Bug 4490532 Begin
9259     IF g1_debug_mode  = 'Y' THEN
9260         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);
9261         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);
9262     END IF;
9263     l_subproj_rec := null;
9264     IF p_subprj_actual_exists = 'Y' THEN
9265 	-- Bug 4661350 : Converted to FOR loop to support multiple sub projects
9266         --OPEN c_get_subproject;
9267         --FETCH c_get_subproject INTO l_subprj_str_ver_id, l_subprj_id, l_subprj_proj_elem_id;
9268         --CLOSE c_get_subproject;
9269 
9270 		FOR l_rec IN c_get_subproject LOOP
9271 
9272 			l_subproj_rec := null;
9273 
9274 			OPEN c_get_subproj_act(l_rec.subprj_str_ver_id, l_rec.subprj_id, l_rec.subprj_proj_elem_id);
9275 			FETCH c_get_subproj_act INTO l_subproj_rec;
9276 			CLOSE c_get_subproj_act;
9277 			-- Bug 4661350 : introduced local variable to store subprojects sum value
9278 
9279 			sp_ESTIMATED_REMAINING_EFFORT	:= nvl(sp_ESTIMATED_REMAINING_EFFORT,0) + nvl(l_subproj_rec.ESTIMATED_REMAINING_EFFORT,0);
9280 			sp_PPL_ACT_EFFORT_TO_DATE	:= nvl(sp_PPL_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.PPL_ACT_EFFORT_TO_DATE,0);
9281 			sp_EQPMT_ACT_EFFORT_TO_DATE	:= nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0) + nvl(l_subproj_rec.EQPMT_ACT_EFFORT_TO_DATE,0);
9282 			sp_EQPMT_ETC_EFFORT		:= nvl(sp_EQPMT_ETC_EFFORT,0) + nvl(l_subproj_rec.EQPMT_ETC_EFFORT,0);
9283 			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);
9284 			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);
9285 			sp_OTH_ETC_COST_FC		:= nvl(sp_OTH_ETC_COST_FC,0) + nvl(l_subproj_rec.OTH_ETC_COST_FC,0);
9286 			sp_OTH_ETC_COST_PC		:= nvl(sp_OTH_ETC_COST_PC,0) + nvl(l_subproj_rec.OTH_ETC_COST_PC,0);
9287 			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);
9288 			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);
9289 			sp_PPL_ETC_COST_FC		:= nvl(sp_PPL_ETC_COST_FC,0) + nvl(l_subproj_rec.PPL_ETC_COST_FC,0);
9290 			sp_PPL_ETC_COST_PC		:= nvl(sp_PPL_ETC_COST_PC,0) + nvl(l_subproj_rec.PPL_ETC_COST_PC,0);
9291 			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);
9292 			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);
9293 			sp_EQPMT_ETC_COST_FC		:= nvl(sp_EQPMT_ETC_COST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_FC,0);
9294 			sp_EQPMT_ETC_COST_PC		:= nvl(sp_EQPMT_ETC_COST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_COST_PC,0);
9295 			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);
9296 			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);
9297 			sp_OTH_ETC_RAWCOST_FC		:= nvl(sp_OTH_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_FC,0);
9298 			sp_OTH_ETC_RAWCOST_PC		:= nvl(sp_OTH_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.OTH_ETC_RAWCOST_PC,0);
9299 			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);
9300 			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);
9301 			sp_PPL_ETC_RAWCOST_FC		:= nvl(sp_PPL_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_FC,0);
9302 			sp_PPL_ETC_RAWCOST_PC		:= nvl(sp_PPL_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.PPL_ETC_RAWCOST_PC,0);
9303 			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);
9304 			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);
9305 			sp_EQPMT_ETC_RAWCOST_FC		:= nvl(sp_EQPMT_ETC_RAWCOST_FC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_FC,0);
9306 			sp_EQPMT_ETC_RAWCOST_PC		:= nvl(sp_EQPMT_ETC_RAWCOST_PC,0) + nvl(l_subproj_rec.EQPMT_ETC_RAWCOST_PC,0);
9307 		END LOOP;
9308 
9309     END IF;
9310     -- Bug 4490532 End
9311 
9312 
9313         select PA_PERCENT_COMPLETES_S.nextval
9314           into x_percent_complete_id
9315         from dual;
9316 
9317         select PA_PROGRESS_ROLLUP_S.nextval
9318           into X_PROGRESS_ROLLUP_ID
9319           from dual;
9320      IF g1_debug_mode  = 'Y' THEN
9321          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);
9322      END IF;
9323         INSERT INTO pa_percent_completes(
9324                   TASK_ID
9325                  ,DATE_COMPUTED
9326                  ,LAST_UPDATE_DATE
9327                  ,LAST_UPDATED_BY
9328                  ,CREATION_DATE
9329                  ,CREATED_BY
9330                  ,LAST_UPDATE_LOGIN
9331                  ,COMPLETED_PERCENTAGE
9332                  ,DESCRIPTION
9333                  ,PROJECT_ID
9334                  ,PM_PRODUCT_CODE
9335                  ,CURRENT_FLAG
9336                  ,PERCENT_COMPLETE_ID
9337                  ,OBJECT_ID
9338                  ,OBJECT_VERSION_ID
9339                  ,OBJECT_TYPE
9340                  ,STATUS_CODE
9341                  ,PROGRESS_STATUS_CODE
9342                  ,ESTIMATED_START_DATE
9343                  ,ESTIMATED_FINISH_DATE
9344                  ,ACTUAL_START_DATE
9345                  ,ACTUAL_FINISH_DATE
9346                  ,PUBLISHED_FLAG
9347                  ,PUBLISHED_BY_PARTY_ID
9348                  ,RECORD_VERSION_NUMBER
9349                  ,PROGRESS_COMMENT
9350                  ,HISTORY_FLAG
9351                  ,ATTRIBUTE_CATEGORY
9352                  ,ATTRIBUTE1
9353                  ,ATTRIBUTE2
9354                  ,ATTRIBUTE3
9355                  ,ATTRIBUTE4
9356                  ,ATTRIBUTE5
9357                  ,ATTRIBUTE6
9358                  ,ATTRIBUTE7
9359                  ,ATTRIBUTE8
9360                  ,ATTRIBUTE9
9361                  ,ATTRIBUTE10
9362                  ,ATTRIBUTE11
9363                  ,ATTRIBUTE12
9364                  ,ATTRIBUTE13
9365                  ,ATTRIBUTE14
9366                  ,ATTRIBUTE15
9367                  ,STRUCTURE_TYPE
9368                  )
9369           SELECT
9370                   TASK_ID
9371                  ,DATE_COMPUTED
9372                  ,SYSDATE
9373                  ,l_user_id
9374                  ,SYSDATE
9375                  ,l_user_id
9376                  ,l_login_id
9377                  ,null   --COMPLETED_PERCENTAGE
9378                  ,null   --DESCRIPTION
9379                  ,PROJECT_ID
9380                  ,PM_PRODUCT_CODE
9381                  ,CURRENT_FLAG
9382                  ,x_PERCENT_COMPLETE_ID
9383                  ,p_resource_list_mem_id  --OBJECT_ID
9384                  ,OBJECT_VERSION_ID
9385                  ,'PA_ASSIGNMENTS'  --OBJECT_TYPE
9386                  ,null              --STATUS_CODE
9387                  ,PROGRESS_STATUS_CODE
9388                  ,ESTIMATED_START_DATE
9389                  ,ESTIMATED_FINISH_DATE
9390                  ,ACTUAL_START_DATE
9391                  ,ACTUAL_FINISH_DATE
9392                  ,PUBLISHED_FLAG
9393                  ,PUBLISHED_BY_PARTY_ID
9394                  ,RECORD_VERSION_NUMBER
9395                  ,PROGRESS_COMMENT
9396                  ,HISTORY_FLAG
9397                  ,ATTRIBUTE_CATEGORY
9398                  ,ATTRIBUTE1
9399                  ,ATTRIBUTE2
9400                  ,ATTRIBUTE3
9401                  ,ATTRIBUTE4
9402                  ,ATTRIBUTE5
9403                  ,ATTRIBUTE6
9404                  ,ATTRIBUTE7
9405                  ,ATTRIBUTE8
9406                  ,ATTRIBUTE9
9407                  ,ATTRIBUTE10
9408                  ,ATTRIBUTE11
9409                  ,ATTRIBUTE12
9410                  ,ATTRIBUTE13
9411                  ,ATTRIBUTE14
9412                  ,ATTRIBUTE15
9413                  ,STRUCTURE_TYPE
9414            FROM pa_percent_completes
9415           WHERE project_id = p_project_id
9416               and object_id = p_task_id
9417               and task_id = p_task_id
9418               and structure_type = 'WORKPLAN'
9419           and trunc(date_computed) = trunc(p_as_of_date)
9420               --and published_flag = 'Y' --bug 3958686
9421               --and current_flag = 'Y'
9422               and ((p_action = 'SAVE' and published_flag = 'N')
9423                 or (p_action = 'PUBLISH' and published_flag = 'Y' and current_flag = 'Y'))
9424               ;
9425 
9426      IF g1_debug_mode  = 'Y' THEN
9427          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);
9428      END IF;
9429          -- Bug 4490532 : Subtracting the subproject amounts if available.
9430 	 -- Bug 4661350 : Using newly introduced local variable to store subprojects sum value
9431           INSERT INTO pa_progress_rollup(
9432                PROGRESS_ROLLUP_ID
9433               ,PERCENT_COMPLETE_ID
9434               ,PROJECT_ID
9435               ,OBJECT_ID
9436               ,OBJECT_TYPE
9437               ,AS_OF_DATE
9438               ,OBJECT_VERSION_ID
9439               ,LAST_UPDATE_DATE
9440               ,LAST_UPDATED_BY
9441               ,CREATION_DATE
9442               ,CREATED_BY
9443               ,PROGRESS_STATUS_CODE
9444               ,LAST_UPDATE_LOGIN
9445               ,INCREMENTAL_WORK_QUANTITY
9446               ,CUMULATIVE_WORK_QUANTITY
9447               ,BASE_PERCENT_COMPLETE
9448               ,EFF_ROLLUP_PERCENT_COMP
9449               ,COMPLETED_PERCENTAGE
9450               ,ESTIMATED_START_DATE
9451               ,ESTIMATED_FINISH_DATE
9452               ,ACTUAL_START_DATE
9453               ,ACTUAL_FINISH_DATE
9454               ,ESTIMATED_REMAINING_EFFORT
9455               ,RECORD_VERSION_NUMBER
9456               ,BASE_PERCENT_COMP_DERIV_CODE
9457               ,BASE_PROGRESS_STATUS_CODE
9458               ,EFF_ROLLUP_PROG_STAT_CODE
9459               ,STRUCTURE_TYPE
9460               ,PROJ_ELEMENT_ID
9461               ,STRUCTURE_VERSION_ID
9462               ,PPL_ACT_EFFORT_TO_DATE
9463               ,EQPMT_ACT_EFFORT_TO_DATE
9464               ,EQPMT_ETC_EFFORT
9465               ,OTH_ACT_COST_TO_DATE_TC
9466               ,OTH_ACT_COST_TO_DATE_FC
9467               ,OTH_ACT_COST_TO_DATE_PC
9468               ,OTH_ETC_COST_TC
9469               ,OTH_ETC_COST_FC
9470               ,OTH_ETC_COST_PC
9471               ,PPL_ACT_COST_TO_DATE_TC
9472               ,PPL_ACT_COST_TO_DATE_FC
9473               ,PPL_ACT_COST_TO_DATE_PC
9474               ,PPL_ETC_COST_TC
9475               ,PPL_ETC_COST_FC
9476               ,PPL_ETC_COST_PC
9477               ,EQPMT_ACT_COST_TO_DATE_TC
9478               ,EQPMT_ACT_COST_TO_DATE_FC
9479               ,EQPMT_ACT_COST_TO_DATE_PC
9480               ,EQPMT_ETC_COST_TC
9481               ,EQPMT_ETC_COST_FC
9482               ,EQPMT_ETC_COST_PC
9483               ,EARNED_VALUE
9484               ,TASK_WT_BASIS_CODE
9485               ,CURRENT_FLAG
9486               ,PROJFUNC_COST_RATE_TYPE
9487               ,PROJFUNC_COST_EXCHANGE_RATE
9488               ,PROJFUNC_COST_RATE_DATE
9489               ,PROJ_COST_RATE_TYPE
9490               ,PROJ_COST_EXCHANGE_RATE
9491               ,PROJ_COST_RATE_DATE
9492               ,TXN_CURRENCY_CODE
9493               ,PROG_PA_PERIOD_NAME
9494               ,PROG_GL_PERIOD_NAME
9495               ,OTH_QUANTITY_TO_DATE
9496               ,OTH_ETC_QUANTITY
9497               ,OTH_ACT_RAWCOST_TO_DATE_TC
9498               ,OTH_ACT_RAWCOST_TO_DATE_FC
9499               ,OTH_ACT_RAWCOST_TO_DATE_PC
9500               ,OTH_ETC_RAWCOST_TC
9501               ,OTH_ETC_RAWCOST_FC
9502               ,OTH_ETC_RAWCOST_PC
9503               ,PPL_ACT_RAWCOST_TO_DATE_TC
9504               ,PPL_ACT_RAWCOST_TO_DATE_FC
9505               ,PPL_ACT_RAWCOST_TO_DATE_PC
9506               ,PPL_ETC_RAWCOST_TC
9507               ,PPL_ETC_RAWCOST_FC
9508               ,PPL_ETC_RAWCOST_PC
9509               ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9510               ,EQPMT_ACT_RAWCOST_TO_DATE_FC
9511               ,EQPMT_ACT_RAWCOST_TO_DATE_PC
9512               ,EQPMT_ETC_RAWCOST_TC
9513               ,EQPMT_ETC_RAWCOST_FC
9514               ,EQPMT_ETC_RAWCOST_PC
9515               )
9516           SELECT
9517                X_PROGRESS_ROLLUP_ID
9518               ,x_percent_complete_id
9519               ,PROJECT_ID
9520               ,p_resource_list_mem_id
9521               ,'PA_ASSIGNMENTS'
9522               ,AS_OF_DATE
9523               ,OBJECT_VERSION_ID
9524               ,SYSDATE
9525               ,LAST_UPDATED_BY
9526               ,SYSDATE
9527               ,CREATED_BY
9528               ,PROGRESS_STATUS_CODE
9529               ,LAST_UPDATE_LOGIN
9530               ,null                 --INCREMENTAL_WORK_QUANTITY
9531               ,null                 --CUMULATIVE_WORK_QUANTITY
9532               ,null                 --BASE_PERCENT_COMPLETE
9533               ,null                 --EFF_ROLLUP_PERCENT_COMP
9534               ,null                 --COMPLETED_PERCENTAGE
9535               ,ESTIMATED_START_DATE
9536               ,ESTIMATED_FINISH_DATE
9537               ,ACTUAL_START_DATE
9538               ,ACTUAL_FINISH_DATE
9539               ,ESTIMATED_REMAINING_EFFORT - nvl(sp_ESTIMATED_REMAINING_EFFORT,0)
9540               ,1
9541               ,null                --BASE_PERCENT_COMP_DERIV_CODE
9542               ,BASE_PROGRESS_STATUS_CODE
9543               ,null                --EFF_ROLLUP_PROG_STAT_CODE
9544               ,STRUCTURE_TYPE
9545               ,PROJ_ELEMENT_ID
9546               ,STRUCTURE_VERSION_ID
9547               ,PPL_ACT_EFFORT_TO_DATE- nvl(sp_PPL_ACT_EFFORT_TO_DATE,0)
9548               ,EQPMT_ACT_EFFORT_TO_DATE- nvl(sp_EQPMT_ACT_EFFORT_TO_DATE,0)
9549               ,EQPMT_ETC_EFFORT- nvl(sp_EQPMT_ETC_EFFORT,0)
9550               ,OTH_ACT_COST_TO_DATE_TC
9551               ,OTH_ACT_COST_TO_DATE_FC- nvl(sp_OTH_ACT_COST_TO_DATE_FC,0)
9552               ,OTH_ACT_COST_TO_DATE_PC- nvl(sp_OTH_ACT_COST_TO_DATE_PC,0)
9553               ,OTH_ETC_COST_TC
9554               ,OTH_ETC_COST_FC- nvl(sp_OTH_ETC_COST_FC,0)
9555               ,OTH_ETC_COST_PC- nvl(sp_OTH_ETC_COST_PC,0)
9556               ,PPL_ACT_COST_TO_DATE_TC
9557               ,PPL_ACT_COST_TO_DATE_FC- nvl(sp_PPL_ACT_COST_TO_DATE_FC,0)
9558               ,PPL_ACT_COST_TO_DATE_PC- nvl(sp_PPL_ACT_COST_TO_DATE_PC,0)
9559               ,PPL_ETC_COST_TC
9560               ,PPL_ETC_COST_FC- nvl(sp_PPL_ETC_COST_FC,0)
9561               ,PPL_ETC_COST_PC- nvl(sp_PPL_ETC_COST_PC,0)
9562               ,EQPMT_ACT_COST_TO_DATE_TC
9563               ,EQPMT_ACT_COST_TO_DATE_FC- nvl(sp_EQPMT_ACT_COST_TO_DATE_FC,0)
9564               ,EQPMT_ACT_COST_TO_DATE_PC- nvl(sp_EQPMT_ACT_COST_TO_DATE_PC,0)
9565               ,EQPMT_ETC_COST_TC
9566               ,EQPMT_ETC_COST_FC- nvl(sp_EQPMT_ETC_COST_FC,0)
9567               ,EQPMT_ETC_COST_PC- nvl(sp_EQPMT_ETC_COST_PC,0)
9568               ,EARNED_VALUE
9569               ,TASK_WT_BASIS_CODE
9570               ,CURRENT_FLAG
9571               ,PROJFUNC_COST_RATE_TYPE
9572               ,PROJFUNC_COST_EXCHANGE_RATE
9573               ,PROJFUNC_COST_RATE_DATE
9574               ,PROJ_COST_RATE_TYPE
9575               ,PROJ_COST_EXCHANGE_RATE
9576               ,PROJ_COST_RATE_DATE
9577               ,TXN_CURRENCY_CODE
9578               ,PROG_PA_PERIOD_NAME
9579               ,PROG_GL_PERIOD_NAME
9580               ,OTH_QUANTITY_TO_DATE
9581               ,OTH_ETC_QUANTITY
9582               ,OTH_ACT_RAWCOST_TO_DATE_TC
9583               ,OTH_ACT_RAWCOST_TO_DATE_FC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_FC,0)
9584               ,OTH_ACT_RAWCOST_TO_DATE_PC- nvl(sp_OTH_ACT_RAWCOST_TO_DATE_PC,0)
9585               ,OTH_ETC_RAWCOST_TC
9586               ,OTH_ETC_RAWCOST_FC- nvl(sp_OTH_ETC_RAWCOST_FC,0)
9587               ,OTH_ETC_RAWCOST_PC- nvl(sp_OTH_ETC_RAWCOST_PC,0)
9588               ,PPL_ACT_RAWCOST_TO_DATE_TC
9589               ,PPL_ACT_RAWCOST_TO_DATE_FC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_FC,0)
9590               ,PPL_ACT_RAWCOST_TO_DATE_PC- nvl(sp_PPL_ACT_RAWCOST_TO_DATE_PC,0)
9591               ,PPL_ETC_RAWCOST_TC
9592               ,PPL_ETC_RAWCOST_FC- nvl(sp_PPL_ETC_RAWCOST_FC,0)
9593               ,PPL_ETC_RAWCOST_PC- nvl(sp_PPL_ETC_RAWCOST_PC,0)
9594               ,EQPMT_ACT_RAWCOST_TO_DATE_TC
9595               ,EQPMT_ACT_RAWCOST_TO_DATE_FC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_FC,0)
9596               ,EQPMT_ACT_RAWCOST_TO_DATE_PC- nvl(sp_EQPMT_ACT_RAWCOST_TODATE_PC,0)
9597               ,EQPMT_ETC_RAWCOST_TC
9598               ,EQPMT_ETC_RAWCOST_FC- nvl(sp_EQPMT_ETC_RAWCOST_FC,0)
9599               ,EQPMT_ETC_RAWCOST_PC- nvl(sp_EQPMT_ETC_RAWCOST_PC,0)
9600           FROM pa_progress_rollup
9601          WHERE project_id = p_project_id
9602            and object_id = p_task_id
9603            and structure_version_id is NULL
9604            and proj_element_id = p_task_id
9605            and structure_type = 'WORKPLAN'
9606            --and current_flag = 'Y'; --bug 3958686
9607 	   and trunc(as_of_date) = trunc(p_as_of_date)
9608            and ((p_action = 'SAVE' and current_flag = 'W')
9609              or (p_action = 'PUBLISH' and current_flag in ('Y', 'N')));
9610 
9611 
9612      IF g1_debug_mode  = 'Y' THEN
9613          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);
9614      END IF;
9615 
9616     -- END IF;
9617 
9618      x_return_status :=  FND_API.G_RET_STS_SUCCESS;
9619 
9620 EXCEPTION
9621         WHEN FND_API.G_EXC_ERROR THEN
9622                 IF p_commit = FND_API.G_TRUE THEN
9623                         rollback to convert_task_prog_to_assgn;
9624                 END IF;
9625                 x_return_status := FND_API.G_RET_STS_ERROR;
9626         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9627                 IF p_commit = FND_API.G_TRUE THEN
9628                         rollback to convert_task_prog_to_assgn;
9629                 END IF;
9630                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9631                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9632                               p_procedure_name => 'convert_task_prog_to_assgn',
9633                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9634         WHEN OTHERS THEN
9635                 IF p_commit = FND_API.G_TRUE THEN
9636                         rollback to ASGN_DLV_TO_TASK_ROLLUP_PVT2;
9637                 END IF;
9638                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9639                 fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
9640                               p_procedure_name => 'convert_task_prog_to_assgn',
9641                               p_error_text     => SUBSTRB(SQLERRM,1,120));
9642                 raise;
9643 
9644 END convert_task_prog_to_assgn;
9645 
9646 
9647 --bug 4046422, moved this api from PAFPCPFB.pls to this package
9648 /*=============================================================================
9649  This is a private api that copies progress/actuals from one workplan version
9650  to another with in the project. Functionally this is called to copy progress
9651  from last published version while publishing a new version
9652 
9653   p_calling_context will have values WP_PROGRESS and WP_APPLY_PROGRESS_TO_WORKING.
9654 ==============================================================================*/
9655 
9656 PROCEDURE copy_actuals_for_workplan(
9657            p_calling_context            IN   VARCHAR2 DEFAULT 'WP_PROGRESS'
9658           ,p_project_id                 IN   pa_projects_all.project_id%TYPE
9659           ,p_source_struct_ver_id       IN   pa_proj_element_versions.element_version_id%TYPE
9660           ,p_target_struct_ver_id       IN   pa_proj_element_versions.element_version_id%TYPE
9661           ,x_return_status              OUT  NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
9662           ,x_msg_count                  OUT  NOCOPY NUMBER --File.Sql.39 bug 4440895
9663           ,x_msg_data                   OUT  NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
9664 AS
9665 
9666     --Start of variables used for debugging
9667 
9668     l_return_status      VARCHAR2(1);
9669     l_msg_count          NUMBER := 0;
9670     l_msg_data           VARCHAR2(2000);
9671     l_data               VARCHAR2(2000);
9672     l_msg_index_out      NUMBER;
9673     l_debug_mode         VARCHAR2(30);
9674 
9675     --End of variables used for debugging
9676 
9677     l_res_list_mismatch_flag        VARCHAR2(1);
9678     l_target_people_rlm_id          pa_resource_list_members.resource_list_member_id%TYPE;
9679 
9680     CURSOR budget_version_info_cur(c_str_ver_id NUMBER) IS
9681     SELECT resource_list_id,
9682            etc_start_date,
9683            budget_version_id
9684     FROM   pa_budget_versions
9685     WHERE  project_id = p_project_id
9686     AND    wp_version_flag = 'Y'
9687     AND    project_structure_version_id = c_str_ver_id;
9688 
9689     l_source_str_ver_info_rec    budget_version_info_cur%ROWTYPE;
9690     l_target_str_ver_info_rec    budget_version_info_cur%ROWTYPE;
9691 
9692     l_project_ids                 SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9693     l_struture_version_ids        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE();
9694     l_proj_thru_dates_tbl         SYSTEM.PA_DATE_TBL_TYPE:= SYSTEM.PA_DATE_TBL_TYPE();
9695     l_no_of_recs_for_processing   NUMBER;--Bug 3953743
9696 
9697     /* Begin code to fix Bug # 4144300. */
9698 
9699     CURSOR cur_ppabpt(c_budget_version_id NUMBER, t_budget_version_id NUMBER) IS
9700     SELECT source.project_id               PROJECT_ID
9701            ,p_target_struct_ver_id         STRUCTURE_VERSION_ID
9702            ,source.task_id                 TASK_ID
9703            ,target.resource_assignment_id  RESOURCE_ASSIGNMENT_ID
9704            ,bl.txn_init_burdened_cost      ACTUAL_COST
9705            ,bl.init_quantity               ACTUAL_EFFORT
9706            ,bl.period_name                 PERIOD_NAME
9707            ,bl.txn_currency_code           TXN_CURRENCY_CODE
9708            ,bl.project_init_burdened_cost  ACTUAL_COST_PC
9709            ,bl.init_burdened_cost          ACTUAL_COST_FC
9710            ,bl.txn_init_raw_cost           ACTUAL_RAWCOST
9711            ,bl.project_init_raw_cost       ACTUAL_RAWCOST_PC
9712            ,bl.init_raw_cost               ACTUAL_RAWCOST_FC
9713            ,bl.start_date                  START_DATE
9714            ,bl.end_date                    END_DATE
9715            ,source.resource_list_member_id RESOURCE_LIST_MEMBER_ID
9716     FROM  pa_resource_assignments source,
9717           pa_resource_assignments target,
9718           pa_budget_lines bl
9719     WHERE bl.resource_assignment_id = source.resource_assignment_id
9720     and   source.budget_version_id =  c_budget_version_id
9721     and   target.budget_version_id = t_budget_version_id
9722     and   target.resource_list_member_id = decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id, l_target_people_rlm_id)
9723     and   source.task_id = target.task_id
9724     and   source.project_id = target.project_id
9725     and   bl.budget_version_id = c_budget_version_id
9726     and   (bl.init_quantity is not null or
9727            bl.txn_init_raw_cost is not null);
9728 
9729     cur_ppabpt_rec cur_ppabpt%ROWTYPE;
9730 
9731     I_PROJECT_ID        PA_PLSQL_DATATYPES.Num15TabTyp;
9732     I_STRUCTURE_VERSION_ID  PA_PLSQL_DATATYPES.Num15TabTyp;
9733     I_TASK_ID           PA_PLSQL_DATATYPES.Num15TabTyp;
9734     I_RESOURCE_ASSIGNMENT_ID    PA_PLSQL_DATATYPES.Num15TabTyp;
9735     I_ACTUAL_COST       PA_PLSQL_DATATYPES.AmtTabTyp;
9736     I_ACTUAL_EFFORT     PA_PLSQL_DATATYPES.QtyTabtyp;
9737     I_PERIOD_NAME       PA_PLSQL_DATATYPES.Char30TabTyp;
9738     I_TXN_CURRENCY_CODE     PA_PLSQL_DATATYPES.Char15TabTyp;
9739     I_ACTUAL_COST_PC        PA_PLSQL_DATATYPES.AmtTabTyp;
9740     I_ACTUAL_COST_FC        PA_PLSQL_DATATYPES.AmtTabTyp;
9741     I_ACTUAL_RAWCOST        PA_PLSQL_DATATYPES.AmtTabTyp;
9742     I_ACTUAL_RAWCOST_PC     PA_PLSQL_DATATYPES.AmtTabTyp;
9743     I_ACTUAL_RAWCOST_FC     PA_PLSQL_DATATYPES.AmtTabTyp;
9744     I_RESOURCE_LIST_MEMBER_ID   PA_PLSQL_DATATYPES.Num15TabTyp;
9745     I_START_DATE                PA_PLSQL_DATATYPES.DateTabTyp;
9746     I_END_DATE                  PA_PLSQL_DATATYPES.DateTabTyp;
9747 
9748     l_index NUMBER := null;
9749     i       NUMBER := null;
9750 
9751     /* End code to fix Bug # 4144300. */
9752 
9753    /* Begin code to fix Bug # 4141850. */
9754 
9755    cursor cur_as_of_date(p_project_id NUMBER) is
9756    select max(as_of_date)
9757    from pa_progress_rollup ppr
9758    where ppr.project_id = p_project_id
9759    and ppr.structure_version_id is null
9760    and ppr.structure_type = 'WORKPLAN'
9761    and ppr.current_flag <> 'W';
9762 
9763    /* End code to fix Bug # 4141850. */
9764 
9765 --bug 4255329
9766    l_as_of_date      DATE;
9767    l_bv_id           NUMBER;
9768 --end bug 4255329
9769 BEGIN
9770     x_msg_count := 0;
9771     x_return_status := FND_API.G_RET_STS_SUCCESS;
9772 
9773     l_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
9774 
9775     -- Set curr function
9776     pa_debug.set_curr_function(
9777                 p_function   =>'pa_fp_copy_from_pkg.copy_actuals_for_workplan'
9778                ,p_debug_mode => l_debug_mode );
9779 
9780     -- Check for business rules violations
9781     IF l_debug_mode = 'Y' THEN
9782     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Validating input parameters', x_Log_Level=> 3);
9783     END IF;
9784 
9785     IF (p_project_id IS NULL) OR
9786        (p_source_struct_ver_id IS NULL) OR
9787        (p_target_struct_ver_id IS NULL)
9788     THEN
9789 
9790         IF l_debug_mode = 'Y' THEN
9791        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Project_id = '||p_project_id, x_Log_Level=> 3);
9792        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);
9793        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);
9794         END IF;
9795 
9796         PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
9797                               p_msg_name       => 'PA_FP_INV_PARAM_PASSED',
9798                               p_token1         => 'PROCEDURENAME',
9799                               p_value1         => 'pa_progress_pvt.copy_actuals_for_workplan');
9800 
9801         RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
9802 
9803     END IF;
9804 
9805     -- Fetch resource lists for both source and target structure versions
9806     OPEN budget_version_info_cur(p_source_struct_ver_id);
9807     FETCH budget_version_info_cur INTO l_source_str_ver_info_rec;
9808     CLOSE budget_version_info_cur;
9809 
9810     OPEN budget_version_info_cur(p_target_struct_ver_id);
9811     FETCH budget_version_info_cur INTO l_target_str_ver_info_rec;
9812     CLOSE budget_version_info_cur;
9813 
9814     -- If resource lists are different as of now the only possible case is that
9815     -- source resource list is uncategorized res list and target res list is a
9816     -- categorized res list in which case all the actuals from source would get
9817     -- mapped to the 'PEOPLE' res class rlm id of target res list
9818 
9819     IF l_source_str_ver_info_rec.resource_list_id <> l_target_str_ver_info_rec.resource_list_id THEN
9820         l_res_list_mismatch_flag := 'Y';
9821 
9822         BEGIN
9823             -- Fetch PEOPLE res class member id for the target target res list
9824             SELECT resource_list_member_id
9825             INTO   l_target_people_rlm_id
9826             FROM   pa_resource_list_members rlm,
9827                    pa_resource_lists_all_bg rl
9828             WHERE  rl.resource_list_id = l_target_str_ver_info_rec.resource_list_id
9829             AND    rl.resource_list_id = rlm.resource_list_id
9830             AND    object_type = Decode(control_flag, 'Y','RESOURCE_LIST','PROJECT')
9831             AND    object_id = Decode(control_flag, 'Y',rl.resource_list_id,p_project_id)
9832             AND    resource_class_flag = 'Y'
9833             AND    resource_class_code = 'PEOPLE';
9834         EXCEPTION
9835           WHEN OTHERS THEN
9836              RAISE;
9837         END;
9838     ELSE
9839         l_res_list_mismatch_flag := 'N';
9840     END IF;
9841 
9842     -- Delete any existing records from the table first
9843     DELETE FROM PA_PROG_ACT_BY_PERIOD_TEMP;
9844 
9845     -- Populate the PA_PROG_ACT_BY_PERIOD_TEMP table from pa_budget_lines init columns data
9846     -- Using task_id and resource list member id fetch mapping target resource assignment id
9847 
9848     /* Begin code to fix Bug # 4144300. */
9849 
9850     -- Populate the PL/SQL tables that will be used for the Bulk insert.
9851 
9852     l_index := 0;
9853 
9854     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)
9855     loop
9856 
9857     l_index := l_index+1;
9858 
9859     I_PROJECT_ID(l_index) := cur_ppabpt_rec.PROJECT_ID;
9860     I_STRUCTURE_VERSION_ID(l_index) := cur_ppabpt_rec.STRUCTURE_VERSION_ID;
9861     I_TASK_ID(l_index) := cur_ppabpt_rec.TASK_ID;
9862     I_RESOURCE_ASSIGNMENT_ID(l_index) := cur_ppabpt_rec.RESOURCE_ASSIGNMENT_ID;
9863     I_ACTUAL_COST(l_index) := cur_ppabpt_rec.ACTUAL_COST;
9864     I_ACTUAL_EFFORT(l_index) := cur_ppabpt_rec.ACTUAL_EFFORT;
9865     I_PERIOD_NAME(l_index) := cur_ppabpt_rec.PERIOD_NAME;
9866     I_TXN_CURRENCY_CODE(l_index) := cur_ppabpt_rec.TXN_CURRENCY_CODE;
9867     I_ACTUAL_COST_PC(l_index) := cur_ppabpt_rec.ACTUAL_COST_PC;
9868     I_ACTUAL_COST_FC(l_index) := cur_ppabpt_rec.ACTUAL_COST_FC;
9869     I_ACTUAL_RAWCOST(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST;
9870     I_ACTUAL_RAWCOST_PC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_PC;
9871     I_ACTUAL_RAWCOST_FC(l_index) := cur_ppabpt_rec.ACTUAL_RAWCOST_FC;
9872     I_RESOURCE_LIST_MEMBER_ID(l_index) := cur_ppabpt_rec.RESOURCE_LIST_MEMBER_ID;
9873     I_START_DATE(l_index) := cur_ppabpt_rec.start_date;
9874     I_END_DATE(l_index) := cur_ppabpt_rec.end_date;
9875 
9876     end loop;
9877 
9878     -- Bulk insert the PL/SQL tables into the table: PA_PROG_ACT_BY_PERIOD_TEMP.
9879 
9880     forall i in 1..l_index
9881 
9882         INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
9883             (
9884             PROJECT_ID
9885             ,STRUCTURE_VERSION_ID
9886             ,TASK_ID
9887             ,RESOURCE_ASSIGNMENT_ID
9888             ,AS_OF_DATE
9889             ,ACTUAL_COST
9890             ,ACTUAL_EFFORT
9891             ,PERIOD_NAME
9892             ,TXN_CURRENCY_CODE
9893             ,ACTUAL_COST_PC
9894             ,ACTUAL_COST_FC
9895             ,ACTUAL_RAWCOST
9896             ,ACTUAL_RAWCOST_PC
9897             ,ACTUAL_RAWCOST_FC
9898             ,RESOURCE_LIST_MEMBER_ID
9899             ,HIDDEN_RES_ASSGN_ID
9900             ,CURRENT_FLAG
9901             ,OBJECT_TYPE
9902             ,PERCENT_COMPLETE_ID
9903             ,ATTRIBUTE1
9904             ,ATTRIBUTE2
9905             ,ATTRIBUTE3
9906             ,ATTRIBUTE4
9907             ,ATTRIBUTE5
9908             ,ATTRIBUTE6
9909             ,start_date
9910             ,finish_date
9911             )
9912     VALUES
9913         (
9914         I_PROJECT_ID(i)
9915         ,I_STRUCTURE_VERSION_ID(i)
9916         ,I_TASK_ID(i)
9917         ,I_RESOURCE_ASSIGNMENT_ID(i)
9918         ,to_date(null)
9919         ,I_ACTUAL_COST(i)
9920         ,I_ACTUAL_EFFORT(i)
9921         ,I_PERIOD_NAME(i)
9922         ,I_TXN_CURRENCY_CODE(i)
9923         ,I_ACTUAL_COST_PC(i)
9924         ,I_ACTUAL_COST_FC(i)
9925         ,I_ACTUAL_RAWCOST(i)
9926         ,I_ACTUAL_RAWCOST_PC(i)
9927         ,I_ACTUAL_RAWCOST_FC(i)
9928         ,I_RESOURCE_LIST_MEMBER_ID(i)
9929         ,to_number(null)
9930         ,to_char(null)
9931         ,to_char(null)
9932         ,to_number(null)
9933         ,to_char(null)
9934         ,to_char(null)
9935         ,to_char(null)
9936         ,to_number(null)
9937         ,to_number(null)
9938         ,to_number(null)
9939         ,I_START_DATE(i)
9940         ,I_END_DATE(i)
9941         );
9942 
9943     /* End code to fix Bug # 4144300. */
9944 
9945     /* Begin commenting out the following code to fix Bug # 4144300.
9946 
9947     INSERT INTO PA_PROG_ACT_BY_PERIOD_TEMP
9948     (
9949         PROJECT_ID
9950         ,STRUCTURE_VERSION_ID
9951         ,TASK_ID
9952         ,RESOURCE_ASSIGNMENT_ID
9953         ,AS_OF_DATE
9954         ,ACTUAL_COST
9955         ,ACTUAL_EFFORT
9956         ,PERIOD_NAME
9957         ,TXN_CURRENCY_CODE
9958         ,ACTUAL_COST_PC
9959         ,ACTUAL_COST_FC
9960         ,ACTUAL_RAWCOST
9961         ,ACTUAL_RAWCOST_PC
9962         ,ACTUAL_RAWCOST_FC
9963         ,RESOURCE_LIST_MEMBER_ID
9964         ,HIDDEN_RES_ASSGN_ID
9965         ,CURRENT_FLAG
9966         ,OBJECT_TYPE
9967         ,PERCENT_COMPLETE_ID
9968         ,ATTRIBUTE1
9969         ,ATTRIBUTE2
9970         ,ATTRIBUTE3
9971         ,ATTRIBUTE4
9972         ,ATTRIBUTE5
9973         ,ATTRIBUTE6
9974     )
9975     SELECT   target.project_id               PROJECT_ID
9976              ,p_target_struct_ver_id         STRUCTURE_VERSION_ID
9977              ,target.task_id                 TASK_ID
9978              ,target.resource_assignment_id  RESOURCE_ASSIGNMENT_ID
9979              ,NULL                           AS_OF_DATE
9980              ,bl.txn_init_burdened_cost      ACTUAL_COST
9981              ,bl.init_quantity               ACTUAL_EFFORT
9982              ,bl.period_name                 PERIOD_NAME
9983              ,bl.txn_currency_code           TXN_CURRENCY_CODE
9984              ,bl.project_init_burdened_cost  ACTUAL_COST_PC
9985              ,bl.init_burdened_cost          ACTUAL_COST_FC
9986              ,bl.txn_init_raw_cost           ACTUAL_RAWCOST
9987              ,bl.project_init_raw_cost       ACTUAL_RAWCOST_PC
9988              ,bl.init_raw_cost               ACTUAL_RAWCOST_FC
9989              ,target.resource_list_member_id RESOURCE_LIST_MEMBER_ID
9990              ,NULL                           HIDDEN_RES_ASSGN_ID
9991              ,NULL                           CURRENT_FLAG
9992              ,NULL                           OBJECT_TYPE
9993              ,NULL                           PERCENT_COMPLETE_ID
9994              ,NULL                           ATTRIBUTE1
9995              ,NULL                           ATTRIBUTE2
9996              ,NULL                           ATTRIBUTE3
9997              ,NULL                           ATTRIBUTE4
9998              ,NULL                           ATTRIBUTE5
9999              ,NULL                           ATTRIBUTE6
10000     FROM  pa_resource_assignments source,
10001           pa_budget_lines bl,
10002           pa_resource_assignments target
10003     WHERE bl.budget_version_id = l_source_str_ver_info_rec.budget_version_id
10004     and   bl.resource_assignment_id = source.resource_assignment_id
10005     AND   target.budget_version_id = l_target_str_ver_info_rec.budget_version_id
10006     AND   target.task_id = source.task_id
10007     AND   target.resource_list_member_id =
10008                 decode(l_res_list_mismatch_flag, 'N', source.resource_list_member_id,
10009                                                  l_target_people_rlm_id)
10010     --bug 3956258
10011     AND   'Y' = PA_PROGRESS_UTILS.check_object_has_prog(
10012                                      source.project_id   --p_project_id
10013                                     ,source.task_id      --p_proj_element_id
10014                                     -- ,decode( source.ta_display_flag, 'N', source.task_id,source.resource_list_member_id) --p_object_id -- Fix for Bug # 4112283.
10015                     ,source.resource_list_member_id -- Fix for Bug # 4112283.
10016                                     -- ,decode( source.ta_display_flag, 'N','PA_TASKS', 'PA_ASSIGNMENTS') --p_object_type -- Fix for Bug # 4112283.
10017                     ,'PA_ASSIGNMENTS' -- Fix for Bug # 4112283.
10018                                     ,'WORKPLAN') --p_structure_type
10019 
10020     --end bug 3956258
10021     ;
10022 
10023     End commenting out the following code to fix Bug # 4144300. */
10024 
10025     l_no_of_recs_for_processing := SQL%ROWCOUNT;
10026 
10027     IF l_debug_mode = 'Y' THEN
10028     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);
10029     END IF;
10030 
10031     --Bug 3953743. If No records are inserted into the tmp table then the API need not be called at all.
10032     IF l_no_of_recs_for_processing > 0 THEN
10033 
10034         -- Call api that either creates/updates existing budget lines using the temp table
10035         l_project_ids.extend(1);
10036         l_project_ids(1) := p_project_id;
10037         l_struture_version_ids.extend(1);
10038         l_struture_version_ids(1) := p_target_struct_ver_id;
10039         l_proj_thru_dates_tbl.extend(1);
10040 
10041         /* Begin code to fix Bug # 4141850. */
10042 
10043         -- l_proj_thru_dates_tbl(1) := (l_source_str_ver_info_rec.etc_start_date - 1);
10044 
10045     open cur_as_of_date(p_project_id);
10046     fetch cur_as_of_date into l_proj_thru_dates_tbl(1);
10047     close cur_as_of_date;
10048 
10049         /* End code to fix Bug # 4141850. */
10050         PA_FP_MAINTAIN_ACTUAL_PUB.MAINTAIN_ACTUAL_AMT_WRP
10051               (P_PROJECT_ID_TAB                   => l_project_ids,
10052                P_WP_STR_VERSION_ID_TAB            => l_struture_version_ids,
10053                P_ACTUALS_THRU_DATE                => l_proj_thru_dates_tbl,
10054                P_CALLING_CONTEXT                  => p_calling_context,
10055                X_RETURN_STATUS                    => l_return_status,
10056                X_MSG_COUNT                        => l_msg_count,
10057                X_MSG_DATA                         => l_msg_data
10058              );
10059 
10060         IF l_return_status <> 'S' THEN
10061             IF l_debug_mode = 'Y' THEN
10062            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);
10063             END IF;
10064 
10065             RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
10066         END IF;
10067 
10068    --bug 4255329
10069     ELSE
10070 
10071        IF l_debug_mode = 'Y' THEN
10072           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);
10073        END IF;
10074 
10075        open cur_as_of_date(p_project_id);
10076        fetch cur_as_of_date into l_as_of_date;
10077        close cur_as_of_date;
10078 
10079        IF l_debug_mode = 'Y' THEN
10080           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);
10081        END IF;
10082 
10083        SELECT budget_version_id into l_bv_id
10084          FROM PA_BUDGET_VERSIONS
10085         WHERE project_id = P_PROJECT_ID
10086           AND project_structure_version_id = p_target_struct_ver_id
10087           AND nvl(wp_version_flag,'N')  = 'Y';
10088 
10089        IF l_debug_mode = 'Y' THEN
10090           pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'l_bv_id='||l_bv_id, x_Log_Level=> 3);
10091        END IF;
10092 
10093        UPDATE  pa_budget_versions
10094           SET  etc_start_date = l_as_of_date + 1
10095         WHERE  budget_version_id = l_bv_id;
10096 
10097        IF l_debug_mode = 'Y' THEN
10098           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);
10099        END IF;
10100 
10101    --bug 4255329
10102 
10103     END IF;--IF l_no_of_recs_for_processing > 0 THEN
10104 
10105     IF l_debug_mode = 'Y' THEN
10106     pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Exiting copy_actuals_for_workplan', x_Log_Level=> 3);
10107     END IF;
10108 
10109     -- reset curr function
10110     pa_debug.reset_curr_function();
10111 
10112 EXCEPTION
10113 
10114    WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
10115        l_msg_count := FND_MSG_PUB.count_msg;
10116        IF l_msg_count = 1 THEN
10117            PA_INTERFACE_UTILS_PUB.get_messages
10118                  (p_encoded        => FND_API.G_TRUE
10119                   ,p_msg_index      => 1
10120                   ,p_msg_count      => l_msg_count
10121                   ,p_msg_data       => l_msg_data
10122                   ,p_data           => l_data
10123                   ,p_msg_index_out  => l_msg_index_out);
10124 
10125            x_msg_data := l_data;
10126            x_msg_count := l_msg_count;
10127        ELSE
10128            x_msg_count := l_msg_count;
10129        END IF;
10130 
10131        x_return_status := FND_API.G_RET_STS_ERROR;
10132 
10133        IF l_debug_mode = 'Y' THEN
10134       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);
10135        END IF;
10136 
10137        -- reset curr function
10138        pa_debug.reset_curr_function();
10139 
10140        RETURN;
10141    WHEN Others THEN
10142        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10143        x_msg_count     := 1;
10144        x_msg_data      := SQLERRM;
10145 
10146        FND_MSG_PUB.add_exc_msg( p_pkg_name        => 'pa_fp_copy_from_pkg'
10147                                ,p_procedure_name  => 'copy_actuals_for_workplan');
10148 
10149        IF l_debug_mode = 'Y' THEN
10150        pa_debug.write(x_Module=>'PA_PROGRESS_PVT.copy_actuals_for_workplan', x_Msg => 'Unexpected Error'||SQLERRM, x_Log_Level=> 3);
10151        END IF;
10152 
10153        -- reset curr function
10154        pa_debug.Reset_Curr_Function();
10155 
10156        RAISE;
10157 END copy_actuals_for_workplan;
10158 
10159 -- Bug 4575855 : Added rollup_prog_from_subprojs
10160 PROCEDURE ROLLUP_PROG_FROM_SUBPROJS(
10161   p_api_version                 IN      NUMBER          :=1.0
10162  ,p_init_msg_list               IN      VARCHAR2        :=FND_API.G_TRUE
10163  ,p_commit                      IN      VARCHAR2        :=FND_API.G_FALSE
10164  ,p_validate_only               IN      VARCHAR2        :=FND_API.G_TRUE
10165  ,p_validation_level            IN      NUMBER          :=FND_API.G_VALID_LEVEL_FULL
10166  ,p_calling_module              IN      VARCHAR2        :='SELF_SERVICE'
10167  ,p_debug_mode                  IN      VARCHAR2        :='N'
10168  ,p_max_msg_count               IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10169  ,p_project_id                  IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10170  ,p_structure_version_id        IN      NUMBER          := PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
10171  ,x_return_status               OUT  NOCOPY VARCHAR2  -- 4565506 Added while merging
10172  ,x_msg_count                   OUT  NOCOPY NUMBER    -- 4565506 Added while merging
10173  ,x_msg_data                    OUT  NOCOPY VARCHAR2 -- 4565506 Added while merging
10174 )
10175 IS
10176 
10177 l_api_name           CONSTANT   VARCHAR2(30)    := 'ROLLUP_PROG_FROM_SUBPROJS';
10178 l_api_version        CONSTANT   NUMBER          := p_api_version;
10179 l_user_id                       NUMBER          := FND_GLOBAL.USER_ID;
10180 l_login_id                      NUMBER          := FND_GLOBAL.LOGIN_ID;
10181 l_return_status                 VARCHAR2(1);
10182 l_msg_count                     NUMBER;
10183 l_msg_data                      VARCHAR2(250);
10184 g1_debug_mode           VARCHAR2(1);
10185 
10186 CURSOR cur_select_grid
10187 IS
10188 SELECT distinct -- 4600547 Added distinct
10189 a.project_id
10190 , a.element_version_id
10191 , a.prg_level
10192 , ppr.as_of_date
10193 FROM pa_proj_element_versions a,
10194 pa_proj_elem_ver_structure b,
10195 pa_proj_structure_types ppst,
10196 pa_proj_element_versions c,
10197 pa_progress_rollup ppr
10198 WHERE
10199 c.project_id = p_project_id
10200 AND c.element_version_id = p_structure_version_id  ---5095632
10201 AND c.prg_group = a.prg_group
10202 AND a.project_id = b.project_id
10203 AND a.element_version_id = b.element_version_id
10204 AND b.status_code = 'STRUCTURE_PUBLISHED'
10205 AND b.latest_eff_published_flag = 'Y'
10206 AND a.proj_element_id = ppst.proj_element_id
10207 AND ppst.structure_type_id =1
10208 AND a.prg_level > 1
10209 AND a.proj_element_id = ppr.object_id
10210 AND a.project_id = ppr.project_id
10211 AND ppr.object_type = 'PA_STRUCTURES'
10212 AND ppr.structure_version_id is null
10213 AND ppr.structure_type = 'WORKPLAN'
10214 AND ppr.current_flag = 'Y'
10215 order by a.prg_level desc;    --select the lowest level of projects first.
10216 
10217 BEGIN
10218 
10219     g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
10220 
10221         IF g1_debug_mode  = 'Y' THEN
10222                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10223         END IF;
10224 
10225         IF g1_debug_mode  = 'Y' THEN
10226                 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);
10227                 pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'p_project_id='||p_project_id, x_Log_Level=> 3);
10228                 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);
10229         END IF;
10230 
10231     IF g1_debug_mode  = 'Y' THEN
10232                 pa_debug.init_err_stack ('PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS');
10233         END IF;
10234 
10235         IF (p_commit = FND_API.G_TRUE) THEN
10236                 savepoint rollup_prog_from_subprojs2;
10237         END IF;
10238 
10239         IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version, p_api_version, l_api_name, g_pkg_name) then
10240                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10241         END IF;
10242 
10243         IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
10244                 FND_MSG_PUB.initialize;
10245         END IF;
10246 
10247         x_return_status := FND_API.G_RET_STS_SUCCESS;
10248 
10249     FOR rec_subprojs IN cur_select_grid LOOP
10250         IF g1_debug_mode  = 'Y' THEN
10251             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);
10252             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);
10253             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);
10254             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling populate_pji_tab_for_plan', x_Log_Level=> 3);
10255         END IF;
10256 
10257         pa_progress_pub.populate_pji_tab_for_plan(
10258             p_init_msg_list     => FND_API.G_FALSE
10259             ,p_commit       => FND_API.G_FALSE
10260             ,p_calling_module   => p_calling_module
10261             ,p_project_id       => rec_subprojs.project_id
10262             ,p_structure_version_id => rec_subprojs.element_version_id
10263             ,p_baselined_str_ver_id => PA_PROJECT_STRUCTURE_UTILS.Get_Baseline_Struct_Ver(rec_subprojs.project_id)
10264             ,p_structure_type       => 'WORKPLAN'
10265             ,p_program_rollup_flag  => 'Y'
10266             ,p_calling_context  => 'ROLLUP' ---5070142   ---'SUMMARIZE'
10267             ,p_as_of_date       => rec_subprojs.as_of_date
10268             ,x_return_status        => x_return_status
10269             ,x_msg_count            => x_msg_count
10270             ,x_msg_data             => x_msg_data);
10271 
10272         IF g1_debug_mode  = 'Y' THEN
10273             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);
10274         END IF;
10275 
10276 
10277         IF x_return_status <> 'S' THEN
10278             RAISE FND_API.G_EXC_ERROR;
10279         END IF;
10280 
10281         IF g1_debug_mode  = 'Y' THEN
10282             pa_debug.write(x_Module=>'PA_PROGRESS_PVT.ROLLUP_PROG_FROM_SUBPROJS', x_Msg => 'Calling program_rollup_pvt', x_Log_Level=> 3);
10283         END IF;
10284 
10285         pa_progress_pvt.program_rollup_pvt(
10286             p_init_msg_list         => FND_API.G_FALSE
10287             ,p_commit               => FND_API.G_FALSE
10288             ,p_validate_only        => FND_API.G_FALSE
10289             ,p_project_id           => rec_subprojs.project_id
10290             ,p_as_of_date           => rec_subprojs.as_of_date
10291             ,p_structure_type       => 'WORKPLAN'
10292             ,p_structure_ver_id     => rec_subprojs.element_version_id
10293             ,x_return_status        => x_return_status
10294             ,x_msg_count            => x_msg_count
10295             ,x_msg_data             => x_msg_data);
10296 
10297         IF g1_debug_mode  = 'Y' THEN
10298             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);
10299         END IF;
10300 
10301         IF x_return_status <> 'S' THEN
10302             RAISE FND_API.G_EXC_ERROR;
10303         END IF;
10304     END LOOP;
10305 
10306         IF (p_commit = FND_API.G_TRUE) THEN
10307                 COMMIT;
10308         END IF;
10309 EXCEPTION
10310     when FND_API.G_EXC_ERROR then
10311       if p_commit = FND_API.G_TRUE then
10312          rollback to rollup_prog_from_subprojs2;
10313       end if;
10314       x_return_status := FND_API.G_RET_STS_ERROR;
10315     when FND_API.G_EXC_UNEXPECTED_ERROR then
10316       if p_commit = FND_API.G_TRUE then
10317          rollback to rollup_prog_from_subprojs2;
10318       end if;
10319       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10320       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10321                               p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10322                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10323     when OTHERS then
10324       if p_commit = FND_API.G_TRUE then
10325          rollback to rollup_prog_from_subprojs2;
10326       end if;
10327       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10328       fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10329                               p_procedure_name => 'ROLLUP_PROG_FROM_SUBPROJS',
10330                               p_error_text     => SUBSTRB(SQLERRM,1,120));
10331       raise;
10332 END ROLLUP_PROG_FROM_SUBPROJS;
10333 
10334 --Added following procedure for MRup3 merge
10335 PROCEDURE UPD_PROG_RECS_STR_DELETE(p_project_id         IN  NUMBER,
10336                                    p_str_ver_id_to_del  IN  NUMBER,
10337                                    x_return_status      OUT NOCOPY VARCHAR2,
10338                                    x_msg_count          OUT NOCOPY NUMBER,
10339                                    x_msg_data           OUT NOCOPY VARCHAR2) IS
10340 
10341 cursor new_str_version_id is
10342 select ppevs.element_version_id
10343   from pa_proj_elem_ver_structure ppevs, pa_proj_structure_types ppst
10344  where ppevs.project_id = p_project_id
10345    and ppevs.proj_element_id = ppst.proj_element_id
10346    and ppst.structure_type_id = 1
10347    and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10348    and ppevs.PUBLISHED_DATE = (select min(ppevs.published_date)
10349                                from pa_proj_elem_ver_structure ppevs,
10350                                     pa_proj_structure_types ppst
10351                                where ppevs.project_id = p_project_id
10352                                and ppevs.proj_element_id = ppst.proj_element_id
10353                                and ppst.structure_type_id = 1
10354                                and ppevs.STATUS_CODE = 'STRUCTURE_PUBLISHED'
10355                                and ppevs.published_date > (select published_date
10356                                                 from pa_proj_elem_ver_structure
10357                                                 where project_id = p_project_id
10358                                                 and element_version_id = p_str_ver_id_to_del));
10359 
10360 l_str_ver_id   number;
10361   -- Begin. Bug 5452282
10362   cursor obj_version_id (x_str_ver_id  pa_proj_element_versions.element_version_id%type)is
10363     select ppev.element_version_id  old_element_version_id,
10364            ppev1.element_version_id new_element_version_id,
10365            ppev.proj_element_id
10366       from pa_proj_element_versions ppev,
10367            pa_proj_element_versions ppev1
10368      where ppev.project_id = p_project_id
10369        and ppev.parent_structure_version_id = p_str_ver_id_to_del
10370        and ppev.proj_element_id = ppev1.proj_element_id
10371        and ppev1.parent_structure_version_id = x_str_ver_id;
10372 
10373   l_old_element_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10374   l_new_element_version_id_tab          SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10375   l_proj_element_id_tab                 SYSTEM.PA_NUM_TBL_TYPE  := SYSTEM.PA_NUM_TBL_TYPE();
10376   -- End. Bug 5452282
10377 
10378 BEGIN
10379 x_return_status := 'S';
10380   open new_str_version_id;
10381   fetch new_str_version_id into l_str_ver_id;
10382   close new_str_version_id;
10383 
10384   if (l_str_ver_id is null) then
10385      raise FND_API.G_EXC_ERROR;
10386   end if;
10387 
10388   -- Begin bug 5452282
10389   open obj_version_id(l_str_ver_id);
10390   fetch obj_version_id bulk collect into l_old_element_version_id_tab,
10391                                          l_new_element_version_id_tab,
10392                                          l_proj_element_id_tab;
10393   close obj_version_id;
10394 
10395   --- update pa_percent_completes table with new object_version_ids
10396   IF l_new_element_version_id_tab.count > 0 THEN
10397   --- update pa_percent_completes table with new object_version_ids
10398   Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10399     update pa_percent_completes  ppc
10400        set object_version_id = l_new_element_version_id_tab(i)
10401      where project_id = p_project_id
10402        and task_id = l_proj_element_id_tab(i)
10403        and structure_type = 'WORKPLAN'
10404        and object_version_id = l_old_element_version_id_tab(i);
10405 
10406   --- update pa_progress_rollup table with new object_version_ids
10407   Forall i in l_new_element_version_id_tab.first..l_new_element_version_id_tab.last
10408     update pa_progress_rollup ppr
10409        set object_version_id = l_new_element_version_id_tab(i)
10410       where project_id = p_project_id
10411        and proj_element_id = l_proj_element_id_tab(i)
10412        and structure_type = 'WORKPLAN'
10413        and structure_version_id is null
10414        and object_version_id = l_old_element_version_id_tab(i);
10415   End if;
10416 
10417 exception
10418 when FND_API.G_EXC_ERROR then
10419   x_return_status := 'E';
10420   fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10421                           p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10422                           p_error_text     => 'This workplan structure cannot be deleted.');
10423 
10424 when OTHERS then
10425   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10426   fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_PROGRESS_PVT',
10427                           p_procedure_name => 'UPD_PROG_RECS_STR_DELETE',
10428                           p_error_text     => SUBSTRB(SQLERRM,1,120));
10429   raise;
10430 
10431 END UPD_PROG_RECS_STR_DELETE;
10432 
10433 end PA_PROGRESS_PVT;