1 package body CS_KB_VISIBILITIES_PKG as
2 /* $Header: cskbvb.pls 115.0 2003/08/29 18:19:18 mkettle noship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out NOCOPY VARCHAR2,
5 X_VISIBILITY_ID in NUMBER,
6 X_POSITION in NUMBER,
7 X_START_DATE_ACTIVE in DATE,
8 X_END_DATE_ACTIVE in DATE,
9 X_NAME in VARCHAR2,
10 X_DESCRIPTION in VARCHAR2,
11 X_CREATION_DATE in DATE,
12 X_CREATED_BY in NUMBER,
13 X_LAST_UPDATE_DATE in DATE,
14 X_LAST_UPDATED_BY in NUMBER,
15 X_LAST_UPDATE_LOGIN in NUMBER,
16 X_ATTRIBUTE_CATEGORY in VARCHAR2,
17 X_ATTRIBUTE1 in VARCHAR2,
18 X_ATTRIBUTE2 in VARCHAR2,
19 X_ATTRIBUTE3 in VARCHAR2,
20 X_ATTRIBUTE4 in VARCHAR2,
21 X_ATTRIBUTE5 in VARCHAR2,
22 X_ATTRIBUTE6 in VARCHAR2,
23 X_ATTRIBUTE7 in VARCHAR2,
24 X_ATTRIBUTE8 in VARCHAR2,
25 X_ATTRIBUTE9 in VARCHAR2,
26 X_ATTRIBUTE10 in VARCHAR2,
27 X_ATTRIBUTE11 in VARCHAR2,
28 X_ATTRIBUTE12 in VARCHAR2,
29 X_ATTRIBUTE13 in VARCHAR2,
30 X_ATTRIBUTE14 in VARCHAR2,
31 X_ATTRIBUTE15 in VARCHAR2
32 ) is
33 cursor C is select ROWID from CS_KB_VISIBILITIES_B
34 where VISIBILITY_ID = X_VISIBILITY_ID
35 ;
36 begin
37 insert into CS_KB_VISIBILITIES_B (
38 VISIBILITY_ID,
39 POSITION,
40 START_DATE_ACTIVE,
41 END_DATE_ACTIVE,
42 CREATION_DATE,
43 CREATED_BY,
44 LAST_UPDATE_DATE,
45 LAST_UPDATED_BY,
46 LAST_UPDATE_LOGIN,
47 ATTRIBUTE_CATEGORY,
48 ATTRIBUTE1,
49 ATTRIBUTE2,
50 ATTRIBUTE3,
51 ATTRIBUTE4,
52 ATTRIBUTE5,
53 ATTRIBUTE6,
54 ATTRIBUTE7,
55 ATTRIBUTE8,
56 ATTRIBUTE9,
57 ATTRIBUTE10,
58 ATTRIBUTE11,
59 ATTRIBUTE12,
60 ATTRIBUTE13,
61 ATTRIBUTE14,
62 ATTRIBUTE15
63 ) values (
64 X_VISIBILITY_ID,
65 X_POSITION,
66 X_START_DATE_ACTIVE,
67 X_END_DATE_ACTIVE,
68 X_CREATION_DATE,
69 X_CREATED_BY,
70 X_LAST_UPDATE_DATE,
71 X_LAST_UPDATED_BY,
72 X_LAST_UPDATE_LOGIN,
73 X_ATTRIBUTE_CATEGORY,
74 X_ATTRIBUTE1,
75 X_ATTRIBUTE2,
76 X_ATTRIBUTE3,
77 X_ATTRIBUTE4,
78 X_ATTRIBUTE5,
79 X_ATTRIBUTE6,
80 X_ATTRIBUTE7,
81 X_ATTRIBUTE8,
82 X_ATTRIBUTE9,
83 X_ATTRIBUTE10,
84 X_ATTRIBUTE11,
85 X_ATTRIBUTE12,
86 X_ATTRIBUTE13,
87 X_ATTRIBUTE14,
88 X_ATTRIBUTE15
89 );
90
91 insert into CS_KB_VISIBILITIES_TL (
92 VISIBILITY_ID,
93 NAME,
94 DESCRIPTION,
95 CREATION_DATE,
96 CREATED_BY,
97 LAST_UPDATE_DATE,
98 LAST_UPDATED_BY,
99 LAST_UPDATE_LOGIN,
100 LANGUAGE,
101 SOURCE_LANG
102 ) select
103 X_VISIBILITY_ID,
104 X_NAME,
105 X_DESCRIPTION,
106 X_CREATION_DATE,
107 X_CREATED_BY,
108 X_LAST_UPDATE_DATE,
109 X_LAST_UPDATED_BY,
110 X_LAST_UPDATE_LOGIN,
111 L.LANGUAGE_CODE,
112 userenv('LANG')
113 from FND_LANGUAGES L
114 where L.INSTALLED_FLAG in ('I', 'B')
115 and not exists
116 (select NULL
117 from CS_KB_VISIBILITIES_TL T
118 where T.VISIBILITY_ID = X_VISIBILITY_ID
119 and T.LANGUAGE = L.LANGUAGE_CODE);
120
121 open c;
122 fetch c into X_ROWID;
123 if (c%notfound) then
124 close c;
125 raise no_data_found;
126 end if;
127 close c;
128
129 end INSERT_ROW;
130
131 procedure LOCK_ROW (
132 X_VISIBILITY_ID in NUMBER,
133 X_POSITION in NUMBER,
134 X_START_DATE_ACTIVE in DATE,
135 X_END_DATE_ACTIVE in DATE,
136 X_NAME in VARCHAR2,
137 X_DESCRIPTION in VARCHAR2,
138 X_ATTRIBUTE_CATEGORY in VARCHAR2,
139 X_ATTRIBUTE1 in VARCHAR2,
140 X_ATTRIBUTE2 in VARCHAR2,
141 X_ATTRIBUTE3 in VARCHAR2,
142 X_ATTRIBUTE4 in VARCHAR2,
143 X_ATTRIBUTE5 in VARCHAR2,
144 X_ATTRIBUTE6 in VARCHAR2,
145 X_ATTRIBUTE7 in VARCHAR2,
146 X_ATTRIBUTE8 in VARCHAR2,
147 X_ATTRIBUTE9 in VARCHAR2,
148 X_ATTRIBUTE10 in VARCHAR2,
149 X_ATTRIBUTE11 in VARCHAR2,
150 X_ATTRIBUTE12 in VARCHAR2,
151 X_ATTRIBUTE13 in VARCHAR2,
152 X_ATTRIBUTE14 in VARCHAR2,
153 X_ATTRIBUTE15 in VARCHAR2
154 ) is
155 cursor c is select
156 POSITION,
157 START_DATE_ACTIVE,
158 END_DATE_ACTIVE,
159 ATTRIBUTE_CATEGORY,
160 ATTRIBUTE1,
161 ATTRIBUTE2,
162 ATTRIBUTE3,
163 ATTRIBUTE4,
164 ATTRIBUTE5,
165 ATTRIBUTE6,
166 ATTRIBUTE7,
167 ATTRIBUTE8,
168 ATTRIBUTE9,
169 ATTRIBUTE10,
170 ATTRIBUTE11,
171 ATTRIBUTE12,
172 ATTRIBUTE13,
173 ATTRIBUTE14,
174 ATTRIBUTE15
175 from CS_KB_VISIBILITIES_B
176 where VISIBILITY_ID = X_VISIBILITY_ID
177 for update of VISIBILITY_ID nowait;
178 recinfo c%rowtype;
179
180 cursor c1 is select
181 NAME,
182 DESCRIPTION,
183 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
184 from CS_KB_VISIBILITIES_TL
185 where VISIBILITY_ID = X_VISIBILITY_ID
186 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
187 for update of VISIBILITY_ID nowait;
188 begin
189 open c;
190 fetch c into recinfo;
191 if (c%notfound) then
192 close c;
193 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
194 app_exception.raise_exception;
195 end if;
196 close c;
197 if ( (recinfo.POSITION = X_POSITION)
198 AND ((recinfo.START_DATE_ACTIVE = X_START_DATE_ACTIVE)
199 OR ((recinfo.START_DATE_ACTIVE is null) AND (X_START_DATE_ACTIVE is null)))
200 AND ((recinfo.END_DATE_ACTIVE = X_END_DATE_ACTIVE)
201 OR ((recinfo.END_DATE_ACTIVE is null) AND (X_END_DATE_ACTIVE is null)))
202 AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
203 OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
204 AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
205 OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
206 AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
207 OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
208 AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
209 OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
210 AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
211 OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
212 AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
213 OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
214 AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
215 OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
216 AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
217 OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
218 AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
219 OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
220 AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
221 OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
222 AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
223 OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
224 AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
225 OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
226 AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
227 OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
228 AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
229 OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
230 AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
231 OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
232 AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
233 OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
234 ) then
235 null;
236 else
237 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
238 app_exception.raise_exception;
239 end if;
240
241 for tlinfo in c1 loop
242 if (tlinfo.BASELANG = 'Y') then
243 if ( (tlinfo.NAME = X_NAME)
244 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
245 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
246 ) then
247 null;
248 else
249 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
250 app_exception.raise_exception;
251 end if;
252 end if;
253 end loop;
254 return;
255 end LOCK_ROW;
256
257 procedure UPDATE_ROW (
258 X_VISIBILITY_ID in NUMBER,
259 X_POSITION in NUMBER,
260 X_START_DATE_ACTIVE in DATE,
261 X_END_DATE_ACTIVE in DATE,
262 X_NAME in VARCHAR2,
263 X_DESCRIPTION in VARCHAR2,
264 X_LAST_UPDATE_DATE in DATE,
265 X_LAST_UPDATED_BY in NUMBER,
266 X_LAST_UPDATE_LOGIN in NUMBER,
267 X_ATTRIBUTE_CATEGORY in VARCHAR2,
268 X_ATTRIBUTE1 in VARCHAR2,
269 X_ATTRIBUTE2 in VARCHAR2,
270 X_ATTRIBUTE3 in VARCHAR2,
271 X_ATTRIBUTE4 in VARCHAR2,
272 X_ATTRIBUTE5 in VARCHAR2,
273 X_ATTRIBUTE6 in VARCHAR2,
274 X_ATTRIBUTE7 in VARCHAR2,
275 X_ATTRIBUTE8 in VARCHAR2,
276 X_ATTRIBUTE9 in VARCHAR2,
277 X_ATTRIBUTE10 in VARCHAR2,
278 X_ATTRIBUTE11 in VARCHAR2,
279 X_ATTRIBUTE12 in VARCHAR2,
280 X_ATTRIBUTE13 in VARCHAR2,
281 X_ATTRIBUTE14 in VARCHAR2,
282 X_ATTRIBUTE15 in VARCHAR2
283 ) is
284 begin
285 update CS_KB_VISIBILITIES_B set
286 POSITION = X_POSITION,
287 START_DATE_ACTIVE = X_START_DATE_ACTIVE,
288 END_DATE_ACTIVE = X_END_DATE_ACTIVE,
289 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
290 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
291 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
292 ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
293 ATTRIBUTE1 = X_ATTRIBUTE1,
294 ATTRIBUTE2 = X_ATTRIBUTE2,
295 ATTRIBUTE3 = X_ATTRIBUTE3,
296 ATTRIBUTE4 = X_ATTRIBUTE4,
297 ATTRIBUTE5 = X_ATTRIBUTE5,
298 ATTRIBUTE6 = X_ATTRIBUTE6,
299 ATTRIBUTE7 = X_ATTRIBUTE7,
300 ATTRIBUTE8 = X_ATTRIBUTE8,
301 ATTRIBUTE9 = X_ATTRIBUTE9,
302 ATTRIBUTE10 = X_ATTRIBUTE10,
303 ATTRIBUTE11 = X_ATTRIBUTE11,
304 ATTRIBUTE12 = X_ATTRIBUTE12,
305 ATTRIBUTE13 = X_ATTRIBUTE13,
306 ATTRIBUTE14 = X_ATTRIBUTE14,
307 ATTRIBUTE15 = X_ATTRIBUTE15
308 where VISIBILITY_ID = X_VISIBILITY_ID;
309
310 if (sql%notfound) then
311 raise no_data_found;
312 end if;
313
314 update CS_KB_VISIBILITIES_TL set
315 NAME = X_NAME,
316 DESCRIPTION = X_DESCRIPTION,
317 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
318 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
319 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
320 SOURCE_LANG = userenv('LANG')
321 where VISIBILITY_ID = X_VISIBILITY_ID
322 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
323
324 if (sql%notfound) then
325 raise no_data_found;
326 end if;
327 end UPDATE_ROW;
328
329 procedure DELETE_ROW (
330 X_VISIBILITY_ID in NUMBER
331 ) is
332 begin
333 delete from CS_KB_VISIBILITIES_TL
334 where VISIBILITY_ID = X_VISIBILITY_ID;
335
336 if (sql%notfound) then
337 raise no_data_found;
338 end if;
339
340 delete from CS_KB_VISIBILITIES_B
341 where VISIBILITY_ID = X_VISIBILITY_ID;
342
343 if (sql%notfound) then
344 raise no_data_found;
345 end if;
346 end DELETE_ROW;
347
348 procedure ADD_LANGUAGE
349 is
350 begin
351 delete from CS_KB_VISIBILITIES_TL T
352 where not exists
353 (select NULL
354 from CS_KB_VISIBILITIES_B B
355 where B.VISIBILITY_ID = T.VISIBILITY_ID
356 );
357
358 update CS_KB_VISIBILITIES_TL T set (
359 NAME,
360 DESCRIPTION
361 ) = (select
362 B.NAME,
363 B.DESCRIPTION
364 from CS_KB_VISIBILITIES_TL B
365 where B.VISIBILITY_ID = T.VISIBILITY_ID
366 and B.LANGUAGE = T.SOURCE_LANG)
367 where (
368 T.VISIBILITY_ID,
369 T.LANGUAGE
370 ) in (select
371 SUBT.VISIBILITY_ID,
372 SUBT.LANGUAGE
373 from CS_KB_VISIBILITIES_TL SUBB, CS_KB_VISIBILITIES_TL SUBT
374 where SUBB.VISIBILITY_ID = SUBT.VISIBILITY_ID
375 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
376 and (SUBB.NAME <> SUBT.NAME
377 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
378 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
379 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
380 ));
381
382 insert into CS_KB_VISIBILITIES_TL (
383 VISIBILITY_ID,
384 NAME,
385 DESCRIPTION,
386 CREATION_DATE,
387 CREATED_BY,
388 LAST_UPDATE_DATE,
389 LAST_UPDATED_BY,
390 LAST_UPDATE_LOGIN,
391 LANGUAGE,
392 SOURCE_LANG
393 ) select /*+ ORDERED */
394 B.VISIBILITY_ID,
395 B.NAME,
396 B.DESCRIPTION,
397 B.CREATION_DATE,
398 B.CREATED_BY,
399 B.LAST_UPDATE_DATE,
400 B.LAST_UPDATED_BY,
401 B.LAST_UPDATE_LOGIN,
402 L.LANGUAGE_CODE,
403 B.SOURCE_LANG
404 from CS_KB_VISIBILITIES_TL B, FND_LANGUAGES L
405 where L.INSTALLED_FLAG in ('I', 'B')
406 and B.LANGUAGE = userenv('LANG')
407 and not exists
408 (select NULL
409 from CS_KB_VISIBILITIES_TL T
410 where T.VISIBILITY_ID = B.VISIBILITY_ID
411 and T.LANGUAGE = L.LANGUAGE_CODE);
412 end ADD_LANGUAGE;
413
414 PROCEDURE Translate_Row(
415 x_visibility_id IN NUMBER,
416 x_owner IN VARCHAR2,
417 x_name IN VARCHAR2,
418 x_description IN VARCHAR2 ) IS
419 BEGIN
420 UPDATE CS_KB_VISIBILITIES_TL SET
421 name = x_name,
422 description = x_description,
423 last_update_date = SYSDATE,
424 last_updated_by = decode(x_owner, 'SEED', 1, 0),
425 last_update_login = 0,
426 source_lang = USERENV('LANG')
427 WHERE visibility_id = x_visibility_id
428 AND USERENV('LANG') IN (language, source_lang);
429 END Translate_Row;
430
431
432 PROCEDURE Load_Row(
433 x_visibility_id IN NUMBER,
434 x_position IN NUMBER,
435 x_start_date_active IN DATE,
436 x_end_date_active IN DATE,
437 x_name IN VARCHAR2,
438 x_description IN VARCHAR2,
439 x_owner IN VARCHAR2)
440 IS
441 l_user_id NUMBER;
442 l_rowid VARCHAR2(100);
443
444 BEGIN
445 IF (x_owner = 'SEED') THEN
446 l_user_id := 1;
447 ELSE
448 l_user_id := 0;
449 END IF;
450
451
452 -- CS_KB_VISIBILITIES_PKG.UPDATE_ROW (
453 -- X_VISIBILITY_ID => x_visibility_id,
454 -- X_POSITION => x_position,
455 -- X_START_DATE_ACTIVE => x_start_date_active,
456 -- X_END_DATE_ACTIVE => x_end_date_active,
457 -- X_NAME => x_name,
458 -- X_DESCRIPTION => x_description,
459 -- X_LAST_UPDATE_DATE => sysdate,
460 -- X_LAST_UPDATED_BY => l_user_id,
461 -- X_LAST_UPDATE_LOGIN => 0 );
462
463 -- Update_Row is not used as we do not want to update the
464 -- position or Start + End Dates
465
466 UPDATE CS_KB_VISIBILITIES_TL SET
467 NAME = X_NAME,
468 DESCRIPTION = X_DESCRIPTION,
469 LAST_UPDATE_DATE = sysdate,
470 LAST_UPDATED_BY = l_user_id,
471 LAST_UPDATE_LOGIN = 0,
472 SOURCE_LANG = userenv('LANG')
473 WHERE VISIBILITY_ID = X_VISIBILITY_ID
474 AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
475
476 IF (sql%notfound) THEN
477 RAISE NO_DATA_FOUND;
478 END IF;
479
480 EXCEPTION
481 WHEN NO_DATA_FOUND THEN
482 INSERT_ROW(
483 X_ROWID => l_rowid,
484 X_VISIBILITY_ID => x_visibility_id ,
485 X_POSITION => x_position,
486 X_START_DATE_ACTIVE => x_start_date_active,
487 X_END_DATE_ACTIVE => x_end_date_active,
488 X_NAME => x_name,
489 X_DESCRIPTION => x_description,
490 X_CREATION_DATE => sysdate,
491 X_CREATED_BY => l_user_id,
492 X_LAST_UPDATE_DATE => sysdate,
493 X_LAST_UPDATED_BY => l_user_id,
494 X_LAST_UPDATE_LOGIN => 0 );
495
496 END Load_Row;
497
498 end CS_KB_VISIBILITIES_PKG;