DBA Data[Home] [Help]

PACKAGE BODY: APPS.PMI_SECURITY_PKG

Source


1 PACKAGE BODY PMI_SECURITY_PKG AS
2 /* $Header: PMISECPB.pls 115.10 2003/04/22 16:39:01 srpuri ship $ */
3 
4   	FUNCTION show_record
5 		( p_orgn_code VARCHAR2,
6               P_orgn_type NUMBER,
7               P_USER_ID   NUMBER)
8 
9 		RETURN VARCHAR2 IS
10 
11        CURSOR 	Cur_resp(P_user_id NUMBER) IS
12        SELECT 	Responsibility_id
13        FROM   	fnd_user_resp_groups
14        WHERE  	User_id = p_user_id
15        AND	start_date <= SYSDATE
16        AND 	(end_date IS NULL OR
17 		 end_date >= SYSDATE)
18 	AND 	responsibility_application_id = 558;
19 
20         l_user_id       	NUMBER(15);
21         l_orgn_cnt      	NUMBER(15):= 0;
22         l_profile_value 	VARCHAR2(4);
23         l_responsibility_id 	NUMBER(15);
24         l_result		      BOOLEAN;
25 
26         BEGIN
27 
28           IF (p_orgn_code  IS NULL) THEN
29               RETURN  'FALSE';
30           END IF;
31 
32           IF p_user_id IS NULL THEN
33             l_user_id := FND_GLOBAL.USER_ID;
34           ELSE
35             l_user_id := p_user_id;
36           END IF;
37 
38 /* 11/17/99 This condition is to validate the organizations for PMF. It is
39 a temporary fix. Decision needs to be made in the next release - Savita */
40 
41           IF (FND_GLOBAL.USER_ID  = -1) THEN
42 		RETURN 'TRUE';
43 	  END IF;
44 
45           IF (l_user_id IS NULL)  THEN
46              	RETURN 'FALSE';
47           END IF;
48 
49           OPEN Cur_resp(l_user_id);
50 
51           LOOP
52 
53            	FETCH Cur_resp into l_responsibility_id;
54      		EXIT WHEN Cur_resp%NOTFOUND;
55 
56  		 /* Check the All profile */
57 
58 		fnd_profile.get_specific('PMI$COMPANY_ALL',l_user_id,l_responsibility_id,558,
59                           l_profile_value,l_result);
60 
61 
62 		IF l_profile_value = 'ALL' THEN
63                 	 RETURN  'TRUE';
64             END IF;
65 
66 		/* Check company profile for responsibility */
67 
68 		fnd_profile.get_specific('PMI$COMPANY',l_user_id,l_responsibility_id,558,l_profile_value,
69                           l_result);
70 
71 		IF l_profile_value IS NOT NULL THEN
72               IF l_profile_value <> p_orgn_code THEN
73                 IF p_orgn_type = 2 THEN
74 		      SELECT  count(*)
75                     INTO l_orgn_cnt
76                   FROM sy_orgn_mst a
77                   WHERE co_code = l_profile_value
78 		        AND a.orgn_code = p_orgn_code;
79                   IF l_orgn_cnt > 0 THEN
80                     RETURN 'TRUE';
81                   END IF;
82                 END IF;
83               ELSE
84                 RETURN 'TRUE';
85               END IF;
86             END IF;
87           END LOOP;
88           IF p_orgn_type = 2 THEN
89             SELECT  count(*)
90               INTO l_orgn_cnt
91             FROM  sy_orgn_usr
92             WHERE user_id   = l_user_id
93               AND orgn_code = p_orgn_code;
94 
95             IF l_orgn_cnt > 0 THEN
96       	  RETURN 'TRUE';
97 	      ELSE
98  	        RETURN 'FALSE';
99 	      END IF;
100 	     ELSE
101              RETURN 'FALSE';
102            END IF;
103 	  RETURN 'FALSE';
104    	END show_record;
105 END PMI_SECURITY_PKG ;