DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_EDUGOAL_PKG

Source


1 PACKAGE BODY igs_ad_edugoal_pkg AS
2 /* $Header: IGSAIA1B.pls 120.3 2005/10/03 08:22:07 appldev ship $ */
3   l_rowid VARCHAR2(25);
4   old_references igs_ad_edugoal%RowType;
5   new_references igs_ad_edugoal%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_post_edugoal_id IN NUMBER DEFAULT NULL,
11     x_person_id IN NUMBER DEFAULT NULL,
12     x_admission_appl_number IN NUMBER DEFAULT NULL,
13     x_nominated_course_cd IN VARCHAR2 DEFAULT NULL,
14     x_sequence_number IN NUMBER DEFAULT NULL,
15     x_edu_goal_id IN NUMBER DEFAULT NULL,
16     x_creation_date IN DATE DEFAULT NULL,
17     x_created_by IN NUMBER DEFAULT NULL,
18     x_last_update_date IN DATE DEFAULT NULL,
19     x_last_updated_by IN NUMBER DEFAULT NULL,
20     x_last_update_login IN NUMBER DEFAULT NULL
21   ) AS
22 
23   /*************************************************************
24   Created By :
25   Date Created By :
26   Purpose :
27   Know limitations, enhancements or remarks
28   Change History
29   Who             When            What
30 
31   (reverse chronological order - newest change first)
32   ***************************************************************/
33 
34     CURSOR cur_old_ref_values IS
35       SELECT   *
36       FROM     IGS_AD_EDUGOAL
37       WHERE    rowid = x_rowid;
38 
39   BEGIN
40 
41     l_rowid := x_rowid;
42 
43     -- Code for setting the Old and New Reference Values.
44     -- Populate Old Values.
45     Open cur_old_ref_values;
46     Fetch cur_old_ref_values INTO old_references;
47     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
48       Close cur_old_ref_values;
49       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
50       IGS_GE_MSG_STACK.ADD;
51       App_Exception.Raise_Exception;
52       Return;
53     END IF;
54     Close cur_old_ref_values;
55 
56     -- Populate New Values.
57     new_references.post_edugoal_id := x_post_edugoal_id;
58     new_references.person_id := x_person_id;
59     new_references.admission_appl_number := x_admission_appl_number;
60     new_references.nominated_course_cd := x_nominated_course_cd;
61     new_references.sequence_number := x_sequence_number;
62     new_references.edu_goal_id := x_edu_goal_id;
63     IF (p_action = 'UPDATE') THEN
64       new_references.creation_date := old_references.creation_date;
65       new_references.created_by := old_references.created_by;
66     ELSE
67       new_references.creation_date := x_creation_date;
68       new_references.created_by := x_created_by;
69     END IF;
70     new_references.last_update_date := x_last_update_date;
71     new_references.last_updated_by := x_last_updated_by;
72     new_references.last_update_login := x_last_update_login;
73 
74   END Set_Column_Values;
75 
76   PROCEDURE Check_Constraints (
77 		 Column_Name IN VARCHAR2  DEFAULT NULL,
78 		 Column_Value IN VARCHAR2  DEFAULT NULL ) AS
79   /*************************************************************
80   Created By :
81   Date Created By :
82   Purpose :
83   Know limitations, enhancements or remarks
84   Change History
85   Who             When            What
86 
87   (reverse chronological order - newest change first)
88   ***************************************************************/
89 
90   BEGIN
91 
92       IF column_name IS NULL THEN
93         NULL;
94         NULL;
95       END IF;
96 
97 
98 
99 
100   END Check_Constraints;
101 
102  PROCEDURE Check_Uniqueness AS
103   /*************************************************************
104   Created By :
105   Date Created By :
106   Purpose :
107   Know limitations, enhancements or remarks
108   Change History
109   Who             When            What
110 
111   (reverse chronological order - newest change first)
112   ***************************************************************/
113 
114    begin
115      		IF Get_Uk_For_Validation (
116     		new_references.admission_appl_number
117     		,new_references.edu_goal_id
118     		,new_references.nominated_course_cd
119     		,new_references.person_id
120     		,new_references.sequence_number
121     		) THEN
122  		Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
123       IGS_GE_MSG_STACK.ADD;
124 			app_exception.raise_exception;
125     		END IF;
126  END Check_Uniqueness ;
127   PROCEDURE Check_Parent_Existance AS
128   /*************************************************************
129   Created By :
130   Date Created By :
131   Purpose :
132   Know limitations, enhancements or remarks
133   Change History
134   Who             When            What
135 
136   (reverse chronological order - newest change first)
137   ***************************************************************/
138 
139   BEGIN
140 
141     IF (((old_references.person_id = new_references.person_id) AND
142          (old_references.admission_appl_number = new_references.admission_appl_number) AND
143          (old_references.nominated_course_cd = new_references.nominated_course_cd) AND
144          (old_references.sequence_number = new_references.sequence_number)) OR
145         ((new_references.person_id IS NULL) OR
146          (new_references.admission_appl_number IS NULL) OR
147          (new_references.nominated_course_cd IS NULL) OR
148          (new_references.sequence_number IS NULL))) THEN
149       NULL;
150     ELSIF NOT Igs_Ad_Ps_Appl_Inst_Pkg.Get_PK_For_Validation (
151         		new_references.person_id,
152          		 new_references.admission_appl_number,
153          		 new_references.nominated_course_cd,
154          		 new_references.sequence_number
155         )  THEN
156          FND_MESSAGE.SET_NAME('IGS','IGS_GE_PK_UK_NOT_FOUND');
157          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_PROGRAM_APPL'));
158          IGS_GE_MSG_STACK.ADD;
159          App_Exception.Raise_Exception;
160     END IF;
161 
162     IF (((old_references.edu_goal_id = new_references.edu_goal_id)) OR
163         ((new_references.edu_goal_id IS NULL))) THEN
164       NULL;
165     ELSIF NOT Igs_Ad_Code_Classes_Pkg.Get_UK2_For_Validation (
166         		new_references.edu_goal_id ,
167                         'EDU_GOALS',
168             'N'
169         )  THEN
170          FND_MESSAGE.SET_NAME('IGS','IGS_GE_PK_UK_NOT_FOUND_CLOSED');
171          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_EDUCATION_GOAL'));
172          IGS_GE_MSG_STACK.ADD;
173          App_Exception.Raise_Exception;
174     END IF;
175 
176   END Check_Parent_Existance;
177 
178   FUNCTION Get_PK_For_Validation (
179     x_post_edugoal_id IN NUMBER
180     ) RETURN BOOLEAN AS
181 
182   /*************************************************************
183   Created By :
184   Date Created By :
185   Purpose :
186   Know limitations, enhancements or remarks
187   Change History
188   Who             When            What
189 
190   (reverse chronological order - newest change first)
191   ***************************************************************/
192 
193     CURSOR cur_rowid IS
194       SELECT   rowid
195       FROM     igs_ad_edugoal
196       WHERE    post_edugoal_id = x_post_edugoal_id
197       FOR UPDATE NOWAIT;
198 
199     lv_rowid cur_rowid%RowType;
200 
201   BEGIN
202 
203     Open cur_rowid;
204     Fetch cur_rowid INTO lv_rowid;
205     IF (cur_rowid%FOUND) THEN
206       Close cur_rowid;
207       Return(TRUE);
208     ELSE
209       Close cur_rowid;
210       Return(FALSE);
211     END IF;
212   END Get_PK_For_Validation;
213 
214   FUNCTION Get_UK_For_Validation (
215     x_admission_appl_number IN NUMBER,
216     x_edu_goal_id IN NUMBER,
217     x_nominated_course_cd IN VARCHAR2,
218     x_person_id IN NUMBER,
219     x_sequence_number IN NUMBER
220     ) RETURN BOOLEAN AS
221 
222   /*************************************************************
223   Created By :
224   Date Created By :
225   Purpose :
226   Know limitations, enhancements or remarks
227   Change History
228   Who             When            What
229 
230   (reverse chronological order - newest change first)
231   ***************************************************************/
232 
233     CURSOR cur_rowid IS
234       SELECT   rowid
235       FROM     igs_ad_edugoal
236       WHERE    admission_appl_number = x_admission_appl_number
237       AND      edu_goal_id = x_edu_goal_id
238       AND      nominated_course_cd = x_nominated_course_cd
239       AND      person_id = x_person_id
240       AND      sequence_number = x_sequence_number 	and      ((l_rowid is null) or (rowid <> l_rowid))
241 
242       ;
243     lv_rowid cur_rowid%RowType;
244 
245   BEGIN
246 
247     Open cur_rowid;
248     Fetch cur_rowid INTO lv_rowid;
249     IF (cur_rowid%FOUND) THEN
250       Close cur_rowid;
251         return (true);
252         ELSE
253        close cur_rowid;
254       return(false);
255     END IF;
256   END Get_UK_For_Validation ;
257   PROCEDURE Get_FK_Igs_Ad_Ps_Appl_Inst (
258     x_person_id IN NUMBER,
259     x_admission_appl_number IN NUMBER,
260     x_nominated_course_cd IN VARCHAR2,
261     x_sequence_number IN NUMBER
262     ) AS
263 
264   /*************************************************************
265   Created By :
266   Date Created By :
267   Purpose :
268   Know limitations, enhancements or remarks
269   Change History
270   Who             When            What
271 
272   (reverse chronological order - newest change first)
273   ***************************************************************/
274 
275     CURSOR cur_rowid IS
276       SELECT   rowid
277       FROM     igs_ad_edugoal
278       WHERE    person_id = x_person_id
279       AND      admission_appl_number = x_admission_appl_number
280       AND      nominated_course_cd = x_nominated_course_cd
281       AND      sequence_number = x_sequence_number ;
282 
283     lv_rowid cur_rowid%RowType;
284 
285   BEGIN
286 
287     Open cur_rowid;
288     Fetch cur_rowid INTO lv_rowid;
289     IF (cur_rowid%FOUND) THEN
290       Close cur_rowid;
291       Fnd_Message.Set_Name ('IGS', 'IGS_AD_AEG_ACAI_FK');
292       IGS_GE_MSG_STACK.ADD;
293       App_Exception.Raise_Exception;
294       Return;
295     END IF;
296     Close cur_rowid;
297 
298   END Get_FK_Igs_Ad_Ps_Appl_Inst;
299 
300   PROCEDURE Get_FK_Igs_Ad_Code_Classes (
301     x_code_id IN NUMBER
302     ) AS
303 
304   /*************************************************************
305   Created By :
306   Date Created By :
307   Purpose :
308   Know limitations, enhancements or remarks
309   Change History
310   Who             When            What
311 
312   (reverse chronological order - newest change first)
313   ***************************************************************/
314 
315     CURSOR cur_rowid IS
316       SELECT   rowid
317       FROM     igs_ad_edugoal
318       WHERE    edu_goal_id = x_code_id ;
319 
320     lv_rowid cur_rowid%RowType;
321 
322   BEGIN
323 
324     Open cur_rowid;
325     Fetch cur_rowid INTO lv_rowid;
326     IF (cur_rowid%FOUND) THEN
327       Close cur_rowid;
328       Fnd_Message.Set_Name ('IGS', 'IGS_AD_AEG_ACDC_FK');
329       IGS_GE_MSG_STACK.ADD;
330       App_Exception.Raise_Exception;
331       Return;
332     END IF;
333     Close cur_rowid;
334 
335   END Get_FK_Igs_Ad_Code_Classes;
336 
337   PROCEDURE Before_DML (
338     p_action IN VARCHAR2,
339     x_rowid IN VARCHAR2 DEFAULT NULL,
340     x_post_edugoal_id IN NUMBER DEFAULT NULL,
341     x_person_id IN NUMBER DEFAULT NULL,
342     x_admission_appl_number IN NUMBER DEFAULT NULL,
343     x_nominated_course_cd IN VARCHAR2 DEFAULT NULL,
344     x_sequence_number IN NUMBER DEFAULT NULL,
345     x_edu_goal_id IN NUMBER DEFAULT NULL,
346     x_creation_date IN DATE DEFAULT NULL,
347     x_created_by IN NUMBER DEFAULT NULL,
348     x_last_update_date IN DATE DEFAULT NULL,
349     x_last_updated_by IN NUMBER DEFAULT NULL,
350     x_last_update_login IN NUMBER DEFAULT NULL
351   ) AS
352   /*************************************************************
353   Created By :
354   Date Created By :
355   Purpose :
356   Know limitations, enhancements or remarks
357   Change History
358   Who             When            What
359 
360   (reverse chronological order - newest change first)
361   ***************************************************************/
362 
363   BEGIN
364 
365     Set_Column_Values (
366       p_action,
367       x_rowid,
368       x_post_edugoal_id,
369       x_person_id,
370       x_admission_appl_number,
371       x_nominated_course_cd,
372       x_sequence_number,
373       x_edu_goal_id,
374       x_creation_date,
375       x_created_by,
376       x_last_update_date,
377       x_last_updated_by,
378       x_last_update_login
379     );
380 
381 
382     igs_ad_gen_002.check_adm_appl_inst_stat(
383       nvl(x_person_id,old_references.person_id),
384       nvl(x_admission_appl_number,old_references.admission_appl_number),
385       nvl(x_nominated_course_cd,old_references.nominated_course_cd),
386       nvl(x_sequence_number,old_references.sequence_number),
387       'Y'              -- to enable the update of education goals in proceed phase - apadegal adtd001 igs.m
388     );
389 
390     IF (p_action = 'INSERT') THEN
391       -- Call all the procedures related to Before Insert.
392       Null;
393 	     IF Get_Pk_For_Validation(
394     		new_references.post_edugoal_id)  THEN
395 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
396       IGS_GE_MSG_STACK.ADD;
397 	       App_Exception.Raise_Exception;
398 	     END IF;
399       Check_Uniqueness;
400       Check_Constraints;
401       Check_Parent_Existance;
402     ELSIF (p_action = 'UPDATE') THEN
403       -- Call all the procedures related to Before Update.
404       Null;
405       Check_Uniqueness;
406       Check_Constraints;
407       Check_Parent_Existance;
408     ELSIF (p_action = 'DELETE') THEN
409       -- Call all the procedures related to Before Delete.
410       Null;
411     ELSIF (p_action = 'VALIDATE_INSERT') THEN
412 	 -- Call all the procedures related to Before Insert.
413       IF Get_PK_For_Validation (
414     		new_references.post_edugoal_id)  THEN
415 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
416       IGS_GE_MSG_STACK.ADD;
417 	       App_Exception.Raise_Exception;
418 	     END IF;
419       Check_Uniqueness;
420       Check_Constraints;
421     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
422       Check_Uniqueness;
423       Check_Constraints;
424     ELSIF (p_action = 'VALIDATE_DELETE') THEN
425       Null;
426     END IF;
427     l_rowid := NULL; --Bug:2863832
428   END Before_DML;
429 
430   PROCEDURE After_DML (
431     p_action IN VARCHAR2,
432     x_rowid IN VARCHAR2
433   ) IS
434   /*************************************************************
435   Created By :
436   Date Created By :
437   Purpose :
438   Know limitations, enhancements or remarks
439   Change History
440   Who             When            What
441 
442   (reverse chronological order - newest change first)
446 
443   ***************************************************************/
444 
445   BEGIN
447     l_rowid := x_rowid;
448 
449     IF (p_action = 'INSERT') THEN
450       -- Call all the procedures related to After Insert.
451       Null;
452     ELSIF (p_action = 'UPDATE') THEN
453       -- Call all the procedures related to After Update.
454       Null;
455     ELSIF (p_action = 'DELETE') THEN
456       -- Call all the procedures related to After Delete.
457       Null;
458     END IF;
459 
460   l_rowid:=NULL;
461   END After_DML;
462 
463  procedure INSERT_ROW (
464       X_ROWID in out NOCOPY VARCHAR2,
465        x_POST_EDUGOAL_ID IN OUT NOCOPY NUMBER,
466        x_PERSON_ID IN NUMBER,
467        x_ADMISSION_APPL_NUMBER IN NUMBER,
468        x_NOMINATED_COURSE_CD IN VARCHAR2,
469        x_SEQUENCE_NUMBER IN NUMBER,
470        x_EDU_GOAL_ID IN NUMBER,
471       X_MODE in VARCHAR2
472   ) AS
473   /*************************************************************
474   Created By :
475   Date Created By :
476   Purpose :
477   Know limitations, enhancements or remarks
478   Change History
479   Who             When            What
480   ravishar      05/27/05        Security related changes
481   (reverse chronological order - newest change first)
482   ***************************************************************/
483 
484     cursor C is select ROWID from IGS_AD_EDUGOAL
485              where                 POST_EDUGOAL_ID= X_POST_EDUGOAL_ID
486 ;
487      X_LAST_UPDATE_DATE DATE ;
488      X_LAST_UPDATED_BY NUMBER ;
489      X_LAST_UPDATE_LOGIN NUMBER ;
490  begin
491      X_LAST_UPDATE_DATE := SYSDATE;
492       if(X_MODE = 'I') then
493         X_LAST_UPDATED_BY := 1;
494         X_LAST_UPDATE_LOGIN := 0;
495          elsif (X_MODE IN ('R', 'S')) then
496                X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
497             if X_LAST_UPDATED_BY is NULL then
498                 X_LAST_UPDATED_BY := -1;
499             end if;
500             X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
501          if X_LAST_UPDATE_LOGIN is NULL then
502             X_LAST_UPDATE_LOGIN := -1;
503           end if;
504        else
505         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
506       IGS_GE_MSG_STACK.ADD;
507           app_exception.raise_exception;
508        end if;
509 
510    X_POST_EDUGOAL_ID := -1;
511    Before_DML(
512  		p_action=>'INSERT',
513  		x_rowid=>X_ROWID,
514  	       x_post_edugoal_id=>X_POST_EDUGOAL_ID,
515  	       x_person_id=>X_PERSON_ID,
516  	       x_admission_appl_number=>X_ADMISSION_APPL_NUMBER,
517  	       x_nominated_course_cd=>X_NOMINATED_COURSE_CD,
518  	       x_sequence_number=>X_SEQUENCE_NUMBER,
519  	       x_edu_goal_id=>X_EDU_GOAL_ID,
520 	       x_creation_date=>X_LAST_UPDATE_DATE,
521 	       x_created_by=>X_LAST_UPDATED_BY,
522 	       x_last_update_date=>X_LAST_UPDATE_DATE,
523 	       x_last_updated_by=>X_LAST_UPDATED_BY,
524 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
525   IF (x_mode = 'S') THEN
526     igs_sc_gen_001.set_ctx('R');
527   END IF;
528  INSERT INTO IGS_AD_EDUGOAL (
529 		POST_EDUGOAL_ID
530 		,PERSON_ID
531 		,ADMISSION_APPL_NUMBER
532 		,NOMINATED_COURSE_CD
533 		,SEQUENCE_NUMBER
534 		,EDU_GOAL_ID
535 	        ,CREATION_DATE
536 		,CREATED_BY
537 		,LAST_UPDATE_DATE
538 		,LAST_UPDATED_BY
539 		,LAST_UPDATE_LOGIN
540         ) VALUES  (
541 	         IGS_AD_EDUGOALS_S.NEXTVAL
542 	        ,NEW_REFERENCES.PERSON_ID
543 	        ,NEW_REFERENCES.ADMISSION_APPL_NUMBER
544 	        ,NEW_REFERENCES.NOMINATED_COURSE_CD
545 	        ,NEW_REFERENCES.SEQUENCE_NUMBER
546 	        ,NEW_REFERENCES.EDU_GOAL_ID
547 	        ,X_LAST_UPDATE_DATE
548 		,X_LAST_UPDATED_BY
549 		,X_LAST_UPDATE_DATE
550 		,X_LAST_UPDATED_BY
551 		,X_LAST_UPDATE_LOGIN
552 )RETURNING POST_EDUGOAL_ID INTO X_POST_EDUGOAL_ID;
553  IF (x_mode = 'S') THEN
554     igs_sc_gen_001.unset_ctx('R');
555  END IF;
556 
557 		open c;
558 		 fetch c into X_ROWID;
559  		if (c%notfound) then
560 		close c;
561  	     raise no_data_found;
562 		end if;
563  		close c;
564     After_DML (
565 		p_action => 'INSERT' ,
566 		x_rowid => X_ROWID );
567 EXCEPTION
568   WHEN OTHERS THEN
569    IF (x_mode = 'S') THEN
570       igs_sc_gen_001.unset_ctx('R');
571    END IF;
572     IF SQLCODE = '-28115' OR SQLCODE = '-28113' OR SQLCODE = '-28111' THEN
573       -- Code to handle Security Policy error raised
574       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
575       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
576       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
577       --    that the ownerof policy function does not have privilege to access.
578       FND_MESSAGE.SET_NAME ('IGS', 'IGS_SC_POLICY_EXCEPTION');
579       FND_MESSAGE.SET_TOKEN('ERR_CD',SQLCODE);
580       IGS_GE_MSG_STACK.ADD;
581       app_exception.raise_exception;
582     ELSE
583       RAISE;
587       X_ROWID in  VARCHAR2,
584     END IF;
585 END INSERT_ROW;
586  PROCEDURE LOCK_ROW (
588        x_POST_EDUGOAL_ID IN NUMBER,
589        x_PERSON_ID IN NUMBER,
590        x_ADMISSION_APPL_NUMBER IN NUMBER,
591        x_NOMINATED_COURSE_CD IN VARCHAR2,
592        x_SEQUENCE_NUMBER IN NUMBER,
593        x_EDU_GOAL_ID IN NUMBER  ) AS
594   /*************************************************************
595   Created By :
596   Date Created By :
597   Purpose :
598   Know limitations, enhancements or remarks
599   Change History
600   Who             When            What
601 
602   (reverse chronological order - newest change first)
603   ***************************************************************/
604 
605    cursor c1 is select
606       PERSON_ID
607 ,      ADMISSION_APPL_NUMBER
608 ,      NOMINATED_COURSE_CD
609 ,      SEQUENCE_NUMBER
610 ,      EDU_GOAL_ID
611     from IGS_AD_EDUGOAL
612     where ROWID = X_ROWID
613     for update nowait;
614      tlinfo c1%rowtype;
615 begin
616   open c1;
617   fetch c1 into tlinfo;
618   if (c1%notfound) then
619     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
620       IGS_GE_MSG_STACK.ADD;
621     close c1;
622     app_exception.raise_exception;
623     return;
624   end if;
625   close c1;
626 if ( (  tlinfo.PERSON_ID = X_PERSON_ID)
627   AND (tlinfo.ADMISSION_APPL_NUMBER = X_ADMISSION_APPL_NUMBER)
628   AND (tlinfo.NOMINATED_COURSE_CD = X_NOMINATED_COURSE_CD)
629   AND (tlinfo.SEQUENCE_NUMBER = X_SEQUENCE_NUMBER)
630   AND (tlinfo.EDU_GOAL_ID = X_EDU_GOAL_ID)
631   ) then
632     null;
633   else
634     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
635       IGS_GE_MSG_STACK.ADD;
636     app_exception.raise_exception;
637   end if;
638   return;
639 end LOCK_ROW;
640  Procedure UPDATE_ROW (
641       X_ROWID in  VARCHAR2,
642        x_POST_EDUGOAL_ID IN NUMBER,
643        x_PERSON_ID IN NUMBER,
644        x_ADMISSION_APPL_NUMBER IN NUMBER,
645        x_NOMINATED_COURSE_CD IN VARCHAR2,
646        x_SEQUENCE_NUMBER IN NUMBER,
647        x_EDU_GOAL_ID IN NUMBER,
648       X_MODE in VARCHAR2
649   ) AS
650   /*************************************************************
651   Created By :
652   Date Created By :
653   Purpose :
654   Know limitations, enhancements or remarks
655   Change History
656   Who             When            What
657   ravishar      05/27/05        Security related changes
658   (reverse chronological order - newest change first)
659   ***************************************************************/
660 
661      X_LAST_UPDATE_DATE DATE ;
662      X_LAST_UPDATED_BY NUMBER ;
663      X_LAST_UPDATE_LOGIN NUMBER ;
664  begin
665      X_LAST_UPDATE_DATE := SYSDATE;
666       if(X_MODE = 'I') then
667         X_LAST_UPDATED_BY := 1;
668         X_LAST_UPDATE_LOGIN := 0;
669          elsif (X_MODE IN ('R', 'S')) then
670                X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
671             if X_LAST_UPDATED_BY is NULL then
672                 X_LAST_UPDATED_BY := -1;
673             end if;
674             X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
675          if X_LAST_UPDATE_LOGIN is NULL then
676             X_LAST_UPDATE_LOGIN := -1;
677           end if;
678        else
679         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
680       IGS_GE_MSG_STACK.ADD;
681           app_exception.raise_exception;
682        end if;
683    Before_DML(
684  		p_action=>'UPDATE',
685  		x_rowid=>X_ROWID,
686  	       x_post_edugoal_id=>X_POST_EDUGOAL_ID,
687  	       x_person_id=>X_PERSON_ID,
688  	       x_admission_appl_number=>X_ADMISSION_APPL_NUMBER,
689  	       x_nominated_course_cd=>X_NOMINATED_COURSE_CD,
690  	       x_sequence_number=>X_SEQUENCE_NUMBER,
691  	       x_edu_goal_id=>X_EDU_GOAL_ID,
692 	       x_creation_date=>X_LAST_UPDATE_DATE,
693 	       x_created_by=>X_LAST_UPDATED_BY,
694 	       x_last_update_date=>X_LAST_UPDATE_DATE,
695 	       x_last_updated_by=>X_LAST_UPDATED_BY,
696 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
697   IF (x_mode = 'S') THEN
698     igs_sc_gen_001.set_ctx('R');
699   END IF;
700  UPDATE IGS_AD_EDUGOAL set
701       PERSON_ID =  NEW_REFERENCES.PERSON_ID,
702       ADMISSION_APPL_NUMBER =  NEW_REFERENCES.ADMISSION_APPL_NUMBER,
703       NOMINATED_COURSE_CD =  NEW_REFERENCES.NOMINATED_COURSE_CD,
704       SEQUENCE_NUMBER =  NEW_REFERENCES.SEQUENCE_NUMBER,
705       EDU_GOAL_ID =  NEW_REFERENCES.EDU_GOAL_ID,
706 	LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
707 	LAST_UPDATED_BY = X_LAST_UPDATED_BY,
708 	LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
709 	  where ROWID = X_ROWID;
710 	if (sql%notfound) then
711      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
712      igs_ge_msg_stack.add;
713      IF (x_mode = 'S') THEN
714        igs_sc_gen_001.unset_ctx('R');
715      END IF;
716      app_exception.raise_exception;
717 	end if;
718   IF (x_mode = 'S') THEN
719     igs_sc_gen_001.unset_ctx('R');
720   END IF;
721 
722 
723  After_DML (
724 	p_action => 'UPDATE' ,
725 	x_rowid => X_ROWID
726 	);
727 EXCEPTION
728   WHEN OTHERS THEN
729     IF (x_mode = 'S') THEN
730       igs_sc_gen_001.unset_ctx('R');
731     END IF;
732     IF SQLCODE = '-28115' OR SQLCODE = '-28113' OR SQLCODE = '-28111' THEN
733       -- Code to handle Security Policy error raised
737       --    that the ownerof policy function does not have privilege to access.
734       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
735       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
736       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
738       FND_MESSAGE.SET_NAME ('IGS', 'IGS_SC_UPD_POLICY_EXCP');
739       FND_MESSAGE.SET_TOKEN('ERR_CD',SQLCODE);
740       IGS_GE_MSG_STACK.ADD;
741       app_exception.raise_exception;
742     ELSE
743       RAISE;
744     END IF;
745 END UPDATE_ROW;
746  PROCEDURE ADD_ROW (
747       X_ROWID in out NOCOPY VARCHAR2,
748        x_POST_EDUGOAL_ID IN OUT NOCOPY NUMBER,
749        x_PERSON_ID IN NUMBER,
750        x_ADMISSION_APPL_NUMBER IN NUMBER,
751        x_NOMINATED_COURSE_CD IN VARCHAR2,
752        x_SEQUENCE_NUMBER IN NUMBER,
753        x_EDU_GOAL_ID IN NUMBER,
754       X_MODE in VARCHAR2
755   ) AS
756   /*************************************************************
757   Created By :
758   Date Created By :
759   Purpose :
760   Know limitations, enhancements or remarks
761   Change History
762   Who             When            What
763 
764   (reverse chronological order - newest change first)
765   ***************************************************************/
766 
767     cursor c1 is select ROWID from IGS_AD_EDUGOAL
768              where     POST_EDUGOAL_ID= X_POST_EDUGOAL_ID
769 ;
770 begin
771 	open c1;
772 		fetch c1 into X_ROWID;
773 	if (c1%notfound) then
774 	close c1;
775     INSERT_ROW (
776       X_ROWID,
777        X_POST_EDUGOAL_ID,
778        X_PERSON_ID,
779        X_ADMISSION_APPL_NUMBER,
780        X_NOMINATED_COURSE_CD,
781        X_SEQUENCE_NUMBER,
782        X_EDU_GOAL_ID,
783       X_MODE );
784      return;
785 	end if;
786 	   close c1;
787 UPDATE_ROW (
788       X_ROWID,
789        X_POST_EDUGOAL_ID,
790        X_PERSON_ID,
791        X_ADMISSION_APPL_NUMBER,
792        X_NOMINATED_COURSE_CD,
793        X_SEQUENCE_NUMBER,
794        X_EDU_GOAL_ID,
795       X_MODE );
796 end ADD_ROW;
797 procedure DELETE_ROW (
798   X_ROWID in VARCHAR2,
799   x_mode IN VARCHAR2
800 ) AS
801   /*************************************************************
802   Created By :
803   Date Created By :
804   Purpose :
805   Know limitations, enhancements or remarks
806   Change History
807   Who             When            What
808   ravishar      05/27/05        Security related changes
809   (reverse chronological order - newest change first)
810   ***************************************************************/
811 
812 begin
813 Before_DML (
814 p_action => 'DELETE',
815 x_rowid => X_ROWID
816 );
817   IF (x_mode = 'S') THEN
818     igs_sc_gen_001.set_ctx('R');
819   END IF;
820  DELETE FROM IGS_AD_EDUGOAL
821  WHERE ROWID = X_ROWID;
822   if (sql%notfound) then
823      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
824      igs_ge_msg_stack.add;
825      IF (x_mode = 'S') THEN
826         igs_sc_gen_001.unset_ctx('R');
827      END IF;
828      app_exception.raise_exception;
829  END IF;
830   IF (x_mode = 'S') THEN
831     igs_sc_gen_001.unset_ctx('R');
832   END IF;
833 
834 After_DML (
835  p_action => 'DELETE',
836  x_rowid => X_ROWID
837 );
838 EXCEPTION
839   WHEN OTHERS THEN
840     IF (x_mode = 'S') THEN
841       igs_sc_gen_001.unset_ctx('R');
842     END IF;
843     IF SQLCODE = '-28115' OR SQLCODE = '-28113' OR SQLCODE = '-28111' THEN
844       -- Code to handle Security Policy error raised
845       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
846       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
847       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
848       --    that the ownerof policy function does not have privilege to access.
849       FND_MESSAGE.SET_NAME ('IGS', 'IGS_SC_POLICY_EXCEPTION');
850       FND_MESSAGE.SET_TOKEN('ERR_CD',SQLCODE);
851       IGS_GE_MSG_STACK.ADD;
852       app_exception.raise_exception;
853     ELSE
854       RAISE;
855     END IF;
856 end DELETE_ROW;
857 END igs_ad_edugoal_pkg;