[Home] [Help]
PACKAGE BODY: APPS.JTF_PREFAB_UD_KEYS_PKG
Source
1 package body JTF_PREFAB_UD_KEYS_PKG as
2 /* $Header: jtfprefabudktb.pls 120.3 2005/10/28 00:23:45 emekala ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out NOCOPY VARCHAR2,
5 X_UD_KEY_ID in NUMBER,
6 X_OBJECT_VERSION_NUMBER in NUMBER,
7 X_SECURITY_GROUP_ID in NUMBER,
8 X_APPLICATION_ID in NUMBER,
9 X_UD_KEY_NAME in VARCHAR2,
10 X_FILENAME in VARCHAR2,
11 X_USER_DEFINED_KEYS in VARCHAR2,
12 X_ENABLED_FLAG in VARCHAR2,
13 X_DESCRIPTION in VARCHAR2,
14 X_CREATION_DATE in DATE,
15 X_CREATED_BY in NUMBER,
16 X_LAST_UPDATE_DATE in DATE,
17 X_LAST_UPDATED_BY in NUMBER,
18 X_LAST_UPDATE_LOGIN in NUMBER
19 ) is
20 cursor C is select ROWID from JTF_PREFAB_UD_KEYS_B
21 where UD_KEY_ID = X_UD_KEY_ID
22 ;
23 begin
24 insert into JTF_PREFAB_UD_KEYS_B (
25 UD_KEY_ID,
26 OBJECT_VERSION_NUMBER,
27 -- SECURITY_GROUP_ID,
28 APPLICATION_ID,
29 UD_KEY_NAME,
30 FILENAME,
31 USER_DEFINED_KEYS,
32 ENABLED_FLAG,
33 CREATION_DATE,
34 CREATED_BY,
35 LAST_UPDATE_DATE,
36 LAST_UPDATED_BY,
37 LAST_UPDATE_LOGIN
38 ) values (
39 X_UD_KEY_ID,
40 X_OBJECT_VERSION_NUMBER,
41 -- X_SECURITY_GROUP_ID,
42 X_APPLICATION_ID,
43 X_UD_KEY_NAME,
44 X_FILENAME,
45 X_USER_DEFINED_KEYS,
46 X_ENABLED_FLAG,
47 X_CREATION_DATE,
48 X_CREATED_BY,
49 X_LAST_UPDATE_DATE,
50 X_LAST_UPDATED_BY,
51 X_LAST_UPDATE_LOGIN
52 );
53
54 insert into JTF_PREFAB_UD_KEYS_TL (
55 UD_KEY_ID,
56 DESCRIPTION,
57 CREATED_BY,
58 CREATION_DATE,
59 LAST_UPDATED_BY,
60 LAST_UPDATE_DATE,
61 LAST_UPDATE_LOGIN,
62 -- SECURITY_GROUP_ID,
63 LANGUAGE,
64 SOURCE_LANG
65 ) select
66 X_UD_KEY_ID,
67 X_DESCRIPTION,
68 X_CREATED_BY,
69 X_CREATION_DATE,
70 X_LAST_UPDATED_BY,
71 X_LAST_UPDATE_DATE,
72 X_LAST_UPDATE_LOGIN,
73 -- X_SECURITY_GROUP_ID,
74 L.LANGUAGE_CODE,
75 userenv('LANG')
76 from FND_LANGUAGES L
77 where L.INSTALLED_FLAG in ('I', 'B')
78 and not exists
79 (select NULL
80 from JTF_PREFAB_UD_KEYS_TL T
81 where T.UD_KEY_ID = X_UD_KEY_ID
82 and T.LANGUAGE = L.LANGUAGE_CODE);
83
84 open c;
85 fetch c into X_ROWID;
86 if (c%notfound) then
87 close c;
88 raise no_data_found;
89 end if;
90 close c;
91
92 end INSERT_ROW;
93
94 procedure LOCK_ROW (
95 X_UD_KEY_ID in NUMBER,
96 X_OBJECT_VERSION_NUMBER in NUMBER,
97 X_SECURITY_GROUP_ID in NUMBER,
98 X_APPLICATION_ID in NUMBER,
99 X_UD_KEY_NAME in VARCHAR2,
100 X_FILENAME in VARCHAR2,
101 X_USER_DEFINED_KEYS in VARCHAR2,
102 X_ENABLED_FLAG in VARCHAR2,
103 X_DESCRIPTION in VARCHAR2
104 ) is
105 cursor c is select
106 OBJECT_VERSION_NUMBER,
107 SECURITY_GROUP_ID,
108 APPLICATION_ID,
109 UD_KEY_NAME,
110 FILENAME,
111 USER_DEFINED_KEYS,
112 ENABLED_FLAG
113 from JTF_PREFAB_UD_KEYS_B
114 where UD_KEY_ID = X_UD_KEY_ID
115 for update of UD_KEY_ID nowait;
116 recinfo c%rowtype;
117
118 cursor c1 is select
119 DESCRIPTION,
120 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
121 from JTF_PREFAB_UD_KEYS_TL
122 where UD_KEY_ID = X_UD_KEY_ID
123 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
124 for update of UD_KEY_ID nowait;
125 begin
126 open c;
127 fetch c into recinfo;
128 if (c%notfound) then
129 close c;
130 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
131 app_exception.raise_exception;
132 end if;
133 close c;
134 if ( (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
135 -- AND ((recinfo.SECURITY_GROUP_ID = X_SECURITY_GROUP_ID)
136 -- OR ((recinfo.SECURITY_GROUP_ID is null) AND (X_SECURITY_GROUP_ID is null)))
137 AND (recinfo.APPLICATION_ID = X_APPLICATION_ID)
138 AND (recinfo.UD_KEY_NAME = X_UD_KEY_NAME)
139 AND (recinfo.FILENAME = X_FILENAME)
140 AND (recinfo.USER_DEFINED_KEYS = X_USER_DEFINED_KEYS)
141 AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
142 ) then
143 null;
144 else
145 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
146 app_exception.raise_exception;
147 end if;
148
149 for tlinfo in c1 loop
150 if (tlinfo.BASELANG = 'Y') then
151 if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
152 ) then
153 null;
154 else
155 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
156 app_exception.raise_exception;
157 end if;
158 end if;
159 end loop;
160 return;
161 end LOCK_ROW;
162
163 procedure UPDATE_ROW (
164 X_UD_KEY_ID in NUMBER,
165 X_OBJECT_VERSION_NUMBER in NUMBER,
166 X_SECURITY_GROUP_ID in NUMBER,
167 X_APPLICATION_ID in NUMBER,
168 X_UD_KEY_NAME in VARCHAR2,
169 X_FILENAME in VARCHAR2,
170 X_USER_DEFINED_KEYS in VARCHAR2,
171 X_ENABLED_FLAG in VARCHAR2,
172 X_DESCRIPTION in VARCHAR2,
173 X_LAST_UPDATE_DATE in DATE,
174 X_LAST_UPDATED_BY in NUMBER,
175 X_LAST_UPDATE_LOGIN in NUMBER
176 ) is
177 begin
178 update JTF_PREFAB_UD_KEYS_B set
179 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
180 -- SECURITY_GROUP_ID = X_SECURITY_GROUP_ID,
181 APPLICATION_ID = X_APPLICATION_ID,
182 UD_KEY_NAME = X_UD_KEY_NAME,
183 FILENAME = X_FILENAME,
184 USER_DEFINED_KEYS = X_USER_DEFINED_KEYS,
185 ENABLED_FLAG = X_ENABLED_FLAG,
186 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
187 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
188 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
189 where UD_KEY_ID = X_UD_KEY_ID;
190
191 if (sql%notfound) then
192 raise no_data_found;
193 end if;
194
195 update JTF_PREFAB_UD_KEYS_TL set
196 DESCRIPTION = X_DESCRIPTION,
197 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
198 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
199 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
200 SOURCE_LANG = userenv('LANG')
201 where UD_KEY_ID = X_UD_KEY_ID
202 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
203
204 if (sql%notfound) then
205 raise no_data_found;
206 end if;
207 end UPDATE_ROW;
208
209 procedure DELETE_ROW (
210 X_UD_KEY_ID in NUMBER
211 ) is
212 begin
213 delete from JTF_PREFAB_UD_KEYS_TL
214 where UD_KEY_ID = X_UD_KEY_ID;
215
216 if (sql%notfound) then
217 raise no_data_found;
218 end if;
219
220 delete from JTF_PREFAB_UD_KEYS_B
221 where UD_KEY_ID = X_UD_KEY_ID;
222
223 if (sql%notfound) then
224 raise no_data_found;
225 end if;
226 end DELETE_ROW;
227
228 procedure ADD_LANGUAGE
229 is
230 begin
231 delete from JTF_PREFAB_UD_KEYS_TL T
232 where not exists
233 (select NULL
234 from JTF_PREFAB_UD_KEYS_B B
235 where B.UD_KEY_ID = T.UD_KEY_ID
236 );
237
238 update JTF_PREFAB_UD_KEYS_TL T set (
239 DESCRIPTION
240 ) = (select
241 B.DESCRIPTION
242 from JTF_PREFAB_UD_KEYS_TL B
243 where B.UD_KEY_ID = T.UD_KEY_ID
244 and B.LANGUAGE = T.SOURCE_LANG)
245 where (
246 T.UD_KEY_ID,
247 T.LANGUAGE
248 ) in (select
249 SUBT.UD_KEY_ID,
250 SUBT.LANGUAGE
251 from JTF_PREFAB_UD_KEYS_TL SUBB, JTF_PREFAB_UD_KEYS_TL SUBT
252 where SUBB.UD_KEY_ID = SUBT.UD_KEY_ID
253 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
254 and (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
255 ));
256
257 insert into JTF_PREFAB_UD_KEYS_TL (
258 UD_KEY_ID,
259 DESCRIPTION,
260 CREATED_BY,
261 CREATION_DATE,
262 LAST_UPDATED_BY,
263 LAST_UPDATE_DATE,
264 LAST_UPDATE_LOGIN,
265 -- SECURITY_GROUP_ID,
266 LANGUAGE,
267 SOURCE_LANG
268 ) select
269 B.UD_KEY_ID,
270 B.DESCRIPTION,
271 B.CREATED_BY,
272 B.CREATION_DATE,
273 B.LAST_UPDATED_BY,
274 B.LAST_UPDATE_DATE,
275 B.LAST_UPDATE_LOGIN,
276 -- B.SECURITY_GROUP_ID,
277 L.LANGUAGE_CODE,
278 B.SOURCE_LANG
279 from JTF_PREFAB_UD_KEYS_TL B, FND_LANGUAGES L
280 where L.INSTALLED_FLAG in ('I', 'B')
281 and B.LANGUAGE = userenv('LANG')
282 and not exists
283 (select NULL
284 from JTF_PREFAB_UD_KEYS_TL T
285 where T.UD_KEY_ID = B.UD_KEY_ID
286 and T.LANGUAGE = L.LANGUAGE_CODE);
287 end ADD_LANGUAGE;
288
289 procedure LOAD_ROW (
290 X_OBJECT_VERSION_NUMBER in NUMBER,
291 X_SECURITY_GROUP_ID in NUMBER,
292 X_APPLICATION_ID in NUMBER,
293 X_UD_KEY_NAME in VARCHAR2,
294 X_FILENAME in VARCHAR2,
295 X_USER_DEFINED_KEYS in VARCHAR2,
296 X_ENABLED_FLAG in VARCHAR2,
297 X_DESCRIPTION in VARCHAR2,
298 X_LAST_UPDATE_DATE in DATE,
299 X_OWNER in VARCHAR2,
300 X_CUSTOM_MODE in VARCHAR2
301 ) is
302 --****** local variables ******
303 l_row_id VARCHAR2(255);
304
305 f_luby NUMBER;
306 f_ludate DATE;
307 db_luby NUMBER;
308 db_ludate DATE;
309 l_ud_key_id NUMBER;
310
311 cursor c is select nvl(max(UD_KEY_ID), 0) from jtf_prefab_ud_keys_b where UD_KEY_ID < 10000;
312 l_pseudo_seq NUMBER := NULL;
313 begin
314
315 if (X_OWNER = 'SEED') then
316 f_luby := 1;
317 else
318 f_luby := 0;
319 end if;
320
321 f_ludate := X_LAST_UPDATE_DATE;
322
323 begin
324 SELECT UD_KEY_ID, LAST_UPDATED_BY, LAST_UPDATE_DATE
325 INTO l_ud_key_id, db_luby, db_ludate
326 FROM JTF_PREFAB_UD_KEYS_B
327 WHERE APPLICATION_ID = X_APPLICATION_ID AND
328 UD_KEY_NAME = X_UD_KEY_NAME;
329
330 -- **** Entry is there, check if it's legal to update ****
331 IF ((X_CUSTOM_MODE = 'FORCE') OR
332 ((f_luby = 0) AND (db_luby = 1)) OR
333 ((f_luby = db_luby) AND (f_ludate > db_ludate))
334 )
335 then
336 -- **** call Update row ****
337 JTF_PREFAB_UD_KEYS_PKG.UPDATE_ROW (
338 X_UD_KEY_ID => l_ud_key_id,
339 X_OBJECT_VERSION_NUMBER => X_OBJECT_VERSION_NUMBER,
340 X_SECURITY_GROUP_ID => X_SECURITY_GROUP_ID,
341 X_APPLICATION_ID => X_APPLICATION_ID,
342 X_UD_KEY_NAME => X_UD_KEY_NAME,
343 X_FILENAME => X_FILENAME,
344 X_USER_DEFINED_KEYS => X_USER_DEFINED_KEYS,
345 X_ENABLED_FLAG => X_ENABLED_FLAG,
346 X_DESCRIPTION => X_DESCRIPTION,
347 X_LAST_UPDATE_DATE => f_ludate,
348 X_LAST_UPDATED_BY => f_luby,
349 X_LAST_UPDATE_LOGIN => 0);
350 end if;
351 exception
352 when no_data_found then
353 -- **** generate pseudo sequence ***
354 OPEN c;
355 FETCH c INTO l_pseudo_seq;
356 CLOSE c;
357
358 JTF_PREFAB_UD_KEYS_PKG.INSERT_ROW (
359 X_ROWID => l_row_id,
360 X_UD_KEY_ID => (l_pseudo_seq + 1),
361 X_OBJECT_VERSION_NUMBER => X_OBJECT_VERSION_NUMBER,
362 X_SECURITY_GROUP_ID => X_SECURITY_GROUP_ID,
363 X_APPLICATION_ID => X_APPLICATION_ID,
364 X_UD_KEY_NAME => X_UD_KEY_NAME,
365 X_FILENAME => X_FILENAME,
366 X_USER_DEFINED_KEYS => X_USER_DEFINED_KEYS,
367 X_ENABLED_FLAG => X_ENABLED_FLAG,
368 X_DESCRIPTION => X_DESCRIPTION,
369 X_CREATION_DATE => f_ludate,
370 X_CREATED_BY => f_luby,
371 X_LAST_UPDATE_DATE => f_ludate,
372 X_LAST_UPDATED_BY => f_luby,
373 X_LAST_UPDATE_LOGIN => 0);
374 end;
375
376 end LOAD_ROW;
377
378 procedure TRANSLATE_ROW (
379 X_APPLICATION_ID in NUMBER,
380 X_UD_KEY_NAME in VARCHAR2,
381 X_DESCRIPTION in VARCHAR2,
382 X_LAST_UPDATE_DATE in DATE,
383 X_OWNER in VARCHAR2,
384 X_CUSTOM_MODE in VARCHAR2
385 ) is
386 -- **** local variables *****
387 f_luby NUMBER;
388 f_ludate DATE;
389 db_luby NUMBER;
390 db_ludate DATE;
391 l_ud_key_id NUMBER;
392 begin
393
394 if (X_OWNER = 'SEED') then
395 f_luby := 1;
396 else
397 f_luby := 0;
398 end if;
399
400 f_ludate := X_LAST_UPDATE_DATE;
401
402 begin
403 SELECT tl.UD_KEY_ID, tl.LAST_UPDATED_BY, tl.LAST_UPDATE_DATE
404 INTO l_ud_key_id, db_luby, db_ludate
405 FROM JTF_PREFAB_UD_KEYS_B b, JTF_PREFAB_UD_KEYS_TL tl
406 WHERE b.UD_KEY_ID = tl.UD_KEY_ID AND
407 b.APPLICATION_ID = X_APPLICATION_ID AND
408 b.UD_KEY_NAME = X_UD_KEY_NAME AND
409 tl.LANGUAGE = userenv('LANG');
410
411 if ((X_CUSTOM_MODE = 'FORCE') OR
412 ((f_luby = 0) AND (db_luby = 1)) OR
413 ((f_luby = db_luby) AND (f_ludate > db_ludate))
414 )
415 then
416 update JTF_PREFAB_UD_KEYS_TL set
417 DESCRIPTION = nvl(X_DESCRIPTION, DESCRIPTION),
418 LAST_UPDATE_DATE = f_ludate,
419 LAST_UPDATED_BY = f_luby,
420 LAST_UPDATE_LOGIN = 0,
421 SOURCE_LANG = userenv('LANG')
422 where userenv('LANG') in (LANGUAGE, SOURCE_LANG) and
423 UD_KEY_ID = l_ud_key_id;
424 end if;
425 exception
426 when no_data_found then null;
427 end;
428 end TRANSLATE_ROW;
429
430 end JTF_PREFAB_UD_KEYS_PKG;