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