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