[Home] [Help]
PACKAGE BODY: APPS.CCT_IVR_PUB
Source
1 PACKAGE BODY CCT_IVR_PUB AS
2 /* $Header: cctivrb.pls 120.0 2005/06/02 09:35:31 appldev noship $ */
3 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CCT_IVR_PUB';
4
5
6 PROCEDURE parseAppData (
7 p_app_data IN VARCHAR2,
8 x_YYYY out nocopy VARCHAR2,
9 x_media_item out nocopy NUMBER,
10 x_ZZZZ out nocopy VARCHAR2,
11 x_create_media_item out nocopy boolean
12 )
13 AS
14 l_first NUMBER;
15 l_second NUMBER;
16 l_sub_string VARCHAR2 (128);
17 l_search_for VARCHAR2 (4);
18 BEGIN
19 -- Parse p_app_data
20 -- if p_app_data is NULL then
21 -- call create_media_item
22 -- x_app_data = 'MI:IVR-123456';
23 -- elsif p_app_data contains YYYYMI:123456;ZZZZ then
24 -- x_app_data = 'YYYYMI:IVR-1234356;ZZZZ'
25 -- elsif p_app_data contains YYYYMI:IVR-123456;ZZZZ then
26 -- x_app_data = p_app_data
27 -- elsif p_app_data does contain ZZZZ with no MI:123456; then
28 -- call create_media_item
29 -- x_App_data = 'MI:IVR-123456;ZZZZ'
30
31 x_YYYY := NULL;
32 x_ZZZZ := NULL;
33 x_media_item := NULL;
34 x_create_media_item := FALSE;
35
36 -- look for the occurence of 'MI:' in p_app_data
37 l_search_for := 'MI:';
38 l_first := INSTR(p_app_data, l_search_for);
39
40 if l_first = 0 then
41 x_ZZZZ := p_app_data;
42 x_create_media_item := TRUE;
43 return;
44 end if;
45
46 -- get x_YYYY
47 if l_first = 1 then x_YYYY := NULL;
48 else x_YYYY := SUBSTR(p_app_data, 1, l_first - 1);
49 end if;
50
51 l_search_for := ';';
52 l_second := INSTR(p_app_data, l_search_for, l_first);
53
54 if l_second = 0 then raise fnd_api.g_exc_error;
55 end if;
56
57 -- get x_YYYY
58 if l_second = LENGTH (p_app_data) then x_ZZZZ := NULL;
59 else x_ZZZZ := SUBSTR(p_app_data, l_second + 1);
60 end if;
61
62
63 -- eg p_app_data = MI:12345;abc=343;xyz=143;
64 -- l_first = 1, l_second = 9
65 -- l_sub_string := SUBSTR('MI:12345;abc=343;xyz=143;', 4, 5) := '12345'
66 l_sub_string := SUBSTR(p_app_data, l_first + 3, l_second - l_first - 3);
67
68 if l_sub_string IS NULL then raise fnd_api.g_exc_error;
69 end if;
70
71 -- check if l_sub_string starts with IVR- and strip it out
72 l_sub_string := LTRIM (l_sub_string, 'IVR-');
73
74 -- convert from string to number
75 x_media_item := TO_NUMBER (l_sub_string);
76
77 /*****
78 dbms_output.put_line ('Input = ' || p_app_data);
79 if (x_create_media_item) then
80 dbms_output.put_line ('l_create_media_item = ' || 'TRUE');
81 else
82 dbms_output.put_line ('l_create_media_item = ' || 'FALSE');
83 end if;
84 dbms_output.put_line ('l_YYYY = ' || x_YYYY);
85 dbms_output.put_line ('l_media_item = ' || x_media_item);
86 dbms_output.put_line ('l_ZZZZ = ' || x_ZZZZ);
87 ****/
88
89
90 EXCEPTION
91 WHEN OTHERS THEN
92 raise fnd_api.g_exc_error;
93 END parseAppData;
94
95 PROCEDURE create_IVR_Item
96 (
97 p_api_version IN NUMBER,
98 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
99 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
100 x_return_status out nocopy VARCHAR2,
101 x_msg_count out nocopy NUMBER,
102 x_msg_data out nocopy VARCHAR2,
103 p_start_date_time IN DATE DEFAULT null,
104 p_end_date_time IN DATE DEFAULT null,
105 p_duration_in_secs IN NUMBER DEFAULT null,
106 p_ivr_data IN VARCHAR2 DEFAULT null,
107 p_app_data IN VARCHAR2 DEFAULT null,
108 x_app_data out nocopy VARCHAR2
109 ) AS
110 l_api_name CONSTANT VARCHAR2(30) := 'Create_IVR_Item';
111 l_api_version CONSTANT NUMBER := 1.0;
112 l_api_name_full CONSTANT VARCHAR2(61) := g_pkg_name||'.'||l_api_name;
113 l_return_status VARCHAR2(1);
114 l_init_msg_list VARCHAR2(1);
115 l_commit VARCHAR2(1);
116
117 l_media_item_id NUMBER := NULL;
118 l_create_media_item BOOLEAN;
119
120 l_YYYY VARCHAR2 (128);
121 l_ZZZZ VARCHAR2 (128);
122
123 BEGIN
124 -- Standard start of API savepoint
125 SAVEPOINT create_ivr_pub;
126
127 -- Initialize API return status to success
128 x_return_status := fnd_api.g_ret_sts_success;
129 x_app_data := NULL;
130
131 -- Standard call to check for call compatibility
132 IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version,
133 l_api_name, g_pkg_name) THEN
134 RAISE fnd_api.g_exc_unexpected_error;
135 END IF;
136
137 -- Initialize message list if p_init_msg_list is set to TRUE
138 if (p_init_msg_list <> FND_API.G_FALSE) AND
139 (p_init_msg_list <> FND_API.G_TRUE)
140 then l_init_msg_list := FND_API.G_FALSE;
141 else l_init_msg_list := p_init_msg_list;
142 end if;
143
144 IF fnd_api.to_boolean(l_init_msg_list) THEN
145 fnd_msg_pub.initialize;
146 END IF;
147
148 ----------------------------------------------------
149 -- Validation checks for incoming parameters
150 if ((p_commit <> FND_API.G_FALSE) AND
151 (p_commit <> FND_API.G_TRUE))
152 then l_commit := FND_API.G_FALSE;
153 else l_commit := p_commit;
154 end if;
155
156 -- procedure to check p_ivr_data format ??
157
158 -- by default do create media item
159 l_create_media_item := TRUE;
160 if (p_app_data <> fnd_api.g_miss_char) then
161
162 parseAppData(
163 p_app_data => p_app_data,
164 x_YYYY => l_YYYY,
165 x_media_item => l_media_item_id,
166 x_ZZZZ => l_ZZZZ,
167 x_create_media_item => l_create_media_item
168 ) ;
169
170 end if;
171
172
173 if (l_create_media_item) then
174 ----------------------------------------------------
175 -- Call JTF_IH_PUB.create_media_item
176
177 JTF_IH_PUB_W.OPEN_MEDIAITEM (
178 p_api_version => 1.0,
179 p_init_msg_list => l_init_msg_list,
180 p_commit => FND_API.G_FALSE,
181 p_resp_appl_id => 1,
182 p_resp_id => 1,
183 p_user_id => -1,
184 p_login_id => NULL,
185 x_return_status => l_return_status,
186 x_msg_count => x_msg_count,
187 x_msg_data => x_msg_data,
188 x_media_id => l_media_item_id,
189 p10_a2 => 'INBOUND',
190 p10_a6 => p_start_date_time,
191 p10_a8 => p_start_date_time,
192 p10_a10 => 'TELE_INB'
193
194 );
195
196 end if;
197 ----------------------------------------------------
198 -- Call JTF_IH_PUB.Create_MediaLifecycle
199 JTF_IH_PUB_W.CREATE_MEDIALIFECYCLE (
200 p_api_version => '1.0',
201 p_init_msg_list => p_init_msg_list,
202 p_commit => FND_API.G_FALSE,
203 p_resp_appl_id => 1,
204 p_resp_id => 1,
205 p_user_id => -1,
206 p_login_id => NULL,
207 x_return_status => l_return_status,
208 x_msg_count => x_msg_count,
209 x_msg_data => x_msg_data,
210 p10_a0 => p_start_date_time,
211 p10_a3 => p_duration_in_secs,
212 p10_a4 => p_end_date_time,
213 p10_a6 => 1,
214 p10_a7 => l_media_item_id
215 );
216 ---------------------------------------------------------
217 -- Insert into CCT_IVR_DATA table
218
219 insert into CCT_IVR_DATA (
220 MEDIA_ITEM_ID,
221 IVR_DATA,
222 CREATION_DATE,
223 CREATED_BY,
224 LAST_UPDATE_DATE,
225 LAST_UPDATED_BY,
226 LAST_UPDATE_LOGIN
227 ) values (
228 l_media_item_id,
229 p_ivr_data,
230 sysdate,
231 -1,
232 sysdate,
233 -1,
234 NULL
235 );
236
237
238 ---------------------------------------------------------
239 -- Standard check of p_commit
240 IF fnd_api.to_boolean(l_commit) THEN
241 COMMIT WORK;
242 END IF;
243
244 -- return value
245 x_app_data := l_YYYY || 'MI:IVR-' || TO_CHAR(l_media_item_id) || ';' || l_ZZZZ;
246
247
248 /****
249 dbms_output.put_line ('Input = ' || p_app_data);
250 if (l_create_media_item) then
251 dbms_output.put_line ('l_create_media_item = ' || 'TRUE');
252 else
253 dbms_output.put_line ('l_create_media_item = ' || 'FALSE');
254 end if;
255 dbms_output.put_line ('l_YYYY = ' || l_YYYY);
256 dbms_output.put_line ('l_media_item = ' || l_media_item_id);
257 dbms_output.put_line ('l_ZZZZ = ' || l_ZZZZ);
258 dbms_output.put_line ('Output = ' || x_app_data);
259
260 ****/
261
262 -- Standard call to get message count and if count is 1, get message info
263 fnd_msg_pub.count_and_get
264 ( p_count => x_msg_count,
265 p_data => x_msg_data );
266
267
268 ---------------------------------------------------------
269 EXCEPTION
270 WHEN fnd_api.g_exc_error THEN
271 ROLLBACK TO create_ivr_pub;
272 x_return_status := fnd_api.g_ret_sts_error;
273
274 END create_IVR_Item;
275
276 PROCEDURE callIVRTEST (p_app_data VARCHAR2)
277 AS
278 l_return_status VARCHAR2(1);
279 l_msg_count NUMBER;
280 l_msg_data VARCHAR2(2000);
281 l_app_data VARCHAR2(256);
282 l_ivr_data VARCHAR2(20) := 'test data';
283 BEGIN
284
285 CCT_IVR_PUB.create_ivr_item(
286 p_api_version => '1.0',
287 p_init_msg_list => FND_API.G_FALSE,
288 p_commit => FND_API.G_FALSE,
289 x_return_status => l_return_status,
290 x_msg_count => l_msg_count,
291 x_msg_data => l_msg_data,
292 p_start_date_time => sysdate,
293 p_end_date_time => sysdate + 0.2,
294 p_duration_in_secs => 20,
295 p_ivr_data => l_ivr_data,
296 p_app_data => p_app_data,
297 x_app_data => l_app_data
298
299 );
300
301 END callIVRTEST;
302
303
304
305 END CCT_IVR_PUB;