DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_DEGREES_PKG

Source


1 PACKAGE BODY igs_ps_degrees_pkg AS
2 /* $Header: IGSPI1IB.pls 120.0 2005/06/02 03:51:59 appldev noship $ */
3   l_rowid VARCHAR2(25);
4   old_references igs_ps_degrees%RowType;
5   new_references igs_ps_degrees%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_degree_cd IN VARCHAR2 DEFAULT NULL,
11     x_description IN VARCHAR2 DEFAULT NULL,
12     x_program_type IN VARCHAR2 ,
13     x_closed_ind IN VARCHAR2 DEFAULT NULL,
14     x_creation_date IN DATE DEFAULT NULL,
15     x_created_by IN NUMBER DEFAULT NULL,
16     x_last_update_date IN DATE DEFAULT NULL,
17     x_last_updated_by IN NUMBER DEFAULT NULL,
18     x_last_update_login IN NUMBER DEFAULT NULL
19   ) AS
20 
21   /*************************************************************
22   Created By :
23   Date Created By :
24   Purpose :
25   Know limitations, enhancements or remarks
26   Change History
27   Who             When            What
28 
29   (reverse chronological order - newest change first)
30   ***************************************************************/
31 
32     CURSOR cur_old_ref_values IS
33       SELECT   *
34       FROM     IGS_PS_DEGREES
35       WHERE    rowid = x_rowid;
36 
37   BEGIN
38 
39     l_rowid := x_rowid;
40 
41     -- Code for setting the Old and New Reference Values.
42     -- Populate Old Values.
43     Open cur_old_ref_values;
44     Fetch cur_old_ref_values INTO old_references;
45     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
46       Close cur_old_ref_values;
47       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
48       IGS_GE_MSG_STACK.ADD;
49       App_Exception.Raise_Exception;
50       Return;
51     END IF;
52     Close cur_old_ref_values;
53 
54     -- Populate New Values.
55     new_references.degree_cd := x_degree_cd;
56     new_references.description := x_description;
57     new_references.program_type := x_program_type;
58     new_references.closed_ind := x_closed_ind;
59     IF (p_action = 'UPDATE') THEN
60       new_references.creation_date := old_references.creation_date;
61       new_references.created_by := old_references.created_by;
62     ELSE
63       new_references.creation_date := x_creation_date;
64       new_references.created_by := x_created_by;
65     END IF;
66     new_references.last_update_date := x_last_update_date;
67     new_references.last_updated_by := x_last_updated_by;
68     new_references.last_update_login := x_last_update_login;
69 
70   END Set_Column_Values;
71 
72   PROCEDURE Check_Constraints (
73 		 Column_Name IN VARCHAR2  DEFAULT NULL,
74 		 Column_Value IN VARCHAR2  DEFAULT NULL ) AS
75   /*************************************************************
76   Created By :
77   Date Created By :
78   Purpose :
79   Know limitations, enhancements or remarks
80   Change History
81   Who             When            What
82 
83   (reverse chronological order - newest change first)
84   ***************************************************************/
85 
86   BEGIN
87 
88       IF column_name IS NULL THEN
89         NULL;
90       ELSIF  UPPER(column_name) = 'CLOSED_IND'  THEN
91         new_references.closed_ind := column_value;
92         NULL;
93       END IF;
94 
95 
96 
97     -- The following code checks for check constraints on the Columns.
98       IF Upper(Column_Name) = 'CLOSED_IND' OR
99       	Column_Name IS NULL THEN
100         IF NOT (new_references.closed_ind IN ('Y', 'N'))  THEN
101            Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
102       IGS_GE_MSG_STACK.ADD;
103            App_Exception.Raise_Exception;
104         END IF;
105       END IF;
106 
107 
108   END Check_Constraints;
109 
110   PROCEDURE check_parent_existance IS
111   /*************************************************************
112   Created By :sarakshi
113   Date Created By :06-Sep-2004
114   Purpose :
115   Know limitations, enhancements or remarks
116   Change History
117   Who             When            What
118 
119   (reverse chronological order - newest change first)
120   ***************************************************************/
121 
122   BEGIN
123 
124     IF ((old_references.program_type = new_references. program_type) OR
125             (new_references. program_type IS NULL)) THEN
126            NULL;
127     ELSE
128        IF NOT IGS_PS_TYPE_PKG.Get_PK_For_Validation (
129                new_references.program_type               ) THEN
130          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
131          IGS_GE_MSG_STACK.ADD;
132          App_Exception.Raise_Exception;
133        END IF;
134     END IF;
135 
136   END check_parent_existance;
137 
138   PROCEDURE Check_Child_Existance IS
139   /*************************************************************
140   Created By :
141   Date Created By :
142   Purpose :
143   Know limitations, enhancements or remarks
144   Change History
145   Who             When            What
146 
147   (reverse chronological order - newest change first)
148   ***************************************************************/
149 
150   BEGIN
151 
152     Igs_Ps_Faclty_Degrs_Pkg.Get_FK_Igs_Ps_Degrees (
153       old_references.degree_cd
154       );
155 
156   END Check_Child_Existance;
157 
158   FUNCTION Get_PK_For_Validation (
159     x_degree_cd IN VARCHAR2
160     ) RETURN BOOLEAN AS
161 
162   /*************************************************************
163   Created By :
164   Date Created By :
165   Purpose :
166   Know limitations, enhancements or remarks
167   Change History
168   Who             When            What
169 
170   (reverse chronological order - newest change first)
171   ***************************************************************/
172 
173     CURSOR cur_rowid IS
174       SELECT   rowid
175       FROM     igs_ps_degrees
176       WHERE    degree_cd = x_degree_cd
177       FOR UPDATE NOWAIT;
178 
179     lv_rowid cur_rowid%RowType;
180 
181   BEGIN
182 
183     Open cur_rowid;
184     Fetch cur_rowid INTO lv_rowid;
185     IF (cur_rowid%FOUND) THEN
186       Close cur_rowid;
187       Return(TRUE);
188     ELSE
189       Close cur_rowid;
190       Return(FALSE);
191     END IF;
192   END Get_PK_For_Validation;
193 
194   PROCEDURE Before_DML (
195     p_action IN VARCHAR2,
196     x_rowid IN VARCHAR2 DEFAULT NULL,
197     x_degree_cd IN VARCHAR2 DEFAULT NULL,
198     x_description IN VARCHAR2 DEFAULT NULL,
199     x_program_type IN VARCHAR2 ,
200     x_closed_ind IN VARCHAR2 DEFAULT NULL,
201     x_creation_date IN DATE DEFAULT NULL,
202     x_created_by IN NUMBER DEFAULT NULL,
203     x_last_update_date IN DATE DEFAULT NULL,
204     x_last_updated_by IN NUMBER DEFAULT NULL,
205     x_last_update_login IN NUMBER DEFAULT NULL
206   ) AS
207   /*************************************************************
208   Created By :
209   Date Created By :
210   Purpose :
211   Know limitations, enhancements or remarks
212   Change History
213   Who             When            What
214 
215   (reverse chronological order - newest change first)
216   ***************************************************************/
217 
218   BEGIN
219 
220     Set_Column_Values (
221       p_action,
222       x_rowid,
223       x_degree_cd,
224       x_description,
225       x_program_type,
226       x_closed_ind,
227       x_creation_date,
228       x_created_by,
229       x_last_update_date,
230       x_last_updated_by,
231       x_last_update_login
232     );
233 
234     IF (p_action = 'INSERT') THEN
235       -- Call all the procedures related to Before Insert.
236       Null;
237 	     IF Get_Pk_For_Validation(
238     		new_references.degree_cd)  THEN
239 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
240       IGS_GE_MSG_STACK.ADD;
241 	       App_Exception.Raise_Exception;
242 	     END IF;
243       Check_Constraints;
244       check_parent_existance;
245     ELSIF (p_action = 'UPDATE') THEN
246       -- Call all the procedures related to Before Update.
247       Null;
248       Check_Constraints;
249       check_parent_existance;
250     ELSIF (p_action = 'DELETE') THEN
251       -- Call all the procedures related to Before Delete.
252       Null;
253       Check_Child_Existance;
254     ELSIF (p_action = 'VALIDATE_INSERT') THEN
255 	 -- Call all the procedures related to Before Insert.
256       IF Get_PK_For_Validation (
257     		new_references.degree_cd)  THEN
258 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
259       IGS_GE_MSG_STACK.ADD;
260 	       App_Exception.Raise_Exception;
261 	     END IF;
262       Check_Constraints;
263       check_parent_existance;
264     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
265       Check_Constraints;
266       check_parent_existance;
267     ELSIF (p_action = 'VALIDATE_DELETE') THEN
268       Check_Child_Existance;
269     END IF;
270 
271   END Before_DML;
272 
273   PROCEDURE After_DML (
274     p_action IN VARCHAR2,
275     x_rowid IN VARCHAR2
276   ) IS
277   /*************************************************************
278   Created By :
279   Date Created By :
280   Purpose :
281   Know limitations, enhancements or remarks
282   Change History
283   Who             When            What
284 
285   (reverse chronological order - newest change first)
286   ***************************************************************/
287 
288   BEGIN
289 
290     l_rowid := x_rowid;
291 
292     IF (p_action = 'INSERT') THEN
293       -- Call all the procedures related to After Insert.
294       Null;
295     ELSIF (p_action = 'UPDATE') THEN
296       -- Call all the procedures related to After Update.
297       Null;
298     ELSIF (p_action = 'DELETE') THEN
299       -- Call all the procedures related to After Delete.
300       Null;
301     END IF;
302 
303   END After_DML;
304 
305  procedure INSERT_ROW (
306       X_ROWID in out NOCOPY VARCHAR2,
307        x_DEGREE_CD IN VARCHAR2,
308        x_DESCRIPTION IN VARCHAR2,
309        X_PROGRAM_TYPE IN VARCHAR2 ,
310        x_CLOSED_IND IN VARCHAR2,
311       X_MODE in VARCHAR2 default 'R'
312   ) AS
313   /*************************************************************
314   Created By :
315   Date Created By :
316   Purpose :
317   Know limitations, enhancements or remarks
318   Change History
319   Who             When            What
320 
321   (reverse chronological order - newest change first)
322   ***************************************************************/
323 
324     cursor C is select ROWID from IGS_PS_DEGREES
325              where                 DEGREE_CD= X_DEGREE_CD
326 ;
327      X_LAST_UPDATE_DATE DATE ;
328      X_LAST_UPDATED_BY NUMBER ;
329      X_LAST_UPDATE_LOGIN NUMBER ;
330  begin
331      X_LAST_UPDATE_DATE := SYSDATE;
332       if(X_MODE = 'I') then
333         X_LAST_UPDATED_BY := 1;
334         X_LAST_UPDATE_LOGIN := 0;
335          elsif (X_MODE = 'R') then
336                X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
337             if X_LAST_UPDATED_BY is NULL then
338                 X_LAST_UPDATED_BY := -1;
339             end if;
340             X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
341          if X_LAST_UPDATE_LOGIN is NULL then
342             X_LAST_UPDATE_LOGIN := -1;
343           end if;
344        else
345         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
346       IGS_GE_MSG_STACK.ADD;
347           app_exception.raise_exception;
348        end if;
349        -----
350 
351        -----
352    Before_DML(
353  		p_action=>'INSERT',
354  		x_rowid=>X_ROWID,
355  	       x_degree_cd=>X_DEGREE_CD,
356  	       x_description=>X_DESCRIPTION,
357                x_program_type => x_program_type,
358  	       x_closed_ind=>NVL(X_CLOSED_IND,'N' ),
359 	       x_creation_date=>X_LAST_UPDATE_DATE,
360 	       x_created_by=>X_LAST_UPDATED_BY,
361 	       x_last_update_date=>X_LAST_UPDATE_DATE,
362 	       x_last_updated_by=>X_LAST_UPDATED_BY,
363 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
364      insert into IGS_PS_DEGREES (
365 		DEGREE_CD
366 		,DESCRIPTION
367 		,PROGRAM_TYPE
368 		,CLOSED_IND
369 	        ,CREATION_DATE
370 		,CREATED_BY
371 		,LAST_UPDATE_DATE
372 		,LAST_UPDATED_BY
373 		,LAST_UPDATE_LOGIN
374         ) values  (
375 	        NEW_REFERENCES.DEGREE_CD
376 	        ,NEW_REFERENCES.DESCRIPTION
377 	        ,NEW_REFERENCES.PROGRAM_TYPE
378 	        ,NEW_REFERENCES.CLOSED_IND
379 	        ,X_LAST_UPDATE_DATE
380 		,X_LAST_UPDATED_BY
381 		,X_LAST_UPDATE_DATE
382 		,X_LAST_UPDATED_BY
383 		,X_LAST_UPDATE_LOGIN
384 );
385 		open c;
386 		 fetch c into X_ROWID;
387  		if (c%notfound) then
388 		close c;
389  	     raise no_data_found;
390 		end if;
391  		close c;
392     After_DML (
393 		p_action => 'INSERT' ,
394 		x_rowid => X_ROWID );
395 end INSERT_ROW;
396  procedure LOCK_ROW (
397       X_ROWID in  VARCHAR2,
398        x_DEGREE_CD IN VARCHAR2,
399        x_DESCRIPTION IN VARCHAR2,
400        X_PROGRAM_TYPE IN VARCHAR2 ,
401        x_CLOSED_IND IN VARCHAR2  ) AS
402   /*************************************************************
403   Created By :
404   Date Created By :
405   Purpose :
406   Know limitations, enhancements or remarks
407   Change History
411   ***************************************************************/
408   Who             When            What
409 
410   (reverse chronological order - newest change first)
412 
413    cursor c1 is select
414       DESCRIPTION
415 ,     PROGRAM_TYPE
416 ,      CLOSED_IND
417     from IGS_PS_DEGREES
418     where ROWID = X_ROWID
419     for update nowait;
420      tlinfo c1%rowtype;
421 begin
422   open c1;
423   fetch c1 into tlinfo;
424   if (c1%notfound) then
425     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
426       IGS_GE_MSG_STACK.ADD;
427     close c1;
428     app_exception.raise_exception;
429     return;
430   end if;
431   close c1;
432 if ( (  tlinfo.DESCRIPTION = X_DESCRIPTION)
433   AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
434   AND ((tlinfo.PROGRAM_TYPE = X_PROGRAM_TYPE)
435             OR ((tlinfo.PROGRAM_TYPE is null)
436                 AND (X_PROGRAM_TYPE is null)))
437   ) then
438     null;
439   else
440     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
441       IGS_GE_MSG_STACK.ADD;
442     app_exception.raise_exception;
443   end if;
444   return;
445 end LOCK_ROW;
446  Procedure UPDATE_ROW (
447       X_ROWID in  VARCHAR2,
448        x_DEGREE_CD IN VARCHAR2,
449        x_DESCRIPTION IN VARCHAR2,
450        X_PROGRAM_TYPE IN VARCHAR2 ,
451        x_CLOSED_IND IN VARCHAR2,
452       X_MODE in VARCHAR2 default 'R'
453   ) AS
454   /*************************************************************
455   Created By :
456   Date Created By :
457   Purpose :
458   Know limitations, enhancements or remarks
459   Change History
460   Who             When            What
461 
462   (reverse chronological order - newest change first)
463   ***************************************************************/
464 
465      X_LAST_UPDATE_DATE DATE ;
466      X_LAST_UPDATED_BY NUMBER ;
467      X_LAST_UPDATE_LOGIN NUMBER ;
468  begin
469      X_LAST_UPDATE_DATE := SYSDATE;
470       if(X_MODE = 'I') then
471         X_LAST_UPDATED_BY := 1;
472         X_LAST_UPDATE_LOGIN := 0;
473          elsif (X_MODE = 'R') then
474                X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
475             if X_LAST_UPDATED_BY is NULL then
476                 X_LAST_UPDATED_BY := -1;
477             end if;
478             X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
479          if X_LAST_UPDATE_LOGIN is NULL then
480             X_LAST_UPDATE_LOGIN := -1;
481           end if;
482        else
483         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
484       IGS_GE_MSG_STACK.ADD;
485           app_exception.raise_exception;
486        end if;
487    Before_DML(
488  		p_action=>'UPDATE',
489  		x_rowid=>X_ROWID,
490  	       x_degree_cd=>X_DEGREE_CD,
491  	       x_description=>X_DESCRIPTION,
492                x_program_type=> x_program_type,
493  	       x_closed_ind=>NVL(X_CLOSED_IND,'N' ),
494 	       x_creation_date=>X_LAST_UPDATE_DATE,
495 	       x_created_by=>X_LAST_UPDATED_BY,
496 	       x_last_update_date=>X_LAST_UPDATE_DATE,
497 	       x_last_updated_by=>X_LAST_UPDATED_BY,
498 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
499    update IGS_PS_DEGREES set
500       DESCRIPTION =  NEW_REFERENCES.DESCRIPTION,
501       PROGRAM_TYPE = NEW_REFERENCES.PROGRAM_TYPE,
502       CLOSED_IND =  NEW_REFERENCES.CLOSED_IND,
503 	LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
504 	LAST_UPDATED_BY = X_LAST_UPDATED_BY,
505 	LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
506 	  where ROWID = X_ROWID;
507 	if (sql%notfound) then
508 		raise no_data_found;
509 	end if;
510 
511  After_DML (
512 	p_action => 'UPDATE' ,
513 	x_rowid => X_ROWID
514 	);
515 end UPDATE_ROW;
516  procedure ADD_ROW (
517       X_ROWID in out NOCOPY VARCHAR2,
518        x_DEGREE_CD IN VARCHAR2,
519        x_DESCRIPTION IN VARCHAR2,
520        X_PROGRAM_TYPE IN VARCHAR2 ,
521        x_CLOSED_IND IN VARCHAR2,
522       X_MODE in VARCHAR2 default 'R'
523   ) AS
524   /*************************************************************
525   Created By :
526   Date Created By :
527   Purpose :
528   Know limitations, enhancements or remarks
529   Change History
530   Who             When            What
531 
532   (reverse chronological order - newest change first)
533   ***************************************************************/
534 
535     cursor c1 is select ROWID from IGS_PS_DEGREES
536              where     DEGREE_CD= X_DEGREE_CD
537 ;
538 begin
539 	open c1;
540 		fetch c1 into X_ROWID;
541 	if (c1%notfound) then
542 	close c1;
543     INSERT_ROW (
544       X_ROWID,
545        X_DEGREE_CD,
546        X_DESCRIPTION,
547        X_PROGRAM_TYPE,
548        X_CLOSED_IND,
549       X_MODE );
550      return;
551 	end if;
552 	   close c1;
553 UPDATE_ROW (
554       X_ROWID,
555        X_DEGREE_CD,
556        X_DESCRIPTION,
557        X_PROGRAM_TYPE,
558        X_CLOSED_IND,
559       X_MODE );
560 end ADD_ROW;
561 procedure DELETE_ROW (
565   Created By :
562   X_ROWID in VARCHAR2
563 ) AS
564   /*************************************************************
566   Date Created By :
567   Purpose :
568   Know limitations, enhancements or remarks
569   Change History
570   Who             When            What
571 
572   (reverse chronological order - newest change first)
573   ***************************************************************/
574 
575 begin
576 Before_DML (
577 p_action => 'DELETE',
578 x_rowid => X_ROWID
579 );
580  delete from IGS_PS_DEGREES
581  where ROWID = X_ROWID;
582   if (sql%notfound) then
583     raise no_data_found;
584   end if;
585 After_DML (
586  p_action => 'DELETE',
587  x_rowid => X_ROWID
588 );
589 end DELETE_ROW;
590 END igs_ps_degrees_pkg;