DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEB_SERVICE_LEVELS_PKG

Source


1 package body IEB_SERVICE_LEVELS_PKG as
2 /* $Header: IEBSVCLVLB.pls 120.3 2005/09/29 06:09:03 appldev ship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in out nocopy VARCHAR2,
6   X_SERVICE_LEVEL_ID in NUMBER,
7   X_DIRECTION in VARCHAR2,
8   X_MANDATORY_FLAG in VARCHAR2,
9   X_HOURLY_QUOTA in NUMBER,
10   X_MIN_AGENTS in NUMBER,
11   X_GOAL_PERCENT in NUMBER,
12   X_GOAL_TIME in NUMBER,
13   X_MAX_WAIT_TIME in NUMBER,
14   X_REROUTE_TIME in NUMBER,
15   X_REROUTE_WARNING_TIME in NUMBER,
16   X_OBJECT_VERSION_NUMBER in NUMBER,
17   X_SECURITY_GROUP_ID in NUMBER,
18   X_LEVEL_NAME in VARCHAR2,
19   X_DESCRIPTION in VARCHAR2,
20   X_CREATION_DATE in DATE,
21   X_CREATED_BY in NUMBER,
22   X_LAST_UPDATE_DATE in DATE,
23   X_LAST_UPDATED_BY in NUMBER,
24   X_LAST_UPDATE_LOGIN in NUMBER
25 ) is
26   cursor C is select ROWID from IEB_SERVICE_LEVELS_B
27     where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID;
28 begin
29   insert into IEB_SERVICE_LEVELS_B (
30     SERVICE_LEVEL_ID,
31     DIRECTION,
32     MANDATORY_FLAG,
33     HOURLY_QUOTA,
34     MIN_AGENTS,
35     GOAL_PERCENT,
36     GOAL_TIME,
37     MAX_WAIT_TIME,
38     REROUTE_TIME,
39     REROUTE_WARNING_TIME,
40     OBJECT_VERSION_NUMBER,
41     SECURITY_GROUP_ID,
42     CREATION_DATE,
43     CREATED_BY,
44     LAST_UPDATE_DATE,
45     LAST_UPDATED_BY,
46     LAST_UPDATE_LOGIN
47   ) values (
48     X_SERVICE_LEVEL_ID,
49     X_DIRECTION,
50     X_MANDATORY_FLAG,
51     X_HOURLY_QUOTA,
52     X_MIN_AGENTS,
53     X_GOAL_PERCENT,
54     X_GOAL_TIME,
55     X_MAX_WAIT_TIME,
56     X_REROUTE_TIME,
57     X_REROUTE_WARNING_TIME,
58     X_OBJECT_VERSION_NUMBER,
59     X_SECURITY_GROUP_ID,
60     X_CREATION_DATE,
61     X_CREATED_BY,
62     X_LAST_UPDATE_DATE,
63     X_LAST_UPDATED_BY,
64     X_LAST_UPDATE_LOGIN
65   );
66 
67   insert into IEB_SERVICE_LEVELS_TL (
68     SERVICE_LEVEL_ID,
69     CREATED_BY,
70     CREATION_DATE,
71     LAST_UPDATED_BY,
72     LAST_UPDATE_DATE,
73     LAST_UPDATE_LOGIN,
74     LEVEL_NAME,
75     DESCRIPTION,
76     OBJECT_VERSION_NUMBER,
77     SECURITY_GROUP_ID,
78     LANGUAGE,
79     SOURCE_LANG
80   ) select
81     X_SERVICE_LEVEL_ID,
82     X_CREATED_BY,
83     X_CREATION_DATE,
84     X_LAST_UPDATED_BY,
85     X_LAST_UPDATE_DATE,
86     X_LAST_UPDATE_LOGIN,
87     X_LEVEL_NAME,
88     X_DESCRIPTION,
89     X_OBJECT_VERSION_NUMBER,
90     X_SECURITY_GROUP_ID,
91     L.LANGUAGE_CODE,
92     userenv('LANG')
93   from FND_LANGUAGES L
94   where L.INSTALLED_FLAG in ('I', 'B')
95   and not exists
96     (select NULL
97     from IEB_SERVICE_LEVELS_TL T
98     where T.SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
99     and T.SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
100     and T.LANGUAGE = L.LANGUAGE_CODE);
101 
102   open c;
103   fetch c into X_ROWID;
104   if (c%notfound) then
105     close c;
106     raise no_data_found;
107   end if;
108   close c;
109 
110 end INSERT_ROW;
111 
112 procedure LOCK_ROW (
113   X_SERVICE_LEVEL_ID in NUMBER,
114   X_DIRECTION in VARCHAR2,
115   X_MANDATORY_FLAG in VARCHAR2,
116   X_HOURLY_QUOTA in NUMBER,
117   X_MIN_AGENTS in NUMBER,
118   X_GOAL_PERCENT in NUMBER,
119   X_GOAL_TIME in NUMBER,
120   X_MAX_WAIT_TIME in NUMBER,
121   X_REROUTE_TIME in NUMBER,
122   X_REROUTE_WARNING_TIME in NUMBER,
123   X_OBJECT_VERSION_NUMBER in NUMBER,
124   X_SECURITY_GROUP_ID in NUMBER,
125   X_LEVEL_NAME in VARCHAR2,
126   X_DESCRIPTION in VARCHAR2
127 ) is
128   cursor c is select
129       DIRECTION,
130       MANDATORY_FLAG,
131       HOURLY_QUOTA,
132       MIN_AGENTS,
133       GOAL_PERCENT,
134       GOAL_TIME,
135       MAX_WAIT_TIME,
136       REROUTE_TIME,
137       REROUTE_WARNING_TIME,
138       OBJECT_VERSION_NUMBER,
139       SECURITY_GROUP_ID
140     from IEB_SERVICE_LEVELS_B
141     where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
142     and SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
143     for update of SERVICE_LEVEL_ID nowait;
144   recinfo c%rowtype;
145 
146   cursor c1 is select
147       LEVEL_NAME,
148       DESCRIPTION,
149       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
150     from IEB_SERVICE_LEVELS_TL
151     where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
152     and SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
153     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
154     for update of SERVICE_LEVEL_ID nowait;
155 begin
156   open c;
157   fetch c into recinfo;
158   if (c%notfound) then
159     close c;
160     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
161     app_exception.raise_exception;
162   end if;
163   close c;
164   if (    (recinfo.DIRECTION = X_DIRECTION)
165       AND ((recinfo.MANDATORY_FLAG = X_MANDATORY_FLAG)
166            OR ((recinfo.MANDATORY_FLAG is null) AND (X_MANDATORY_FLAG is null)))
167       AND ((recinfo.HOURLY_QUOTA = X_HOURLY_QUOTA)
168            OR ((recinfo.HOURLY_QUOTA is null) AND (X_HOURLY_QUOTA is null)))
169       AND ((recinfo.MIN_AGENTS = X_MIN_AGENTS)
170            OR ((recinfo.MIN_AGENTS is null) AND (X_MIN_AGENTS is null)))
171       AND ((recinfo.GOAL_PERCENT = X_GOAL_PERCENT)
172            OR ((recinfo.GOAL_PERCENT is null) AND (X_GOAL_PERCENT is null)))
173       AND ((recinfo.GOAL_TIME = X_GOAL_TIME)
174            OR ((recinfo.GOAL_TIME is null) AND (X_GOAL_TIME is null)))
175       AND ((recinfo.MAX_WAIT_TIME = X_MAX_WAIT_TIME)
176            OR ((recinfo.MAX_WAIT_TIME is null) AND (X_MAX_WAIT_TIME is null)))
177       AND ((recinfo.REROUTE_TIME = X_REROUTE_TIME)
178            OR ((recinfo.REROUTE_TIME is null) AND (X_REROUTE_TIME is null)))
179       AND ((recinfo.REROUTE_WARNING_TIME = X_REROUTE_WARNING_TIME)
180            OR ((recinfo.REROUTE_WARNING_TIME is null) AND (X_REROUTE_WARNING_TIME is null)))
181       AND ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
182            OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
183       AND ((recinfo.SECURITY_GROUP_ID = X_SECURITY_GROUP_ID)
184            OR ((recinfo.SECURITY_GROUP_ID is null) AND (X_SECURITY_GROUP_ID is null)))
185   ) then
186     null;
187   else
188     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
189     app_exception.raise_exception;
190   end if;
191 
192   for tlinfo in c1 loop
193     if (tlinfo.BASELANG = 'Y') then
194       if (    (tlinfo.LEVEL_NAME = X_LEVEL_NAME)
195           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
196                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
197       ) then
198         null;
199       else
200         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
201         app_exception.raise_exception;
202       end if;
203     end if;
204   end loop;
205   return;
206 end LOCK_ROW;
207 
208 procedure UPDATE_ROW (
209   X_SERVICE_LEVEL_ID in NUMBER,
210   X_DIRECTION in VARCHAR2,
211   X_MANDATORY_FLAG in VARCHAR2,
212   X_HOURLY_QUOTA in NUMBER,
213   X_MIN_AGENTS in NUMBER,
214   X_GOAL_PERCENT in NUMBER,
215   X_GOAL_TIME in NUMBER,
216   X_MAX_WAIT_TIME in NUMBER,
217   X_REROUTE_TIME in NUMBER,
218   X_REROUTE_WARNING_TIME in NUMBER,
219   X_OBJECT_VERSION_NUMBER in NUMBER,
220   X_SECURITY_GROUP_ID in NUMBER,
221   X_LEVEL_NAME in VARCHAR2,
222   X_DESCRIPTION in VARCHAR2,
223   X_LAST_UPDATE_DATE in DATE,
224   X_LAST_UPDATED_BY in NUMBER,
225   X_LAST_UPDATE_LOGIN in NUMBER
226 ) is
227 begin
228   update IEB_SERVICE_LEVELS_B set
229     DIRECTION = X_DIRECTION,
230     MANDATORY_FLAG = X_MANDATORY_FLAG,
231     HOURLY_QUOTA = X_HOURLY_QUOTA,
232     MIN_AGENTS = X_MIN_AGENTS,
233     GOAL_PERCENT = X_GOAL_PERCENT,
234     GOAL_TIME = X_GOAL_TIME,
235     MAX_WAIT_TIME = X_MAX_WAIT_TIME,
236     REROUTE_TIME = X_REROUTE_TIME,
237     REROUTE_WARNING_TIME = X_REROUTE_WARNING_TIME,
238     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
239     SECURITY_GROUP_ID = X_SECURITY_GROUP_ID,
240     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
241     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
242     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
243   where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
244   and SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID;
245 
246   if (sql%notfound) then
247     raise no_data_found;
248   end if;
249 
250   update IEB_SERVICE_LEVELS_TL set
251     LEVEL_NAME = X_LEVEL_NAME,
252     DESCRIPTION = X_DESCRIPTION,
253     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
254     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
255     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
256     SOURCE_LANG = userenv('LANG')
257   where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
258   and SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID
259   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
260 
261   if (sql%notfound) then
262     raise no_data_found;
263   end if;
264 end UPDATE_ROW;
265 
266 procedure DELETE_ROW (
267   X_SERVICE_LEVEL_ID in NUMBER
268 ) is
269 begin
270   delete from IEB_SERVICE_LEVELS_TL
271   where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID;
272 
273   if (sql%notfound) then
274     raise no_data_found;
275   end if;
276 
277   delete from IEB_SERVICE_LEVELS_B
278   where SERVICE_LEVEL_ID = X_SERVICE_LEVEL_ID;
279 
280   if (sql%notfound) then
281     raise no_data_found;
282   end if;
283 end DELETE_ROW;
284 
285 procedure LOAD_ROW (
286   p_service_level_id IN NUMBER,
287   p_mandatory_flag   IN VARCHAR2,
288   p_direction IN VARCHAR2,
289   p_hourly_quota IN NUMBER,
290   p_min_agents IN NUMBER,
291   p_goal_percent IN NUMBER,
292   p_goal_time IN NUMBER,
293   p_max_wait_time IN NUMBER,
294   p_reroute_time IN NUMBER,
295   p_reroute_warning_time IN NUMBER,
296   p_level_name IN VARCHAR2,
297   p_DESCRIPTION IN VARCHAR2,
298   p_OWNER IN VARCHAR2) is
299 
300   BEGIN
301     DECLARE
302         user_id  number := 0;
303         l_row_id varchar2(80);
304     BEGIN
305 
306 	 user_id := fnd_load_util.owner_id(p_OWNER);
307 
308     --select IEB_SVC_LEVEL_S1.nextval into l_row_id from dual;
309 
310   UPDATE_ROW(
311         X_SERVICE_LEVEL_ID => p_service_level_id ,
312         X_DIRECTION => p_direction,
313         X_MANDATORY_FLAG => p_mandatory_flag ,
314         X_HOURLY_QUOTA => p_hourly_quota ,
315         X_MIN_AGENTS => p_min_agents ,
316         X_GOAL_PERCENT => p_goal_percent,
317         X_GOAL_TIME => p_goal_time,
318         X_MAX_WAIT_TIME => p_max_wait_time,
319         X_REROUTE_TIME => p_reroute_time ,
320         X_REROUTE_WARNING_TIME => p_reroute_warning_time,
321         X_LEVEL_NAME => p_level_name,
322         X_DESCRIPTION => p_description ,
323         X_OBJECT_VERSION_NUMBER => NULL,
324         X_SECURITY_GROUP_ID => NULL,
325         X_LAST_UPDATE_DATE => sysdate,
326         X_LAST_UPDATED_BY => user_id,
327         X_LAST_UPDATE_LOGIN =>  1 );
328 
329       EXCEPTION
330          WHEN NO_DATA_FOUND THEN
331         INSERT_ROW (
332           X_ROWID => l_row_id,
333           X_SERVICE_LEVEL_ID => p_service_level_id ,
334           X_DIRECTION => p_direction ,
335           X_MANDATORY_FLAG => p_mandatory_flag ,
336           X_HOURLY_QUOTA => p_hourly_quota ,
337           X_MIN_AGENTS => p_min_agents ,
338           X_GOAL_PERCENT => p_goal_percent ,
339           X_GOAL_TIME => p_goal_time ,
340           X_MAX_WAIT_TIME => p_max_wait_time ,
341           X_REROUTE_TIME => p_reroute_time ,
342           X_REROUTE_WARNING_TIME => p_reroute_warning_time ,
343           X_OBJECT_VERSION_NUMBER => NULL ,
344           X_SECURITY_GROUP_ID => NULL ,
345           X_LEVEL_NAME => p_level_name ,
346           X_DESCRIPTION => p_description ,
347           X_CREATION_DATE => sysdate ,
348           X_CREATED_BY => user_id ,
349           X_LAST_UPDATE_DATE => sysdate ,
350           X_LAST_UPDATED_BY => user_id ,
351           X_LAST_UPDATE_LOGIN => 1 );
352 
353       END;
354 end LOAD_ROW;
355 
356 procedure LOAD_SEED_ROW (
357   p_service_level_id IN NUMBER,
358   p_mandatory_flag   IN VARCHAR2,
359   p_direction IN VARCHAR2,
360   p_hourly_quota IN NUMBER,
361   p_min_agents IN NUMBER,
362   p_goal_percent IN NUMBER,
363   p_goal_time IN NUMBER,
364   p_max_wait_time IN NUMBER,
365   p_reroute_time IN NUMBER,
366   p_reroute_warning_time IN NUMBER,
367   p_level_name IN VARCHAR2,
368   p_DESCRIPTION IN VARCHAR2,
369   p_OWNER IN VARCHAR2,
370   p_UPLOAD_MODE IN VARCHAR2) is
371 BEGIN
372   if (p_UPLOAD_MODE = 'NLS') then
373     IEB_SERVICE_LEVELS_PKG.TRANSLATE_ROW (
374 				       p_SERVICE_LEVEL_ID,
375 				       p_LEVEL_NAME,
376 				       p_DESCRIPTION,
377 				       p_OWNER);
378   else
379     IEB_SERVICE_LEVELS_PKG.LOAD_ROW (
380               p_service_level_id ,
381               p_mandatory_flag ,
382               p_direction ,
383               p_hourly_quota ,
384               p_min_agents ,
385               p_goal_percent ,
386               p_goal_time ,
387               p_max_wait_time ,
388               p_reroute_time ,
389               p_reroute_warning_time ,
390               p_level_name ,
391               p_DESCRIPTION ,
392               p_OWNER );
393   end if;
394 END LOAD_SEED_ROW;
395 
396 
397 procedure TRANSLATE_ROW (
398   X_SERVICE_LEVEL_ID IN NUMBER,
399   X_LEVEL_NAME       IN VARCHAR2,
400   X_DESCRIPTION      IN VARCHAR2,
401   X_OWNER            IN VARCHAR2) is
402 
403     BEGIN
404       DECLARE
405         user_id  number := 0;
406       BEGIN
407 
408 	   user_id := fnd_load_util.owner_id(X_OWNER);
409 
410        UPDATE ieb_service_levels_tl
411         SET
412           last_update_date=sysdate
413         , last_updated_by=user_id
414         , last_update_login=1
415         , LEVEL_NAME = DECODE(X_LEVEL_NAME,FND_API.G_MISS_CHAR,
416                                          NULL,X_LEVEL_NAME)
417         , DESCRIPTION = DECODE(X_DESCRIPTION,FND_API.G_MISS_CHAR,NULL,X_DESCRIPTION)
418         , source_lang = USERENV('LANG')
419          WHERE
420             service_level_id = X_SERVICE_LEVEL_ID
421          AND USERENV('LANG') IN (language, source_lang);
422 
423       END;
424 
425 end TRANSLATE_ROW;
426 
427 procedure ADD_LANGUAGE
428 is
429 begin
430   delete from IEB_SERVICE_LEVELS_TL T
431   where not exists
432     (select NULL
433     from IEB_SERVICE_LEVELS_B B
434     where B.SERVICE_LEVEL_ID = T.SERVICE_LEVEL_ID
435     and B.SERVICE_LEVEL_ID = T.SERVICE_LEVEL_ID
436     );
437 
438   update IEB_SERVICE_LEVELS_TL T set (
439       LEVEL_NAME,
440       DESCRIPTION
441     ) = (select
442       B.LEVEL_NAME,
443       B.DESCRIPTION
444     from IEB_SERVICE_LEVELS_TL B
445     where B.SERVICE_LEVEL_ID = T.SERVICE_LEVEL_ID
446     and B.SERVICE_LEVEL_ID = T.SERVICE_LEVEL_ID
447     and B.LANGUAGE = T.SOURCE_LANG)
448   where (
449       T.SERVICE_LEVEL_ID,
450       T.SERVICE_LEVEL_ID,
451       T.LANGUAGE
452   ) in (select
453       SUBT.SERVICE_LEVEL_ID,
454       SUBT.SERVICE_LEVEL_ID,
455       SUBT.LANGUAGE
456     from IEB_SERVICE_LEVELS_TL SUBB, IEB_SERVICE_LEVELS_TL SUBT
457     where SUBB.SERVICE_LEVEL_ID = SUBT.SERVICE_LEVEL_ID
458     and SUBB.SERVICE_LEVEL_ID = SUBT.SERVICE_LEVEL_ID
459     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
460     and (SUBB.LEVEL_NAME <> SUBT.LEVEL_NAME
461       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
462       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
463       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
464   ));
465 
466   insert into IEB_SERVICE_LEVELS_TL (
467     SERVICE_LEVEL_ID,
468     CREATED_BY,
469     CREATION_DATE,
470     LAST_UPDATED_BY,
471     LAST_UPDATE_DATE,
472     LAST_UPDATE_LOGIN,
473     LEVEL_NAME,
474     DESCRIPTION,
475     OBJECT_VERSION_NUMBER,
476     SECURITY_GROUP_ID,
477     LANGUAGE,
478     SOURCE_LANG
479   ) select
480     B.SERVICE_LEVEL_ID,
481     B.CREATED_BY,
482     B.CREATION_DATE,
483     B.LAST_UPDATED_BY,
484     B.LAST_UPDATE_DATE,
485     B.LAST_UPDATE_LOGIN,
486     B.LEVEL_NAME,
487     B.DESCRIPTION,
488     B.OBJECT_VERSION_NUMBER,
489     B.SECURITY_GROUP_ID,
490     L.LANGUAGE_CODE,
491     B.SOURCE_LANG
492   from IEB_SERVICE_LEVELS_TL B, FND_LANGUAGES L
493   where L.INSTALLED_FLAG in ('I', 'B')
494   and B.LANGUAGE = userenv('LANG')
495   and not exists
496     (select NULL
497     from IEB_SERVICE_LEVELS_TL T
498     where T.SERVICE_LEVEL_ID = B.SERVICE_LEVEL_ID
499     and T.SERVICE_LEVEL_ID = B.SERVICE_LEVEL_ID
500     and T.LANGUAGE = L.LANGUAGE_CODE);
501 end ADD_LANGUAGE;
502 
503 end IEB_SERVICE_LEVELS_PKG;