DBA Data[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;