DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_VAL_ATTRIBUTE_TYPES_PKG

Source


1 package body FND_VAL_ATTRIBUTE_TYPES_PKG as
2 /* $Header: AFFFVATB.pls 120.2.12010000.1 2008/07/25 14:14:45 appldev ship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID IN OUT NOCOPY VARCHAR2,
6   X_APPLICATION_ID in NUMBER,
7   X_ID_FLEX_CODE in VARCHAR2,
8   X_SEGMENT_ATTRIBUTE_TYPE in VARCHAR2,
9   X_VALUE_ATTRIBUTE_TYPE in VARCHAR2,
10   X_REQUIRED_FLAG in VARCHAR2,
11   X_APPLICATION_COLUMN_NAME in VARCHAR2,
12   X_DEFAULT_VALUE in VARCHAR2,
13   X_LOOKUP_TYPE in VARCHAR2,
14   X_DERIVATION_RULE_CODE in VARCHAR2,
15   X_DERIVATION_RULE_VALUE1 in VARCHAR2,
16   X_DERIVATION_RULE_VALUE2 in VARCHAR2,
17   X_PROMPT in VARCHAR2,
18   X_DESCRIPTION in VARCHAR2,
19   X_CREATION_DATE in DATE,
20   X_CREATED_BY in NUMBER,
21   X_LAST_UPDATE_DATE in DATE,
22   X_LAST_UPDATED_BY in NUMBER,
23   X_LAST_UPDATE_LOGIN in NUMBER
24 ) is
25   cursor C is select ROWID from FND_VALUE_ATTRIBUTE_TYPES
26     where APPLICATION_ID = X_APPLICATION_ID
27     and ID_FLEX_CODE = X_ID_FLEX_CODE
28     and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
29     and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE
30     ;
31 begin
32   insert into FND_VALUE_ATTRIBUTE_TYPES (
33     APPLICATION_ID,
34     ID_FLEX_CODE,
35     SEGMENT_ATTRIBUTE_TYPE,
36     VALUE_ATTRIBUTE_TYPE,
37     REQUIRED_FLAG,
38     APPLICATION_COLUMN_NAME,
39     DEFAULT_VALUE,
40     LOOKUP_TYPE,
41     DERIVATION_RULE_CODE,
42     DERIVATION_RULE_VALUE1,
43     DERIVATION_RULE_VALUE2,
44     CREATION_DATE,
45     CREATED_BY,
46     LAST_UPDATE_DATE,
47     LAST_UPDATED_BY,
48     LAST_UPDATE_LOGIN
49   ) values (
50     X_APPLICATION_ID,
51     X_ID_FLEX_CODE,
52     X_SEGMENT_ATTRIBUTE_TYPE,
53     X_VALUE_ATTRIBUTE_TYPE,
54     X_REQUIRED_FLAG,
55     X_APPLICATION_COLUMN_NAME,
56     X_DEFAULT_VALUE,
57     X_LOOKUP_TYPE,
58     X_DERIVATION_RULE_CODE,
59     X_DERIVATION_RULE_VALUE1,
60     X_DERIVATION_RULE_VALUE2,
61     X_CREATION_DATE,
62     X_CREATED_BY,
63     X_LAST_UPDATE_DATE,
64     X_LAST_UPDATED_BY,
65     X_LAST_UPDATE_LOGIN
66   );
67 
68   insert into FND_VAL_ATTRIBUTE_TYPES_TL (
69     APPLICATION_ID,
70     ID_FLEX_CODE,
71     SEGMENT_ATTRIBUTE_TYPE,
72     VALUE_ATTRIBUTE_TYPE,
73     PROMPT,
74     LAST_UPDATE_DATE,
75     LAST_UPDATED_BY,
76     CREATION_DATE,
77     CREATED_BY,
78     LAST_UPDATE_LOGIN,
79     DESCRIPTION,
80     LANGUAGE,
81     SOURCE_LANG
82   ) select
83     X_APPLICATION_ID,
84     X_ID_FLEX_CODE,
85     X_SEGMENT_ATTRIBUTE_TYPE,
86     X_VALUE_ATTRIBUTE_TYPE,
87     X_PROMPT,
88     X_LAST_UPDATE_DATE,
89     X_LAST_UPDATED_BY,
90     X_CREATION_DATE,
91     X_CREATED_BY,
92     X_LAST_UPDATE_LOGIN,
93     X_DESCRIPTION,
94     L.LANGUAGE_CODE,
95     userenv('LANG')
96   from FND_LANGUAGES L
97   where L.INSTALLED_FLAG in ('I', 'B')
98   and not exists
99     (select NULL
100     from FND_VAL_ATTRIBUTE_TYPES_TL T
101     where T.APPLICATION_ID = X_APPLICATION_ID
102     and T.ID_FLEX_CODE = X_ID_FLEX_CODE
103     and T.SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
104     and T.VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE
105     and T.LANGUAGE = L.LANGUAGE_CODE);
106 
107   open c;
108   fetch c into X_ROWID;
109   if (c%notfound) then
110     close c;
111     raise no_data_found;
112   end if;
113   close c;
114 
115 end INSERT_ROW;
116 
117 procedure LOCK_ROW (
118   X_APPLICATION_ID in NUMBER,
119   X_ID_FLEX_CODE in VARCHAR2,
120   X_SEGMENT_ATTRIBUTE_TYPE in VARCHAR2,
121   X_VALUE_ATTRIBUTE_TYPE in VARCHAR2,
122   X_REQUIRED_FLAG in VARCHAR2,
123   X_APPLICATION_COLUMN_NAME in VARCHAR2,
124   X_DEFAULT_VALUE in VARCHAR2,
125   X_LOOKUP_TYPE in VARCHAR2,
126   X_DERIVATION_RULE_CODE in VARCHAR2,
127   X_DERIVATION_RULE_VALUE1 in VARCHAR2,
128   X_DERIVATION_RULE_VALUE2 in VARCHAR2,
129   X_PROMPT in VARCHAR2,
130   X_DESCRIPTION in VARCHAR2
131 ) is
132   cursor c is select
133       REQUIRED_FLAG,
134       APPLICATION_COLUMN_NAME,
135       DEFAULT_VALUE,
136       LOOKUP_TYPE,
137       DERIVATION_RULE_CODE,
138       DERIVATION_RULE_VALUE1,
139       DERIVATION_RULE_VALUE2
140     from FND_VALUE_ATTRIBUTE_TYPES
141     where APPLICATION_ID = X_APPLICATION_ID
142     and ID_FLEX_CODE = X_ID_FLEX_CODE
143     and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
144     and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE
145     for update of APPLICATION_ID nowait;
146   recinfo c%rowtype;
147 
148   cursor c1 is select
149       PROMPT,
150       DESCRIPTION
151     from FND_VAL_ATTRIBUTE_TYPES_TL
152     where APPLICATION_ID = X_APPLICATION_ID
153     and ID_FLEX_CODE = X_ID_FLEX_CODE
154     and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
155     and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE
156     and LANGUAGE = userenv('LANG')
157     for update of APPLICATION_ID nowait;
158   tlinfo c1%rowtype;
159 
160 begin
161   open c;
162   fetch c into recinfo;
163   if (c%notfound) then
164     close c;
165     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
166     app_exception.raise_exception;
167   end if;
168   close c;
169   if (    (recinfo.REQUIRED_FLAG = X_REQUIRED_FLAG)
170       AND (recinfo.APPLICATION_COLUMN_NAME = X_APPLICATION_COLUMN_NAME)
171       AND ((recinfo.DEFAULT_VALUE = X_DEFAULT_VALUE)
172            OR ((recinfo.DEFAULT_VALUE is null) AND (X_DEFAULT_VALUE is null)))
173       AND ((recinfo.LOOKUP_TYPE = X_LOOKUP_TYPE)
174            OR ((recinfo.LOOKUP_TYPE is null) AND (X_LOOKUP_TYPE is null)))
175       AND ((recinfo.DERIVATION_RULE_CODE = X_DERIVATION_RULE_CODE)
176            OR ((recinfo.DERIVATION_RULE_CODE is null) AND (X_DERIVATION_RULE_CODE is null)))
177       AND ((recinfo.DERIVATION_RULE_VALUE1 = X_DERIVATION_RULE_VALUE1)
178            OR ((recinfo.DERIVATION_RULE_VALUE1 is null) AND (X_DERIVATION_RULE_VALUE1 is null)))
179       AND ((recinfo.DERIVATION_RULE_VALUE2 = X_DERIVATION_RULE_VALUE2)
180            OR ((recinfo.DERIVATION_RULE_VALUE2 is null) AND (X_DERIVATION_RULE_VALUE2 is null)))
181   ) then
182     null;
183   else
184     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
185     app_exception.raise_exception;
186   end if;
187 
188   open c1;
189   fetch c1 into tlinfo;
190   if (c1%notfound) then
191     close c1;
192     return;
193   end if;
194   close c1;
195 
196   if (    (tlinfo.PROMPT = X_PROMPT)
197       AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
198            OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
199   ) then
200     null;
201   else
202     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
203     app_exception.raise_exception;
204   end if;
205   return;
206 end LOCK_ROW;
207 
208 procedure UPDATE_ROW (
209   X_APPLICATION_ID in NUMBER,
210   X_ID_FLEX_CODE in VARCHAR2,
211   X_SEGMENT_ATTRIBUTE_TYPE in VARCHAR2,
212   X_VALUE_ATTRIBUTE_TYPE in VARCHAR2,
213   X_REQUIRED_FLAG in VARCHAR2,
214   X_APPLICATION_COLUMN_NAME in VARCHAR2,
215   X_DEFAULT_VALUE in VARCHAR2,
216   X_LOOKUP_TYPE in VARCHAR2,
217   X_DERIVATION_RULE_CODE in VARCHAR2,
218   X_DERIVATION_RULE_VALUE1 in VARCHAR2,
219   X_DERIVATION_RULE_VALUE2 in VARCHAR2,
220   X_PROMPT in VARCHAR2,
221   X_DESCRIPTION in VARCHAR2,
222   X_LAST_UPDATE_DATE in DATE,
223   X_LAST_UPDATED_BY in NUMBER,
224   X_LAST_UPDATE_LOGIN in NUMBER
225 ) is
226 begin
227   update FND_VALUE_ATTRIBUTE_TYPES set
228     REQUIRED_FLAG = X_REQUIRED_FLAG,
229     APPLICATION_COLUMN_NAME = X_APPLICATION_COLUMN_NAME,
230     DEFAULT_VALUE = X_DEFAULT_VALUE,
231     LOOKUP_TYPE = X_LOOKUP_TYPE,
232     DERIVATION_RULE_CODE = X_DERIVATION_RULE_CODE,
233     DERIVATION_RULE_VALUE1 = X_DERIVATION_RULE_VALUE1,
234     DERIVATION_RULE_VALUE2 = X_DERIVATION_RULE_VALUE2,
235     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
236     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
237     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
238   where APPLICATION_ID = X_APPLICATION_ID
239   and ID_FLEX_CODE = X_ID_FLEX_CODE
240   and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
241   and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE;
242 
243   if (sql%notfound) then
244     raise no_data_found;
245   end if;
246 
247   update FND_VAL_ATTRIBUTE_TYPES_TL set
248     PROMPT = X_PROMPT,
249     DESCRIPTION = X_DESCRIPTION,
250     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
251     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
252     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
253     SOURCE_LANG = userenv('LANG')
254   where APPLICATION_ID = X_APPLICATION_ID
255   and ID_FLEX_CODE = X_ID_FLEX_CODE
256   and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
257   and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE
258   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
259 
260   if (sql%notfound) then
261     raise no_data_found;
262   end if;
263 end UPDATE_ROW;
264 
265 procedure DELETE_ROW (
266   X_APPLICATION_ID in NUMBER,
267   X_ID_FLEX_CODE in VARCHAR2,
268   X_SEGMENT_ATTRIBUTE_TYPE in VARCHAR2,
269   X_VALUE_ATTRIBUTE_TYPE in VARCHAR2
270 ) is
271 begin
272   delete from FND_VALUE_ATTRIBUTE_TYPES
273   where APPLICATION_ID = X_APPLICATION_ID
274   and ID_FLEX_CODE = X_ID_FLEX_CODE
275   and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
276   and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE;
277 
278   if (sql%notfound) then
279     raise no_data_found;
280   end if;
281 
282   delete from FND_VAL_ATTRIBUTE_TYPES_TL
283   where APPLICATION_ID = X_APPLICATION_ID
284   and ID_FLEX_CODE = X_ID_FLEX_CODE
285   and SEGMENT_ATTRIBUTE_TYPE = X_SEGMENT_ATTRIBUTE_TYPE
286   and VALUE_ATTRIBUTE_TYPE = X_VALUE_ATTRIBUTE_TYPE;
287 
288   if (sql%notfound) then
289     raise no_data_found;
290   end if;
291 end DELETE_ROW;
292 
293 procedure ADD_LANGUAGE
294  is
295  begin
296 /* Mar/19/03 requested by Ric Ginsberg */
297 /* The following delete and update statements are commented out */
298 /* as a quick workaround to fix the time-consuming table handler issue */
299 /* Eventually we'll need to turn them into a separate fix_language procedure */
300 /*
301 
302    delete from FND_VAL_ATTRIBUTE_TYPES_TL T
303    where not exists
304      (select NULL
305      from FND_VALUE_ATTRIBUTE_TYPES B
306      where B.APPLICATION_ID = T.APPLICATION_ID
307      and B.ID_FLEX_CODE = T.ID_FLEX_CODE
308      and B.SEGMENT_ATTRIBUTE_TYPE = T.SEGMENT_ATTRIBUTE_TYPE
309      and B.VALUE_ATTRIBUTE_TYPE = T.VALUE_ATTRIBUTE_TYPE
310      );
311 
312    update FND_VAL_ATTRIBUTE_TYPES_TL T set (
313        PROMPT,
314        DESCRIPTION
315      ) = (select
316        B.PROMPT,
317        B.DESCRIPTION
318      from FND_VAL_ATTRIBUTE_TYPES_TL B
319      where B.APPLICATION_ID = T.APPLICATION_ID
320      and B.ID_FLEX_CODE = T.ID_FLEX_CODE
321      and B.SEGMENT_ATTRIBUTE_TYPE = T.SEGMENT_ATTRIBUTE_TYPE
322      and B.VALUE_ATTRIBUTE_TYPE = T.VALUE_ATTRIBUTE_TYPE
323      and B.LANGUAGE = T.SOURCE_LANG)
324    where (
325        T.APPLICATION_ID,
326        T.ID_FLEX_CODE,
327        T.SEGMENT_ATTRIBUTE_TYPE,
328        T.VALUE_ATTRIBUTE_TYPE,
329        T.LANGUAGE
330    ) in (select
331        SUBT.APPLICATION_ID,
332        SUBT.ID_FLEX_CODE,
333        SUBT.SEGMENT_ATTRIBUTE_TYPE,
334        SUBT.VALUE_ATTRIBUTE_TYPE,
335        SUBT.LANGUAGE
336      from FND_VAL_ATTRIBUTE_TYPES_TL SUBB, FND_VAL_ATTRIBUTE_TYPES_TL SUBT
337      where SUBB.APPLICATION_ID = SUBT.APPLICATION_ID
338      and SUBB.ID_FLEX_CODE = SUBT.ID_FLEX_CODE
339      and SUBB.SEGMENT_ATTRIBUTE_TYPE = SUBT.SEGMENT_ATTRIBUTE_TYPE
340      and SUBB.VALUE_ATTRIBUTE_TYPE = SUBT.VALUE_ATTRIBUTE_TYPE
341      and SUBB.LANGUAGE = SUBT.SOURCE_LANG
342      and (SUBB.PROMPT <> SUBT.PROMPT
343        or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
344        or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
345        or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
346    ));
347 */
348 
349    insert into FND_VAL_ATTRIBUTE_TYPES_TL (
350      APPLICATION_ID,
351      ID_FLEX_CODE,
352      SEGMENT_ATTRIBUTE_TYPE,
353      VALUE_ATTRIBUTE_TYPE,
354      PROMPT,
355      LAST_UPDATE_DATE,
356      LAST_UPDATED_BY,
357      CREATION_DATE,
358      CREATED_BY,
359      LAST_UPDATE_LOGIN,
360      DESCRIPTION,
361      LANGUAGE,
362      SOURCE_LANG
363    ) select
364      B.APPLICATION_ID,
365      B.ID_FLEX_CODE,
366      B.SEGMENT_ATTRIBUTE_TYPE,
367      B.VALUE_ATTRIBUTE_TYPE,
368      B.PROMPT,
369      B.LAST_UPDATE_DATE,
370      B.LAST_UPDATED_BY,
371      B.CREATION_DATE,
372      B.CREATED_BY,
373      B.LAST_UPDATE_LOGIN,
374      B.DESCRIPTION,
375      L.LANGUAGE_CODE,
376      B.SOURCE_LANG
377    from FND_VAL_ATTRIBUTE_TYPES_TL B, FND_LANGUAGES L
378    where L.INSTALLED_FLAG in ('I', 'B')
379    and B.LANGUAGE = userenv('LANG')
380    and not exists
381      (select NULL
382      from FND_VAL_ATTRIBUTE_TYPES_TL T
383      where T.APPLICATION_ID = B.APPLICATION_ID
384      and T.ID_FLEX_CODE = B.ID_FLEX_CODE
385      and T.SEGMENT_ATTRIBUTE_TYPE = B.SEGMENT_ATTRIBUTE_TYPE
386      and T.VALUE_ATTRIBUTE_TYPE = B.VALUE_ATTRIBUTE_TYPE
387      and T.LANGUAGE = L.LANGUAGE_CODE);
388 end ADD_LANGUAGE;
389 
390 PROCEDURE load_row
391   (x_application_short_name       IN VARCHAR2,
392    x_id_flex_code                 IN VARCHAR2,
393    x_segment_attribute_type       IN VARCHAR2,
394    x_value_attribute_type         IN VARCHAR2,
395    x_who                          IN fnd_flex_loader_apis.who_type,
396    x_required_flag                IN VARCHAR2,
397    x_application_column_name      IN VARCHAR2,
398    x_default_value                IN VARCHAR2,
399    x_lookup_type                  IN VARCHAR2,
400    x_derivation_rule_code         IN VARCHAR2,
401    x_derivation_rule_value1       IN VARCHAR2,
402    x_derivation_rule_value2       IN VARCHAR2,
403    x_prompt                       IN VARCHAR2,
404    x_description                  IN VARCHAR2)
405   IS
406      l_application_id    NUMBER;
407      l_rowid             VARCHAR2(64);
408 BEGIN
409    SELECT application_id
410      INTO l_application_id
411      FROM fnd_application
412      WHERE application_short_name = x_application_short_name;
413 
414    BEGIN
415       fnd_val_attribute_types_pkg.update_row
416 	(X_APPLICATION_ID               => l_application_id,
417 	 X_ID_FLEX_CODE                 => x_id_flex_code,
418 	 X_SEGMENT_ATTRIBUTE_TYPE       => x_segment_attribute_type,
419 	 X_VALUE_ATTRIBUTE_TYPE         => x_value_attribute_type,
420 	 X_REQUIRED_FLAG                => x_required_flag,
421 	 X_APPLICATION_COLUMN_NAME      => x_application_column_name,
422 	 X_DEFAULT_VALUE                => x_default_value,
423 	 X_LOOKUP_TYPE                  => x_lookup_type,
424 	 X_DERIVATION_RULE_CODE         => x_derivation_rule_code,
425 	 X_DERIVATION_RULE_VALUE1       => x_derivation_rule_value1,
426 	 X_DERIVATION_RULE_VALUE2       => x_derivation_rule_value2,
427 	 X_PROMPT                       => x_prompt,
428 	 X_DESCRIPTION                  => x_description,
429 	 X_LAST_UPDATE_DATE             => x_who.last_update_date,
430 	 X_LAST_UPDATED_BY              => x_who.last_updated_by,
431 	 X_LAST_UPDATE_LOGIN            => x_who.last_update_login);
432    EXCEPTION
433       WHEN no_data_found THEN
434 	 fnd_val_attribute_types_pkg.insert_row
435 	   (X_ROWID                        => l_rowid,
436 	    X_APPLICATION_ID               => l_application_id,
437 	    X_ID_FLEX_CODE                 => x_id_flex_code,
438 	    X_SEGMENT_ATTRIBUTE_TYPE       => x_segment_attribute_type,
439 	    X_VALUE_ATTRIBUTE_TYPE         => x_value_attribute_type,
440 	    X_REQUIRED_FLAG                => x_required_flag,
441 	    X_APPLICATION_COLUMN_NAME      => x_application_column_name,
442 	    X_DEFAULT_VALUE                => x_default_value,
443 	    X_LOOKUP_TYPE                  => x_lookup_type,
444 	    X_DERIVATION_RULE_CODE         => x_derivation_rule_code,
445 	    X_DERIVATION_RULE_VALUE1       => x_derivation_rule_value1,
446 	    X_DERIVATION_RULE_VALUE2       => x_derivation_rule_value2,
447 	    X_PROMPT                       => x_prompt,
448 	    X_DESCRIPTION                  => x_description,
449 	    X_CREATION_DATE                => x_who.creation_date,
450   	    X_CREATED_BY                   => x_who.created_by,
451 	    X_LAST_UPDATE_DATE             => x_who.last_update_date,
452 	    X_LAST_UPDATED_BY              => x_who.last_updated_by,
453 	    X_LAST_UPDATE_LOGIN            => x_who.last_update_login);
454    END;
455 END load_row;
456 
457 PROCEDURE translate_row
458   (x_application_short_name       IN VARCHAR2,
459    x_id_flex_code                 IN VARCHAR2,
460    x_segment_attribute_type       IN VARCHAR2,
461    x_value_attribute_type         IN VARCHAR2,
462    x_who                          IN fnd_flex_loader_apis.who_type,
463    x_prompt                       IN VARCHAR2,
464    x_description                  IN VARCHAR2)
465   IS
466 BEGIN
467    UPDATE fnd_val_attribute_types_tl SET
468      prompt             = Nvl(x_prompt, prompt),
469      description        = Nvl(x_description, description),
470      last_update_date   = x_who.last_update_date,
471      last_updated_by    = x_who.last_updated_by,
472      last_update_login  = x_who.last_update_login,
473      source_lang        = userenv('LANG')
474      WHERE application_id = (SELECT application_id
475 			     FROM fnd_application
476 			     WHERE application_short_name = x_application_short_name)
477      AND id_flex_code = x_id_flex_code
478      AND segment_attribute_type = x_segment_attribute_type
479      AND value_attribute_type = x_value_attribute_type
480      AND userenv('LANG') in (language, source_lang);
481 END translate_row;
482 
483 end FND_VAL_ATTRIBUTE_TYPES_PKG;