1 PACKAGE BODY OKL_API AS
2 /* $Header: OKLPAPIB.pls 120.4 2007/10/03 20:51:28 rmunjulu ship $ */
3 --------------------------------------------------------------------------------
4 -- MESSAGE CONSTANTS
5 --------------------------------------------------------------------------------
6 G_MSG_LEVEL_THRESHOLD CONSTANT NUMBER := OKL_API.G_MISS_NUM;
7 --------------------------------------------------------------------------------
8 -- PROCEDURE init_msg_list
9 --------------------------------------------------------------------------------
10 PROCEDURE init_msg_list (
11 p_init_msg_list IN VARCHAR2
12 ) IS
13 BEGIN
14 IF (FND_API.to_boolean(p_init_msg_list)) THEN
15 FND_MSG_PUB.initialize;
16 END IF;
17 EXCEPTION
18 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
19 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20 END init_msg_list;
21 --------------------------------------------------------------------------------
22 -- FUNCTION start_activity
23 --------------------------------------------------------------------------------
24 FUNCTION start_activity(
25 p_api_name IN VARCHAR2,
26 p_pkg_name IN VARCHAR2,
27 p_init_msg_list IN VARCHAR2,
28 l_api_version IN NUMBER,
29 p_api_version IN NUMBER,
30 p_api_type IN VARCHAR2,
31 x_return_status OUT NOCOPY VARCHAR2
32 ) RETURN VARCHAR2 IS
33 BEGIN
34 -- Standard START OF API SAVEPOINT
35 DBMS_TRANSACTION.SAVEPOINT(p_api_name || p_api_type);
36 IF NOT FND_API.compatible_API_Call( l_api_version,
37 p_api_version,
38 p_api_name,
39 p_pkg_name)
40 THEN
41 RETURN(OKL_API.G_RET_STS_UNEXP_ERROR);
42 END IF;
43 OKL_API.init_msg_list(p_init_msg_list);
44 x_return_status := OKL_API.G_RET_STS_SUCCESS;
45 RETURN(OKL_API.G_RET_STS_SUCCESS);
46 END start_activity;
47 FUNCTION start_activity(
48 p_api_name IN VARCHAR2,
49 p_init_msg_list IN VARCHAR2,
50 p_api_type IN VARCHAR2,
51 x_return_status OUT NOCOPY VARCHAR2
52 ) RETURN VARCHAR2 IS
53 BEGIN
54 -- Standard START OF API SAVEPOINT
55 DBMS_TRANSACTION.SAVEPOINT(p_api_name || p_api_type);
56 OKL_API.init_msg_list(p_init_msg_list);
57 x_return_status := OKL_API.G_RET_STS_SUCCESS;
58 RETURN(OKL_API.G_RET_STS_SUCCESS);
59 END start_activity;
60 --------------------------------------------------------------------------------
61 -- FUNCTION handle_exceptions
62 --------------------------------------------------------------------------------
63 FUNCTION handle_exceptions (
64 p_api_name IN VARCHAR2,
65 p_pkg_name IN VARCHAR2,
66 p_exc_name IN VARCHAR2,
67 x_msg_count OUT NOCOPY NUMBER,
68 x_msg_data OUT NOCOPY VARCHAR2,
69 p_api_type IN VARCHAR2
70 ) RETURN VARCHAR2 IS
71 l_return_value VARCHAR2(200) := OKL_API.G_RET_STS_UNEXP_ERROR;
72 BEGIN
73 DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(p_api_name || p_api_type);
74 IF UPPER(p_exc_name) = 'OKL_API.G_RET_STS_ERROR' THEN
75 FND_MSG_PUB.Count_And_Get
76 (
77 p_count => x_msg_count,
78 p_data => x_msg_data
79 );
80 l_return_value := OKL_API.G_RET_STS_ERROR;
81 ELSIF UPPER(p_exc_name) = 'OKL_API.G_RET_STS_UNEXP_ERROR' THEN
82 FND_MSG_PUB.Count_And_Get
83 (
84 p_count => x_msg_count,
85 p_data => x_msg_data
86 );
87 ELSE -- WHEN OTHERS EXCEPTION
88 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
89 THEN
90 FND_MSG_PUB.Add_Exc_Msg
91 (
92 p_pkg_name,
93 p_api_name
94 );
95 END IF;
96 FND_MSG_PUB.Count_And_Get
97 (
98 p_count => x_msg_count,
99 p_data => x_msg_data
100 );
101 END IF;
102 RETURN(l_return_value);
103 END handle_exceptions;
104 --------------------------------------------------------------------------------
105 -- FUNCTION end_activity
106 --------------------------------------------------------------------------------
107 PROCEDURE end_activity (
108 x_msg_count OUT NOCOPY NUMBER,
109 x_msg_data OUT NOCOPY VARCHAR2
110 ) IS
111 BEGIN
112 --- Standard call to get message count and if count is 1, get message info
113 FND_MSG_PUB.Count_And_Get (
114 p_count => x_msg_count,
115 p_data => x_msg_data);
116 END end_activity;
117 --------------------------------------------------------------------------------
118 -- PROCEDURE set_message
119 --------------------------------------------------------------------------------
120 PROCEDURE set_message (
121 p_app_name IN VARCHAR2 DEFAULT OKL_API.G_APP_NAME,
122 p_msg_name IN VARCHAR2,
123 p_token1 IN VARCHAR2 DEFAULT NULL,
124 p_token1_value IN VARCHAR2 DEFAULT NULL,
125 p_token2 IN VARCHAR2 DEFAULT NULL,
126 p_token2_value IN VARCHAR2 DEFAULT NULL,
127 p_token3 IN VARCHAR2 DEFAULT NULL,
128 p_token3_value IN VARCHAR2 DEFAULT NULL,
129 p_token4 IN VARCHAR2 DEFAULT NULL,
130 p_token4_value IN VARCHAR2 DEFAULT NULL,
131 p_token5 IN VARCHAR2 DEFAULT NULL,
132 p_token5_value IN VARCHAR2 DEFAULT NULL,
133 p_token6 IN VARCHAR2 DEFAULT NULL,
134 p_token6_value IN VARCHAR2 DEFAULT NULL,
135 p_token7 IN VARCHAR2 DEFAULT NULL,
136 p_token7_value IN VARCHAR2 DEFAULT NULL,
137 p_token8 IN VARCHAR2 DEFAULT NULL,
138 p_token8_value IN VARCHAR2 DEFAULT NULL,
139 p_token9 IN VARCHAR2 DEFAULT NULL,
140 p_token9_value IN VARCHAR2 DEFAULT NULL,
141 p_token10 IN VARCHAR2 DEFAULT NULL,
142 p_token10_value IN VARCHAR2 DEFAULT NULL
143 ) IS
144 BEGIN
145 FND_MESSAGE.SET_NAME( P_APP_NAME, P_MSG_NAME);
146 IF (p_token1 IS NOT NULL) AND (p_token1_value IS NOT NULL) THEN
147 FND_MESSAGE.SET_TOKEN( TOKEN => p_token1,
148 VALUE => p_token1_value);
149 END IF;
150 IF (p_token2 IS NOT NULL) AND (p_token2_value IS NOT NULL) THEN
151 FND_MESSAGE.SET_TOKEN( TOKEN => p_token2,
152 VALUE => p_token2_value);
153 END IF;
154 IF (p_token3 IS NOT NULL) AND (p_token3_value IS NOT NULL) THEN
155 FND_MESSAGE.SET_TOKEN( TOKEN => p_token3,
156 VALUE => p_token3_value);
157 END IF;
158 IF (p_token4 IS NOT NULL) AND (p_token4_value IS NOT NULL) THEN
159 FND_MESSAGE.SET_TOKEN( TOKEN => p_token4,
160 VALUE => p_token4_value);
161 END IF;
162 IF (p_token5 IS NOT NULL) AND (p_token5_value IS NOT NULL) THEN
163 FND_MESSAGE.SET_TOKEN( TOKEN => p_token5,
164 VALUE => p_token5_value);
165 END IF;
166 IF (p_token6 IS NOT NULL) AND (p_token6_value IS NOT NULL) THEN
167 FND_MESSAGE.SET_TOKEN( TOKEN => p_token6,
168 VALUE => p_token6_value);
169 END IF;
170 IF (p_token7 IS NOT NULL) AND (p_token7_value IS NOT NULL) THEN
171 FND_MESSAGE.SET_TOKEN( TOKEN => p_token7,
172 VALUE => p_token7_value);
173 END IF;
174 IF (p_token8 IS NOT NULL) AND (p_token8_value IS NOT NULL) THEN
175 FND_MESSAGE.SET_TOKEN( TOKEN => p_token8,
176 VALUE => p_token8_value);
177 END IF;
178 IF (p_token9 IS NOT NULL) AND (p_token9_value IS NOT NULL) THEN
179 FND_MESSAGE.SET_TOKEN( TOKEN => p_token9,
180 VALUE => p_token9_value);
181 END IF;
182 IF (p_token10 IS NOT NULL) AND (p_token10_value IS NOT NULL) THEN
183 FND_MESSAGE.SET_TOKEN( TOKEN => p_token10,
184 VALUE => p_token10_value);
185 END IF;
186 FND_MSG_PUB.add;
187 END set_message;
188
189 -- rmunjulu Added function which gets customer baseline
190 -- Returns H if customer coming from H to R12
191 -- Returns G if customer coming from G to R12
192 -- Returns a default of H if cannot find the lookup OKL_CUSTOMER_BASELINE
193 -- Returns NULL if ERROR
194 -- Pre-req - customer has to first apply OKLG or OKLH one-off which sets the baseline
195 FUNCTION get_customer_baseline RETURN VARCHAR2 IS
196
197 -- get the lookup code from lookup - 'OKL_CUSTOMER_BASELINE'
198 -- will be H if customer on OKLH, will be G if customer on OKLG
199 -- Upon testing found that if G patch is applied and then H patch then both codes (G and H)
200 -- exist - so disabling G code in SEED115 and doing the query properly for
201 -- enabled code only.
202 CURSOR get_cust_baseline_csr IS
203 SELECT lookup_code
204 FROM fnd_lookups
205 WHERE lookup_type = 'OKL_CUSTOMER_BASELINE'
206 AND enabled_flag = 'Y'
207 AND end_date_active IS NULL;
208
209 l_cst_baseline VARCHAR2(3);
210
211 BEGIN
212
213 OPEN get_cust_baseline_csr;
214 FETCH get_cust_baseline_csr INTO l_cst_baseline;
215 CLOSE get_cust_baseline_csr;
216
217 RETURN nvl(l_cst_baseline,'H');
218
219 EXCEPTION
220 WHEN OTHERS THEN
221 IF get_cust_baseline_csr%ISOPEN THEN
222 CLOSE get_cust_baseline_csr;
223 END IF;
224 RETURN NULL;
225
226 END get_customer_baseline;
227
228 END OKL_API;