DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_CATEGORY_GROUPS_PKG

Source


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