1 PACKAGE BODY OKC_API AS
2 /* $Header: OKCPAPIB.pls 120.0.12020000.4 2012/12/29 11:23:16 harchand ship $ */
3 l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 --------------------------------------------------------------------------------
5 -- MESSAGE CONSTANTS
6 --------------------------------------------------------------------------------
7 G_MSG_LEVEL_THRESHOLD CONSTANT NUMBER := OKC_API.G_MISS_NUM;
8 --------------------------------------------------------------------------------
9 -- PROCEDURE init_msg_list
10 --------------------------------------------------------------------------------
11 PROCEDURE init_msg_list (
12 p_init_msg_list IN VARCHAR2
13 ) IS
14 BEGIN
15 IF (FND_API.to_boolean(p_init_msg_list)) THEN
16 FND_MSG_PUB.initialize;
17 END IF;
18 EXCEPTION
19 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
20 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
21 END init_msg_list;
22 --------------------------------------------------------------------------------
23 -- FUNCTION start_activity
24 --------------------------------------------------------------------------------
25 FUNCTION start_activity(
26 p_api_name IN VARCHAR2,
27 p_pkg_name IN VARCHAR2,
28 p_init_msg_list IN VARCHAR2,
29 l_api_version IN NUMBER,
30 p_api_version IN NUMBER,
31 p_api_type IN VARCHAR2,
32 x_return_status OUT NOCOPY VARCHAR2
33 ) RETURN VARCHAR2 IS
34 BEGIN
35 -- Standard START OF API SAVEPOINT
36
37 DBMS_TRANSACTION.SAVEPOINT(p_api_name || p_api_type);
38
39 IF NOT FND_API.compatible_API_Call( l_api_version,
40 p_api_version,
41 p_api_name,
42 p_pkg_name)
43 THEN
44 RETURN(OKC_API.G_RET_STS_UNEXP_ERROR);
45 END IF;
46
47 OKC_API.init_msg_list(p_init_msg_list);
48
49 x_return_status := OKC_API.G_RET_STS_SUCCESS;
50 RETURN(OKC_API.G_RET_STS_SUCCESS);
51 END start_activity;
52 FUNCTION start_activity(
53 p_api_name IN VARCHAR2,
54 p_init_msg_list IN VARCHAR2,
55 p_api_type IN VARCHAR2,
56 x_return_status OUT NOCOPY VARCHAR2
57 ) RETURN VARCHAR2 IS
58 BEGIN
59 -- Standard START OF API SAVEPOINT
60
61 DBMS_TRANSACTION.SAVEPOINT(p_api_name || p_api_type);
62 OKC_API.init_msg_list(p_init_msg_list);
63
64 x_return_status := OKC_API.G_RET_STS_SUCCESS;
65 RETURN(OKC_API.G_RET_STS_SUCCESS);
66 END start_activity;
67 --------------------------------------------------------------------------------
68 -- FUNCTION handle_exceptions
69 --------------------------------------------------------------------------------
70 FUNCTION handle_exceptions (
71 p_api_name IN VARCHAR2,
72 p_pkg_name IN VARCHAR2,
73 p_exc_name IN VARCHAR2,
74 x_msg_count OUT NOCOPY NUMBER,
75 x_msg_data OUT NOCOPY VARCHAR2,
76 p_api_type IN VARCHAR2
77 ) RETURN VARCHAR2 IS
78 l_return_value VARCHAR2(200) := OKC_API.G_RET_STS_UNEXP_ERROR;
79 BEGIN
80 DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(p_api_name || p_api_type);
81 IF p_exc_name = 'OKC_API.G_RET_STS_ERROR' THEN
82 FND_MSG_PUB.Count_And_Get
83 (
84 p_count => x_msg_count,
85 p_data => x_msg_data
86 );
87 l_return_value := OKC_API.G_RET_STS_ERROR;
88 ELSIF p_exc_name = 'OKC_API.G_RET_STS_UNEXP_ERROR' THEN
89 FND_MSG_PUB.Count_And_Get
90 (
91 p_count => x_msg_count,
92 p_data => x_msg_data
93 );
94 ELSE -- WHEN OTHERS EXCEPTION
95 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
96 THEN
97 FND_MSG_PUB.Add_Exc_Msg
98 (
99 p_pkg_name,
100 p_api_name
101 );
102 END IF;
103 FND_MSG_PUB.Count_And_Get
104 (
105 p_count => x_msg_count,
106 p_data => x_msg_data
107 );
108 END IF;
109 RETURN(l_return_value);
110 END handle_exceptions;
111 --------------------------------------------------------------------------------
112 -- FUNCTION end_activity
113 --------------------------------------------------------------------------------
114 PROCEDURE end_activity (
115 x_msg_count OUT NOCOPY NUMBER,
116 x_msg_data OUT NOCOPY VARCHAR2
117 ) IS
118 BEGIN
119 --- Standard call to get message count and if count is 1, get message info
120 FND_MSG_PUB.Count_And_Get (
121 p_count => x_msg_count,
122 p_data => x_msg_data);
123 END end_activity;
124 --------------------------------------------------------------------------------
125 -- PROCEDURE set_message
126 --------------------------------------------------------------------------------
127 PROCEDURE set_message (
128 p_app_name IN VARCHAR2 ,
129 p_msg_name IN VARCHAR2,
130 p_token1 IN VARCHAR2 ,
131 p_token1_value IN VARCHAR2 ,
132 p_token2 IN VARCHAR2 ,
133 p_token2_value IN VARCHAR2 ,
134 p_token3 IN VARCHAR2 ,
135 p_token3_value IN VARCHAR2 ,
136 p_token4 IN VARCHAR2 ,
137 p_token4_value IN VARCHAR2 ,
138 p_token5 IN VARCHAR2 ,
139 p_token5_value IN VARCHAR2 ,
140 p_token6 IN VARCHAR2 ,
141 p_token6_value IN VARCHAR2 ,
142 p_token7 IN VARCHAR2 ,
143 p_token7_value IN VARCHAR2 ,
144 p_token8 IN VARCHAR2 ,
145 p_token8_value IN VARCHAR2 ,
146 p_token9 IN VARCHAR2 ,
147 p_token9_value IN VARCHAR2 ,
148 p_token10 IN VARCHAR2 ,
149 p_token10_value IN VARCHAR2
150 ) IS
151 BEGIN
152 FND_MESSAGE.SET_NAME( P_APP_NAME, P_MSG_NAME);
153 IF (p_token1 IS NOT NULL) AND (p_token1_value IS NOT NULL) THEN
154 FND_MESSAGE.SET_TOKEN( TOKEN => p_token1,
155 VALUE => p_token1_value);
156 END IF;
157 IF (p_token2 IS NOT NULL) AND (p_token2_value IS NOT NULL) THEN
158 FND_MESSAGE.SET_TOKEN( TOKEN => p_token2,
159 VALUE => p_token2_value);
160 END IF;
161 IF (p_token3 IS NOT NULL) AND (p_token3_value IS NOT NULL) THEN
162 FND_MESSAGE.SET_TOKEN( TOKEN => p_token3,
163 VALUE => p_token3_value);
164 END IF;
165 IF (p_token4 IS NOT NULL) AND (p_token4_value IS NOT NULL) THEN
166 FND_MESSAGE.SET_TOKEN( TOKEN => p_token4,
167 VALUE => p_token4_value);
168 END IF;
169 IF (p_token5 IS NOT NULL) AND (p_token5_value IS NOT NULL) THEN
170 FND_MESSAGE.SET_TOKEN( TOKEN => p_token5,
171 VALUE => p_token5_value);
172 END IF;
173 IF (p_token6 IS NOT NULL) AND (p_token6_value IS NOT NULL) THEN
174 FND_MESSAGE.SET_TOKEN( TOKEN => p_token6,
175 VALUE => p_token6_value);
176 END IF;
177 IF (p_token7 IS NOT NULL) AND (p_token7_value IS NOT NULL) THEN
178 FND_MESSAGE.SET_TOKEN( TOKEN => p_token7,
179 VALUE => p_token7_value);
180 END IF;
181 IF (p_token8 IS NOT NULL) AND (p_token8_value IS NOT NULL) THEN
182 FND_MESSAGE.SET_TOKEN( TOKEN => p_token8,
183 VALUE => p_token8_value);
184 END IF;
185 IF (p_token9 IS NOT NULL) AND (p_token9_value IS NOT NULL) THEN
186 FND_MESSAGE.SET_TOKEN( TOKEN => p_token9,
187 VALUE => p_token9_value);
188 END IF;
189 IF (p_token10 IS NOT NULL) AND (p_token10_value IS NOT NULL) THEN
190 FND_MESSAGE.SET_TOKEN( TOKEN => p_token10,
191 VALUE => p_token10_value);
192 END IF;
193 FND_MSG_PUB.add;
194 END set_message;
195
196 -- Acq Plan messages cleanup
197
198
199 FUNCTION resolve_message(
200 p_msg_name IN VARCHAR2,
201 p_contract_type IN VARCHAR2
202 ) RETURN VARCHAR2 IS
203
204 l_rep_type_prefix VARCHAR2(10) := OKC_REP_UTIL_PVT.G_REP_CONTRACT_TYPE_PREFIX;
205
206 l_appended_msg VARCHAR2(50);
207
208 l_message_name VARCHAR2(30);
209
210 l_msg_txt VARCHAR2(2000);
211
212 BEGIN
213
214 if (p_contract_type is null or p_contract_type = '') then
215 RETURN p_msg_name;
216 end if;
217
218 l_appended_msg := p_msg_name || SubStr(p_contract_type,Length(l_rep_type_prefix));
219
220 l_msg_txt:=fnd_message.GET_STRING('OKC',l_appended_msg);
221
222 IF l_msg_txt = l_appended_msg THEN
223 RETURN p_msg_name;
224 ELSE
225 RETURN l_appended_msg;
226 END IF;
227
228 RETURN p_msg_name;
229
230 END resolve_message;
231
232 FUNCTION resolve_hdr_token(
233 p_contract_type IN VARCHAR2
234 ) RETURN VARCHAR2 IS
235
236 l_msg_txt VARCHAR2(2000);
237 l_msg_name VARCHAR2(30);
238
239 cursor c_get_hdr_token is
240 select header_token
241 from okc_bus_doc_types_b
242 where document_type = p_contract_type;
243
244 l_hdr_token_msg varchar2(30);
245 BEGIN
246
247 open c_get_hdr_token;
248 fetch c_get_hdr_token into l_hdr_token_msg;
249 close c_get_hdr_token;
250
251 if l_hdr_token_msg is null or l_hdr_token_msg = '' then
252 l_msg_name := resolve_message(OKC_REP_UTIL_PVT.G_REP_MSG_ENTITY_HDR,p_contract_type);
253 else
254 l_msg_name := resolve_message(l_hdr_token_msg,p_contract_type);
255 end if;
256 l_msg_txt := fnd_message.GET_STRING('OKC',l_msg_name);
257 RETURN l_msg_txt;
258
259 END resolve_hdr_token;
260
261 FUNCTION resolve_del_token(
262 p_contract_type IN VARCHAR2
263 ) RETURN VARCHAR2 IS
264
265 l_msg_txt VARCHAR2(2000);
266 l_msg_name VARCHAR2(30);
267
268 cursor c_get_del_token is
269 select deliverable_token
270 from okc_bus_doc_types_b
271 where document_type = p_contract_type;
272
273 l_del_token_msg varchar2(30);
274
275 BEGIN
276
277 open c_get_del_token;
278 fetch c_get_del_token into l_del_token_msg;
279 close c_get_del_token;
280 if l_del_token_msg is null or l_del_token_msg = '' then
281 l_msg_name := resolve_message(OKC_REP_UTIL_PVT.G_REP_MSG_ENTITY_DEL,p_contract_type);
282 else
283 l_msg_name := resolve_message(l_del_token_msg,p_contract_type);
284 end if;
285 l_msg_txt := fnd_message.GET_STRING('OKC',l_msg_name);
286 RETURN l_msg_txt;
287
288 END resolve_del_token;
289
290 FUNCTION get_contract_type(
291 p_contract_id IN NUMBER
292 ) RETURN VARCHAR2 IS
293
294 l_ctr_type VARCHAR2(30);
295
296 CURSOR c IS
297 SELECT contract_type
298 FROM okc_rep_contracts_all
299 WHERE contract_id = p_contract_id;
300
301 BEGIN
302
303 OPEN c;
304 FETCH c INTO l_ctr_type;
305 CLOSE c;
306
307 RETURN l_ctr_type;
308
309 END get_contract_type;
310
311 FUNCTION get_contract_type_ui_func(
312 p_contract_type IN VARCHAR2
313 ) RETURN VARCHAR2 IS
314
315 l_ctr_type_uifunc VARCHAR2(30);
316
317 CURSOR c IS
318 SELECT ui_pers_function
319 FROM okc_bus_doc_types_b
320 WHERE document_type = p_contract_type;
321
322 BEGIN
323
324 OPEN c;
325 FETCH c INTO l_ctr_type_uifunc;
326 CLOSE c;
327
328 RETURN l_ctr_type_uifunc;
329
330 END get_contract_type_ui_func;
331
332
333 END OKC_API;