[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_VER_NOTE_PKG
Source
1 package body IGS_PS_VER_NOTE_PKG AS
2 /* $Header: IGSPI44B.pls 115.3 2002/11/29 02:28:33 nsidana ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_PS_VER_NOTE%RowType;
6 new_references IGS_PS_VER_NOTE%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_course_cd IN VARCHAR2 DEFAULT NULL,
12 x_version_number IN NUMBER DEFAULT NULL,
13 x_reference_number IN NUMBER DEFAULT NULL,
14 x_crs_note_type 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_PS_VER_NOTE
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.course_cd := x_course_cd;
46 new_references.version_number := x_version_number;
47 new_references.reference_number := x_reference_number;
48 new_references.crs_note_type := x_crs_note_type;
49 IF (p_action = 'UPDATE') THEN
50 new_references.creation_date := old_references.creation_date;
51 new_references.created_by := old_references.created_by;
52 ELSE
53 new_references.creation_date := x_creation_date;
54 new_references.created_by := x_created_by;
55 END IF;
56 new_references.last_update_date := x_last_update_date;
57 new_references.last_updated_by := x_last_updated_by;
58 new_references.last_update_login := x_last_update_login;
59
60 END Set_Column_Values;
61
62 PROCEDURE Check_Constraints (
63 Column_Name IN VARCHAR2 DEFAULT NULL,
64 Column_Value IN VARCHAR2 DEFAULT NULL
65 ) IS
66 BEGIN
67 IF column_name is null THEN
68 NULL;
69 ELSIF upper(column_name) = 'COURSE_CD' THEN
70 new_references.course_cd := column_value;
71 ELSIF upper(column_name) = 'CRS_NOTE_TYPE' THEN
72 new_references.crs_note_type := column_value;
73 END IF;
74 IF upper(column_name)= 'COURSE_CD' OR
75 column_name is null THEN
76 IF new_references.course_cd <> UPPER(new_references.course_cd)
77 THEN
78 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
79 IGS_GE_MSG_STACK.ADD;
80 App_Exception.Raise_Exception;
81 END IF;
82 END IF;
83 IF upper(column_name)= 'CRS_NOTE_TYPE' OR
84 column_name is null THEN
85 IF new_references.crs_note_type <> UPPER(new_references.crs_note_type)
86 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 END Check_Constraints;
93
94
95 PROCEDURE Check_Parent_Existance AS
96 BEGIN
97
98 IF (((old_references.crs_note_type = new_references.crs_note_type)) OR
99 ((new_references.crs_note_type IS NULL))) THEN
100 NULL;
101 ELSE
102 IF NOT IGS_PS_NOTE_TYPE_PKG.Get_PK_For_Validation (
103 new_references.crs_note_type
104 )THEN
105 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
106 IGS_GE_MSG_STACK.ADD;
107 App_Exception.Raise_Exception;
108 END IF;
109 END IF;
110
111 IF (((old_references.course_cd = new_references.course_cd) AND
112 (old_references.version_number = new_references.version_number)) OR
113 ((new_references.course_cd IS NULL) OR
114 (new_references.version_number IS NULL))) THEN
115 NULL;
116 ELSE
117 IF NOT IGS_PS_VER_PKG.Get_PK_For_Validation (
118 new_references.course_cd,
119 new_references.version_number
120 )THEN
121 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
122 IGS_GE_MSG_STACK.ADD;
123 App_Exception.Raise_Exception;
124 END IF;
125
126 END IF;
127
128 IF (((old_references.reference_number = new_references.reference_number)) OR
129 ((new_references.reference_number IS NULL))) THEN
130 NULL;
131 ELSE
132 IF NOT IGS_GE_NOTE_PKG.Get_PK_For_Validation (
133 new_references.reference_number
134 )THEN
135 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
136 IGS_GE_MSG_STACK.ADD;
137 App_Exception.Raise_Exception;
138 END IF;
139
140 END IF;
141
142 END Check_Parent_Existance;
143
144 FUNCTION Get_PK_For_Validation (
145 x_course_cd IN VARCHAR2,
146 x_version_number IN NUMBER,
147 x_reference_number IN NUMBER
148 ) RETURN BOOLEAN AS
149
150 CURSOR cur_rowid IS
151 SELECT rowid
152 FROM IGS_PS_VER_NOTE
153 WHERE course_cd = x_course_cd
154 AND version_number = x_version_number
155 AND reference_number = x_reference_number
156 FOR UPDATE NOWAIT;
157
158 lv_rowid cur_rowid%RowType;
159
160 BEGIN
161
162 Open cur_rowid;
163 IF (cur_rowid%FOUND) THEN
164 Close cur_rowid;
165 Return(TRUE);
166 ELSE
167 Close cur_rowid;
168 Return(FALSE);
169 END IF;
170 END Get_PK_For_Validation;
171
172 PROCEDURE GET_FK_IGS_PS_NOTE_TYPE (
173 x_crs_note_type IN VARCHAR2
174 ) AS
175
176 CURSOR cur_rowid IS
177 SELECT rowid
178 FROM IGS_PS_VER_NOTE
179 WHERE crs_note_type = x_crs_note_type ;
180
181 lv_rowid cur_rowid%RowType;
182
183 BEGIN
184
185 Open cur_rowid;
186 Fetch cur_rowid INTO lv_rowid;
187 IF (cur_rowid%FOUND) THEN
188 Close cur_rowid;
189 Fnd_Message.Set_Name ('IGS', 'IGS_PS_CVN_CNT_FK');
190 IGS_GE_MSG_STACK.ADD;
191 App_Exception.Raise_Exception;
192 Return;
193 END IF;
194 Close cur_rowid;
195
196 END GET_FK_IGS_PS_NOTE_TYPE;
197
198 PROCEDURE GET_FK_IGS_PS_VER (
199 x_course_cd IN VARCHAR2,
200 x_version_number IN NUMBER
201 ) AS
202
203 CURSOR cur_rowid IS
204 SELECT rowid
205 FROM IGS_PS_VER_NOTE
206 WHERE course_cd = x_course_cd
207 AND version_number = x_version_number ;
208
209 lv_rowid cur_rowid%RowType;
210
211 BEGIN
212
213 Open cur_rowid;
214 Fetch cur_rowid INTO lv_rowid;
215 IF (cur_rowid%FOUND) THEN
216 Close cur_rowid;
217 Fnd_Message.Set_Name ('IGS', 'IGS_PS_CVN_CRV_FK');
218 IGS_GE_MSG_STACK.ADD;
219 App_Exception.Raise_Exception;
220 Return;
221 END IF;
222 Close cur_rowid;
223
224 END GET_FK_IGS_PS_VER;
225
226 PROCEDURE GET_FK_IGS_GE_NOTE (
227 x_reference_number IN NUMBER
228 ) AS
229
230 CURSOR cur_rowid IS
231 SELECT rowid
232 FROM IGS_PS_VER_NOTE
233 WHERE reference_number = x_reference_number ;
234
235 lv_rowid cur_rowid%RowType;
236
237 BEGIN
238
239 Open cur_rowid;
240 Fetch cur_rowid INTO lv_rowid;
241 IF (cur_rowid%FOUND) THEN
242 Close cur_rowid;
243 Fnd_Message.Set_Name ('IGS', 'IGS_PS_CVN_NOTE_FK');
244 IGS_GE_MSG_STACK.ADD;
245 App_Exception.Raise_Exception;
246 Return;
247 END IF;
248 Close cur_rowid;
249
250 END GET_FK_IGS_GE_NOTE;
251
252 PROCEDURE Before_DML (
253 p_action IN VARCHAR2,
254 x_rowid IN VARCHAR2 DEFAULT NULL,
255 x_course_cd IN VARCHAR2 DEFAULT NULL,
256 x_version_number IN NUMBER DEFAULT NULL,
257 x_reference_number IN NUMBER DEFAULT NULL,
258 x_crs_note_type IN VARCHAR2 DEFAULT NULL,
259 x_creation_date IN DATE DEFAULT NULL,
260 x_created_by IN NUMBER DEFAULT NULL,
261 x_last_update_date IN DATE DEFAULT NULL,
262 x_last_updated_by IN NUMBER DEFAULT NULL,
263 x_last_update_login IN NUMBER DEFAULT NULL
264 ) AS
265 BEGIN
266
267 Set_Column_Values (
268 p_action,
269 x_rowid,
270 x_course_cd,
271 x_version_number,
272 x_reference_number,
273 x_crs_note_type,
274 x_creation_date,
275 x_created_by,
276 x_last_update_date,
277 x_last_updated_by,
278 x_last_update_login
279 );
280
281 IF (p_action = 'INSERT') THEN
282 -- Call all the procedures related to Before Insert.
283
284 IF Get_PK_For_Validation(
285 new_references.course_cd ,
286 new_references.version_number,
287 new_references.reference_number
288 ) THEN
289 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
290 IGS_GE_MSG_STACK.ADD;
291 App_Exception.Raise_Exception;
292 END IF;
293 Check_Constraints;
294 Check_Parent_Existance;
295 ELSIF (p_action = 'UPDATE') THEN
296 -- Call all the procedures related to Before Update.
297
298 Check_Constraints;
299 Check_Parent_Existance;
300
301 ELSIF (p_action = 'VALIDATE_INSERT') THEN
302 IF Get_PK_For_Validation(
303 new_references.course_cd ,
304 new_references.version_number,
305 new_references.reference_number
306 ) THEN
307 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
308 IGS_GE_MSG_STACK.ADD;
309 App_Exception.Raise_Exception;
310 END IF;
311 Check_Constraints;
312 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
313 Check_Constraints;
314
315 END IF;
316 END Before_DML;
317
318 PROCEDURE After_DML (
319 p_action IN VARCHAR2,
320 x_rowid IN VARCHAR2
321 ) AS
322 BEGIN
323
324 l_rowid := x_rowid;
325
326
327 END After_DML;
328
329 procedure INSERT_ROW (
330 X_ROWID in out NOCOPY VARCHAR2,
331 X_COURSE_CD in VARCHAR2,
332 X_VERSION_NUMBER in NUMBER,
333 X_REFERENCE_NUMBER in NUMBER,
334 X_CRS_NOTE_TYPE in VARCHAR2,
335 X_MODE in VARCHAR2 default 'R'
336 ) AS
337 cursor C is select ROWID from IGS_PS_VER_NOTE
338 where COURSE_CD = X_COURSE_CD
339 and VERSION_NUMBER = X_VERSION_NUMBER
340 and REFERENCE_NUMBER = X_REFERENCE_NUMBER;
341 X_LAST_UPDATE_DATE DATE;
342 X_LAST_UPDATED_BY NUMBER;
343 X_LAST_UPDATE_LOGIN NUMBER;
344 begin
345 X_LAST_UPDATE_DATE := SYSDATE;
346 if(X_MODE = 'I') then
347 X_LAST_UPDATED_BY := 1;
348 X_LAST_UPDATE_LOGIN := 0;
349 elsif (X_MODE = 'R') then
350 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
351 if X_LAST_UPDATED_BY is NULL then
352 X_LAST_UPDATED_BY := -1;
353 end if;
354 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
355 if X_LAST_UPDATE_LOGIN is NULL then
356 X_LAST_UPDATE_LOGIN := -1;
357 end if;
358 else
359 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
360 IGS_GE_MSG_STACK.ADD;
361 app_exception.raise_exception;
362 end if;
363
364 Before_DML( p_action => 'INSERT',
365 x_rowid => X_ROWID,
366 x_course_cd => X_COURSE_CD,
367 x_version_number => X_VERSION_NUMBER,
368 x_reference_number => X_REFERENCE_NUMBER,
369 x_crs_note_type => X_CRS_NOTE_TYPE,
370 x_creation_date => X_LAST_UPDATE_DATE,
371 x_created_by => X_LAST_UPDATED_BY,
372 x_last_update_date => X_LAST_UPDATE_DATE,
373 x_last_updated_by => X_LAST_UPDATED_BY,
374 x_last_update_login => X_LAST_UPDATE_LOGIN
375 );
376 insert into IGS_PS_VER_NOTE (
377 COURSE_CD,
378 VERSION_NUMBER,
379 REFERENCE_NUMBER,
380 CRS_NOTE_TYPE,
381 CREATION_DATE,
382 CREATED_BY,
383 LAST_UPDATE_DATE,
384 LAST_UPDATED_BY,
385 LAST_UPDATE_LOGIN
386 ) values (
387 NEW_REFERENCES.COURSE_CD,
388 NEW_REFERENCES.VERSION_NUMBER,
389 NEW_REFERENCES.REFERENCE_NUMBER,
390 NEW_REFERENCES.CRS_NOTE_TYPE,
391 X_LAST_UPDATE_DATE,
392 X_LAST_UPDATED_BY,
393 X_LAST_UPDATE_DATE,
394 X_LAST_UPDATED_BY,
395 X_LAST_UPDATE_LOGIN
396 );
397
398 open c;
399 fetch c into X_ROWID;
400 if (c%notfound) then
401 close c;
402 raise no_data_found;
403 end if;
404 close c;
405 After_DML(
406 p_action => 'INSERT',
407 x_rowid => X_ROWID
408 );
409
410 end INSERT_ROW;
411
412 procedure LOCK_ROW (
413 X_ROWID in VARCHAR2,
414 X_COURSE_CD in VARCHAR2,
415 X_VERSION_NUMBER in NUMBER,
416 X_REFERENCE_NUMBER in NUMBER,
417 X_CRS_NOTE_TYPE in VARCHAR2
418 ) AS
419 cursor c1 is select
420 CRS_NOTE_TYPE
421 from IGS_PS_VER_NOTE
422 where ROWID = X_ROWID for update nowait;
423 tlinfo c1%rowtype;
424
425 begin
426 open c1;
427 fetch c1 into tlinfo;
428 if (c1%notfound) then
429 close c1;
430 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
431 IGS_GE_MSG_STACK.ADD;
432 app_exception.raise_exception;
433 return;
434 end if;
435 close c1;
436
437 if ( (tlinfo.CRS_NOTE_TYPE = X_CRS_NOTE_TYPE)
438 ) then
439 null;
440 else
441 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
442 IGS_GE_MSG_STACK.ADD;
443 app_exception.raise_exception;
444 end if;
445 return;
446 end LOCK_ROW;
447
448 procedure UPDATE_ROW (
449 X_ROWID in VARCHAR2,
450 X_COURSE_CD in VARCHAR2,
451 X_VERSION_NUMBER in NUMBER,
452 X_REFERENCE_NUMBER in NUMBER,
453 X_CRS_NOTE_TYPE in VARCHAR2,
454 X_MODE in VARCHAR2 default 'R'
455 ) AS
456 X_LAST_UPDATE_DATE DATE;
457 X_LAST_UPDATED_BY NUMBER;
458 X_LAST_UPDATE_LOGIN NUMBER;
459 begin
460 X_LAST_UPDATE_DATE := SYSDATE;
461 if(X_MODE = 'I') then
462 X_LAST_UPDATED_BY := 1;
463 X_LAST_UPDATE_LOGIN := 0;
464 elsif (X_MODE = 'R') then
465 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
466 if X_LAST_UPDATED_BY is NULL then
467 X_LAST_UPDATED_BY := -1;
468 end if;
469 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
470 if X_LAST_UPDATE_LOGIN is NULL then
471 X_LAST_UPDATE_LOGIN := -1;
472 end if;
473 else
474 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
475 IGS_GE_MSG_STACK.ADD;
476 app_exception.raise_exception;
477 end if;
478
479 Before_DML( p_action => 'UPDATE',
480 x_rowid => X_ROWID,
481 x_course_cd => X_COURSE_CD,
482 x_version_number => X_VERSION_NUMBER,
483 x_reference_number => X_REFERENCE_NUMBER,
484 x_crs_note_type => X_CRS_NOTE_TYPE,
485 x_creation_date => X_LAST_UPDATE_DATE,
486 x_created_by => X_LAST_UPDATED_BY,
487 x_last_update_date => X_LAST_UPDATE_DATE,
488 x_last_updated_by => X_LAST_UPDATED_BY,
489 x_last_update_login => X_LAST_UPDATE_LOGIN
490 );
491 update IGS_PS_VER_NOTE set
492 CRS_NOTE_TYPE = NEW_REFERENCES.CRS_NOTE_TYPE,
493 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
494 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
495 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
496 where ROWID = X_ROWID
497 ;
498 if (sql%notfound) then
499 raise no_data_found;
500 end if;
501 After_DML(
502 p_action => 'UPDATE',
503 x_rowid => X_ROWID
504 );
505 end UPDATE_ROW;
506
507 procedure ADD_ROW (
508 X_ROWID in out NOCOPY VARCHAR2,
509 X_COURSE_CD in VARCHAR2,
510 X_VERSION_NUMBER in NUMBER,
511 X_REFERENCE_NUMBER in NUMBER,
512 X_CRS_NOTE_TYPE in VARCHAR2,
513 X_MODE in VARCHAR2 default 'R'
514 ) AS
515 cursor c1 is select rowid from IGS_PS_VER_NOTE
516 where COURSE_CD = X_COURSE_CD
517 and VERSION_NUMBER = X_VERSION_NUMBER
518 and REFERENCE_NUMBER = X_REFERENCE_NUMBER
519 ;
520 begin
521 open c1;
522 fetch c1 into X_ROWID;
523 if (c1%notfound) then
524 close c1;
525 INSERT_ROW (
526 X_ROWID,
527 X_COURSE_CD,
528 X_VERSION_NUMBER,
529 X_REFERENCE_NUMBER,
530 X_CRS_NOTE_TYPE,
531 X_MODE);
532 return;
533 end if;
534 close c1;
535 UPDATE_ROW (
536 X_ROWID,
537 X_COURSE_CD,
538 X_VERSION_NUMBER,
539 X_REFERENCE_NUMBER,
540 X_CRS_NOTE_TYPE,
541 X_MODE);
542 end ADD_ROW;
543
544 procedure DELETE_ROW (
545 X_ROWID in VARCHAR2
546 ) AS
547 begin
548 Before_DML( p_action => 'DELETE',
549 x_rowid => X_ROWID
550 );
551 delete from IGS_PS_VER_NOTE
552 where ROWID = X_ROWID;
553 if (sql%notfound) then
554 raise no_data_found;
555 end if;
556 After_DML(
557 p_action => 'DELETE',
558 x_rowid => X_ROWID
559 );
560
561 end DELETE_ROW;
562
563 end IGS_PS_VER_NOTE_PKG;