[Home] [Help]
PACKAGE BODY: APPS.PA_WP_EXCEPTION_UTILS
Source
1 package body PA_WP_EXCEPTION_UTILS as
2 /*$Header: PAWPXCUB.pls 120.1.12010000.2 2008/09/12 19:31:01 snizam ship $*/
3
4 -- API name : get_wp_exception_value
5 -- Type : Utils Procedure
6 -- Pre-reqs : None
7 -- Return Value : N/A
8 -- Parameters
9 --
10 -- 25-JUN-01 HSIU -Created
11 --
12
13 procedure get_wp_exception_value
14 (
15 p_object_type IN VARCHAR2,
16 p_object_id IN NUMBER,
17 p_measure_id IN NUMBER,
18 p_period_type IN VARCHAR2,
19 x_measure_value OUT NOCOPY NUMBER, -- 4537865
20 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
21 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
22 x_msg_count OUT NOCOPY NUMBER, -- 4537865
23 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
24 )
25 IS
26 BEGIN
27 --need to replace measure ids with correct values
28 --once measure has been seeded
29 -- IF (p_measure_id = 11) THEN
30 IF (p_measure_id = 427) THEN
31 --get ITD workplan effort variance
32 PA_WP_EXCEPTION_UTILS.get_ITD_workplan_effort_var(
33 p_object_type => p_object_type,
34 p_object_id => p_object_id,
35 p_measure_id => p_measure_id,
36 p_period_type => p_period_type,
37 x_measure_value => x_measure_value,
38 x_period_name => x_period_name,
39 x_return_status => x_return_status,
40 x_msg_count => x_msg_count,
41 x_msg_data => x_msg_data
42 );
43 -- ELSIF (p_measure_id = 12) THEN
44 ELSIF (p_measure_id = 428) THEN
45 --get forecast workplan effor variance
46 PA_WP_EXCEPTION_UTILS.get_forecast_wp_eff_var(
47 p_object_type => p_object_type,
48 p_object_id => p_object_id,
49 p_measure_id => p_measure_id,
50 p_period_type => p_period_type,
51 x_measure_value => x_measure_value,
52 x_period_name => x_period_name,
53 x_return_status => x_return_status,
54 x_msg_count => x_msg_count,
55 x_msg_data => x_msg_data
56 );
57 -- ELSIF (p_measure_id = 13) THEN
58 ELSIF (p_measure_id = 429) THEN
59 --get current forecast to prior forecast workplan effor variance
60 PA_WP_EXCEPTION_UTILS.get_cur_fc_to_pri_effort_var(
61 p_object_type => p_object_type,
62 p_object_id => p_object_id,
63 p_measure_id => p_measure_id,
64 p_period_type => p_period_type,
65 x_measure_value => x_measure_value,
66 x_period_name => x_period_name,
67 x_return_status => x_return_status,
68 x_msg_count => x_msg_count,
69 x_msg_data => x_msg_data
70 );
71 -- ELSIF (p_measure_id = 14) THEN
72 ELSIF (p_measure_id = 430) THEN
73 --get schedule baseline finish variance
74 PA_WP_EXCEPTION_UTILS.get_sch_bsln_fin_var(
75 p_object_type => p_object_type,
76 p_object_id => p_object_id,
77 p_measure_id => p_measure_id,
78 p_period_type => p_period_type,
79 x_measure_value => x_measure_value,
80 x_period_name => x_period_name,
81 x_return_status => x_return_status,
82 x_msg_count => x_msg_count,
83 x_msg_data => x_msg_data
84 );
85 -- ELSIF (p_measure_id = 15) THEN
86 ELSIF (p_measure_id = 431) THEN
87 --get schedule baseline start variance
88 PA_WP_EXCEPTION_UTILS.get_sch_bsln_st_var(
89 p_object_type => p_object_type,
90 p_object_id => p_object_id,
91 p_measure_id => p_measure_id,
92 p_period_type => p_period_type,
93 x_measure_value => x_measure_value,
94 x_period_name => x_period_name,
95 x_return_status => x_return_status,
96 x_msg_count => x_msg_count,
97 x_msg_data => x_msg_data
98 );
99 -- ELSIF (p_measure_id = 16) THEN
100 ELSIF (p_measure_id = 432) THEN
101 --get schedule prior published version finish variance
102 PA_WP_EXCEPTION_UTILS.get_sch_pri_pub_ver_fin_var(
103 p_object_type => p_object_type,
104 p_object_id => p_object_id,
105 p_measure_id => p_measure_id,
106 p_period_type => p_period_type,
107 x_measure_value => x_measure_value,
108 x_period_name => x_period_name,
109 x_return_status => x_return_status,
110 x_msg_count => x_msg_count,
111 x_msg_data => x_msg_data
112 );
113 -- ELSIF (p_measure_id = 17) THEN
114 ELSIF (p_measure_id = 433) THEN
115 --get schedule prior published version start variance
116 PA_WP_EXCEPTION_UTILS.get_sch_pri_pub_ver_st_var(
117 p_object_type => p_object_type,
118 p_object_id => p_object_id,
119 p_measure_id => p_measure_id,
120 p_period_type => p_period_type,
121 x_measure_value => x_measure_value,
122 x_period_name => x_period_name,
123 x_return_status => x_return_status,
124 x_msg_count => x_msg_count,
125 x_msg_data => x_msg_data
126 );
127 -- ELSIF (p_measure_id = 18) THEN
128 ELSIF (p_measure_id = 434) THEN
129 --get schedule estimated finish variance
130 PA_WP_EXCEPTION_UTILS.get_sch_est_fin_var(
131 p_object_type => p_object_type,
132 p_object_id => p_object_id,
133 p_measure_id => p_measure_id,
134 p_period_type => p_period_type,
135 x_measure_value => x_measure_value,
136 x_period_name => x_period_name,
137 x_return_status => x_return_status,
138 x_msg_count => x_msg_count,
139 x_msg_data => x_msg_data
140 );
141 -- ELSIF (p_measure_id = 19) THEN
142 ELSIF (p_measure_id = 435) THEN
143 --get schedule estimated start variance
144 PA_WP_EXCEPTION_UTILS.get_sch_est_st_var(
145 p_object_type => p_object_type,
146 p_object_id => p_object_id,
147 p_measure_id => p_measure_id,
148 p_period_type => p_period_type,
149 x_measure_value => x_measure_value,
150 x_period_name => x_period_name,
151 x_return_status => x_return_status,
152 x_msg_count => x_msg_count,
153 x_msg_data => x_msg_data
154 );
155 END IF;
156 -- 4537865
157 EXCEPTION
158 WHEN OTHERS THEN
159 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
160 x_period_name := NULL ;
161 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
162 x_msg_count := 1;
163 x_msg_data := SQLERRM;
164
165 Fnd_Msg_Pub.add_exc_msg
166 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
167 , p_procedure_name => 'get_wp_exception_value'
168 , p_error_text => x_msg_data);
169
170 RAISE;
171
172 END get_wp_exception_value;
173
174 PROCEDURE get_ITD_workplan_effort_var
175 (
176 p_object_type IN VARCHAR2,
177 p_object_id IN NUMBER,
178 p_measure_id IN NUMBER,
179 p_period_type IN VARCHAR2,
180 x_measure_value OUT NOCOPY NUMBER, -- 4537865
181 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
182 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
183 x_msg_count OUT NOCOPY NUMBER, -- 4537865
184 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
185 )
186 IS
187 l_wp_versioN_id NUMBER;
188 CURSOR c1(c_wp_ver_id NUMBER) IS
189 select (NVL(PPRU.ppl_act_effort_to_date,0) + NVL(ppru.eqpmt_act_effort_to_date,0)) -
190 -- (NVL(pfxat.labor_hours, 0) + NVL(pfxat.equipment_hours, 0))
191 (NVL(pxpv.labor_effort,0) + NVL(pxpv.equipment_effort,0))
192 from pji_xbs_plans_v pxpv,
193 -- from pji_fm_xbs_accum_tmp1 pfxat,
194 pa_progress_rollup ppru,
195 pa_proj_element_versions ppev
196 where ppev.element_version_id = c_wp_ver_id
197 and ppev.project_id = ppru.project_id
198 and ppev.proj_element_id = ppru.object_id
199 and ppev.object_type = ppru.object_type
200 and ppru.structure_type = 'WORKPLAN'
201 and ppev.project_id = pxpv.project_id
202 and ppev.proj_element_id = pxpv.proj_element_id
203 and ppev.element_version_id = pxpv.structure_version_id
204 and pxpv.structure_type(+) = 'WORKPLAN'
205 -- and ppev.project_id = pfxat.project_id
206 -- and ppev.proj_element_id = pfxat.project_element_id
207 -- and ppev.element_version_id = pfxat.struct_version_id
208 -- and pfxat.calendar_type (+) = 'A'
209 order by ppru.as_of_date desc;
210
211 BEGIN
212 x_return_status := FND_API.G_RET_STS_SUCCESS;
213
214 l_wp_versioN_id := pa_project_structure_utils.GET_LATEST_WP_VERSION(p_object_id);
215 IF l_wp_version_id IS NULL THEN
216 --no publish version; return 0;
217 x_measure_value := 0;
218 ELSE
219 OPEN c1(l_wp_version_id);
220 FETCH c1 into x_measure_value;
221 CLOSE c1;
222 END IF;
223 -- 4537865
224 EXCEPTION
225 WHEN OTHERS THEN
226 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
227 x_period_name := NULL ;
228 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
229 x_msg_count := 1;
230 x_msg_data := SQLERRM;
231
232 Fnd_Msg_Pub.add_exc_msg
233 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
234 , p_procedure_name => 'get_ITD_workplan_effort_var'
235 , p_error_text => x_msg_data);
236
237 RAISE;
238
239 END get_ITD_workplan_effort_var;
240
241 PROCEDURE get_forecast_wp_eff_var
242 (
243 p_object_type IN VARCHAR2,
244 p_object_id IN NUMBER,
245 p_measure_id IN NUMBER,
246 p_period_type IN VARCHAR2,
247 x_measure_value OUT NOCOPY NUMBER, -- 4537865
248 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
249 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
250 x_msg_count OUT NOCOPY NUMBER, -- 4537865
251 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
252 )
253 IS
254 l_wp_versioN_id NUMBER;
255 CURSOR c1(c_wp_ver_id NUMBER) IS
256 select (NVL(ppru.estimated_remaining_effort,0) +
257 NVL(ppru.eqpmt_etc_effort,0) +
258 NVL(ppru.PPL_ACT_EFFORT_TO_DATE, 0) +
259 NVL(ppru.EQPMT_ACT_EFFORT_TO_DATE, 0) ) -
260 -- (NVL(pfxat.labor_hours, 0) + NVL(pfxat.equipment_hours, 0))
261 (NVL(pxpv.labor_effort,0) + NVL(pxpv.equipment_effort,0))
262 from pji_xbs_plans_v pxpv,
263 -- from pji_fm_xbs_accum_tmp1 pfxat,
264 pa_progress_rollup ppru,
265 pa_proj_element_versions ppev
266 where ppev.element_version_id = c_wp_ver_id
267 and ppev.project_id = ppru.project_id
268 and ppev.proj_element_id = ppru.object_id
269 and ppev.object_type = ppru.object_type
270 and ppru.structure_version_id is null -- Added for bug 6337529
271 and ppru.structure_type = 'WORKPLAN'
272 and ppev.project_id = pxpv.project_id
273 and ppev.proj_element_id = pxpv.proj_element_id
274 and ppev.element_version_id = pxpv.structure_version_id
275 and pxpv.structure_type(+) = 'WORKPLAN'
276 -- and ppev.project_id = pfxat.project_id
277 -- and ppev.proj_element_id = pfxat.project_element_id
278 -- and ppev.element_version_id = pfxat.struct_version_id
279 -- and pfxat.calendar_type (+) = 'A'
280 order by ppru.as_of_date desc;
281
282 BEGIN
283 x_return_status := FND_API.G_RET_STS_SUCCESS;
284
285 l_wp_versioN_id := pa_project_structure_utils.GET_LATEST_WP_VERSION(p_object_id);
286 IF l_wp_version_id IS NULL THEN
287 --no publish version; return 0;
288 x_measure_value := 0;
289 ELSE
290 OPEN c1(l_wp_version_id);
291 FETCH c1 into x_measure_value;
292 CLOSE c1;
293 END IF;
294 -- 4537865
295 EXCEPTION
296 WHEN OTHERS THEN
297 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
298 x_period_name := NULL ;
299 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
300 x_msg_count := 1;
301 x_msg_data := SQLERRM;
302
303 Fnd_Msg_Pub.add_exc_msg
304 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
305 , p_procedure_name => 'get_forecast_wp_eff_var'
306 , p_error_text => x_msg_data);
307
308 RAISE;
309
310 END get_forecast_wp_eff_var;
311
312 PROCEDURE get_cur_fc_to_pri_effort_var
313 (
314 p_object_type IN VARCHAR2,
315 p_object_id IN NUMBER,
316 p_measure_id IN NUMBER,
317 p_period_type IN VARCHAR2,
318 x_measure_value OUT NOCOPY NUMBER, -- 4537865
319 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
320 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
321 x_msg_count OUT NOCOPY NUMBER, -- 4537865
322 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
323 )
324 IS
325 l_wp_versioN_id NUMBER;
326 CURSOR c1(c_wp_ver_id NUMBER) IS
327 select (NVL(ppru.estimated_remaining_effort,0) + NVL(ppru.eqpmt_etc_effort,0))
328 from pa_progress_rollup ppru,
329 pa_proj_element_versions ppev
330 where ppev.element_version_id = c_wp_ver_id
331 and ppev.project_id = ppru.project_id
332 and ppev.proj_element_id = ppru.object_id
333 and ppev.object_type = ppru.object_type
334 and ppru.structure_type = 'WORKPLAN'
335 order by ppru.as_of_date desc;
336
337 l_value1 NUMBER;
338 l_value2 NUMBER;
339 BEGIN
340 x_return_status := FND_API.G_RET_STS_SUCCESS;
341
342 l_wp_versioN_id := pa_project_structure_utils.GET_LATEST_WP_VERSION(p_object_id);
343 IF l_wp_version_id IS NULL THEN
344 --no publish version; return 0;
345 x_measure_value := 0;
346 ELSE
347 OPEN c1(l_wp_version_id);
348 FETCH c1 into l_value1;
349 IF c1%NOTFOUND THEN
350 x_measure_value := 0;
351 CLOSE C1;
352 ELSE
353 FETCH c1 into l_value2;
354 IF c1%NOTFOUND THEN
355 x_measure_value := 0;
356 CLOSE c1;
357 ELSE
358 CLOSE c1;
359 END IF;
360 END IF;
361 END IF;
362 x_measure_value := l_value1 - l_value2;
363 -- 4537865
364 EXCEPTION
365 WHEN OTHERS THEN
366 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
367 x_period_name := NULL ;
368 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
369 x_msg_count := 1;
370 x_msg_data := SQLERRM;
371
372 Fnd_Msg_Pub.add_exc_msg
373 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
374 , p_procedure_name => 'get_cur_fc_to_pri_effort_var'
375 , p_error_text => x_msg_data);
376
377 RAISE;
378
382 (
379 END get_cur_fc_to_pri_effort_var;
380
381 PROCEDURE get_sch_bsln_fin_var
383 p_object_type IN VARCHAR2,
384 p_object_id IN NUMBER,
385 p_measure_id IN NUMBER,
386 p_period_type IN VARCHAR2,
387 x_measure_value OUT NOCOPY NUMBER, -- 4537865
388 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
389 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
390 x_msg_count OUT NOCOPY NUMBER, -- 4537865
391 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
392 )
393 IS
394 CURSOR c1 IS
395 select baseline_finish_date, scheduled_finish_date
396 from pa_projects_all
397 where project_id = p_object_id;
398 l_b_fin DATE;
399 l_s_fin DATE;
400 BEGIN
401 x_return_status := FND_API.G_RET_STS_SUCCESS;
402
403 OPEN c1;
404 FETCH c1 into l_b_fin, l_s_fin;
405 CLOSE c1;
406
407 IF (l_b_fin IS NOT NULL) AND (l_s_fin IS NOT NULL) THEN
408 x_measure_value := l_s_fin - l_b_fin;
409 ELSE
410 x_measure_value := 0;
411 END IF;
412 -- 4537865
413 EXCEPTION
414 WHEN OTHERS THEN
415 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
416 x_period_name := NULL ;
417 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
418 x_msg_count := 1;
419 x_msg_data := SQLERRM;
420
421 Fnd_Msg_Pub.add_exc_msg
422 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
423 , p_procedure_name => 'get_sch_bsln_fin_var'
424 , p_error_text => x_msg_data);
425
426 RAISE;
427
428 END get_sch_bsln_fin_var;
429
430 PROCEDURE get_sch_bsln_st_var
431 (
432 p_object_type IN VARCHAR2,
433 p_object_id IN NUMBER,
434 p_measure_id IN NUMBER,
435 p_period_type IN VARCHAR2,
436 x_measure_value OUT NOCOPY NUMBER, -- 4537865
437 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
438 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
439 x_msg_count OUT NOCOPY NUMBER, -- 4537865
440 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
441 )
442 IS
443 CURSOR c1 IS
444 select baseline_start_date, scheduled_start_date
445 from pa_projects_all
446 where project_id = p_object_id;
447 l_b_st DATE;
448 l_s_st DATE;
449 BEGIN
450 x_return_status := FND_API.G_RET_STS_SUCCESS;
451
452 OPEN c1;
453 FETCH c1 into l_b_st, l_s_st;
454 CLOSE c1;
455
456 IF (l_b_st IS NOT NULL) AND (l_s_st IS NOT NULL) THEN
457 x_measure_value := l_s_st - l_b_st;
458 ELSE
459 x_measure_value := 0;
460 END IF;
461 -- 4537865
462 EXCEPTION
463 WHEN OTHERS THEN
464 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
465 x_period_name := NULL ;
466 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
467 x_msg_count := 1;
468 x_msg_data := SQLERRM;
469
470 Fnd_Msg_Pub.add_exc_msg
471 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
472 , p_procedure_name => 'get_sch_bsln_st_var'
473 , p_error_text => x_msg_data);
474
475 RAISE;
476 END get_sch_bsln_st_var;
477
478 PROCEDURE get_sch_pri_pub_ver_fin_var
479 (
480 p_object_type IN VARCHAR2,
481 p_object_id IN NUMBER,
482 p_measure_id IN NUMBER,
483 p_period_type IN VARCHAR2,
484 x_measure_value OUT NOCOPY NUMBER, -- 4537865
485 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
486 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
487 x_msg_count OUT NOCOPY NUMBER, -- 4537865
488 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
489 )
490 IS
491 CURSOR c1 IS
492 select sch.scheduled_finish_date
493 from pa_proj_elem_ver_schedule sch,
494 pa_proj_elem_ver_structure str,
495 pa_proj_structure_types ppst,
496 pa_structure_types pst
497 where pst.structure_type = 'WORKPLAN'
498 and pst.structure_type_id = ppst.structure_type_id
499 and ppst.proj_element_id = str.proj_element_id
500 and str.project_id = p_object_id
501 and str.project_id = sch.project_id
502 and str.proj_element_id = sch.proj_element_id
503 and str.element_version_id = sch.element_version_id
504 and str.status_code = 'STRUCTURE_PUBLISHED' --bug 3956895
505 order by str.published_date desc;
506
507 l_sch_date1 DATE;
508 l_sch_date2 DATE;
509 BEGIN
510 x_return_status := FND_API.G_RET_STS_SUCCESS;
511
512 open C1;
513 FETCH c1 into l_sch_date1;
517 ELSE
514 IF c1%NOTFOUND THEN
515 x_measure_value := 0;
516 CLOSE c1;
518 fetch c1 into l_sch_date2;
519 IF c1%NOTFOUND THEN
520 x_measure_value := 0;
521 ELSE
522 x_measure_value := l_sch_date1 - l_sch_date2;
523 END IF;
524 close c1;
525 END IF;
526 -- 4537865
527 EXCEPTION
528 WHEN OTHERS THEN
529 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
530 x_period_name := NULL ;
531 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
532 x_msg_count := 1;
533 x_msg_data := SQLERRM;
534
535 Fnd_Msg_Pub.add_exc_msg
536 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
537 , p_procedure_name => 'get_sch_pri_pub_ver_fin_var'
538 , p_error_text => x_msg_data);
539
540 RAISE;
541 END get_sch_pri_pub_ver_fin_var;
542
543 PROCEDURE get_sch_pri_pub_ver_st_var
544 (
545 p_object_type IN VARCHAR2,
546 p_object_id IN NUMBER,
547 p_measure_id IN NUMBER,
548 p_period_type IN VARCHAR2,
549 x_measure_value OUT NOCOPY NUMBER, -- 4537865
550 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
551 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
552 x_msg_count OUT NOCOPY NUMBER, -- 4537865
553 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
554 )
555 IS
556 CURSOR c1 IS
557 select sch.scheduled_start_date
558 from pa_proj_elem_ver_schedule sch,
559 pa_proj_elem_ver_structure str,
560 pa_proj_structure_types ppst,
561 pa_structure_types pst
562 where pst.structure_type = 'WORKPLAN'
563 and pst.structure_type_id = ppst.structure_type_id
564 and ppst.proj_element_id = str.proj_element_id
565 and str.project_id = p_object_id
566 and str.project_id = sch.project_id
567 and str.proj_element_id = sch.proj_element_id
568 and str.element_version_id = sch.element_version_id
569 and str.status_code = 'STRUCTURE_PUBLISHED' --bug 3956895
570 order by str.published_date desc;
571
572 l_sch_date1 DATE;
573 l_sch_date2 DATE;
574 BEGIN
575 x_return_status := FND_API.G_RET_STS_SUCCESS;
576
577 open C1;
578 FETCH c1 into l_sch_date1;
579 IF c1%NOTFOUND THEN
580 x_measure_value := 0;
581 CLOSE c1;
582 ELSE
583 fetch c1 into l_sch_date2;
584 IF c1%NOTFOUND THEN
585 x_measure_value := 0;
586 ELSE
587 x_measure_value := l_sch_date1 - l_sch_date2;
588 END IF;
589 close c1;
590 END IF;
591 -- 4537865
592 EXCEPTION
593 WHEN OTHERS THEN
594 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
595 x_period_name := NULL ;
596 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
597 x_msg_count := 1;
598 x_msg_data := SQLERRM;
599
600 Fnd_Msg_Pub.add_exc_msg
601 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
602 , p_procedure_name => 'get_sch_pri_pub_ver_st_var'
603 , p_error_text => x_msg_data);
604
605 RAISE;
606 END get_sch_pri_pub_ver_st_var;
607
608 PROCEDURE get_sch_est_fin_var
609 (
610 p_object_type IN VARCHAR2,
611 p_object_id IN NUMBER,
612 p_measure_id IN NUMBER,
613 p_period_type IN VARCHAR2,
614 x_measure_value OUT NOCOPY NUMBER, -- 4537865
615 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
616 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
617 x_msg_count OUT NOCOPY NUMBER, -- 4537865
618 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
619 )
620 IS
621 CURSOR c1 IS
622 select sch.scheduled_finish_date, nvl(sch.estimated_finish_date, sch.scheduled_finish_date)
623 from pa_proj_elem_ver_schedule sch,
624 pa_proj_elem_ver_structure str,
625 pa_proj_structure_types ppst,
626 pa_structure_types pst
627 where pst.structure_type = 'WORKPLAN'
628 and pst.structure_type_id = ppst.structure_type_id
629 and ppst.proj_element_id = str.proj_element_id
630 and str.project_id = p_object_id
631 and str.project_id = sch.project_id
632 and str.proj_element_id = sch.proj_element_id
633 and str.element_version_id = sch.element_version_id
634 and str.status_code = 'STRUCTURE_PUBLISHED' --bug 3956895
635 order by str.published_date desc;
636
637 l_sch_date DATE;
638 l_est_date DATE;
639 BEGIN
640 x_return_status := FND_API.G_RET_STS_SUCCESS;
641
642 open C1;
643 FETCH c1 into l_sch_date, l_est_date;
644 IF c1%NOTFOUND THEN
645 x_measure_value := 0;
646 ELSE
647 x_measure_value := l_sch_date - l_est_date;
648 END IF;
649 close c1;
650 -- 4537865
651 EXCEPTION
652 WHEN OTHERS THEN
653 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
654 x_period_name := NULL ;
655 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
656 x_msg_count := 1;
657 x_msg_data := SQLERRM;
658
659 Fnd_Msg_Pub.add_exc_msg
660 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
661 , p_procedure_name => 'get_sch_est_fin_var'
662 , p_error_text => x_msg_data);
663
664 RAISE;
665 END get_sch_est_fin_var;
666
667 PROCEDURE get_sch_est_st_var
668 (
669 p_object_type IN VARCHAR2,
670 p_object_id IN NUMBER,
671 p_measure_id IN NUMBER,
672 p_period_type IN VARCHAR2,
673 x_measure_value OUT NOCOPY NUMBER, -- 4537865
674 x_period_name OUT NOCOPY VARCHAR2, -- 4537865
675 x_return_status OUT NOCOPY VARCHAR2, -- 4537865
676 x_msg_count OUT NOCOPY NUMBER, -- 4537865
677 x_msg_data OUT NOCOPY VARCHAR2 -- 4537865
678 )
679 IS
680 CURSOR c1 IS
681 select sch.scheduled_start_date, nvl(sch.estimated_start_date, sch.scheduled_start_date)
682 from pa_proj_elem_ver_schedule sch,
683 pa_proj_elem_ver_structure str,
684 pa_proj_structure_types ppst,
685 pa_structure_types pst
686 where pst.structure_type = 'WORKPLAN'
687 and pst.structure_type_id = ppst.structure_type_id
688 and ppst.proj_element_id = str.proj_element_id
689 and str.project_id = p_object_id
690 and str.project_id = sch.project_id
691 and str.proj_element_id = sch.proj_element_id
692 and str.element_version_id = sch.element_version_id
693 and str.status_code = 'STRUCTURE_PUBLISHED' --bug 3956895
694 order by str.published_date desc;
695
696 l_sch_date DATE;
697 l_est_date DATE;
698 BEGIN
699 x_return_status := FND_API.G_RET_STS_SUCCESS;
700
701 open C1;
702 FETCH c1 into l_sch_date, l_est_date;
703 IF c1%NOTFOUND THEN
704 x_measure_value := 0;
705 ELSE
706 x_measure_value := l_sch_date - l_est_date;
707 END IF;
708 close c1;
709 -- 4537865
710 EXCEPTION
711 WHEN OTHERS THEN
712 x_measure_value := 0 ; -- Setting this value to zero ,not NULL for issue mentioned in 3842408
713 x_period_name := NULL ;
714 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
715 x_msg_count := 1;
716 x_msg_data := SQLERRM;
717
718 Fnd_Msg_Pub.add_exc_msg
719 ( p_pkg_name => 'PA_WP_EXCEPTION_UTILS'
720 , p_procedure_name => 'get_sch_est_st_var'
721 , p_error_text => x_msg_data);
722
723 RAISE;
724 END get_sch_est_st_var;
725
726
727 end PA_WP_EXCEPTION_UTILS;