DBA Data[Home] [Help]

PACKAGE BODY: APPS.ICX_CAT_DESCRIPTORS_PKG

Source


1 PACKAGE BODY ICX_CAT_DESCRIPTORS_PKG AS
2 /* $Header: ICXDESIB.pls 115.5 2004/03/31 21:53:08 vkartik ship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in OUT NOCOPY VARCHAR2,
6   X_RT_DESCRIPTOR_ID in NUMBER,
7   X_KEY in VARCHAR2,
8   X_DESCRIPTOR_NAME in VARCHAR2,
9   X_DESCRIPTION in VARCHAR2,
10   X_RT_CATEGORY_ID in NUMBER,
11   X_TYPE in NUMBER,
12   X_SEARCH_RESULTS_VISIBLE in VARCHAR2,
13   X_ITEM_DETAIL_VISIBLE in VARCHAR2,
14   X_REQUIRED in NUMBER,
15   X_REFINABLE in NUMBER,
16   X_SEARCHABLE in NUMBER,
17   X_VALIDATED in NUMBER,
18   X_SEQUENCE in NUMBER,
19   X_TITLE in VARCHAR2,
20   X_DEFAULTVALUE in VARCHAR2,
21   X_MULTI_VALUE_TYPE in NUMBER,
22   X_MULTI_VALUE_KEY in VARCHAR2,
23   X_CREATED_BY in NUMBER,
24   X_CREATION_DATE in DATE,
25   X_LAST_UPDATED_BY in NUMBER,
26   X_LAST_UPDATE_DATE in DATE,
27   X_LAST_UPDATE_LOGIN in NUMBER,
28   X_REQUEST_ID in NUMBER,
29   X_PROGRAM_APPLICATION_ID in NUMBER,
30   X_PROGRAM_ID in NUMBER,
31   X_PROGRAM_UPDATE_DATE in DATE,
32   X_STORED_IN_TABLE in VARCHAR2,
33   X_STORED_IN_COLUMN in VARCHAR2,
34   X_SECTION_TAG in NUMBER,
35   X_CLASS in VARCHAR2
36 ) is
37   cursor C is select ROWID from ICX_CAT_DESCRIPTORS_TL
38     where RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID
39     and LANGUAGE = userenv('LANG')
40     ;
41 begin
42   insert into ICX_CAT_DESCRIPTORS_TL (
43     RT_DESCRIPTOR_ID,
44     KEY,
45     DESCRIPTOR_NAME,
46     DESCRIPTION,
47     RT_CATEGORY_ID,
48     TYPE,
49     SEARCH_RESULTS_VISIBLE,
50     ITEM_DETAIL_VISIBLE,
51     REQUIRED,
52     REFINABLE,
53     SEARCHABLE,
54     VALIDATED,
55     SEQUENCE,
56     TITLE,
57     DEFAULTVALUE,
58     MULTI_VALUE_TYPE,
59     MULTI_VALUE_KEY,
60     CREATED_BY,
61     CREATION_DATE,
62     LAST_UPDATED_BY,
63     LAST_UPDATE_DATE,
64     LAST_UPDATE_LOGIN,
65     REQUEST_ID,
66     PROGRAM_APPLICATION_ID,
67     PROGRAM_ID,
68     PROGRAM_UPDATE_DATE,
69     LANGUAGE,
70     SOURCE_LANG,
71     STORED_IN_TABLE,
72     STORED_IN_COLUMN,
73     SECTION_TAG,
74     CLASS
75   ) select
76     X_RT_DESCRIPTOR_ID,
77     X_KEY,
78     X_DESCRIPTOR_NAME,
79     X_DESCRIPTION,
80     X_RT_CATEGORY_ID,
81     X_TYPE,
82     X_SEARCH_RESULTS_VISIBLE,
83     X_ITEM_DETAIL_VISIBLE,
84     X_REQUIRED,
85     X_REFINABLE,
86     X_SEARCHABLE,
87     X_VALIDATED,
88     X_SEQUENCE,
89     X_TITLE,
90     X_DEFAULTVALUE,
91     X_MULTI_VALUE_TYPE,
92     X_MULTI_VALUE_KEY,
93     X_CREATED_BY,
94     X_CREATION_DATE,
95     X_LAST_UPDATED_BY,
96     X_LAST_UPDATE_DATE,
97     X_LAST_UPDATE_LOGIN,
98     X_REQUEST_ID,
99     X_PROGRAM_APPLICATION_ID,
100     X_PROGRAM_ID,
101     X_PROGRAM_UPDATE_DATE,
102     L.LANGUAGE_CODE,
103     userenv('LANG'),
104     X_STORED_IN_TABLE,
105     X_STORED_IN_COLUMN,
106     X_SECTION_TAG,
107     X_CLASS
108   from FND_LANGUAGES L
109   where L.INSTALLED_FLAG in ('I', 'B')
110   and not exists
111     (select NULL
112     from ICX_CAT_DESCRIPTORS_TL T
113     where T.RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID
114     and T.LANGUAGE = L.LANGUAGE_CODE);
115 
116   open c;
117   fetch c into X_ROWID;
118   if (c%notfound) then
119     close c;
120     raise no_data_found;
121   end if;
122   close c;
123 
124 end INSERT_ROW;
125 
126 procedure LOCK_ROW (
127   X_RT_DESCRIPTOR_ID in NUMBER,
128   X_KEY in VARCHAR2,
129   X_DESCRIPTOR_NAME in VARCHAR2,
130   X_DESCRIPTION in VARCHAR2,
131   X_RT_CATEGORY_ID in NUMBER,
132   X_TYPE in NUMBER,
133   X_SEARCH_RESULTS_VISIBLE in VARCHAR2,
134   X_ITEM_DETAIL_VISIBLE in VARCHAR2,
135   X_REQUIRED in NUMBER,
136   X_REFINABLE in NUMBER,
137   X_SEARCHABLE in NUMBER,
138   X_VALIDATED in NUMBER,
139   X_SEQUENCE in NUMBER,
140   X_TITLE in VARCHAR2,
141   X_DEFAULTVALUE in VARCHAR2,
142   X_MULTI_VALUE_TYPE in NUMBER,
143   X_MULTI_VALUE_KEY in VARCHAR2
144 ) is
145   cursor c1 is select
146       RT_DESCRIPTOR_ID,
147       KEY,
148       DESCRIPTOR_NAME,
149       DESCRIPTION,
150       RT_CATEGORY_ID,
151       TYPE,
152       SEARCH_RESULTS_VISIBLE,
153       ITEM_DETAIL_VISIBLE,
154       REQUIRED,
155       REFINABLE,
156       SEARCHABLE,
157       VALIDATED,
158       SEQUENCE,
159       TITLE,
160       DEFAULTVALUE,
161       MULTI_VALUE_TYPE,
162       MULTI_VALUE_KEY,
163       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
164     from ICX_CAT_DESCRIPTORS_TL
165     where RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID
166     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
167     for update of RT_DESCRIPTOR_ID nowait;
168 begin
169   for tlinfo in c1 loop
170     if (tlinfo.BASELANG = 'Y') then
171       if (    (tlinfo.KEY = X_KEY)
172           AND (tlinfo.DESCRIPTOR_NAME = X_DESCRIPTOR_NAME)
173           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
174                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
175           AND (tlinfo.RT_CATEGORY_ID = X_RT_CATEGORY_ID)
176           AND (tlinfo.TYPE = X_TYPE)
177           AND ((tlinfo.SEARCH_RESULTS_VISIBLE = X_SEARCH_RESULTS_VISIBLE)
178                OR ((tlinfo.SEARCH_RESULTS_VISIBLE is null) AND (X_SEARCH_RESULTS_VISIBLE is null)))
179           AND ((tlinfo.ITEM_DETAIL_VISIBLE = X_ITEM_DETAIL_VISIBLE)
180                OR ((tlinfo.ITEM_DETAIL_VISIBLE is null) AND (X_ITEM_DETAIL_VISIBLE is null)))
181           AND ((tlinfo.REQUIRED = X_REQUIRED)
182                OR ((tlinfo.REQUIRED is null) AND (X_REQUIRED is null)))
183           AND ((tlinfo.REFINABLE = X_REFINABLE)
184                OR ((tlinfo.REFINABLE is null) AND (X_REFINABLE is null)))
185           AND ((tlinfo.SEARCHABLE = X_SEARCHABLE)
186                OR ((tlinfo.SEARCHABLE is null) AND (X_SEARCHABLE is null)))
187           AND ((tlinfo.VALIDATED = X_VALIDATED)
188                OR ((tlinfo.VALIDATED is null) AND (X_VALIDATED is null)))
189           AND ((tlinfo.SEQUENCE = X_SEQUENCE)
190                OR ((tlinfo.SEQUENCE is null) AND (X_SEQUENCE is null)))
191           AND ((tlinfo.TITLE = X_TITLE)
192                OR ((tlinfo.TITLE is null) AND (X_TITLE is null)))
193           AND ((tlinfo.DEFAULTVALUE = X_DEFAULTVALUE)
194                OR ((tlinfo.DEFAULTVALUE is null) AND (X_DEFAULTVALUE is null)))
195           AND ((tlinfo.MULTI_VALUE_TYPE = X_MULTI_VALUE_TYPE)
196                OR ((tlinfo.MULTI_VALUE_TYPE is null) AND (X_MULTI_VALUE_TYPE is
197 null)))
198           AND ((tlinfo.MULTI_VALUE_KEY = X_MULTI_VALUE_KEY)
199                OR ((tlinfo.MULTI_VALUE_KEY is null) AND (X_MULTI_VALUE_KEY is null)))
200       ) then
201         null;
202       else
203         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
204         app_exception.raise_exception;
205       end if;
206     end if;
207   end loop;
208   return;
209 end LOCK_ROW;
210 
211 procedure UPDATE_ROW (
212   X_RT_DESCRIPTOR_ID in NUMBER,
213   X_KEY in VARCHAR2,
214   X_DESCRIPTOR_NAME in VARCHAR2,
215   X_DESCRIPTION in VARCHAR2,
216   X_RT_CATEGORY_ID in NUMBER,
217   X_TYPE in NUMBER,
218   X_SEARCH_RESULTS_VISIBLE in VARCHAR2,
219   X_ITEM_DETAIL_VISIBLE in VARCHAR2,
220   X_REQUIRED in NUMBER,
221   X_REFINABLE in NUMBER,
222   X_SEARCHABLE in NUMBER,
223   X_VALIDATED in NUMBER,
224   X_SEQUENCE in NUMBER,
225   X_TITLE in VARCHAR2,
226   X_DEFAULTVALUE in VARCHAR2,
227   X_MULTI_VALUE_TYPE in NUMBER,
228   X_MULTI_VALUE_KEY in VARCHAR2,
229   X_LAST_UPDATED_BY in NUMBER,
230   X_LAST_UPDATE_DATE in DATE,
231   X_LAST_UPDATE_LOGIN in NUMBER,
232   X_REQUEST_ID in NUMBER,
233   X_PROGRAM_APPLICATION_ID in NUMBER,
234   X_PROGRAM_ID in NUMBER,
235   X_PROGRAM_UPDATE_DATE in DATE,
236   X_STORED_IN_TABLE in VARCHAR2,
237   X_STORED_IN_COLUMN in VARCHAR2,
238   X_SECTION_TAG in NUMBER,
239   X_CLASS in VARCHAR2
240 ) is
241 begin
242   --Attributes that are not translated i.e rt_category_id, key, type,
243   --search_resuls_visible, item_detail_visible, required, refinable,
244   --searchable, sequence, stored_in_table, stored_in_column,
245   --section_tag and class should be updated
246   --for all rows irrespective of the language and source_lang
247   --So changed the update statement into two update statements,
248   --first sql non-translated values only for those descriptors which are
249   --not customized i.e. for a descriptor there should
250   --be no row with the last_updated_by <> -1.
251   --and the secpnd sql updates the translated values, for the descriptors
252   --which were not already translated by the customers
253   --due the clause (userenv('LANG') in (LANGUAGE, SOURCE_LANG))
254   update ICX_CAT_DESCRIPTORS_TL o set
255     KEY = X_KEY,
256     RT_CATEGORY_ID = X_RT_CATEGORY_ID,
257     TYPE = X_TYPE,
258     SEARCH_RESULTS_VISIBLE = X_SEARCH_RESULTS_VISIBLE,
259     ITEM_DETAIL_VISIBLE = X_ITEM_DETAIL_VISIBLE,
260     REQUIRED = X_REQUIRED,
261     REFINABLE = X_REFINABLE,
262     SEARCHABLE = X_SEARCHABLE,
263     SEQUENCE = X_SEQUENCE,
264     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
265     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
266     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
267     REQUEST_ID = X_REQUEST_ID,
268     PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
269     PROGRAM_ID = X_PROGRAM_ID,
270     PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE,
271     STORED_IN_TABLE = X_STORED_IN_TABLE,
272     STORED_IN_COLUMN = X_STORED_IN_COLUMN,
273     SECTION_TAG = X_SECTION_TAG,
274     CLASS = X_CLASS
275   where RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID
276     and not exists ( select null from ICX_CAT_DESCRIPTORS_TL i
277                       where i.RT_DESCRIPTOR_ID = o.RT_DESCRIPTOR_ID
278                         and i.LAST_UPDATED_BY <>  -1);
279 
280   update ICX_CAT_DESCRIPTORS_TL set
281     DESCRIPTOR_NAME = X_DESCRIPTOR_NAME,
282     DESCRIPTION = X_DESCRIPTION,
283     VALIDATED = X_VALIDATED,
284     TITLE = X_TITLE,
285     DEFAULTVALUE = X_DEFAULTVALUE,
286     MULTI_VALUE_TYPE = X_MULTI_VALUE_TYPE,
287     MULTI_VALUE_KEY = X_MULTI_VALUE_KEY,
288     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
289     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
290     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
291     REQUEST_ID = X_REQUEST_ID,
292     PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
293     PROGRAM_ID = X_PROGRAM_ID,
294     PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE,
295     SOURCE_LANG = userenv('LANG')
296   where RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID
297   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
298 
299   if (sql%notfound) then
300     raise no_data_found;
301   end if;
302 end UPDATE_ROW;
303 
304 procedure DELETE_ROW (
305   X_RT_DESCRIPTOR_ID in NUMBER
306 ) is
307 begin
308   delete from ICX_CAT_DESCRIPTORS_TL
309   where RT_DESCRIPTOR_ID = X_RT_DESCRIPTOR_ID;
310 
311   if (sql%notfound) then
312     raise no_data_found;
313   end if;
314 
315 end DELETE_ROW;
316 
317 
318 procedure TRANSLATE_ROW(
319   X_RT_DESCRIPTOR_ID            in      VARCHAR2,
320   X_OWNER                       in      VARCHAR2,
321   X_DESCRIPTOR_NAME             in      VARCHAR2,
322   X_DESCRIPTION                 in      VARCHAR2) is
323 begin
324 
325   update icx_cat_descriptors_tl set
326     descriptor_name 	     = nvl(X_DESCRIPTOR_NAME, DESCRIPTOR_NAME),
327     description              = nvl(X_DESCRIPTION, DESCRIPTION),
328     source_lang              = userenv('LANG'),
329     last_update_date         = sysdate,
330     last_updated_by          = decode(X_OWNER, 'SEED', -1, 0),
331     last_update_login        = 0
332   where rt_descriptor_id = to_number(X_RT_DESCRIPTOR_ID)
333   and userenv('LANG') in (language, source_lang);
334 
335 end TRANSLATE_ROW;
336 
337 
338 procedure LOAD_ROW(
339   X_DESCRIPTOR_ID               in      VARCHAR2,
340   X_OWNER                       in      VARCHAR2,
341   X_KEY                         in      VARCHAR2,
342   X_DESCRIPTOR_NAME             in      VARCHAR2,
343   X_DESCRIPTION                 in      VARCHAR2,
344   X_CATEGORY_ID                 in      VARCHAR2,
345   X_TYPE                        in      VARCHAR2,
346   X_SEARCH_RESULTS_VISIBLE      in      VARCHAR2,
347   X_ITEM_DETAIL_VISIBLE         in      VARCHAR2,
348   X_REQUIRED                    in      VARCHAR2,
349   X_REFINABLE                   in      VARCHAR2,
350   X_SEARCHABLE                  in      VARCHAR2,
351   X_VALIDATED                   in      VARCHAR2,
352   X_SEQUENCE                    in      VARCHAR2,
353   X_TITLE                       in      VARCHAR2,
354   X_DEFAULTVALUE                in      VARCHAR2,
355   X_MULTI_VALUE_TYPE            in      VARCHAR2,
356   X_MULTI_VALUE_KEY             in      VARCHAR2,
357   X_STORED_IN_TABLE             in      VARCHAR2,
358   X_STORED_IN_COLUMN            in      VARCHAR2,
359   X_SECTION_TAG                 in      NUMBER,
360   X_CLASS            		in      VARCHAR2
361 ) is
362 begin
363 
364   declare
365      user_id    number := 0;
366      row_id     varchar2(64);
367 
368   begin
369      if (X_OWNER = 'SEED') then
370        user_id := -1;
371      end if;
372 
373      ICX_CAT_DESCRIPTORS_PKG.UPDATE_ROW (
374           X_RT_DESCRIPTOR_ID =>         to_number(X_DESCRIPTOR_ID),
375           X_KEY =>                      X_KEY,
376           X_DESCRIPTOR_NAME =>          X_DESCRIPTOR_NAME,
377           X_DESCRIPTION =>              X_DESCRIPTION,
378           X_RT_CATEGORY_ID =>           to_number(X_CATEGORY_ID),
379           X_TYPE =>                     to_number(X_TYPE),
380           X_SEARCH_RESULTS_VISIBLE =>   X_SEARCH_RESULTS_VISIBLE,
381           X_ITEM_DETAIL_VISIBLE =>      X_ITEM_DETAIL_VISIBLE,
382           X_REQUIRED =>                 to_number(X_REQUIRED),
383           X_REFINABLE =>                to_number(X_REFINABLE),
384           X_SEARCHABLE =>               to_number(X_SEARCHABLE),
385           X_VALIDATED =>                to_number(X_VALIDATED),
386           X_SEQUENCE =>                 to_number(X_SEQUENCE),
387           X_TITLE =>                    X_TITLE,
388           X_DEFAULTVALUE =>             X_DEFAULTVALUE,
389           X_MULTI_VALUE_TYPE =>         to_number(X_MULTI_VALUE_TYPE),
390           X_MULTI_VALUE_KEY =>          X_MULTI_VALUE_KEY,
391           X_LAST_UPDATED_BY =>          user_id,
392           X_LAST_UPDATE_DATE =>         sysdate,
393           X_LAST_UPDATE_LOGIN =>        0,
394           X_REQUEST_ID =>               null,
395           X_PROGRAM_APPLICATION_ID =>   null,
396           X_PROGRAM_ID =>     		null,
397           X_PROGRAM_UPDATE_DATE =>      null,
398           X_STORED_IN_TABLE =>     	X_STORED_IN_TABLE,
399           X_STORED_IN_COLUMN =>      	X_STORED_IN_COLUMN,
400           X_SECTION_TAG =>      	X_SECTION_TAG,
401           X_CLASS =>      	X_CLASS
402 );
403 
404   exception
405      when NO_DATA_FOUND then
406 
407        ICX_CAT_DESCRIPTORS_PKG.INSERT_ROW (
408           X_ROWID =>                    row_id,
409           X_RT_DESCRIPTOR_ID =>         to_number(X_DESCRIPTOR_ID),
410           X_KEY =>                      X_KEY,
411           X_DESCRIPTOR_NAME =>          X_DESCRIPTOR_NAME,
412           X_DESCRIPTION =>              X_DESCRIPTION,
413           X_RT_CATEGORY_ID =>           to_number(X_CATEGORY_ID),
414           X_TYPE =>                     to_number(X_TYPE),
415           X_SEARCH_RESULTS_VISIBLE =>   X_SEARCH_RESULTS_VISIBLE,
416           X_ITEM_DETAIL_VISIBLE =>      X_ITEM_DETAIL_VISIBLE,
417           X_REQUIRED =>                 to_number(X_REQUIRED),
418           X_REFINABLE =>                to_number(X_REFINABLE),
419           X_SEARCHABLE =>               to_number(X_SEARCHABLE),
420           X_VALIDATED =>                to_number(X_VALIDATED),
421           X_SEQUENCE =>                 to_number(X_SEQUENCE),
422           X_TITLE =>                    X_TITLE,
423           X_DEFAULTVALUE =>             X_DEFAULTVALUE,
424           X_MULTI_VALUE_TYPE =>         to_number(X_MULTI_VALUE_TYPE),
425           X_MULTI_VALUE_KEY =>          X_MULTI_VALUE_KEY,
426           X_CREATED_BY =>               user_id,
427           X_CREATION_DATE =>            sysdate,
428           X_LAST_UPDATED_BY =>          user_id,
429           X_LAST_UPDATE_DATE =>         sysdate,
430           X_LAST_UPDATE_LOGIN =>        0,
431           X_REQUEST_ID =>               null,
432           X_PROGRAM_APPLICATION_ID =>   null,
433           X_PROGRAM_ID =>     		null,
434           X_PROGRAM_UPDATE_DATE =>      null,
435           X_STORED_IN_TABLE =>     	X_STORED_IN_TABLE,
436           X_STORED_IN_COLUMN =>      	X_STORED_IN_COLUMN,
437           X_SECTION_TAG =>      	X_SECTION_TAG,
438           X_CLASS =>      	X_CLASS);
439 
440   end;
441 end LOAD_ROW;
442 
443 
444 procedure ADD_LANGUAGE
445 is
446 begin
447   /* comment out for bug 2085107
448   update ICX_CAT_DESCRIPTORS_TL T set (
449       DESCRIPTOR_NAME,
450       DESCRIPTION
451     ) = (select
452       B.DESCRIPTOR_NAME,
453       B.DESCRIPTION
454     from ICX_CAT_DESCRIPTORS_TL B
455     where B.RT_DESCRIPTOR_ID = T.RT_DESCRIPTOR_ID
456     and B.LANGUAGE = T.SOURCE_LANG)
457   where (
458       T.RT_DESCRIPTOR_ID,
459       T.LANGUAGE
460   ) in (select
461       SUBT.RT_DESCRIPTOR_ID,
462       SUBT.LANGUAGE
463     from ICX_CAT_DESCRIPTORS_TL SUBB, ICX_POR_DESCRIPTORS_TL SUBT
464     where SUBB.RT_DESCRIPTOR_ID = SUBT.RT_DESCRIPTOR_ID
465     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
466     and (SUBB.DESCRIPTOR_NAME <> SUBT.DESCRIPTOR_NAME
467       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
468       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
469       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
470   ));
471   */
472 
473 
474   insert into ICX_CAT_DESCRIPTORS_TL (
475     RT_DESCRIPTOR_ID,
476     KEY,
477     DESCRIPTOR_NAME,
478     DESCRIPTION,
479     RT_CATEGORY_ID,
480     TYPE,
481     SEARCH_RESULTS_VISIBLE,
482     ITEM_DETAIL_VISIBLE,
483     REQUIRED,
484     REFINABLE,
485     SEARCHABLE,
486     VALIDATED,
487     SEQUENCE,
488     TITLE,
489     DEFAULTVALUE,
490     MULTI_VALUE_TYPE,
491     MULTI_VALUE_KEY,
492     CLASS,
493     CUSTOMIZATION_LEVEL,
494     SECTION_TAG,
495     CREATED_BY,
496     CREATION_DATE,
497     LAST_UPDATED_BY,
498     LAST_UPDATE_DATE,
499     LAST_UPDATE_LOGIN,
500     REQUEST_ID,
501     PROGRAM_APPLICATION_ID,
502     PROGRAM_ID,
503     PROGRAM_UPDATE_DATE,
504     LANGUAGE,
505     SOURCE_LANG,
506     STORED_IN_TABLE,
507     STORED_IN_COLUMN
508   ) select
509     B.RT_DESCRIPTOR_ID,
510     B.KEY,
511     B.DESCRIPTOR_NAME,
512     B.DESCRIPTION,
513     B.RT_CATEGORY_ID,
514     B.TYPE,
515     B.SEARCH_RESULTS_VISIBLE,
516     B.ITEM_DETAIL_VISIBLE,
517     B.REQUIRED,
518     B.REFINABLE,
519     B.SEARCHABLE,
520     B.VALIDATED,
521     B.SEQUENCE,
522     B.TITLE,
523     B.DEFAULTVALUE,
524     B.MULTI_VALUE_TYPE,
525     B.MULTI_VALUE_KEY,
526     B.CLASS,
527     B.CUSTOMIZATION_LEVEL,
528     B.SECTION_TAG,
529     B.CREATED_BY,
530     B.CREATION_DATE,
531     B.LAST_UPDATED_BY,
532     B.LAST_UPDATE_DATE,
533     B.LAST_UPDATE_LOGIN,
534     B.REQUEST_ID,
535     B.PROGRAM_APPLICATION_ID,
536     B.PROGRAM_ID,
537     B.PROGRAM_UPDATE_DATE,
538     L.LANGUAGE_CODE,
539     B.SOURCE_LANG,
540     B.STORED_IN_TABLE,
541     B.STORED_IN_COLUMN
542   from ICX_CAT_DESCRIPTORS_TL B, FND_LANGUAGES L
543   where L.INSTALLED_FLAG in ('I', 'B')
544   and B.LANGUAGE = userenv('LANG')
545   and not exists
546     (select NULL
547     from ICX_CAT_DESCRIPTORS_TL T
548     where T.RT_DESCRIPTOR_ID = B.RT_DESCRIPTOR_ID
549     and T.LANGUAGE = L.LANGUAGE_CODE);
550 
551 end ADD_LANGUAGE;
552 
553 end ICX_CAT_DESCRIPTORS_PKG;