[Home] [Help]
PACKAGE BODY: APPS.IGS_GE_EXCEPTIONS_PKG
Source
1 package body IGS_GE_EXCEPTIONS_PKG as
2 /* $Header: IGSMI12B.pls 115.3 2002/11/29 01:12:07 nsidana ship $ */
3 l_rowid VARCHAR2(25);
4 old_references IGS_GE_EXCEPTIONS%RowType;
5 new_references IGS_GE_EXCEPTIONS%RowType;
6
7 PROCEDURE Set_Column_Values (
8 p_action IN VARCHAR2,
9 x_rowid IN VARCHAR2 DEFAULT NULL,
10 x_EXCPT_ID IN NUMBER DEFAULT NULL,
11 x_row_id IN ROWID DEFAULT NULL,
12 x_owner IN VARCHAR2 DEFAULT NULL,
13 x_table_name IN VARCHAR2 DEFAULT NULL,
14 x_constraint IN VARCHAR2 DEFAULT NULL,
15 x_creation_date IN DATE DEFAULT NULL,
16 x_created_by IN NUMBER DEFAULT NULL,
17 x_last_update_date IN DATE DEFAULT NULL,
18 x_last_updated_by IN NUMBER DEFAULT NULL,
19 x_last_update_login IN NUMBER DEFAULT NULL
20 ) as
21
22 CURSOR cur_old_ref_values IS
23 SELECT *
24 FROM IGS_GE_EXCEPTIONS
25 WHERE rowid = x_rowid;
26
27 BEGIN
28
29 l_rowid := x_rowid;
30
31 -- Code for setting the Old and New Reference Values.
32 -- Populate Old Values.
33 Open cur_old_ref_values;
34 Fetch cur_old_ref_values INTO old_references;
35 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
36 Close cur_old_ref_values;
37 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
38 IGS_GE_MSG_STACK.ADD;
39 App_Exception.Raise_Exception;
40 Return;
41 END IF;
42 Close cur_old_ref_values;
43
44 -- Populate New Values.
45 new_references.EXCPT_ID := x_EXCPT_ID;
46 new_references.row_id := x_row_id;
47 new_references.owner := x_owner;
48 new_references.table_name := x_table_name;
49 new_references.constraint := x_constraint;
50 IF (p_action = 'UPDATE') THEN
51 new_references.creation_date := old_references.creation_date;
52 new_references.created_by := old_references.created_by;
53 ELSE
54 new_references.creation_date := x_creation_date;
55 new_references.created_by := x_created_by;
56 END IF;
57 new_references.last_update_date := x_last_update_date;
58 new_references.last_updated_by := x_last_updated_by;
59 new_references.last_update_login := x_last_update_login;
60
61 END Set_Column_Values;
62
63 PROCEDURE Check_Constraints(
64 Column_Name IN VARCHAR2 DEFAULT NULL,
65 Column_Value IN VARCHAR2 DEFAULT NULL
66 ) as
67 BEGIN
68 IF column_name is null then
69 NULL;
70 ELSIF upper(Column_name) = 'CONSTRAINT' then
71 new_references.constraint := column_value ;
72 ELSIF upper(Column_name) = 'OWNER' then
73 new_references.owner := column_value ;
74 ELSIF upper(Column_name) = 'TABLE_NAME' then
75 new_references.table_name := column_value ;
76
77 END IF;
78 IF upper(Column_name) = 'CONSTRAINT' OR column_name is null then
79 IF new_references.constraint<> UPPER(new_references.constraint) then
80 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
81 IGS_GE_MSG_STACK.ADD;
82 App_Exception.Raise_Exception;
83 END IF;
84 END IF;
85 IF upper(Column_name) = 'OWNER' OR column_name is null then
86 IF new_references.owner <> UPPER(new_references.owner ) then
87 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
88 IGS_GE_MSG_STACK.ADD;
89 App_Exception.Raise_Exception;
90 END IF;
91 END IF;
92 IF upper(Column_name) = 'TABLE_NAME' OR column_name is null then
93 IF new_references.table_name <> UPPER(new_references.table_name ) then
94 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
95 IGS_GE_MSG_STACK.ADD;
96 App_Exception.Raise_Exception;
97 END IF;
98 END IF;
99
100 END Check_Constraints;
101
102
103 FUNCTION GET_PK_FOR_VALIDATION (
104 x_excpt_id IN VARCHAR2
105 ) RETURN BOOLEAN as
106
107 CURSOR cur_rowid IS
108 SELECT rowid
109 FROM IGS_GE_EXCEPTIONS
110 WHERE excpt_id = x_excpt_id
111 FOR UPDATE NOWAIT;
112
113 lv_rowid cur_rowid%RowType;
114
115 BEGIN
116
117 Open cur_rowid;
118 Fetch cur_rowid INTO lv_rowid;
119 IF (cur_rowid%FOUND) THEN
120 Close cur_rowid;
121 Return(TRUE);
122 ELSE
123 Close cur_rowid;
124 Return(FALSE);
125 END IF;
126 END ;
127
128
129 PROCEDURE Before_DML (
130 p_action IN VARCHAR2,
131 x_rowid IN VARCHAR2 DEFAULT NULL,
132 x_EXCPT_ID in number DEFAULT NULL,
133 x_row_id IN ROWID DEFAULT NULL,
134 x_owner IN VARCHAR2 DEFAULT NULL,
135 x_table_name IN VARCHAR2 DEFAULT NULL,
136 x_constraint IN VARCHAR2 DEFAULT NULL,
137 x_creation_date IN DATE DEFAULT NULL,
138 x_created_by IN NUMBER DEFAULT NULL,
139 x_last_update_date IN DATE DEFAULT NULL,
140 x_last_updated_by IN NUMBER DEFAULT NULL,
141 x_last_update_login IN NUMBER DEFAULT NULL
142 ) as
143 BEGIN
144
145 Set_Column_Values (
146 p_action,
147 x_rowid,
148 x_EXCPT_ID,
149 x_row_id,
150 x_owner,
151 x_table_name,
152 x_constraint,
153 x_creation_date,
154 x_created_by,
155 x_last_update_date,
156 x_last_updated_by,
157 x_last_update_login
158 );
159
160 IF (p_action = 'INSERT') THEN
161 IF Get_PK_For_Validation(
162 new_references.excpt_id
163 )THEN
164 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
165 IGS_GE_MSG_STACK.ADD;
166 App_Exception.Raise_Exception;
167 END IF ;
168 Check_Constraints;
169 ELSIF (p_action = 'UPDATE') THEN
170 -- Call all the procedures related to Before Update.
171 Check_Constraints;
172 ELSIF (p_action = 'DELETE') THEN
173 -- Call all the procedures related to Before Delete.
174 Null;
175 ELSIF (p_action = 'VALIDATE_INSERT') THEN
176 IF NOT Get_PK_For_Validation(
177 new_references.excpt_id
178 )THEN
179 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
180 IGS_GE_MSG_STACK.ADD;
181 App_Exception.Raise_Exception;
182 END IF ;
183 Check_Constraints;
184 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
185 -- Call all the procedures related to Before Update.
186 Check_Constraints;
187 ELSIF (p_action = 'VALIDATE_DELETE') THEN
188 -- Call all the procedures related to Before Delete.
189 Null;
190 END IF;
191
192 END Before_DML;
193
194 PROCEDURE After_DML (
195 p_action IN VARCHAR2,
196 x_rowid IN VARCHAR2
197 ) as
198 BEGIN
199
200 l_rowid := x_rowid;
201
202 IF (p_action = 'INSERT') THEN
203 -- Call all the procedures related to After Insert.
204 Null;
205 ELSIF (p_action = 'UPDATE') THEN
206 -- Call all the procedures related to After Update.
207 Null;
208 ELSIF (p_action = 'DELETE') THEN
209 -- Call all the procedures related to After Delete.
210 Null;
211 END IF;
212
213 END After_DML;
214
215 procedure INSERT_ROW (
216 X_ROWID in out NOCOPY VARCHAR2,
217 X_EXCPT_ID in out NOCOPY NUMBER,
218 X_ROW_ID in ROWID,
219 X_OWNER in VARCHAR2,
220 X_TABLE_NAME in VARCHAR2,
221 X_CONSTRAINT in VARCHAR2,
222 X_MODE in VARCHAR2 default 'R'
223 ) as
224 cursor C is select ROWID from IGS_GE_EXCEPTIONS
225 where ROW_ID = X_ROW_ID;
226 X_LAST_UPDATE_DATE DATE;
227 X_LAST_UPDATED_BY NUMBER;
228 X_LAST_UPDATE_LOGIN NUMBER;
229 begin
230 SELECT IGS_GE_EXCEPTIONS_EXCPT_ID_S.NEXTVAL INTO X_EXCPT_ID
231 FROM DUAL;
232
233 X_LAST_UPDATE_DATE := SYSDATE;
234 if(X_MODE = 'I') then
235 X_LAST_UPDATED_BY := 1;
236 X_LAST_UPDATE_LOGIN := 0;
237 elsif (X_MODE = 'R') then
238 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
239 if X_LAST_UPDATED_BY is NULL then
240 X_LAST_UPDATED_BY := -1;
241 end if;
242 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
243 if X_LAST_UPDATE_LOGIN is NULL then
244 X_LAST_UPDATE_LOGIN := -1;
245 end if;
246 else
247 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
248 IGS_GE_MSG_STACK.ADD;
249 app_exception.raise_exception;
250 end if;
251 Before_DML (
252 p_action => 'INSERT',
253 x_rowid => X_ROWID,
254 x_EXCPT_ID => X_EXCPT_ID,
255 x_row_id => X_ROW_ID,
256 x_owner => X_OWNER,
257 x_table_name => X_TABLE_NAME,
258 x_constraint => X_CONSTRAINT,
259 x_created_by => X_LAST_UPDATED_BY,
260 x_creation_date => X_LAST_UPDATE_DATE,
261 x_last_updated_by => X_LAST_UPDATED_BY,
262 x_last_update_date => X_LAST_UPDATE_DATE,
263 x_last_update_login => X_LAST_UPDATE_LOGIN
264 );
265
266 insert into IGS_GE_EXCEPTIONS (
267 EXCPT_ID,
268 ROW_ID,
269 OWNER,
270 TABLE_NAME,
271 CONSTRAINT,
272 CREATION_DATE,
273 CREATED_BY,
274 LAST_UPDATE_DATE,
275 LAST_UPDATED_BY,
276 LAST_UPDATE_LOGIN
277 ) values (
278 NEW_REFERENCES.EXCPT_ID,
279 NEW_REFERENCES.ROW_ID,
280 NEW_REFERENCES.OWNER,
281 NEW_REFERENCES.TABLE_NAME,
282 NEW_REFERENCES.CONSTRAINT,
283 X_LAST_UPDATE_DATE,
284 X_LAST_UPDATED_BY,
285 X_LAST_UPDATE_DATE,
286 X_LAST_UPDATED_BY,
287 X_LAST_UPDATE_LOGIN
288 );
289
290 open c;
291 fetch c into X_ROWID;
292 if (c%notfound) then
293 close c;
294 raise no_data_found;
295 end if;
296 close c;
297 After_DML (
298 p_action => 'INSERT',
299 x_rowid => X_ROWID
300 );
301
302 end INSERT_ROW;
303
304 procedure LOCK_ROW (
305 X_ROWID in VARCHAR2,
306 X_EXCPT_ID in NUMBER,
307 X_ROW_ID in ROWID,
308 X_OWNER in VARCHAR2,
309 X_TABLE_NAME in VARCHAR2,
310 X_CONSTRAINT in VARCHAR2
311 ) as
312 cursor c1 is select
313 ROW_ID,
314 OWNER,
315 TABLE_NAME,
316 CONSTRAINT
317 from IGS_GE_EXCEPTIONS
318 where ROWID = X_ROWID
319 for update nowait;
320 tlinfo c1%rowtype;
321
322 begin
323 open c1;
324 fetch c1 into tlinfo;
325 if (c1%notfound) then
326 close c1;
327 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
328 IGS_GE_MSG_STACK.ADD;
329 app_exception.raise_exception;
330 return;
331 end if;
332 close c1;
333
334 if ( (tlinfo.OWNER = X_OWNER)
335 AND (tlinfo.TABLE_NAME = X_TABLE_NAME)
336 AND (tlinfo.CONSTRAINT = X_CONSTRAINT)
337 ) then
338 null;
339 else
340 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
341 IGS_GE_MSG_STACK.ADD;
342 app_exception.raise_exception;
343 end if;
344 return;
345 end LOCK_ROW;
346
347 procedure UPDATE_ROW (
348 X_ROWID in VARCHAR2,
349 X_EXCPT_ID in NUMBER,
350 X_ROW_ID in ROWID,
351 X_OWNER in VARCHAR2,
352 X_TABLE_NAME in VARCHAR2,
353 X_CONSTRAINT in VARCHAR2,
354 X_MODE in VARCHAR2 default 'R'
355 ) as
356 X_LAST_UPDATE_DATE DATE;
357 X_LAST_UPDATED_BY NUMBER;
358 X_LAST_UPDATE_LOGIN NUMBER;
359 begin
360 X_LAST_UPDATE_DATE := SYSDATE;
361 if(X_MODE = 'I') then
362 X_LAST_UPDATED_BY := 1;
363 X_LAST_UPDATE_LOGIN := 0;
364 elsif (X_MODE = 'R') then
365 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
366 if X_LAST_UPDATED_BY is NULL then
367 X_LAST_UPDATED_BY := -1;
368 end if;
369 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
370 if X_LAST_UPDATE_LOGIN is NULL then
371 X_LAST_UPDATE_LOGIN := -1;
372 end if;
373 else
374 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
375 IGS_GE_MSG_STACK.ADD;
376 app_exception.raise_exception;
377 end if;
378 Before_DML (
379 p_action => 'UPDATE',
380 x_rowid => X_ROWID,
381 x_EXCPT_ID => X_EXCPT_ID,
382 x_row_id => X_ROW_ID,
383 x_owner => X_OWNER,
384 x_table_name => X_TABLE_NAME,
385 x_constraint => X_CONSTRAINT,
386 x_created_by => X_LAST_UPDATED_BY,
387 x_creation_date => X_LAST_UPDATE_DATE,
388 x_last_updated_by => X_LAST_UPDATED_BY,
389 x_last_update_date => X_LAST_UPDATE_DATE,
390 x_last_update_login => X_LAST_UPDATE_LOGIN
391 );
392
393 update IGS_GE_EXCEPTIONS set
394 ROW_ID = NEW_REFERENCES.ROW_ID,
395 OWNER = NEW_REFERENCES.OWNER,
396 TABLE_NAME = NEW_REFERENCES.TABLE_NAME,
397 CONSTRAINT = NEW_REFERENCES.CONSTRAINT,
398 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
399 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
400 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
401 where ROWID = X_ROWID
402 ;
406 After_DML (
403 if (sql%notfound) then
404 raise no_data_found;
405 end if;
407 p_action => 'UPDATE',
408 x_rowid => X_ROWID
409 );
410 end UPDATE_ROW;
411
412 procedure ADD_ROW (
413 X_ROWID in out NOCOPY VARCHAR2,
414 X_EXCPT_ID in out NOCOPY NUMBER,
415 X_ROW_ID in ROWID,
416 X_OWNER in VARCHAR2,
417 X_TABLE_NAME in VARCHAR2,
418 X_CONSTRAINT in VARCHAR2,
419 X_MODE in VARCHAR2 default 'R'
420 ) as
421 cursor c1 is select rowid from IGS_GE_EXCEPTIONS
422 where ROW_ID = X_ROW_ID
423 ;
424
425 begin
426 open c1;
427 fetch c1 into X_ROWID;
428 if (c1%notfound) then
429 close c1;
430 INSERT_ROW (
431 X_ROWID,
432 X_EXCPT_ID,
433 X_ROW_ID,
434 X_OWNER,
435 X_TABLE_NAME,
436 X_CONSTRAINT,
437 X_MODE);
438 return;
439 end if;
440 close c1;
441 UPDATE_ROW (
442 X_ROWID,
443 X_EXCPT_ID,
444 X_ROW_ID,
445 X_OWNER,
446 X_TABLE_NAME,
447 X_CONSTRAINT,
448 X_MODE);
449 end ADD_ROW;
450
451 procedure DELETE_ROW (
452 X_ROWID in VARCHAR2
453 ) as
454 begin
455 Before_DML (
456 p_action => 'DELETE',
457 x_rowid => X_ROWID
458 );
459 delete from IGS_GE_EXCEPTIONS
460 where ROWID = X_ROWID;
461 if (sql%notfound) then
462 raise no_data_found;
463 end if;
464 After_DML (
465 p_action => 'DELETE',
466 x_rowid => X_ROWID
467 );
468
469 end DELETE_ROW;
470
471 end IGS_GE_EXCEPTIONS_PKG;