[Home] [Help]
PACKAGE BODY: APPS.PA_CI_IMPACTS_UTIL
Source
1 PACKAGE BODY Pa_ci_impacts_util AS
2 /* $Header: PACIIPUB.pls 120.1 2007/09/30 15:58:06 kkorada ship $ */
3
4 function is_any_impact_implemented (
5 p_ci_id IN NUMBER := null
6 ) RETURN boolean
7 IS
8 l_temp VARCHAR2(1);
9
10
11 BEGIN
12 SELECT 'X'
13 INTO l_temp from dual
14 WHERE exists(
15 SELECT ci_impact_id
16 FROM pa_ci_impacts
17 WHERE ci_id = p_ci_id
18 AND (implementation_date IS NOT NULL
19 OR implemented_by IS NOT NULL));
20
21 RETURN TRUE;
22 EXCEPTION
23 WHEN NO_DATA_FOUND THEN
24 RETURN FALSE;
25
26 END is_any_impact_implemented;
27
28
29 function is_render_true (
30 impact_type_code IN VARCHAR2,
31 project_id IN NUMBER := null
32 ) RETURN varchar2
33 IS
34 l_ret VARCHAR2(1) := 'Y';
35
36 BEGIN
37
38 IF impact_type_code = 'FINPLAN' THEN
39 l_ret:= pa_fp_control_items_utils.Is_Financial_Planning_Allowed(project_id);
40
41 END IF;
42
43 RETURN l_ret;
44
45 EXCEPTION
46 WHEN NO_DATA_FOUND THEN
47 RETURN 'N';
48
49 END ;
50
51
52 function is_impact_implemented (
53 p_ci_id IN NUMBER ,
54 p_impact_type_code IN VARCHAR2
55 ) RETURN boolean
56 IS
57 l_temp VARCHAR2(1);
58
59
60 BEGIN
61 SELECT 'X'
62 INTO l_temp from dual
63 WHERE exists(
64 SELECT ci_impact_id
65 FROM pa_ci_impacts
66 WHERE ci_id = p_ci_id
67 AND (implementation_date IS NOT NULL
68 OR implemented_by IS NOT NULL)
69 AND impact_type_code = p_impact_type_code);
70
71 RETURN TRUE;
72 EXCEPTION
73 WHEN NO_DATA_FOUND THEN
74 RETURN FALSE;
75
76 END is_impact_implemented;
77
78 function is_impact_exist (
79 p_ci_id IN NUMBER ,
80 p_impact_type_code IN VARCHAR2
81 ) RETURN boolean
82 IS
83 l_temp VARCHAR2(1);
84
85
86 BEGIN
87 SELECT 'X'
88 INTO l_temp from dual
89 WHERE exists(
90 SELECT ci_impact_id
91 FROM pa_ci_impacts
92 WHERE ci_id = p_ci_id
93 AND impact_type_code = p_impact_type_code);
94
95 RETURN TRUE;
96 EXCEPTION
97 WHEN NO_DATA_FOUND THEN
98 RETURN FALSE;
99
100 END is_impact_exist;
101
102 function is_all_impact_implemented (
103 p_ci_id IN NUMBER
104 ) RETURN boolean
105 IS
106 l_temp VARCHAR2(1);
107
108
109 BEGIN
110 SELECT 'X'
111 INTO l_temp from dual
112 WHERE exists(
113 SELECT ci_impact_id
114 FROM pa_ci_impacts
115 WHERE ci_id = p_ci_id
116 AND (implementation_date IS NULL
117 OR implemented_by IS NULL)
118 AND impact_type_code <> 'FINPLAN' /* Bug 4153868 */
119 );
120
121 RETURN FALSE;
122 EXCEPTION
123 WHEN NO_DATA_FOUND THEN
124 RETURN TRUE;
125
126 END is_all_impact_implemented;
127
128
129
130 procedure delete_all_impacts
131 (
132 p_api_version IN NUMBER := 1.0,
133 p_init_msg_list IN VARCHAR2 := 'T',
134 p_commit IN VARCHAR2 := 'F',
135 p_validate_only IN VARCHAR2 := 'T',
136 p_max_msg_count IN NUMBER := null,
137
138 p_ci_id IN NUMBER,
139 x_return_status OUT NOCOPY VARCHAR2,
140 x_msg_count OUT NOCOPY NUMBER,
141 x_msg_data OUT NOCOPY VARCHAR2
142 )
143 IS
144 BEGIN
145 -- Initialize the Error Stack
146 PA_DEBUG.init_err_stack('Pa_ci_impacts_util.delete_all_impacts');
147
148 -- Initialize the return status to success
149 x_return_status := FND_API.G_RET_STS_SUCCESS;
150
151 --Clear the global PL/SQL message table
152 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
153 FND_MSG_PUB.initialize;
154 END IF;
155
156 IF (p_validate_only = 'F') THEN
157 DELETE FROM pa_ci_impacts
158 WHERE ci_id = p_ci_id;
159 END IF;
160
161 -- Commit if the flag is set and there is no error
162 IF (p_commit = 'T' AND x_return_status = FND_API.G_RET_STS_SUCCESS ) THEN
163 COMMIT;
164 END IF;
165
166 -- Reset the error stack when returning to the calling program
167 PA_DEBUG.Reset_Err_Stack;
168
169
170 END delete_all_impacts;
171
172 procedure copy_impact
173 (
174 p_api_version IN NUMBER := 1.0,
175 p_init_msg_list IN VARCHAR2 := 'T',
176 p_commit IN VARCHAR2 := 'F',
177 p_validate_only IN VARCHAR2 := 'T',
178 p_max_msg_count IN NUMBER := null,
179
180 p_dest_ci_id IN NUMBER,
181 p_source_ci_id IN NUMBER,
182 p_include_flag IN VARCHAR2,
183 x_return_status OUT NOCOPY VARCHAR2,
184 x_msg_count OUT NOCOPY NUMBER,
185 x_msg_data OUT NOCOPY VARCHAR2
186 )
187 IS
188 l_impact_type_code VARCHAR2(30);
189 l_desp VARCHAR2(4000);
190 l_comment VARCHAR2(4000);
191 l_ci_impact_id NUMBER;
192 l_implementation_date DATE;
193 l_implemented_by NUMBER;
194 l_record_ver_number NUMBER;
195 l_temp VARCHAR2(1);
196 l_project_id pa_budget_versions.project_id%TYPE;
197 l_src_project_id pa_budget_versions.project_id%TYPE;
198
199 l_source PA_PLSQL_DATATYPES.idtabtyp;
200
201 -- get copy from CI impacts
202 -- Bug 3677924 Jul 07 2004 Raja
203 -- Modified the cursor such that finplan impact records are not selected
204 -- And also an impact record is selected only if destination ci type allows
205 -- the impact to be created
206 CURSOR get_include_impact_info
207 IS
208 SELECT sourceImpacts.*
209 FROM pa_ci_impacts sourceImpacts,
210 pa_control_items targetCi,
211 pa_ci_impact_type_usage targetUsage
212 WHERE sourceImpacts.ci_id = p_source_ci_id
213 AND sourceImpacts.impact_type_code NOT IN ('FINPLAN_COST','FINPLAN_REVENUE','FINPLAN')
214 AND targetCi.ci_id = p_dest_ci_id
215 AND targetCi.ci_type_id = targetUsage.ci_type_id
216 AND targetUsage.impact_type_code = sourceImpacts.impact_type_code;
217
218 -- get the copy to CI impacts
219 CURSOR get_orig_info
220 is
221 SELECT ci_impact_id, description, implementation_comment,
222 implementation_date, implemented_by, record_version_number, impacted_task_id
223 FROM pa_ci_impacts
224 WHERE ci_id = p_dest_ci_id
225 AND impact_type_code = l_impact_type_code;
226
227 CURSOR is_ok_to_copy
228 IS
229 select 'N' from dual
230 where exists
231 (
232 select ci_impact_id from pa_ci_impacts pci
233 where pci.ci_id = p_source_ci_id
234 and pci.impact_type_code <> 'FINPLAN' /* Bug 3724520 */
235 and not exists
236 (
237 select * from
238 pa_control_items pci2,
239 pa_ci_impact_type_usage pcit
240 where pci2.ci_type_id = pcit.ci_type_id
241 AND pci2.ci_id = p_dest_ci_id
242 and pcit.impact_type_code = pci.impact_type_code
243 )
244 );
245
246 CURSOR get_project_id is
247 select project_id from pa_control_items pci
248 where
249 pci.ci_id = p_dest_ci_id;
250
251 CURSOR get_src_project_id is
252 select project_id from pa_control_items pci
253 where
254 pci.ci_id = p_source_ci_id;
255
256 l_rowid VARCHAR(100);
257 l_new_ci_impact_id NUMBER;
258 l_task_id NUMBER;
259
260 -- talked to Selva, the warning flag is ignored for now
261 l_warning_flag VARCHAR2(20);
262
263 l_temp2 VARCHAR2(4000);
264 l_ret VARCHAR2(1) := 'Y';
265
266 BEGIN
267 -- Initialize the Error Stack
268 PA_DEBUG.init_err_stack('Pa_ci_impacts_util.copy_impact');
269
270 -- Initialize the return status to success
271 x_return_status := FND_API.G_RET_STS_SUCCESS;
272
273 --Clear the global PL/SQL message table
274 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
275 FND_MSG_PUB.initialize;
276 END IF;
277
278 IF p_include_flag = 'Y' THEN
279 -- in the case of including impact
280 -- we can not include the source impact if the it has
281 -- more impact type region
282 -- then the ones allowed in the dest impact
283 OPEN is_ok_to_copy;
284 FETCH is_ok_to_copy INTO l_temp;
285 IF is_ok_to_copy%found THEN
286 -- can not copy
287 PA_UTILS.Add_Message( p_app_short_name => 'PA'
288 ,p_msg_name => 'PA_CI_NO_IMP_INCLUDE_TYPE');
289
290 x_return_status := FND_API.G_RET_STS_ERROR;
291
292 CLOSE is_ok_to_copy;
293 RETURN;
294
295 END IF;
296 CLOSE is_ok_to_copy;
297 END IF;
298
299
300 IF (p_validate_only = 'F') THEN
301 FOR rec IN get_include_impact_info LOOP
302 l_impact_type_code := rec.impact_type_code;
303 OPEN get_orig_info;
304 FETCH get_orig_info INTO l_ci_impact_id, l_desp, l_comment,
305 l_implementation_date, l_implemented_by, l_record_ver_number, l_task_id;
306
307 IF get_orig_info%notfound THEN
308 -- insert a new record to the new impact
309 pa_ci_impacts_pkg.insert_row(
310 l_rowid,
311 l_new_ci_impact_id,
312 p_dest_ci_id,
313 rec.impact_type_code,
314 'CI_IMPACT_PENDING',
315 rec.description,
316 NULL,
317 NULL,
318 NULL,
319 rec.impacted_task_id,
320 sysdate,
321 fnd_global.user_id,
322 Sysdate,
323 fnd_global.user_id,
324 fnd_global.login_id
325 );
326 ELSE
327 l_temp2 := Substr(l_desp || ' ' || rec.description, 1, 4000);
328
329 -- update the existing one
330 pa_ci_impacts_pkg.update_row(
331 l_ci_impact_id,
332 p_dest_ci_id,
333 l_impact_type_code,
334 NULL,
335 l_temp2,
336 l_implementation_date,
337 l_implemented_by,
338 l_comment,
339 Nvl(l_task_id, rec.impacted_task_id),
340 sysdate,
341 fnd_global.user_id,
342 fnd_global.login_id,
343 l_record_ver_number
344 );
345 END IF;
346
347 CLOSE get_orig_info;
348 END loop;
349
350 -- copy and include financial impact
351 OPEN get_project_id;
352 FETCH get_project_id INTO l_project_id;
353 CLOSE get_project_id;
354
355 l_source.DELETE;
356 l_source(1) := p_source_ci_id;
357
358 OPEN get_src_project_id;
359 FETCH get_src_project_id INTO l_src_project_id;
360 CLOSE get_src_project_id;
361 /* -- Bug 3677924 Jul 07 2004 Raja fp apis are to be called unconditionally
362 Pa_Fp_Control_Items_Utils.CHECK_FP_PLAN_VERSION_EXISTS
363 (
364 p_project_id => l_src_project_id,
365 p_ci_id => p_source_ci_id,
366 x_call_fp_api_flag => l_ret,
367 x_return_status => x_return_status,
368 x_msg_count => x_msg_count,
369 x_msg_data => x_msg_data
370 );
371
372 */
373
374 IF l_ret = 'Y' THEN
375
376 IF p_include_flag = 'Y' THEN
377 pa_fp_ci_include_pkg.fp_ci_copy_control_items
378 (
379 p_project_id => l_project_id,
380 p_source_ci_id_tbl => l_source,
381 p_target_ci_id => p_dest_ci_id,
382 p_calling_context => 'INCLUDE',
383 x_warning_flag => l_warning_flag,
384 x_msg_data => x_msg_data,
385 x_msg_count => x_msg_count,
386 x_return_status => x_return_status
387 );
388 ELSE
389 pa_fp_ci_include_pkg.fp_ci_copy_control_items
390 (
391 p_project_id => l_project_id,
392 p_source_ci_id_tbl => l_source,
393 p_target_ci_id => p_dest_ci_id,
394 p_calling_context => 'COPY',
395 x_warning_flag => l_warning_flag,
396 x_msg_data => x_msg_data,
397 x_msg_count => x_msg_count,
398 x_return_status => x_return_status
399 );
400 END IF;
401 END IF;
402
403
404 END IF;
405
406 -- Commit if the flag is set and there is no error
407 IF (p_commit = 'T' AND x_return_status = FND_API.G_RET_STS_SUCCESS ) THEN
408 COMMIT;
409 END IF;
410
411 -- Reset the error stack when returning to the calling program
412 PA_DEBUG.Reset_Err_Stack;
413
414
415 END copy_impact;
416
417 procedure is_delete_impact_ok
418 (
419 p_ci_impact_id IN NUMBER,
420
421 x_return_status OUT NOCOPY VARCHAR2,
422 x_msg_count OUT NOCOPY NUMBER,
423 x_msg_data OUT NOCOPY VARCHAR2
424 )
425 IS
426 CURSOR get_type_code
427 IS
428 select impact_type_code,ci_id
429 From pa_ci_impacts
430 WHERE ci_impact_id = p_ci_impact_id;
431
432 l_temp VARCHAR2(30);
433 l_ciid NUMBER;
434
435 BEGIN
436
437
438 -- Initialize the return status to success
439 x_return_status := FND_API.G_RET_STS_SUCCESS;
440
441 OPEN get_type_code;
442 FETCH get_type_code INTO l_temp,l_ciid;
443 CLOSE get_type_code;
444
445 IF l_temp = 'FINPLAN' THEN
446
447 NULL;
448 -- to be added
449
450 ELSIF l_temp = 'SUPPLIER' THEN
451 /** Added for Supplier Impact details This API returns error 'E' if there
452 ** detail transactions exists for the supplier impact
453 **/
454 PA_CI_SUPPLIER_UTILS.IS_SI_DELETE_OK
455 (p_ci_id => l_ciid
456 ,x_return_status => x_return_status
457 ,x_msg_data => x_msg_data
458 ,x_msg_count => x_msg_count
459 );
460
461 END IF;
462
463 END is_delete_impact_ok;
464
465 function get_edit_mode (
466 p_ci_id IN NUMBER := null
467 ) RETURN varchar2
468 IS
469 l_temp VARCHAR2(10) := 'NONE';
470 l_context VARCHAR2(30);
471
472
473 l_status_code VARCHAR2(30);
474 l_type_class VARCHAR2(30);
475 l_ret VARCHAR2(1);
476 l_ret2 VARCHAR2(1);
477
478
479 CURSOR get_ci_info
480 IS
481 select pci.status_code,
482 pctb.ci_type_class_code from pa_control_items pci,
483 pa_ci_types_b pctb
484 where pci.ci_type_id = pctb.ci_type_id
485 AND pci.ci_id = p_ci_id;
486
487 /*
488 CURSOR is_implement_ok
489 IS
490 SELECT
491 pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CI_ALLOW_IMPACT_IMPLEMENT') from dual;
492
493 CURSOR is_update_ok
497 */
494 IS
495 SELECT
496 pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CONTROL_ITEM_ALLOW_UPDATE') from dual;
498
499 BEGIN
500
501 OPEN get_ci_info;
502 FETCH get_ci_info INTO l_status_code, l_type_class;
503 CLOSE get_ci_info;
504
505 /*
506 OPEN is_update_ok;
507 FETCH is_update_ok INTO l_ret;
508 CLOSE is_update_ok;
509 */
510 l_ret := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CONTROL_ITEM_ALLOW_UPDATE');
511
512 IF l_ret <>'Y' THEN
513 -- need to check whether we can implement it
514 IF l_type_class = 'CHANGE_ORDER' OR l_type_class = 'CHANGE_REQUEST' then
515 /* OPEN is_implement_ok;
516 FETCH is_implement_ok INTO l_ret;
517 CLOSE is_implement_ok;
518 */
519
520 l_ret2 := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CI_ALLOW_IMPACT_IMPLEMENT');
521
522 IF l_ret2 <> 'Y' THEN
523 RETURN 'NONE';
524 END IF;
525 l_context := 'IMPLEMENT';
526 ELSE
527 -- not a change request
528 RETURN 'NONE';
529 END IF;
530
531 ELSE
532 l_context := 'DETAIL';
533 END IF;
534
535 IF l_context = 'DETAIL' THEN
536 l_ret := pa_ci_security_pkg.check_update_access(p_ci_id);
537 IF l_ret = 'T' THEN
538 l_temp := 'EDIT';
539 ELSE
540 l_temp := 'VIEW';
541 END IF;
542 ELSIF l_context = 'IMPLEMENT' THEN
543 l_ret := pa_ci_security_pkg.check_implement_impact_access(p_ci_id);
544 IF l_ret = 'T' THEN
545 l_temp := 'EDIT';
546 ELSE
547 l_temp := 'VIEW';
548 END IF;
549
550 END IF;
551
552 RETURN l_temp;
553
554 EXCEPTION
555 WHEN NO_DATA_FOUND THEN
556 RETURN 'NONE';
557
558 END get_edit_mode;
559
560
561 function get_update_impact_mode (
562 p_ci_id IN NUMBER := null
563 ) RETURN varchar2
564 IS
565 l_temp VARCHAR2(10) := 'NONE';
566 l_context VARCHAR2(30);
567
568
569 l_status_code pa_control_items.status_code%TYPE;
570 l_type_class pa_ci_types_b.ci_type_class_code%TYPE;
571 l_ret VARCHAR2(1);
572 l_ret2 VARCHAR2(1);
573
574
575 CURSOR get_ci_info
576 IS
577 select pci.status_code,
578 pctb.ci_type_class_code from pa_control_items pci,
579 pa_ci_types_b pctb
580 where pci.ci_type_id = pctb.ci_type_id
581 AND pci.ci_id = p_ci_id;
582
583 BEGIN
584 OPEN get_ci_info;
585 FETCH get_ci_info INTO l_status_code, l_type_class;
586 CLOSE get_ci_info;
587
588 l_ret := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CONTROL_ITEM_ALLOW_UPDATE');
589
590 IF l_ret = 'Y' THEN
594 ELSE
591 l_ret2 := pa_ci_security_pkg.check_update_access(p_ci_id);
592 IF l_ret2 = 'T' THEN /* Bug#3815040: Modified the variable l_ret to l_ret2 */
593 l_temp := 'EDIT';
595 l_temp := 'VIEW';
596 END IF;
597 ELSE
598 RETURN 'NONE';
599 END IF;
600
601 RETURN l_temp;
602
603 EXCEPTION
604 WHEN NO_DATA_FOUND THEN
605 RETURN 'NONE';
606
607 END get_update_impact_mode;
608
609 function get_implement_impact_mode (
610 p_ci_id IN NUMBER := null
611 ) RETURN varchar2
612 IS
613 l_temp VARCHAR2(10) := 'NONE';
614 l_context VARCHAR2(30);
615
616
617 l_status_code pa_control_items.status_code%TYPE;
618 l_type_class pa_ci_types_b.ci_type_class_code%TYPE;
619 l_ret VARCHAR2(1);
620 l_ret2 VARCHAR2(1);
621
622
623 CURSOR get_ci_info
624 IS
625 select pci.status_code,
626 pctb.ci_type_class_code from pa_control_items pci,
627 pa_ci_types_b pctb
628 where pci.ci_type_id = pctb.ci_type_id
629 AND pci.ci_id = p_ci_id;
630
631 BEGIN
632 OPEN get_ci_info;
633 FETCH get_ci_info INTO l_status_code, l_type_class;
634 CLOSE get_ci_info;
635
636 IF l_type_class = 'CHANGE_ORDER' OR l_type_class = 'CHANGE_REQUEST' THEN
637 l_ret2 := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CI_ALLOW_IMPACT_IMPLEMENT');
638
639 IF l_ret2 <> 'Y' THEN
640 RETURN 'NONE';
641 END IF;
642
643 l_context := 'IMPLEMENT';
644 ELSE
645 RETURN 'NONE';
646 END IF;
647
651 l_temp := 'EDIT';
648 IF l_context = 'IMPLEMENT' THEN
649 l_ret := pa_ci_security_pkg.check_implement_impact_access(p_ci_id);
650 IF l_ret = 'T' THEN
652 ELSE
653 l_temp := 'VIEW';
654 END IF;
655 END IF;
656
657 RETURN l_temp;
658
659 EXCEPTION
660 WHEN NO_DATA_FOUND THEN
661 RETURN 'NONE';
662
663 END get_implement_impact_mode;
664
665
666 function get_update_impact_mode (
667 p_ci_id IN NUMBER := null,
668 p_status_code IN VARCHAR2
669 ) RETURN varchar2
670 IS
671 l_temp VARCHAR2(10) := 'NONE';
672 l_context VARCHAR2(30);
673
674 l_status_code pa_control_items.status_code%TYPE;
675 l_type_class pa_ci_types_b.ci_type_class_code%TYPE;
676 l_ret VARCHAR2(1);
677 l_ret2 VARCHAR2(1);
678
679 BEGIN
680
681 l_status_code := p_status_code;
682 l_ret := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CONTROL_ITEM_ALLOW_UPDATE');
683
684 IF l_ret = 'Y' THEN
685 l_ret2 := pa_ci_security_pkg.check_update_access(p_ci_id);
686 IF l_ret2 = 'T' THEN /* Bug#3815040: Modified the variable l_ret to l_ret2 */
687 l_temp := 'EDIT';
688 ELSE
689 l_temp := 'VIEW';
690 END IF;
691 ELSE
692 RETURN 'NONE';
693 END IF;
694
695 RETURN l_temp;
696
697 EXCEPTION
698 WHEN NO_DATA_FOUND THEN
699 RETURN 'NONE';
700
701 END get_update_impact_mode;
702
703 function get_implement_impact_mode (
704 p_ci_id IN NUMBER := null,
705 p_status_code IN VARCHAR2,
706 p_type_class VARCHAR2
707 ) RETURN varchar2
708 IS
709 l_temp VARCHAR2(10) := 'NONE';
710 l_context VARCHAR2(30);
711
712
713 l_status_code pa_control_items.status_code%TYPE;
714 l_type_class pa_ci_types_b.ci_type_class_code%TYPE;
715 l_ret VARCHAR2(1);
716 l_ret2 VARCHAR2(1);
717
718 BEGIN
719
720 l_status_code := p_status_code;
721 l_type_class := p_type_class;
722
723 IF l_type_class = 'CHANGE_ORDER' OR l_type_class = 'CHANGE_REQUEST' THEN
724 l_ret2 := pa_control_items_utils.CheckCIActionAllowed('CONTROL_ITEM',l_status_code,'CI_ALLOW_IMPACT_IMPLEMENT');
725
726 IF l_ret2 <> 'Y' THEN
727 RETURN 'NONE';
728 END IF;
729
730 l_context := 'IMPLEMENT';
731 ELSE
732 RETURN 'NONE';
733 END IF;
734
735 IF l_context = 'IMPLEMENT' THEN
736 l_ret := pa_ci_security_pkg.check_implement_impact_access(p_ci_id);
737 IF l_ret = 'T' THEN
738 l_temp := 'EDIT';
739 ELSE
740 l_temp := 'VIEW';
741 END IF;
742 END IF;
743
744 RETURN l_temp;
745
746 EXCEPTION
747 WHEN NO_DATA_FOUND THEN
748 RETURN 'NONE';
749
750 END get_implement_impact_mode;
751
752 END Pa_ci_impacts_util;