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