DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_NATURAL_LANGUAGES_PKG

Source


1 package body FND_NATURAL_LANGUAGES_PKG as
2 /* $Header: AFNLNTLB.pls 115.1 2004/04/15 22:14:58 rsuzuki noship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in out nocopy VARCHAR2,
6   X_LANGUAGE_CODE in VARCHAR2,
7   X_ISO_LANGUAGE_3 in VARCHAR2,
8   X_ISO_TERRITORY in VARCHAR2,
9   X_ENABLED_FLAG in VARCHAR2,
10   X_NAME in VARCHAR2,
11   X_DESCRIPTION in VARCHAR2,
12   X_CREATION_DATE in DATE,
13   X_CREATED_BY in NUMBER,
14   X_LAST_UPDATE_DATE in DATE,
15   X_LAST_UPDATED_BY in NUMBER,
16   X_LAST_UPDATE_LOGIN in NUMBER
17 ) is
18   cursor C is select ROWID from FND_NATURAL_LANGUAGES
19     where LANGUAGE_CODE = X_LANGUAGE_CODE
20     ;
21 begin
22   insert into FND_NATURAL_LANGUAGES (
23     LANGUAGE_CODE,
24     ISO_LANGUAGE_3,
25     ISO_TERRITORY,
26     ENABLED_FLAG,
27     CREATION_DATE,
28     CREATED_BY,
29     LAST_UPDATE_DATE,
30     LAST_UPDATED_BY,
31     LAST_UPDATE_LOGIN
32   ) values (
33     X_LANGUAGE_CODE,
34     X_ISO_LANGUAGE_3,
35     X_ISO_TERRITORY,
36     X_ENABLED_FLAG,
37     X_CREATION_DATE,
38     X_CREATED_BY,
39     X_LAST_UPDATE_DATE,
40     X_LAST_UPDATED_BY,
41     X_LAST_UPDATE_LOGIN
42   );
43 
44   insert into FND_NATURAL_LANGUAGES_TL (
45     LANGUAGE_CODE,
46     NAME,
47     DESCRIPTION,
48     CREATED_BY,
49     CREATION_DATE,
50     LAST_UPDATED_BY,
51     LAST_UPDATE_DATE,
52     LAST_UPDATE_LOGIN,
53     LANGUAGE,
54     SOURCE_LANG
55   ) select
56     X_LANGUAGE_CODE,
57     X_NAME,
58     X_DESCRIPTION,
59     X_CREATED_BY,
60     X_CREATION_DATE,
61     X_LAST_UPDATED_BY,
62     X_LAST_UPDATE_DATE,
63     X_LAST_UPDATE_LOGIN,
64     L.LANGUAGE_CODE,
65     userenv('LANG')
66   from FND_LANGUAGES L
67   where L.INSTALLED_FLAG in ('I', 'B')
68   and not exists
69     (select NULL
70     from FND_NATURAL_LANGUAGES_TL T
71     where T.LANGUAGE_CODE = X_LANGUAGE_CODE
72     and T.LANGUAGE = L.LANGUAGE_CODE);
73 
74   open c;
75   fetch c into X_ROWID;
76   if (c%notfound) then
77     close c;
78     raise no_data_found;
79   end if;
80   close c;
81 
82 end INSERT_ROW;
83 
84 procedure LOCK_ROW (
85   X_LANGUAGE_CODE in VARCHAR2,
86   X_ISO_LANGUAGE_3 in VARCHAR2,
87   X_ISO_TERRITORY in VARCHAR2,
88   X_ENABLED_FLAG in VARCHAR2,
89   X_NAME in VARCHAR2,
90   X_DESCRIPTION in VARCHAR2
91 ) is
92   cursor c is select
93       ISO_LANGUAGE_3,
94       ISO_TERRITORY,
95       ENABLED_FLAG
96     from FND_NATURAL_LANGUAGES
97     where LANGUAGE_CODE = X_LANGUAGE_CODE
98     for update of LANGUAGE_CODE nowait;
99   recinfo c%rowtype;
100 
101   cursor c1 is select
102       NAME,
103       DESCRIPTION,
104       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
105     from FND_NATURAL_LANGUAGES_TL
106     where LANGUAGE_CODE = X_LANGUAGE_CODE
107     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
108     for update of LANGUAGE_CODE nowait;
109 begin
110   open c;
111   fetch c into recinfo;
112   if (c%notfound) then
113     close c;
114     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
115     app_exception.raise_exception;
116   end if;
117   close c;
118   if (    ((recinfo.ISO_LANGUAGE_3 = X_ISO_LANGUAGE_3)
119            OR ((recinfo.ISO_LANGUAGE_3 is null) AND (X_ISO_LANGUAGE_3 is null)))
120       AND ((recinfo.ISO_TERRITORY = X_ISO_TERRITORY)
121            OR ((recinfo.ISO_TERRITORY is null) AND (X_ISO_TERRITORY is null)))
122       AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
123   ) then
124     null;
125   else
126     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
127     app_exception.raise_exception;
128   end if;
129 
130   for tlinfo in c1 loop
131     if (tlinfo.BASELANG = 'Y') then
132       if (    (tlinfo.NAME = X_NAME)
133           AND (tlinfo.DESCRIPTION = X_DESCRIPTION)
134       ) then
135         null;
136       else
137         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
138         app_exception.raise_exception;
139       end if;
140     end if;
141   end loop;
142   return;
143 end LOCK_ROW;
144 
145 procedure UPDATE_ROW (
146   X_LANGUAGE_CODE in VARCHAR2,
147   X_ISO_LANGUAGE_3 in VARCHAR2,
148   X_ISO_TERRITORY in VARCHAR2,
149   X_ENABLED_FLAG in VARCHAR2,
150   X_NAME in VARCHAR2,
151   X_DESCRIPTION in VARCHAR2,
152   X_LAST_UPDATE_DATE in DATE,
153   X_LAST_UPDATED_BY in NUMBER,
154   X_LAST_UPDATE_LOGIN in NUMBER
155 ) is
156 begin
157   update FND_NATURAL_LANGUAGES set
158     ISO_LANGUAGE_3 = X_ISO_LANGUAGE_3,
159     ISO_TERRITORY = X_ISO_TERRITORY,
160     ENABLED_FLAG = X_ENABLED_FLAG,
161     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
162     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
163     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
164   where LANGUAGE_CODE = X_LANGUAGE_CODE;
165 
166   if (sql%notfound) then
167     raise no_data_found;
168   end if;
169 
170   update FND_NATURAL_LANGUAGES_TL set
171     NAME = X_NAME,
172     DESCRIPTION = X_DESCRIPTION,
173     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
174     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
175     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
176     SOURCE_LANG = userenv('LANG')
177   where LANGUAGE_CODE = X_LANGUAGE_CODE
178   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
179 
180   if (sql%notfound) then
181     raise no_data_found;
182   end if;
183 end UPDATE_ROW;
184 
185 procedure DELETE_ROW (
186   X_LANGUAGE_CODE in VARCHAR2
187 ) is
188 begin
189   delete from FND_NATURAL_LANGUAGES_TL
190   where LANGUAGE_CODE = X_LANGUAGE_CODE;
191 
192   if (sql%notfound) then
193     raise no_data_found;
194   end if;
195 
196   delete from FND_NATURAL_LANGUAGES
197   where LANGUAGE_CODE = X_LANGUAGE_CODE;
198 
199   if (sql%notfound) then
200     raise no_data_found;
201   end if;
202 end DELETE_ROW;
203 
204 procedure ADD_LANGUAGE
205 is
206 begin
207 /* Mar/19/03 requested by Ric Ginsberg */
208 /* The following update statements are commented out */
209 /* as a quick workaround to fix the time-consuming table handler issue */
210 /* Eventually we'll need to turn them into a separate fix_language procedure */
211 /*
212   delete from FND_NATURAL_LANGUAGES_TL T
213   where not exists
214     (select NULL
215     from FND_NATURAL_LANGUAGES B
216     where B.LANGUAGE_CODE = T.LANGUAGE_CODE
217     );
218 
219   update FND_NATURAL_LANGUAGES_TL T set (
220       NAME,
221       DESCRIPTION
222     ) = (select
223       B.NAME,
224       B.DESCRIPTION
225     from FND_NATURAL_LANGUAGES_TL B
226     where B.LANGUAGE_CODE = T.LANGUAGE_CODE
227     and B.LANGUAGE = T.SOURCE_LANG)
228   where (
229       T.LANGUAGE_CODE,
230       T.LANGUAGE
231   ) in (select
232       SUBT.LANGUAGE_CODE,
233       SUBT.LANGUAGE
234     from FND_NATURAL_LANGUAGES_TL SUBB, FND_NATURAL_LANGUAGES_TL SUBT
235     where SUBB.LANGUAGE_CODE = SUBT.LANGUAGE_CODE
236     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
237     and (SUBB.NAME <> SUBT.NAME
238       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
239   ));
240 */
241 
242   insert into FND_NATURAL_LANGUAGES_TL (
243     LANGUAGE_CODE,
244     NAME,
245     DESCRIPTION,
246     CREATED_BY,
247     CREATION_DATE,
248     LAST_UPDATED_BY,
249     LAST_UPDATE_DATE,
250     LAST_UPDATE_LOGIN,
251     LANGUAGE,
252     SOURCE_LANG
253   ) select /*+ ORDERED */
254     B.LANGUAGE_CODE,
255     B.NAME,
256     B.DESCRIPTION,
257     B.CREATED_BY,
258     B.CREATION_DATE,
259     B.LAST_UPDATED_BY,
260     B.LAST_UPDATE_DATE,
261     B.LAST_UPDATE_LOGIN,
262     L.LANGUAGE_CODE,
263     B.SOURCE_LANG
264   from FND_NATURAL_LANGUAGES_TL B, FND_LANGUAGES L
265   where L.INSTALLED_FLAG in ('I', 'B')
266   and B.LANGUAGE = userenv('LANG')
267   and not exists
268     (select NULL
269     from FND_NATURAL_LANGUAGES_TL T
270     where T.LANGUAGE_CODE = B.LANGUAGE_CODE
271     and T.LANGUAGE = L.LANGUAGE_CODE);
272 end ADD_LANGUAGE;
273 
274 procedure TRANSLATE_ROW (
275   X_LANGUAGE_CODE in VARCHAR2,
276   X_NAME in VARCHAR2,
277   X_DESCRIPTION in VARCHAR2,
278   X_OWNER in VARCHAR2,
279   X_LAST_UPDATE_DATE in VARCHAR2,
280   X_CUSTOM_MODE in VARCHAR2
281 ) is
282   f_luby    number;  -- entity owner in file
283   f_ludate  date;    -- entity update date in file
284   db_luby   number;  -- entity owner in db
285   db_ludate date;    -- entity update date in db
286 
287 begin
288   -- Translate owner to file_last_updated_by
289   f_luby := fnd_load_util.owner_id(x_owner);
290 
291   -- Translate char last_update_date to date
292   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
293 
294  begin
295   select last_updated_by, last_update_date
296   into db_luby, db_ludate
297   from fnd_natural_languages_tl
298   where language_code = X_LANGUAGE_CODE
299   and language            = userenv('LANG');
300 
301   if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
302                                 db_ludate, X_CUSTOM_MODE)) then
303   update FND_NATURAL_LANGUAGES_TL set
304     NAME = X_NAME,
305     DESCRIPTION = X_DESCRIPTION,
306     LAST_UPDATE_DATE = f_ludate,
307     LAST_UPDATED_BY = f_luby,
308     LAST_UPDATE_LOGIN = 0,
309     SOURCE_LANG = userenv('LANG')
310   where LANGUAGE_CODE = X_LANGUAGE_CODE
311   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
312   end if;
313  exception
314    when no_data_found then
315     null;
316  end;
317 end TRANSLATE_ROW;
318 
319 procedure LOAD_ROW (
320   X_LANGUAGE_CODE in VARCHAR2,
321   X_ISO_LANGUAGE_3 in VARCHAR2,
322   X_ISO_TERRITORY in VARCHAR2,
323   X_ENABLED_FLAG in VARCHAR2,
324   X_NAME in VARCHAR2,
325   X_DESCRIPTION in VARCHAR2,
326   X_OWNER in VARCHAR2,
327   X_LAST_UPDATE_DATE in VARCHAR2,
328   X_CUSTOM_MODE in VARCHAR2
329 ) is
330  user_id NUMBER;
331  X_ROWID VARCHAR2(64);
332   f_luby    number;  -- entity owner in file
333   f_ludate  date;    -- entity update date in file
334   db_luby   number;  -- entity owner in db
335   db_ludate date;    -- entity update date in db
336 
337 begin
338   -- Translate owner to file_last_updated_by
339   f_luby := fnd_load_util.owner_id(x_owner);
340 
341   -- Translate char last_update_date to date
342   f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
343 
344  begin
345   select LAST_UPDATED_BY, LAST_UPDATE_DATE
346    into db_luby, db_ludate
347   from fnd_natural_languages
348   where language_code = X_LANGUAGE_CODE;
349 
350  if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
351                                     db_ludate, X_CUSTOM_MODE)) then
352   FND_NATURAL_LANGUAGES_PKG.UPDATE_ROW(
353     X_LANGUAGE_CODE,
354     X_ISO_LANGUAGE_3,
355     X_ISO_TERRITORY,
356     X_ENABLED_FLAG,
357     X_NAME,
358     X_DESCRIPTION,
359     f_ludate,
360     f_luby,
361     0);
362   end if;
363 
364   exception
365    when no_data_found then
366     FND_NATURAL_LANGUAGES_PKG.INSERT_ROW(
367         X_ROWID,
368         X_LANGUAGE_CODE,
369         X_ISO_LANGUAGE_3,
370         X_ISO_TERRITORY,
371         X_ENABLED_FLAG,
372         X_NAME,
373         X_DESCRIPTION,
374         f_ludate,
375         f_luby,
376         f_ludate,
377         f_luby,
378         0);
379 end;
380 end LOAD_ROW;
381 
382 end FND_NATURAL_LANGUAGES_PKG;