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