1 package body JTF_IAPP_FAMILIES_PKG as
2 /* $Header: jtfiappb.pls 120.2 2005/10/25 05:20:37 psanyal ship $ */
3
4 G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
5 G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
6
7 procedure INSERT_ROW (
8 X_APP_FAMILY_ID IN OUT NOCOPY /* file.sql.39 change */ NUMBER,
9 X_APP_FAMILY_ACCESS_NAME IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
10 X_DISPLAY_SEQUENCE in NUMBER,
11 X_ENABLED_FLAG in VARCHAR2,
12 X_APP_FAMILY_DISPLAY_NAME in VARCHAR2,
13 X_APP_FAMILY_DESCRIPTION in VARCHAR2,
14 X_OWNER in VARCHAR2
15 ) is
16 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
17 where APP_FAMILY_ID = X_APP_FAMILY_ID
18 ;
19
20 cursor C_2 is
21 select JTF_IAPP_FAMILIES_B_S.nextval from SYS.DUAL
22 ;
23
24 l_app_family_id NUMBER := NULL;
25 l_last_updated_by NUMBER := G_USER_ID;
26
27 begin
28
29 If (X_APP_FAMILY_ID IS NULL) then
30 OPEN C_2;
31 FETCH C_2 INTO X_APP_FAMILY_ID;
32 CLOSE C_2;
33 End If;
34
35 if (X_APP_FAMILY_ACCESS_NAME IS NULL) then
36 X_APP_FAMILY_ACCESS_NAME := 'JTFFAM' || to_char(X_APP_FAMILY_ID);
37 end if;
38
39 -- check if this is from a seed upload
40 if (X_OWNER = 'SEED') then
41 l_last_updated_by := 1;
42 else
43 l_last_updated_by := G_USER_ID;
44 end if;
45
46 insert into JTF_IAPP_FAMILIES_B (
47 APP_FAMILY_ID,
48 APP_FAMILY_ACCESS_NAME,
49 DISPLAY_SEQUENCE,
50 ENABLED_FLAG,
51 DELETED_FLAG,
52 OBJECT_VERSION_NUMBER,
53 CREATION_DATE,
54 CREATED_BY,
55 LAST_UPDATE_DATE,
56 LAST_UPDATED_BY,
57 LAST_UPDATE_LOGIN
58 ) values (
59 X_APP_FAMILY_ID,
60 X_APP_FAMILY_ACCESS_NAME,
61 X_DISPLAY_SEQUENCE,
62 X_ENABLED_FLAG,
63 'N',
64 0,
65 SYSDATE,
66 G_USER_ID,
67 SYSDATE,
68 l_last_updated_by,
69 G_LOGIN_ID
70 );
71
72 insert into JTF_IAPP_FAMILIES_TL (
73 APP_FAMILY_ID,
74 APP_FAMILY_DISPLAY_NAME,
75 APP_FAMILY_DESCRIPTION,
76 CREATED_BY,
77 CREATION_DATE,
78 LAST_UPDATE_DATE,
79 LAST_UPDATED_BY,
80 LAST_UPDATE_LOGIN,
81 LANGUAGE,
82 SOURCE_LANG
83 ) select
84 X_APP_FAMILY_ID,
85 X_APP_FAMILY_DISPLAY_NAME,
86 X_APP_FAMILY_DESCRIPTION,
87 G_USER_ID,
88 SYSDATE,
89 SYSDATE,
90 l_last_updated_by,
91 G_LOGIN_ID,
92 L.LANGUAGE_CODE,
93 userenv('LANG')
94 from FND_LANGUAGES L
95 where L.INSTALLED_FLAG in ('I', 'B')
96 and not exists
97 (select NULL
98 from JTF_IAPP_FAMILIES_TL T
99 where T.APP_FAMILY_ID = X_APP_FAMILY_ID
100 and T.LANGUAGE = L.LANGUAGE_CODE);
101
102 open c;
103 fetch c into l_app_family_id;
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 UPDATE_ROW (
113 X_APP_FAMILY_ID in NUMBER,
114 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
115 X_DISPLAY_SEQUENCE in NUMBER,
116 X_ENABLED_FLAG in VARCHAR2,
117 X_OBJECT_VERSION_NUMBER in NUMBER,
118 X_APP_FAMILY_DISPLAY_NAME in VARCHAR2,
119 X_APP_FAMILY_DESCRIPTION in VARCHAR2,
120 X_OWNER in VARCHAR2
121 ) is
122
123 l_last_updated_by NUMBER := G_USER_ID;
124
125 begin
126 update JTF_IAPP_FAMILIES_B set
127 APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME,
128 DISPLAY_SEQUENCE = X_DISPLAY_SEQUENCE,
129 ENABLED_FLAG = X_ENABLED_FLAG,
130 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1,
131 LAST_UPDATE_DATE = SYSDATE,
132 LAST_UPDATED_BY = G_USER_ID,
133 LAST_UPDATE_LOGIN = G_LOGIN_ID
134 where APP_FAMILY_ID = X_APP_FAMILY_ID;
135
136 if (sql%notfound) then
137 raise no_data_found;
138 end if;
139
140 -- check if this is from a seed upload
141 if (X_OWNER = 'SEED') then
142 l_last_updated_by := 1;
143 else
144 l_last_updated_by := G_USER_ID;
145 end if;
146
147 update JTF_IAPP_FAMILIES_TL set
148 APP_FAMILY_DISPLAY_NAME = X_APP_FAMILY_DISPLAY_NAME,
149 APP_FAMILY_DESCRIPTION = X_APP_FAMILY_DESCRIPTION,
150 LAST_UPDATE_DATE = SYSDATE,
151 LAST_UPDATED_BY = l_last_updated_by,
152 LAST_UPDATE_LOGIN = G_LOGIN_ID,
153 SOURCE_LANG = userenv('LANG')
154 where APP_FAMILY_ID = X_APP_FAMILY_ID
155 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
156
157 if (sql%notfound) then
158 raise no_data_found;
159 end if;
160 end UPDATE_ROW;
161
162 procedure DELETE_ROW (
163 X_APP_FAMILY_ID in NUMBER
164 ) is
165 begin
166 delete from JTF_IAPP_FAMILIES_TL
167 where APP_FAMILY_ID = X_APP_FAMILY_ID;
168
169 if (sql%notfound) then
170 raise no_data_found;
171 end if;
172
173 delete from JTF_IAPP_FAMILIES_B
174 where APP_FAMILY_ID = X_APP_FAMILY_ID;
175
176 if (sql%notfound) then
177 raise no_data_found;
178 end if;
179 end DELETE_ROW;
180
181 -- ALL APP to FAMILY related procedures
182
183 procedure ADD_APP_TO_FAMILY (
184 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
185 X_APP_ID in NUMBER
186 ) is
187
188 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
189 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
190 ;
191
192 cursor C_2 is select f.APP_FAMILY_ID, APPLICATION_ID
193 from JTF_IAPP_FAMILIES_B f, JTF_IAPP_FAMILY_APP_MAP a
194 where f.APP_FAMILY_ID = a.APP_FAMILY_ID
195 AND f.APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
196 AND a.APPLICATION_ID = X_APP_ID
197 ;
198
199 l_app_family_id NUMBER := NULL;
200 l_app_id NUMBER := NULL;
201
202 begin
203
204 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL AND X_APP_ID IS NOT NULL ) then
205
206 OPEN C_2;
207 FETCH C_2 INTO l_app_family_id, l_app_id;
208
209 if (C_2%notfound) then
210
211 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL) then
212 OPEN C;
213 FETCH C INTO l_app_family_id;
214 CLOSE C;
215 End If;
216
217 insert into JTF_IAPP_FAMILY_APP_MAP (
218 APP_FAMILY_ID,
219 APPLICATION_ID,
220 CREATED_BY,
221 CREATION_DATE,
222 LAST_UPDATE_DATE,
223 LAST_UPDATED_BY,
224 LAST_UPDATE_LOGIN
225 ) values (
226 l_app_family_id,
227 X_APP_ID,
228 G_USER_ID,
229 SYSDATE,
230 SYSDATE,
231 G_USER_ID,
232 G_LOGIN_ID
233 );
234
235 end if;
236
237 CLOSE C_2;
238 End If;
239
240 end ADD_APP_TO_FAMILY;
241
242 procedure DELETE_ALL_APPS_IN_FAMILY (
243 X_APP_FAMILY_ACCESS_NAME in VARCHAR2
244 ) is
245
246 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
247 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
248 ;
249
250 l_app_family_id NUMBER := NULL;
251 begin
252
253 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL) then
254 OPEN C;
255 FETCH C INTO l_app_family_id;
256 CLOSE C;
257 End If;
258
259 delete from JTF_IAPP_FAMILY_APP_MAP
260 where APP_FAMILY_ID = l_app_family_id;
261
262 -- if (sql%notfound) then
263 -- raise no_data_found;
264 -- end if;
265
266 end DELETE_ALL_APPS_IN_FAMILY;
267
268
269 procedure DELETE_FAMILY_AND_APPS (
270 X_APP_FAMILY_ACCESS_NAME in VARCHAR2
271 ) is
272
273 begin
274
275 jtf_iapp_families_pkg.DELETE_ALL_APPS_IN_FAMILY (X_APP_FAMILY_ACCESS_NAME => X_APP_FAMILY_ACCESS_NAME);
276
277 update JTF_IAPP_FAMILIES_B set DELETED_FLAG = 'Y' where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME;
278
279 if (sql%notfound) then
280 raise no_data_found;
281 end if;
282
283 end DELETE_FAMILY_AND_APPS;
284
285
286 procedure DELETE_APP_IN_FAMILY (
287 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
288 X_APP_ID in NUMBER
289 ) is
290
291 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
292 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
293 ;
294
295 l_app_family_id NUMBER := NULL;
296 begin
297
298 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL) then
299 OPEN C;
300 FETCH C INTO l_app_family_id;
301 CLOSE C;
302 End If;
303
304 delete from JTF_IAPP_FAMILY_APP_MAP
305 where APP_FAMILY_ID = l_app_family_id
306 AND APPLICATION_ID = X_APP_ID;
307
308 if (sql%notfound) then
309 raise no_data_found;
310 end if;
311
312
313 end DELETE_APP_IN_FAMILY;
314
315 procedure ADD_USER_DEF_RESP (
316 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
317 X_USER_ID in NUMBER,
318 X_DEFAULT_RESP_ID in NUMBER
319 ) is
320
321 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
322 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
323 ;
324
325 cursor C_2 is select f.APP_FAMILY_ID, USER_ID
326 from JTF_IAPP_FAMILIES_B f, JTF_IAPP_FAMILY_USR_MAP u
327 where f.APP_FAMILY_ID = u.APP_FAMILY_ID
328 AND f.APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
329 AND u.USER_ID = X_USER_ID
330 ;
331
332 l_app_family_id NUMBER := NULL;
333 l_user_id NUMBER := NULL;
334
335 begin
336
337 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL
338 AND X_USER_ID IS NOT NULL ) then
339 OPEN C_2;
340 FETCH C_2 INTO l_app_family_id, l_user_id;
341
342 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL) then
343 OPEN C;
344 FETCH C INTO l_app_family_id;
345 CLOSE C;
346 End If;
347
348 if (C_2%notfound) then
349 insert into JTF_IAPP_FAMILY_USR_MAP (
350 APP_FAMILY_ID,
351 USER_ID,
352 DEFAULT_RESP_ID,
353 CREATED_BY,
354 CREATION_DATE,
355 LAST_UPDATE_DATE,
356 LAST_UPDATED_BY,
357 LAST_UPDATE_LOGIN
358 ) values (
359 l_app_family_id,
360 X_USER_ID,
361 X_DEFAULT_RESP_ID,
362 G_USER_ID,
363 SYSDATE,
364 SYSDATE,
365 G_USER_ID,
366 G_LOGIN_ID
367 );
368 else
369
370 update JTF_IAPP_FAMILY_USR_MAP set
371 DEFAULT_RESP_ID = X_DEFAULT_RESP_ID,
372 LAST_UPDATE_DATE = SYSDATE,
373 LAST_UPDATED_BY = G_USER_ID,
374 LAST_UPDATE_LOGIN = G_LOGIN_ID
375 where APP_FAMILY_ID = l_app_family_id
376 AND USER_ID = X_USER_ID;
377
378 if (sql%notfound) then
379 raise no_data_found;
380 end if;
381
382 end if;
383
384 CLOSE C_2;
385
386 End If;
387
388 end ADD_USER_DEF_RESP;
389
390 procedure DELETE_USER_DEF_RESP (
391 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
392 X_USER_ID in NUMBER
393 ) is
394
395 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
396 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
397 ;
398
399 l_app_family_id NUMBER := NULL;
400
401 begin
402
403 If (X_APP_FAMILY_ACCESS_NAME IS NOT NULL) then
404
405 OPEN C;
406 FETCH C INTO l_app_family_id;
407 CLOSE C;
408
409 delete from JTF_IAPP_FAMILY_USR_MAP
410 where APP_FAMILY_ID = l_app_family_id
411 AND USER_ID = X_USER_ID;
412
413 if (sql%notfound) then
414 raise no_data_found;
415 end if;
416
417 End If;
418
419 end DELETE_USER_DEF_RESP;
420
421 procedure DELETE_USER_DEF_RESP_USING_ID (
422 X_APP_FAMILY_ID in NUMBER,
423 X_USER_ID in NUMBER
424 ) is
425
426 begin
427
428 If (X_APP_FAMILY_ID IS NOT NULL AND X_USER_ID IS NOT NULL) then
429
430 delete from JTF_IAPP_FAMILY_USR_MAP
431 where APP_FAMILY_ID = X_APP_FAMILY_ID
432 AND USER_ID = X_USER_ID;
433
434 if (sql%notfound) then
435 raise no_data_found;
436 end if;
437
438 End If;
439
440 end DELETE_USER_DEF_RESP_USING_ID;
441
442
443 procedure LOAD_ROW (
444 X_APP_FAMILY_ID in NUMBER,
445 X_APP_FAMILY_ACCESS_NAME in VARCHAR2,
446 X_DISPLAY_SEQUENCE in NUMBER,
447 X_ENABLED_FLAG in VARCHAR2,
448 X_APP_FAMILY_DISPLAY_NAME in VARCHAR2,
449 X_APP_FAMILY_DESCRIPTION in VARCHAR2,
450 X_APPLICATION_ID in NUMBER,
451 X_OWNER in VARCHAR2
452 )is
453
454 cursor C is select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
455 where APP_FAMILY_ACCESS_NAME = X_APP_FAMILY_ACCESS_NAME
456 ;
457 cursor c_2 is select nvl(max(app_family_id), 0)
458 from jtf_iapp_families_b where app_family_id < 10000
459 ;
460
461 l_app_family_id NUMBER := X_APP_FAMILY_ID;
462 l_app_pseudo_seq NUMBER := NULL;
463 l_app_family_name VARCHAR2(60) := X_APP_FAMILY_ACCESS_NAME;
464
465 begin
466
467 OPEN C;
468 FETCH C INTO l_app_family_id;
469 CLOSE C;
470
471 if(C%notfound) then
472
473 -- generate pseudo sequence
474 OPEN C_2;
475 FETCH C_2 INTO l_app_pseudo_seq;
476 l_app_pseudo_seq := l_app_pseudo_seq + 1;
477 CLOSE C_2;
478
479 jtf_iapp_families_pkg.INSERT_ROW (
480 X_APP_FAMILY_ID => l_app_pseudo_seq,
481 X_APP_FAMILY_ACCESS_NAME => l_app_family_name,
482 X_DISPLAY_SEQUENCE => X_DISPLAY_SEQUENCE,
483 X_ENABLED_FLAG => X_ENABLED_FLAG,
484 X_APP_FAMILY_DISPLAY_NAME => X_APP_FAMILY_DISPLAY_NAME,
485 X_APP_FAMILY_DESCRIPTION => X_APP_FAMILY_DESCRIPTION,
486 X_OWNER => X_OWNER
487 );
488 else
489 jtf_iapp_families_pkg.UPDATE_ROW (
490 X_APP_FAMILY_ID => l_app_family_id,
491 X_APP_FAMILY_ACCESS_NAME => l_app_family_name,
492 X_DISPLAY_SEQUENCE => X_DISPLAY_SEQUENCE,
493 X_ENABLED_FLAG => X_ENABLED_FLAG,
494 X_OBJECT_VERSION_NUMBER => null,
495 X_APP_FAMILY_DISPLAY_NAME => X_APP_FAMILY_DISPLAY_NAME,
496 X_APP_FAMILY_DESCRIPTION => X_APP_FAMILY_DESCRIPTION,
497 X_OWNER => X_OWNER
498 );
499 end if;
500
501 jtf_iapp_families_pkg.ADD_APP_TO_FAMILY (
502 X_APP_FAMILY_ACCESS_NAME => X_APP_FAMILY_ACCESS_NAME,
503 X_APP_ID => X_APPLICATION_ID);
504
505 end LOAD_ROW;
506
507 procedure TRANSLATE_ROW (
508 x_APP_FAMILY_ACCESS_NAME in VARCHAR2,
509 x_APP_FAMILY_DISPLAY_NAME in VARCHAR2,
510 x_APP_FAMILY_DESCRIPTION in VARCHAR2,
511 x_OWNER in VARCHAR2
512 )is
513
514 begin
515 update JTF_IAPP_FAMILIES_TL set
516 APP_FAMILY_DISPLAY_NAME = x_APP_FAMILY_DISPLAY_NAME,
517 APP_FAMILY_DESCRIPTION = x_APP_FAMILY_DESCRIPTION,
518 LAST_UPDATE_DATE = sysdate,
519 LAST_UPDATED_BY = decode(x_OWNER, 'SEED', 1, 0),
520 LAST_UPDATE_LOGIN = 0,
521 SOURCE_LANG = userenv('LANG')
522 where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
526
523 and APP_FAMILY_ID = (select APP_FAMILY_ID from JTF_IAPP_FAMILIES_B
524 where APP_FAMILY_ACCESS_NAME = x_APP_FAMILY_ACCESS_NAME);
525 end TRANSLATE_ROW;
527
528 procedure ADD_LANGUAGE
529 is
530 begin
531 delete from JTF_IAPP_FAMILIES_TL T
532 where not exists
533 (select NULL
534 from JTF_IAPP_FAMILIES_B B
535 where B.APP_FAMILY_ID = T.APP_FAMILY_ID
536 );
537
538 update JTF_IAPP_FAMILIES_TL T set (
539 APP_FAMILY_DISPLAY_NAME,
540 APP_FAMILY_DESCRIPTION
541 ) = (select
542 B.APP_FAMILY_DISPLAY_NAME,
543 B.APP_FAMILY_DESCRIPTION
544 from JTF_IAPP_FAMILIES_TL B
545 where B.APP_FAMILY_ID = T.APP_FAMILY_ID
546 and B.LANGUAGE = T.SOURCE_LANG)
547 where (
548 T.APP_FAMILY_ID,
549 T.LANGUAGE
550 ) in (select
551 SUBT.APP_FAMILY_ID,
552 SUBT.LANGUAGE
553 from JTF_IAPP_FAMILIES_TL SUBB, JTF_IAPP_FAMILIES_TL SUBT
554 where SUBB.APP_FAMILY_ID = SUBT.APP_FAMILY_ID
555 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
556 and (SUBB.APP_FAMILY_DISPLAY_NAME <> SUBT.APP_FAMILY_DISPLAY_NAME
557 or SUBB.APP_FAMILY_DESCRIPTION <> SUBT.APP_FAMILY_DESCRIPTION
558 or (SUBB.APP_FAMILY_DESCRIPTION is null and SUBT.APP_FAMILY_DESCRIPTION is not null)
559 or (SUBB.APP_FAMILY_DESCRIPTION is not null and SUBT.APP_FAMILY_DESCRIPTION is null)
560 ));
561
562 insert into JTF_IAPP_FAMILIES_TL (
563 APP_FAMILY_ID,
564 APP_FAMILY_DISPLAY_NAME,
565 APP_FAMILY_DESCRIPTION,
566 CREATED_BY,
567 CREATION_DATE,
568 LAST_UPDATE_DATE,
569 LAST_UPDATED_BY,
570 LAST_UPDATE_LOGIN,
571 LANGUAGE,
572 SOURCE_LANG
573 ) select
574 B.APP_FAMILY_ID,
575 B.APP_FAMILY_DISPLAY_NAME,
576 B.APP_FAMILY_DESCRIPTION,
577 B.CREATED_BY,
578 B.CREATION_DATE,
579 B.LAST_UPDATE_DATE,
580 B.LAST_UPDATED_BY,
581 B.LAST_UPDATE_LOGIN,
582 L.LANGUAGE_CODE,
583 B.SOURCE_LANG
584 from JTF_IAPP_FAMILIES_TL B, FND_LANGUAGES L
585 where L.INSTALLED_FLAG in ('I', 'B')
586 and B.LANGUAGE = userenv('LANG')
587 and not exists
588 (select NULL
589 from JTF_IAPP_FAMILIES_TL T
590 where T.APP_FAMILY_ID = B.APP_FAMILY_ID
591 and T.LANGUAGE = L.LANGUAGE_CODE);
592 end ADD_LANGUAGE;
593
594 end JTF_IAPP_FAMILIES_PKG;