DBA Data[Home] [Help]

PACKAGE BODY: APPS.QOT_UTILITY_PVT

Source


1 PACKAGE BODY QOT_UTILITY_PVT AS
2 /* $Header: qotvutlb.pls 120.0.12010000.2 2009/08/14 12:23:38 rassharm ship $ */
3 -- Start of Comments
4 -- Package name     : QOT_UTILITY_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 FUNCTION GET_CONTRACT_TERMS_ACCESS
11 (
12  	P_QUOTE_HEADER_ID	IN	NUMBER,
13 	P_USER_ID			IN	NUMBER
14 ) RETURN VARCHAR2
15 AS
16 	CURSOR C_user_resource_id (pc_user_id NUMBER) IS
17 	SELECT resource_id
18 	FROM jtf_rs_resource_extns
19 	WHERE user_id = pc_user_id
20 	AND SYSDATE BETWEEN start_date_active AND NVL(end_date_active, SYSDATE);
21 
22 	CURSOR C_quote_header (pc_quote_header_id IN NUMBER)
23 	IS
24 	SELECT max_version_flag, price_request_id, quote_status_id, quote_number
25 	FROM ASO_QUOTE_HEADERS_ALL
26 	WHERE quote_header_id = pc_quote_header_id;
27 
28 	CURSOR C_quote_status (pc_status_id IN NUMBER)
29 	IS
30 	SELECT update_allowed_flag
31 	FROM ASO_QUOTE_STATUSES_B
32 	WHERE quote_status_id = pc_status_id;
33 
34 	l_max_ver_flag		  VARCHAR2(1);
35 	l_upd_allowed_flag	  VARCHAR2(1);
36 	l_qot_sec_enabled	  VARCHAR2(1);
37 	l_qot_access		  VARCHAR2(10);
38 	l_status_override	  VARCHAR2(1);
39 	l_resource_id		  NUMBER;
40 	l_price_request_id	  NUMBER;
41 	l_status_id			  NUMBER;
42 	l_qot_num		  	  NUMBER;
43 
44 	l_debug                   VARCHAR2(1);
45 
46 BEGIN
47 	l_debug := ASO_QUOTE_UTIL_PVT.is_debug_enabled;
48 --	IF l_debug = 'Y' THEN
49 --	  ASO_QUOTE_UTIL_PVT.Enable_Debug_Pvt;
50 --	  ASO_QUOTE_UTIL_PVT.Debug('QOT_CONTRACTS_ACCESS.Get_Contracts_Acess Begins');
51 --	END IF;
52 
53 	l_qot_sec_enabled := nvl(fnd_profile.value('ASO_ENABLE_SECURITY_CHECK'),'N');
54 
55 	OPEN C_user_resource_id(p_user_id);
56 	FETCH C_user_resource_id INTO l_resource_id;
57 	CLOSE C_user_resource_id;
58 
59 	--If security is ON and resource_id is NULL, return 'N'
60 	IF(l_qot_sec_enabled = 'Y' AND l_resource_id IS NULL) THEN
61 		--dbms_output.put_line('Security is ON but resource Id is NULL..so NO Access');
62 		RETURN 'N';
63 	END IF;
64 
65 	OPEN C_quote_header(p_quote_header_id);
66 	FETCH C_quote_header INTO l_max_ver_flag, l_price_request_id, l_status_id, l_qot_num;
67 	CLOSE C_quote_header;
68 
69 	--If quote is NOT highest version or is submitted for batch pricing then return 'N'
70 	IF(l_max_ver_flag <> 'Y' OR l_price_request_id IS NOT NULL) THEN
71 		--dbms_output.put_line('Not highest version or submitted for batch pricing..so NO Access');
72 		RETURN 'N';
73 	END IF;
74 
75 	OPEN C_quote_status(l_status_id);
76 	FETCH C_quote_status INTO l_upd_allowed_flag;
77 	CLOSE C_quote_status;
78 
79 	l_status_override := nvl(fnd_profile.value('ASO_STATUS_OVERRIDE'),'N');
80 
81 	--dbms_output.put_line('ASO_STATUS_OVERRIDE ' || l_status_override);
82 
83 	IF(l_upd_allowed_flag = 'N') THEN
84 		--dbms_output.put_line('Quote is in Read-only Status');
85 		IF (l_qot_sec_enabled = 'Y') THEN
86 			--dbms_output.put_line('Security Enabled..');
87 			l_qot_access := ASO_SECURITY_INT.Get_Quote_Access(l_resource_id, l_qot_num);
88 			--dbms_output.put_line('Quote Access ' || l_qot_access);
89 			IF (l_status_override <> 'Y' AND (l_qot_access = 'UPDATE' OR l_qot_access = 'READ')) THEN
90 				--dbms_output.put_line('Quote Access is Update or Read and STatus Override is No..View Access');
91 				RETURN 'V';
92 			END IF;
93 			IF (l_status_override <> 'Y' AND l_qot_access = 'NONE') THEN
94 				--dbms_output.put_line('Quote Access is NONE..so return N');
95 				RETURN 'N';
96 			END IF;
97 		ELSE
98 			--dbms_output.put_line('Quote is read-only status but security is off..so return V');
99                         -- Added for bug 8717880
100 			if l_status_override ='Y' then
101 			  RETURN 'U';
102                         else
103 			  RETURN 'V';
104 			END IF;
105 		END IF;
106 	ELSE
107 	IF (l_upd_allowed_flag = 'Y') THEN
108 		--dbms_output.put_line('Quote is in Update Status');
109 		IF (l_qot_sec_enabled = 'Y') THEN
110 			l_qot_access := ASO_SECURITY_INT.Get_Quote_Access(l_resource_id, l_qot_num);
111 			--dbms_output.put_line('Quote Access ' || l_qot_access);
112 		   IF (l_status_override <> 'Y' AND l_qot_access = 'UPDATE') THEN
113 			--dbms_output.put_line('Quote Access is Update and STatus Override is No..Update Access');
114 			RETURN 'U';
115 		   END IF;
116 		   IF (l_qot_access = 'READ') THEN
117 			--dbms_output.put_line('Quote Access is Read..View Access');
118 		   	  RETURN 'V';	--??
119 		   END IF;
120 		   IF (l_qot_access = 'NONE') THEN
121 				--dbms_output.put_line('Quote Access is NONE..so return N');
122 		   	  RETURN 'N';
123 		   END IF;
124 		ELSE
125 			--dbms_output.put_line('Quote is in Update status but security is off..so return U');
126 			RETURN 'U';
127 		END IF;
128 	END IF;
129 END IF;
130 END GET_CONTRACT_TERMS_ACCESS;
131 
132 END QOT_UTILITY_PVT;