DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_VISIBILITIES_PKG

Source


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;