DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_APPL_PGMAPPRV_PKG

Source


1 PACKAGE BODY igs_ad_appl_pgmapprv_pkg AS
2 /* $Header: IGSAIA5B.pls 120.5 2005/10/03 08:23:00 appldev ship $ */
3   l_rowid VARCHAR2(25);
4   old_references igs_ad_appl_pgmapprv%RowType;
5   new_references igs_ad_appl_pgmapprv%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_appl_pgmapprv_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_pgm_approver_id IN NUMBER DEFAULT NULL,
16     x_assign_type IN VARCHAR2 DEFAULT NULL,
17     x_assign_date IN DATE DEFAULT NULL,
18     x_program_approval_date IN DATE DEFAULT NULL,
19     x_program_approval_status IN VARCHAR2 DEFAULT NULL,
20     x_approval_notes IN VARCHAR2 DEFAULT NULL,
21     x_creation_date IN DATE DEFAULT NULL,
22     x_created_by IN NUMBER DEFAULT NULL,
23     x_last_update_date IN DATE DEFAULT NULL,
24     x_last_updated_by IN NUMBER DEFAULT NULL,
25     x_last_update_login IN NUMBER DEFAULT NULL
26   ) AS
27 
28   /*************************************************************
29   Created By :
30   Date Created By :
31   Purpose :
32   Know limitations, enhancements or remarks
33   Change History
34   Who             When            What
35 
36   (reverse chronological order - newest change first)
37   ***************************************************************/
38 
39     CURSOR cur_old_ref_values IS
40       SELECT   *
41       FROM     IGS_AD_APPL_PGMAPPRV
42       WHERE    rowid = x_rowid;
43 
44   BEGIN
45 
46     l_rowid := x_rowid;
47 
48     -- Code for setting the Old and New Reference Values.
49     -- Populate Old Values.
50     Open cur_old_ref_values;
51     Fetch cur_old_ref_values INTO old_references;
52     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
53       Close cur_old_ref_values;
54       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
55       IGS_GE_MSG_STACK.ADD;
56       App_Exception.Raise_Exception;
57       Return;
58     END IF;
59     Close cur_old_ref_values;
60 
61     -- Populate New Values.
62     new_references.appl_pgmapprv_id := x_appl_pgmapprv_id;
63     new_references.person_id := x_person_id;
64     new_references.admission_appl_number := x_admission_appl_number;
65     new_references.nominated_course_cd := x_nominated_course_cd;
66     new_references.sequence_number := x_sequence_number;
67     new_references.pgm_approver_id := x_pgm_approver_id;
68     new_references.assign_type := x_assign_type;
69     new_references.assign_date := TRUNC(x_assign_date);
70     new_references.program_approval_date := TRUNC(x_program_approval_date);
71     new_references.program_approval_status := x_program_approval_status;
72     new_references.approval_notes := x_approval_notes;
73     IF (p_action = 'UPDATE') THEN
74       new_references.creation_date := old_references.creation_date;
75       new_references.created_by := old_references.created_by;
76     ELSE
77       new_references.creation_date := x_creation_date;
78       new_references.created_by := x_created_by;
79     END IF;
80     new_references.last_update_date := x_last_update_date;
81     new_references.last_updated_by := x_last_updated_by;
82     new_references.last_update_login := x_last_update_login;
83 
84   END Set_Column_Values;
85 
86   PROCEDURE Check_Constraints (
87                  Column_Name IN VARCHAR2  DEFAULT NULL,
88                  Column_Value IN VARCHAR2  DEFAULT NULL ) AS
89   /*************************************************************
90   Created By :
91   Date Created By :
92   Purpose :
93   Know limitations, enhancements or remarks
94   Change History
95   Who             When            What
96 
97   (reverse chronological order - newest change first)
98   ***************************************************************/
99 
100   BEGIN
101 
102       IF column_name IS NULL THEN
103         NULL;
104       ELSIF  UPPER(column_name) = 'ASSIGN_TYPE'  THEN
105         new_references.assign_type := column_value;
106         NULL;
107       END IF;
108 
109 
110 
111     -- The following code checks for check constraints on the Columns.
112       IF Upper(Column_Name) = 'ASSIGN_TYPE' OR
113         Column_Name IS NULL THEN
114         IF NOT (new_references.assign_type IN ('M','A'))  THEN
115            Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
116       IGS_GE_MSG_STACK.ADD;
117            App_Exception.Raise_Exception;
118         END IF;
119       END IF;
120 
121 
122   END Check_Constraints;
123 
124  PROCEDURE Check_Uniqueness AS
125   /*************************************************************
126   Created By :
127   Date Created By :
128   Purpose :
129   Know limitations, enhancements or remarks
130   Change History
131   Who             When            What
132 
133   (reverse chronological order - newest change first)
134   ***************************************************************/
135 
136    begin
137                 IF Get_Uk_For_Validation (
138                 new_references.pgm_approver_id
139                 ,new_references.sequence_number
140                 ,new_references.admission_appl_number
141                 ,new_references.nominated_course_cd
142                 ,new_references.person_id
143                 ) THEN
144                 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
145       IGS_GE_MSG_STACK.ADD;
146                         app_exception.raise_exception;
147                 END IF;
148  END Check_Uniqueness ;
149   PROCEDURE Check_Parent_Existance AS
150   /*************************************************************
151   Created By :
152   Date Created By :
153   Purpose :
154   Know limitations, enhancements or remarks
155   Change History
156   Who             When            What
157 
158   (reverse chronological order - newest change first)
159   ***************************************************************/
160 
161   BEGIN
162 
163     IF (((old_references.person_id = new_references.person_id) AND
164          (old_references.admission_appl_number = new_references.admission_appl_number) AND
165          (old_references.nominated_course_cd = new_references.nominated_course_cd) AND
166          (old_references.sequence_number = new_references.sequence_number)) OR
167         ((new_references.person_id IS NULL) OR
168          (new_references.admission_appl_number IS NULL) OR
169          (new_references.nominated_course_cd IS NULL) OR
170          (new_references.sequence_number IS NULL))) THEN
171       NULL;
172     ELSIF NOT Igs_Ad_Ps_Appl_Inst_Pkg.Get_PK_For_Validation (
173                         new_references.person_id,
174                          new_references.admission_appl_number,
175                          new_references.nominated_course_cd,
176                          new_references.sequence_number
177         )  THEN
178          Fnd_Message.Set_Name ('FND','IGS_GE_PK_UK_NOT_FOUND');
179          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_PROGRAM_APPL'));
180       IGS_GE_MSG_STACK.ADD;
181          App_Exception.Raise_Exception;
182    END IF;
183    IF (((old_references.Program_Approval_Status = new_references.Program_Approval_Status)) OR
184         ((new_references.Program_Approval_Status IS NULL))) THEN
185       NULL;
186    ELSIF NOT Igs_lookups_view_pkg.get_pk_for_validation(
187                         'PROGRAM_APPROVAL_STATUS',
188                          new_references.Program_Approval_Status) THEN
189                  Fnd_Message.Set_Name ('FND','IGS_GE_PK_UK_NOT_FOUND');
190 --Message changed by ravishar
191                  FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_PGM_APPROVAL_STATUS'));
192                 IGS_GE_MSG_STACK.ADD;
193                  App_Exception.Raise_Exception;
194     END IF;
195 
196     IF (((old_references.pgm_approver_id = new_references.pgm_approver_id)) OR
197         ((new_references.pgm_approver_id IS NULL))) THEN
198       NULL;
199     ELSIF NOT Igs_Pe_Person_Pkg.Get_PK_For_Validation (
200                         new_references.pgm_approver_id
201         )  THEN
202              Fnd_Message.Set_Name ('FND','IGS_GE_PK_UK_NOT_FOUND');
203 --Message changed by ravishar
204              FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_PGM_APPROVER'));
205       IGS_GE_MSG_STACK.ADD;
206          App_Exception.Raise_Exception;
207     END IF;
208 
209   END Check_Parent_Existance;
210 
211   FUNCTION Get_PK_For_Validation (
212     x_appl_pgmapprv_id IN NUMBER
213     ) RETURN BOOLEAN AS
214 
215   /*************************************************************
216   Created By :
217   Date Created By :
218   Purpose :
219   Know limitations, enhancements or remarks
220   Change History
221   Who             When            What
222 
223   (reverse chronological order - newest change first)
224   ***************************************************************/
225 
226     CURSOR cur_rowid IS
227       SELECT   rowid
228       FROM     igs_ad_appl_pgmapprv
229       WHERE    appl_pgmapprv_id = x_appl_pgmapprv_id
230       FOR UPDATE NOWAIT;
231 
232     lv_rowid cur_rowid%RowType;
233 
234   BEGIN
235 
236     Open cur_rowid;
237     Fetch cur_rowid INTO lv_rowid;
238     IF (cur_rowid%FOUND) THEN
239       Close cur_rowid;
240       Return(TRUE);
241     ELSE
242       Close cur_rowid;
243       Return(FALSE);
244     END IF;
245   END Get_PK_For_Validation;
246 
247   FUNCTION Get_UK_For_Validation (
248     x_pgm_approver_id IN NUMBER,
249     x_sequence_number IN NUMBER,
250     x_admission_appl_number IN NUMBER,
251     x_nominated_course_cd IN VARCHAR2,
252     x_person_id IN NUMBER
253     ) RETURN BOOLEAN AS
254 
255   /*************************************************************
256   Created By :
257   Date Created By :
258   Purpose :
259   Know limitations, enhancements or remarks
260   Change History
261   Who             When            What
262 
263   (reverse chronological order - newest change first)
264   ***************************************************************/
265 
266     CURSOR cur_rowid IS
267       SELECT   rowid
268       FROM     igs_ad_appl_pgmapprv
269       WHERE    pgm_approver_id = x_pgm_approver_id
270       AND      sequence_number = x_sequence_number
271       AND      admission_appl_number = x_admission_appl_number
272       AND      nominated_course_cd = x_nominated_course_cd
273       AND      person_id = x_person_id  and      ((l_rowid is null) or (rowid <> l_rowid))
274 
275       ;
276     lv_rowid cur_rowid%RowType;
277 
278   BEGIN
279 
280     Open cur_rowid;
281     Fetch cur_rowid INTO lv_rowid;
282     IF (cur_rowid%FOUND) THEN
283       Close cur_rowid;
284         return (true);
285         ELSE
286        close cur_rowid;
287       return(false);
288     END IF;
289   END Get_UK_For_Validation ;
290   PROCEDURE Get_FK_Igs_Ad_Ps_Appl_Inst (
291     x_person_id IN NUMBER,
292     x_admission_appl_number IN NUMBER,
293     x_nominated_course_cd IN VARCHAR2,
294     x_sequence_number IN NUMBER
295     ) AS
296 
297   /*************************************************************
298   Created By :
299   Date Created By :
300   Purpose :
301   Know limitations, enhancements or remarks
302   Change History
303   Who             When            What
304 
305   (reverse chronological order - newest change first)
306   ***************************************************************/
307 
308     CURSOR cur_rowid IS
309       SELECT   rowid
310       FROM     igs_ad_appl_pgmapprv
311       WHERE    person_id = x_person_id
312       AND      admission_appl_number = x_admission_appl_number
313       AND      nominated_course_cd = x_nominated_course_cd
314       AND      sequence_number = x_sequence_number ;
315 
316     lv_rowid cur_rowid%RowType;
317 
318   BEGIN
319 
320     Open cur_rowid;
321     Fetch cur_rowid INTO lv_rowid;
322     IF (cur_rowid%FOUND) THEN
323       Close cur_rowid;
324       Fnd_Message.Set_Name ('IGS', 'IGS_AD_AAPGM_ACAI_FK');
325       IGS_GE_MSG_STACK.ADD;
326       App_Exception.Raise_Exception;
327       Return;
328     END IF;
329     Close cur_rowid;
330 
331   END Get_FK_Igs_Ad_Ps_Appl_Inst;
332 
333   PROCEDURE Get_FK_Igs_Pe_Person (
334     x_person_id IN NUMBER
335     ) AS
336 
337   /*************************************************************
338   Created By :
339   Date Created By :
340   Purpose :
341   Know limitations, enhancements or remarks
342   Change History
343   Who             When            What
344 
345   (reverse chronological order - newest change first)
346   ***************************************************************/
347 
348     CURSOR cur_rowid IS
349       SELECT   rowid
350       FROM     igs_ad_appl_pgmapprv
351       WHERE    pgm_approver_id = x_person_id ;
352 
353     lv_rowid cur_rowid%RowType;
354 
355   BEGIN
356 
357     Open cur_rowid;
358     Fetch cur_rowid INTO lv_rowid;
359     IF (cur_rowid%FOUND) THEN
360       Close cur_rowid;
361       Fnd_Message.Set_Name ('IGS', 'IGS_AD_AAPGM_PE_FK');
362       IGS_GE_MSG_STACK.ADD;
363       App_Exception.Raise_Exception;
364       Return;
365     END IF;
366     Close cur_rowid;
367 
368   END Get_FK_Igs_Pe_Person;
369 
370     PROCEDURE Before_DML (
371     p_action IN VARCHAR2,
372     x_rowid IN VARCHAR2 DEFAULT NULL,
373     x_appl_pgmapprv_id IN NUMBER DEFAULT NULL,
374     x_person_id IN NUMBER DEFAULT NULL,
375     x_admission_appl_number IN NUMBER DEFAULT NULL,
376     x_nominated_course_cd IN VARCHAR2 DEFAULT NULL,
377     x_sequence_number IN NUMBER DEFAULT NULL,
378     x_pgm_approver_id IN NUMBER DEFAULT NULL,
379     x_assign_type IN VARCHAR2 DEFAULT NULL,
380     x_assign_date IN DATE DEFAULT NULL,
381     x_program_approval_date IN DATE DEFAULT NULL,
382     x_program_approval_status IN VARCHAR2 DEFAULT NULL,
383     x_approval_notes IN VARCHAR2 DEFAULT NULL,
384     x_creation_date IN DATE DEFAULT NULL,
385     x_created_by IN NUMBER DEFAULT NULL,
386     x_last_update_date IN DATE DEFAULT NULL,
387     x_last_updated_by IN NUMBER DEFAULT NULL,
388     x_last_update_login IN NUMBER DEFAULT NULL
389   ) AS
390   /*************************************************************
391   Created By :
392   Date Created By :
393   Purpose :
394   Know limitations, enhancements or remarks
395   Change History
396   Who             When            What
397 
398   (reverse chronological order - newest change first)
399   ***************************************************************/
400 
401   BEGIN
402 
403     Set_Column_Values (
404       p_action,
405       x_rowid,
406       x_appl_pgmapprv_id,
407       x_person_id,
408       x_admission_appl_number,
409       x_nominated_course_cd,
410       x_sequence_number,
414       x_program_approval_date,
411       x_pgm_approver_id,
412       x_assign_type,
413       x_assign_date,
415       x_program_approval_status,
416       x_approval_notes,
417       x_creation_date,
418       x_created_by,
419       x_last_update_date,
420       x_last_updated_by,
421       x_last_update_login
422     );
423 
424     igs_ad_gen_002.check_adm_appl_inst_stat(
425       nvl(x_person_id,old_references.person_id),
426       nvl(x_admission_appl_number,old_references.admission_appl_number),
427       nvl(x_nominated_course_cd,old_references.nominated_course_cd),
428       nvl(x_sequence_number,old_references.sequence_number)
429       );
430 
431     IF (p_action = 'INSERT') THEN
432       -- Call all the procedures related to Before Insert.
433       Null;
434              IF Get_Pk_For_Validation(
435                 new_references.appl_pgmapprv_id)  THEN
436                Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
437       IGS_GE_MSG_STACK.ADD;
438                App_Exception.Raise_Exception;
439              END IF;
440       Check_Uniqueness;
441       Check_Constraints;
442       Check_Parent_Existance;
443     ELSIF (p_action = 'UPDATE') THEN
444       -- Call all the procedures related to Before Update.
445       Null;
446       Check_Uniqueness;
447       Check_Constraints;
448       Check_Parent_Existance;
449     ELSIF (p_action = 'DELETE') THEN
450       -- Call all the procedures related to Before Delete.
451       Null;
452     ELSIF (p_action = 'VALIDATE_INSERT') THEN
453          -- Call all the procedures related to Before Insert.
454       IF Get_PK_For_Validation (
455                 new_references.appl_pgmapprv_id)  THEN
456                Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
457       IGS_GE_MSG_STACK.ADD;
458                App_Exception.Raise_Exception;
459              END IF;
460       Check_Uniqueness;
461       Check_Constraints;
462     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
463       Check_Uniqueness;
464       Check_Constraints;
465     ELSIF (p_action = 'VALIDATE_DELETE') THEN
466       Null;
467     END IF;
468 
469   END Before_DML;
470 
471   PROCEDURE After_DML (
472     p_action IN VARCHAR2,
473     x_rowid IN VARCHAR2
474   ) IS
475   /*************************************************************
476   Created By :
477   Date Created By :
478   Purpose :
479   Know limitations, enhancements or remarks
480   Change History
481   Who             When            What
482 
483   (reverse chronological order - newest change first)
484   ***************************************************************/
485 
486   BEGIN
487 
488     l_rowid := x_rowid;
489 
490     IF (p_action = 'INSERT') THEN
491       -- Call all the procedures related to After Insert.
492       Null;
493     ELSIF (p_action = 'UPDATE') THEN
494       -- Call all the procedures related to After Update.
495       Null;
496     ELSIF (p_action = 'DELETE') THEN
497       -- Call all the procedures related to After Delete.
498       Null;
499     END IF;
500 
501   l_rowid:=NULL;
502   END After_DML;
503 
504  procedure INSERT_ROW (
505       X_ROWID in out NOCOPY VARCHAR2,
506        x_APPL_PGMAPPRV_ID IN OUT NOCOPY NUMBER,
507        x_PERSON_ID IN NUMBER,
508        x_ADMISSION_APPL_NUMBER IN NUMBER,
509        x_NOMINATED_COURSE_CD IN VARCHAR2,
510        x_SEQUENCE_NUMBER IN NUMBER,
511        x_PGM_APPROVER_ID IN NUMBER,
512        x_ASSIGN_TYPE IN VARCHAR2,
513        x_ASSIGN_DATE IN DATE,
514        x_PROGRAM_APPROVAL_DATE IN DATE,
515        x_PROGRAM_APPROVAL_STATUS IN VARCHAR2,
516        x_APPROVAL_NOTES IN VARCHAR2,
517       X_MODE in VARCHAR2
518   ) AS
519   /*************************************************************
520   Created By :
521   Date Created By :
522   Purpose :
523   Know limitations, enhancements or remarks
524   Change History
525   Who             When            What
526   RAVISHAR        Feb,25 2005     Removed the default value of X_MODE parameter from
527                                   body of this package for bug 4163319
528 				  GSCC standard says that default value should be
529 				  present only in specification
530   (reverse chronological order - newest change first)
531   ***************************************************************/
532 
533     cursor C is select ROWID from IGS_AD_APPL_PGMAPPRV
534              where                 APPL_PGMAPPRV_ID= X_APPL_PGMAPPRV_ID
535 ;
536      X_LAST_UPDATE_DATE DATE ;
537      X_LAST_UPDATED_BY NUMBER ;
538      X_LAST_UPDATE_LOGIN NUMBER ;
539      X_REQUEST_ID NUMBER;
540      X_PROGRAM_ID NUMBER;
541      X_PROGRAM_APPLICATION_ID NUMBER;
542      X_PROGRAM_UPDATE_DATE DATE;
543 
544      l_mode  VARCHAR2(1);
545  begin
546    l_mode := NVL(X_MODE , 'R');
547     X_LAST_UPDATE_DATE := SYSDATE;
548     if(l_mode = 'I') then
549       X_LAST_UPDATED_BY := 1;
550       X_LAST_UPDATE_LOGIN := 0;
551     elsif (l_mode IN ('R','S')) then
552       X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
556       X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
553       if X_LAST_UPDATED_BY is NULL then
554         X_LAST_UPDATED_BY := -1;
555       end if;
557       if X_LAST_UPDATE_LOGIN is NULL then
558         X_LAST_UPDATE_LOGIN := -1;
559       end if;
560       X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
561       X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
562       X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
563       if (X_REQUEST_ID =  -1) then
564         X_REQUEST_ID := NULL;
565         X_PROGRAM_ID := NULL;
566         X_PROGRAM_APPLICATION_ID := NULL;
567         X_PROGRAM_UPDATE_DATE := NULL;
568       else
569         X_PROGRAM_UPDATE_DATE := SYSDATE;
570       end if;
571     else
572       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
573       IGS_GE_MSG_STACK.ADD;
574       app_exception.raise_exception;
575     end if;
576 
577    X_APPL_PGMAPPRV_ID := -1;
578    Before_DML(
579                 p_action=>'INSERT',
580                 x_rowid=>X_ROWID,
581                x_appl_pgmapprv_id=>X_APPL_PGMAPPRV_ID,
582                x_person_id=>X_PERSON_ID,
583                x_admission_appl_number=>X_ADMISSION_APPL_NUMBER,
584                x_nominated_course_cd=>X_NOMINATED_COURSE_CD,
585                x_sequence_number=>X_SEQUENCE_NUMBER,
586                x_pgm_approver_id=>X_PGM_APPROVER_ID,
587                x_assign_type=>X_ASSIGN_TYPE,
588                x_assign_date=>X_ASSIGN_DATE,
589                x_program_approval_date=>X_PROGRAM_APPROVAL_DATE,
590                x_program_approval_status=>X_PROGRAM_APPROVAL_STATUS,
591                x_approval_notes=>X_APPROVAL_NOTES,
592                x_creation_date=>X_LAST_UPDATE_DATE,
593                x_created_by=>X_LAST_UPDATED_BY,
594                x_last_update_date=>X_LAST_UPDATE_DATE,
595                x_last_updated_by=>X_LAST_UPDATED_BY,
596                x_last_update_login=>X_LAST_UPDATE_LOGIN);
597       IF (x_mode = 'S') THEN
598     igs_sc_gen_001.set_ctx('R');
599   END IF;
600 
601  insert into IGS_AD_APPL_PGMAPPRV (
602                 APPL_PGMAPPRV_ID
603                 ,PERSON_ID
604                 ,ADMISSION_APPL_NUMBER
605                 ,NOMINATED_COURSE_CD
606                 ,SEQUENCE_NUMBER
607                 ,PGM_APPROVER_ID
608                 ,ASSIGN_TYPE
609                 ,ASSIGN_DATE
610                 ,PROGRAM_APPROVAL_DATE
611                 ,PROGRAM_APPROVAL_STATUS
612                 ,APPROVAL_NOTES
613                 ,CREATION_DATE
614                 ,CREATED_BY
615                 ,LAST_UPDATE_DATE
616                 ,LAST_UPDATED_BY
617                 ,LAST_UPDATE_LOGIN
618                 ,REQUEST_ID
619                 ,PROGRAM_ID
620                 ,PROGRAM_APPLICATION_ID
621                 ,PROGRAM_UPDATE_DATE
622         ) values  (
623                  IGS_AD_APPL_PGMAPPRV_S.NEXTVAL
624                 ,NEW_REFERENCES.PERSON_ID
625                 ,NEW_REFERENCES.ADMISSION_APPL_NUMBER
626                 ,NEW_REFERENCES.NOMINATED_COURSE_CD
627                 ,NEW_REFERENCES.SEQUENCE_NUMBER
628                 ,NEW_REFERENCES.PGM_APPROVER_ID
629                 ,NEW_REFERENCES.ASSIGN_TYPE
630                 ,NEW_REFERENCES.ASSIGN_DATE
631                 ,NEW_REFERENCES.PROGRAM_APPROVAL_DATE
632                 ,NEW_REFERENCES.PROGRAM_APPROVAL_STATUS
633                 ,NEW_REFERENCES.APPROVAL_NOTES
634                 ,X_LAST_UPDATE_DATE
635                 ,X_LAST_UPDATED_BY
636                 ,X_LAST_UPDATE_DATE
637                 ,X_LAST_UPDATED_BY
638                 ,X_LAST_UPDATE_LOGIN
639                 ,X_REQUEST_ID
640                 ,X_PROGRAM_ID
641                 ,X_PROGRAM_APPLICATION_ID
642                 ,X_PROGRAM_UPDATE_DATE
643 )RETURNING APPL_PGMAPPRV_ID INTO X_APPL_PGMAPPRV_ID;
644  IF (x_mode = 'S') THEN
645     igs_sc_gen_001.unset_ctx('R');
646   END IF;
647 
648                 open c;
649                  fetch c into X_ROWID;
650                 if (c%notfound) then
651                 close c;
652              raise no_data_found;
653                 end if;
654                 close c;
655 
656     After_DML (
657                 p_action => 'INSERT' ,
658                 x_rowid => X_ROWID );
659 
660 NULL;
661 EXCEPTION
662   WHEN OTHERS THEN
663  IF (x_mode = 'S') THEN
664     igs_sc_gen_001.unset_ctx('R');
665   END IF;
666     IF (SQLCODE IN (-28115, -28113, -28111)) THEN
667       -- Code to handle Security Policy error raised
668       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
669       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
670       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
671       --    that the ownerof policy function does not have privilege to access.
672       fnd_message.set_name ('IGS', 'IGS_SC_POLICY_EXCEPTION');
673       fnd_message.set_token ('ERR_CD', SQLCODE);
674       igs_ge_msg_stack.add;
675       app_exception.raise_exception;
676     ELSE
677       RAISE;
681  procedure LOCK_ROW (
678     END IF;
679 
680 end INSERT_ROW;
682       X_ROWID in  VARCHAR2,
683        x_APPL_PGMAPPRV_ID IN NUMBER,
684        x_PERSON_ID IN NUMBER,
685        x_ADMISSION_APPL_NUMBER IN NUMBER,
686        x_NOMINATED_COURSE_CD IN VARCHAR2,
687        x_SEQUENCE_NUMBER IN NUMBER,
688        x_PGM_APPROVER_ID IN NUMBER,
689        x_ASSIGN_TYPE IN VARCHAR2,
690        x_ASSIGN_DATE IN DATE,
691        x_PROGRAM_APPROVAL_DATE IN DATE,
692        x_PROGRAM_APPROVAL_STATUS IN VARCHAR2,
693        x_APPROVAL_NOTES IN VARCHAR2  ) AS
694   /*************************************************************
695   Created By :
696   Date Created By :
697   Purpose :
698   Know limitations, enhancements or remarks
699   Change History
700   Who             When            What
701 
702   rgangara       23-Oct-2001     Added code to allow Program_approval_date, program_aproval_status being NULL.
703                                  Since these are Nullabel columns in the Table.
704                                  Also in the comparison of Assign Date, the TRUNC has been added so that the time
705                                  part is not compared because the table column has time stored and the input parameter
706                                  just sends in the date without Time part.
707                                  Bug No: 2048513
708   (reverse chronological order - newest change first)
709   ***************************************************************/
710 
711    cursor c1 is select
712       PERSON_ID
713 ,      ADMISSION_APPL_NUMBER
714 ,      NOMINATED_COURSE_CD
715 ,      SEQUENCE_NUMBER
716 ,      PGM_APPROVER_ID
717 ,      ASSIGN_TYPE
718 ,      ASSIGN_DATE
719 ,      PROGRAM_APPROVAL_DATE
720 ,      PROGRAM_APPROVAL_STATUS
721 ,      APPROVAL_NOTES
722     from IGS_AD_APPL_PGMAPPRV
723     where ROWID = X_ROWID
724     for update nowait;
725      tlinfo c1%rowtype;
726 begin
727   open c1;
728   fetch c1 into tlinfo;
729   if (c1%notfound) then
730     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
731       IGS_GE_MSG_STACK.ADD;
732     close c1;
733     app_exception.raise_exception;
734     return;
735   end if;
736   close c1;
737 if ( (  tlinfo.PERSON_ID = X_PERSON_ID)
738   AND (tlinfo.ADMISSION_APPL_NUMBER = X_ADMISSION_APPL_NUMBER)
739   AND (tlinfo.NOMINATED_COURSE_CD = X_NOMINATED_COURSE_CD)
740   AND (tlinfo.SEQUENCE_NUMBER = X_SEQUENCE_NUMBER)
741   AND (tlinfo.PGM_APPROVER_ID = X_PGM_APPROVER_ID)
742   AND (tlinfo.ASSIGN_TYPE = X_ASSIGN_TYPE)
743   AND (TRUNC(tlinfo.ASSIGN_DATE) = TRUNC(X_ASSIGN_DATE))
744   AND (TRUNC(tlinfo.PROGRAM_APPROVAL_DATE) = TRUNC(X_PROGRAM_APPROVAL_DATE))
745       OR ((tlinfo.program_approval_date IS NULL)
746           AND (x_program_approval_date IS NULL))
747   AND (tlinfo.PROGRAM_APPROVAL_STATUS = X_PROGRAM_APPROVAL_STATUS)
748       OR  ((tlinfo.program_approval_status IS NULL)
749           AND (x_program_approval_status IS NULL))
750   AND ((tlinfo.APPROVAL_NOTES = X_APPROVAL_NOTES)
751             OR ((tlinfo.APPROVAL_NOTES is null)
752                 AND (X_APPROVAL_NOTES is null)))
753   ) then
754     null;
755   else
756     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
757       IGS_GE_MSG_STACK.ADD;
758     app_exception.raise_exception;
759   end if;
760   return;
761 end LOCK_ROW;
762  Procedure UPDATE_ROW (
763       X_ROWID in  VARCHAR2,
764        x_APPL_PGMAPPRV_ID IN NUMBER,
765        x_PERSON_ID IN NUMBER,
766        x_ADMISSION_APPL_NUMBER IN NUMBER,
767        x_NOMINATED_COURSE_CD IN VARCHAR2,
768        x_SEQUENCE_NUMBER IN NUMBER,
769        x_PGM_APPROVER_ID IN NUMBER,
770        x_ASSIGN_TYPE IN VARCHAR2,
771        x_ASSIGN_DATE IN DATE,
772        x_PROGRAM_APPROVAL_DATE IN DATE,
773        x_PROGRAM_APPROVAL_STATUS IN VARCHAR2,
774        x_APPROVAL_NOTES IN VARCHAR2,
775       X_MODE in VARCHAR2
776   ) AS
777   /*************************************************************
778   Created By :
779   Date Created By :
780   Purpose :
781   Know limitations, enhancements or remarks
782   Change History
783   Who             When            What
784   RAVISHAR        Feb,25 2005     Removed the default value of X_MODE parameter from
785                                   body of this package for bug 4163319
786   				  GSCC standard says that default value should be
787 				  present only in specification
788 (reverse chronological order - newest change first)
789   ***************************************************************/
790 
791      X_LAST_UPDATE_DATE DATE ;
792      X_LAST_UPDATED_BY NUMBER ;
793      X_LAST_UPDATE_LOGIN NUMBER ;
794      X_REQUEST_ID NUMBER;
795      X_PROGRAM_ID NUMBER;
796      X_PROGRAM_APPLICATION_ID NUMBER;
797      X_PROGRAM_UPDATE_DATE DATE;
798 
799      l_mode    VARCHAR2(1);
800  begin
801     l_mode := NVL(X_MODE,'R');
802     X_LAST_UPDATE_DATE := SYSDATE;
803     if(l_mode = 'I') then
804       X_LAST_UPDATED_BY := 1;
805       X_LAST_UPDATE_LOGIN := 0;
806     elsif (l_mode IN ('R','S')) then
807       X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
808       if X_LAST_UPDATED_BY is NULL then
809         X_LAST_UPDATED_BY := -1;
810       end if;
814       end if;
811       X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
812       if X_LAST_UPDATE_LOGIN is NULL then
813         X_LAST_UPDATE_LOGIN := -1;
815     else
816       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
817       IGS_GE_MSG_STACK.ADD;
818       app_exception.raise_exception;
819     end if;
820    Before_DML(
821                 p_action=>'UPDATE',
822                 x_rowid=>X_ROWID,
823                x_appl_pgmapprv_id=>X_APPL_PGMAPPRV_ID,
824                x_person_id=>X_PERSON_ID,
825                x_admission_appl_number=>X_ADMISSION_APPL_NUMBER,
826                x_nominated_course_cd=>X_NOMINATED_COURSE_CD,
827                x_sequence_number=>X_SEQUENCE_NUMBER,
828                x_pgm_approver_id=>X_PGM_APPROVER_ID,
829                x_assign_type=>X_ASSIGN_TYPE,
830                x_assign_date=>X_ASSIGN_DATE,
831                x_program_approval_date=>X_PROGRAM_APPROVAL_DATE,
832                x_program_approval_status=>X_PROGRAM_APPROVAL_STATUS,
833                x_approval_notes=>X_APPROVAL_NOTES,
834                x_creation_date=>X_LAST_UPDATE_DATE,
835                x_created_by=>X_LAST_UPDATED_BY,
836                x_last_update_date=>X_LAST_UPDATE_DATE,
837                x_last_updated_by=>X_LAST_UPDATED_BY,
838                x_last_update_login=>X_LAST_UPDATE_LOGIN);
839 
840     if (l_mode IN ('R','S')) then
841       X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
842       X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
843       X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
844       if (X_REQUEST_ID = -1) then
845         X_REQUEST_ID := OLD_REFERENCES.REQUEST_ID;
846         X_PROGRAM_ID := OLD_REFERENCES. PROGRAM_ID;
847         X_PROGRAM_APPLICATION_ID := OLD_REFERENCES.PROGRAM_APPLICATION_ID;
848         X_PROGRAM_UPDATE_DATE := OLD_REFERENCES.PROGRAM_UPDATE_DATE;
849       else
850         X_PROGRAM_UPDATE_DATE := SYSDATE;
851       end if;
852     end if;
853 
854     IF (x_mode = 'S') THEN
855     igs_sc_gen_001.set_ctx('R');
856   END IF;
857  update IGS_AD_APPL_PGMAPPRV set
858       PERSON_ID =  NEW_REFERENCES.PERSON_ID,
859       ADMISSION_APPL_NUMBER =  NEW_REFERENCES.ADMISSION_APPL_NUMBER,
860       NOMINATED_COURSE_CD =  NEW_REFERENCES.NOMINATED_COURSE_CD,
861       SEQUENCE_NUMBER =  NEW_REFERENCES.SEQUENCE_NUMBER,
862       PGM_APPROVER_ID =  NEW_REFERENCES.PGM_APPROVER_ID,
863       ASSIGN_TYPE =  NEW_REFERENCES.ASSIGN_TYPE,
864       ASSIGN_DATE =  NEW_REFERENCES.ASSIGN_DATE,
865       PROGRAM_APPROVAL_DATE =  NEW_REFERENCES.PROGRAM_APPROVAL_DATE,
866       PROGRAM_APPROVAL_STATUS =  NEW_REFERENCES.PROGRAM_APPROVAL_STATUS,
867       APPROVAL_NOTES =  NEW_REFERENCES.APPROVAL_NOTES,
868         LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
869         LAST_UPDATED_BY = X_LAST_UPDATED_BY,
870         LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
871 ,       REQUEST_ID = X_REQUEST_ID,
872         PROGRAM_ID = X_PROGRAM_ID,
873         PROGRAM_APPLICATION_ID = PROGRAM_APPLICATION_ID,
874         PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE
875           where ROWID = X_ROWID;
876         if (sql%notfound) then
877      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
878      igs_ge_msg_stack.add;
879      igs_sc_gen_001.unset_ctx('R');
880      app_exception.raise_exception;
881  end if;
882  IF (x_mode = 'S') THEN
883     igs_sc_gen_001.unset_ctx('R');
884   END IF;
885 
886 
887  After_DML (
888         p_action => 'UPDATE' ,
889         x_rowid => X_ROWID
890         );
891 EXCEPTION
892   WHEN OTHERS THEN
893     IF SQLCODE = '-28115' OR SQLCODE = '-28113' OR SQLCODE = '-28111' THEN
894       -- Code to handle Security Policy error raised
895       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
896       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
897       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
898       --    that the ownerof policy function does not have privilege to access.
899       FND_MESSAGE.SET_NAME ('IGS', 'IGS_SC_UPD_POLICY_EXCP');
900       FND_MESSAGE.SET_TOKEN('ERR_CD',SQLCODE);
901       IGS_GE_MSG_STACK.ADD;
902       app_exception.raise_exception;
903     ELSE
904       RAISE;
905     END IF;
906 end UPDATE_ROW;
907  procedure ADD_ROW (
908       X_ROWID in out NOCOPY VARCHAR2,
909        x_APPL_PGMAPPRV_ID IN OUT NOCOPY NUMBER,
910        x_PERSON_ID IN NUMBER,
911        x_ADMISSION_APPL_NUMBER IN NUMBER,
912        x_NOMINATED_COURSE_CD IN VARCHAR2,
913        x_SEQUENCE_NUMBER IN NUMBER,
914        x_PGM_APPROVER_ID IN NUMBER,
915        x_ASSIGN_TYPE IN VARCHAR2,
916        x_ASSIGN_DATE IN DATE,
917        x_PROGRAM_APPROVAL_DATE IN DATE,
918        x_PROGRAM_APPROVAL_STATUS IN VARCHAR2,
919        x_APPROVAL_NOTES IN VARCHAR2,
920       X_MODE in VARCHAR2
921   ) AS
922   /*************************************************************
923   Created By :
924   Date Created By :
925   Purpose :
926   Know limitations, enhancements or remarks
927   Change History
928   Who             When            What
929   RAVISHAR        Feb,25 2005     Removed the default value of X_MODE parameter from
930                                   body of this package for bug 4163319
931   				  GSCC standard says that default value should be
932 				  present only in specification
933 (reverse chronological order - newest change first)
934   ***************************************************************/
935 
936     cursor c1 is select ROWID from IGS_AD_APPL_PGMAPPRV
937              where     APPL_PGMAPPRV_ID= X_APPL_PGMAPPRV_ID
938 ;
939 
940  l_mode VARCHAR2(1);
941 begin
942    l_mode := NVL(X_MODE,'R');
943         open c1;
944                 fetch c1 into X_ROWID;
945         if (c1%notfound) then
946         close c1;
947     INSERT_ROW (
948       X_ROWID,
949        X_APPL_PGMAPPRV_ID,
950        X_PERSON_ID,
951        X_ADMISSION_APPL_NUMBER,
952        X_NOMINATED_COURSE_CD,
953        X_SEQUENCE_NUMBER,
954        X_PGM_APPROVER_ID,
955        X_ASSIGN_TYPE,
956        X_ASSIGN_DATE,
957        X_PROGRAM_APPROVAL_DATE,
958        X_PROGRAM_APPROVAL_STATUS,
959        X_APPROVAL_NOTES,
960       l_mode );
961      return;
962         end if;
963            close c1;
964 UPDATE_ROW (
965       X_ROWID,
966        X_APPL_PGMAPPRV_ID,
967        X_PERSON_ID,
968        X_ADMISSION_APPL_NUMBER,
969        X_NOMINATED_COURSE_CD,
970        X_SEQUENCE_NUMBER,
971        X_PGM_APPROVER_ID,
972        X_ASSIGN_TYPE,
973        X_ASSIGN_DATE,
974        X_PROGRAM_APPROVAL_DATE,
975        X_PROGRAM_APPROVAL_STATUS,
976        X_APPROVAL_NOTES,
977       l_mode );
978 end ADD_ROW;
979 procedure DELETE_ROW (
980   X_ROWID in VARCHAR2,
981   x_mode IN VARCHAR2
982 ) AS
983   /*************************************************************
984   Created By :
985   Date Created By :
986   Purpose :
987   Know limitations, enhancements or remarks
988   Change History
989   Who             When            What
990 
991   (reverse chronological order - newest change first)
992   ***************************************************************/
993 
994 begin
995 Before_DML (
996 p_action => 'DELETE',
997 x_rowid => X_ROWID
998 );
999   IF (x_mode = 'S') THEN
1000     igs_sc_gen_001.set_ctx('R');
1001   END IF;
1002  delete from IGS_AD_APPL_PGMAPPRV
1003  where ROWID = X_ROWID;
1004   if (sql%notfound) then
1005      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
1006      igs_ge_msg_stack.add;
1007      igs_sc_gen_001.unset_ctx('R');
1008      app_exception.raise_exception;
1009  end if;
1010  IF (x_mode = 'S') THEN
1011     igs_sc_gen_001.unset_ctx('R');
1012   END IF;
1013 
1014 After_DML (
1015  p_action => 'DELETE',
1016  x_rowid => X_ROWID
1017 );
1018 EXCEPTION
1019   WHEN OTHERS THEN
1020     IF SQLCODE = '-28115' OR SQLCODE = '-28113' OR SQLCODE = '-28111' THEN
1021       -- Code to handle Security Policy error raised
1022       -- 1) ORA-28115 (policy with check option violation) which is raised when Policy predicate was evaluated to FALSE with the updated values.
1023       -- 2) ORA-28113 (policy predicate has error) which is raised when Policy function generates invalid predicate.
1024       -- 3) ORA-28111 (insufficient privilege to evaluate policy predicate) which is raised when Predicate has a subquery which contains objects
1025       --    that the ownerof policy function does not have privilege to access.
1026       FND_MESSAGE.SET_NAME ('IGS', 'IGS_SC_POLICY_EXCEPTION');
1027       FND_MESSAGE.SET_TOKEN('ERR_CD',SQLCODE);
1028       IGS_GE_MSG_STACK.ADD;
1029       app_exception.raise_exception;
1030     ELSE
1031       RAISE;
1032     END IF;
1033 end DELETE_ROW;
1034 END igs_ad_appl_pgmapprv_pkg;