DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_ELGBL_OVERRIDE

Source


1 PACKAGE BODY Igs_En_Elgbl_Override AS
2 /* $Header: IGSEN77B.pls 120.5 2006/08/18 12:14:21 amuthu noship $ */
3 
4 /*-----------------------------------------------------------------------------------------------------
5   --Created by  : knaraset ( Oracle IDC)
6   --Date created: 21-JUN-2001
7   --
8   --Known limitations/enhancements and/or remarks:
9   --
10   --Change History:
11   --Who         When               What
12   --amuthu      29-JAN-2003        As part of bug 2744715 change the message logging format for the
13   --                               this job and also truncated the date being passed to the insert row
14   --                               of IGS_EN_ELGB_OVR_STEP_PKG.
15   --svanukur    16-jun-2003       modified the UI and Validations associated with this job as part of
16   --                               Validations ImpactCR , ENCR34, bug #2881385
17   --ptandon	02-Jul-2003	   Modified the function enrp_chk_unit_over to allow unit level override
18 				   for multiple units/unit sections to a student in case of same unit
19 				   step type. Bug# 3033214
20   --rvangala    11-NOV-2003        Changed query of Cursor cur_criteria_satisfied to include call to
21   --                               igs_en_gen_011.match_term_sca_params and included parameters
22   --                               p_load_cal_type and p_load_cal_seq
23 
24   --ckasu       18-FEB-2004        Modified enrp_elgbl_override procedure inorder to log message
25                                    IGS_EN_NO_STDNT_FOUND when no data is found.Bug No 3442015
26 
27   --ckasu       11-APR-2006        Modified as a part of Sevis Build bug# 5140084.
28 
29   --ckasu       13-JUN-2006        modified as a part of bug 5299024 inorder show proper error message
30   --amuthu      15-jun-2006        Modified enrp_chk_prg_over as part of bug 5335207/5330361.
31   --amuthu      18-Aug-2006        Modified enrp_chk_prg_over as part of bug 5435397
32   ------------------------------------------------------------------------------------------------------*/
33 
34 
35 PROCEDURE enrp_elgbl_override(
36 errbuf                     OUT NOCOPY VARCHAR2,
37 retcode                    OUT NOCOPY NUMBER,
38 p_trm_teach_cal_type_comb  IN  VARCHAR2,
39 p_program_cd_comb          IN  VARCHAR2,
40 p_location_cd              IN  VARCHAR2,
41 p_attendance_mode          IN  VARCHAR2,
42 p_attendance_type          IN  VARCHAR2,
43 p_unit_cd_comb             IN  VARCHAR2,
44 p_unit_set_comb            IN  VARCHAR2,
45 p_class_standing           IN  VARCHAR2,
46 p_org_unit_cd              IN  VARCHAR2,
47 p_person_id_group          IN  VARCHAR2,
48 p_person_id                IN  NUMBER,
49 p_program_attempt_status   IN  VARCHAR2,
50 p_person_step_1            IN  VARCHAR2,
51 p_program_step_1           IN  VARCHAR2,
52 p_over_credit_point_1      IN  NUMBER,
53 p_unit_step_1              IN  VARCHAR2,
54 p_unit_cd_1                IN  VARCHAR2,
55 p_unit_section_1           IN  NUMBER,
56 p_person_step_2            IN  VARCHAR2,
57 p_program_step_2           IN  VARCHAR2,
58 p_over_credit_point_2      IN  NUMBER,
59 p_unit_step_2              IN  VARCHAR2,
60 p_unit_cd_2                IN  VARCHAR2,
61 p_unit_section_2           IN  NUMBER,
62 p_person_step_3            IN  VARCHAR2,
63 p_program_step_3           IN  VARCHAR2,
64 p_unit_step_3              IN  VARCHAR2,
65 p_unit_cd_3                IN  VARCHAR2,
66 p_unit_section_3           IN  NUMBER,
67 p_person_step_4            IN  VARCHAR2,
68 p_program_step_4           IN  VARCHAR2,
69 p_unit_step_4              IN  VARCHAR2,
70 p_unit_cd_4                IN  VARCHAR2,
71 p_unit_section_4           IN  NUMBER,
72 p_person_ovr_step_1        IN  VARCHAR2,
73 p_unit_ovr_step_1          IN  VARCHAR2,
74 p_over_credit_point_3      IN  NUMBER,
75 p_unit_cd_ovr_1            IN  VARCHAR2,
76 p_unit_section_ovr_1       IN  NUMBER,
77 p_person_ovr_step_2        IN  VARCHAR2,
78 p_unit_ovr_step_2          IN  VARCHAR2,
79 p_over_credit_point_4      IN  NUMBER,
80 p_unit_cd_ovr_2            IN  VARCHAR2,
81 p_unit_section_ovr_2       IN  NUMBER,
82 p_person_ovr_step_3        IN  VARCHAR2,
83 p_unit_ovr_step_3          IN  VARCHAR2,
84 p_unit_cd_ovr_3            IN  VARCHAR2,
85 p_unit_section_ovr_3       IN  NUMBER,
86 p_person_ovr_step_4        IN  VARCHAR2,
87 p_unit_ovr_step_4          IN  VARCHAR2,
88 p_unit_cd_ovr_4            IN  VARCHAR2,
89 p_unit_section_ovr_4       IN  NUMBER,
90 p_org_id                   IN  NUMBER,
91 p_sevis_auth_cd            IN  VARCHAR2,
92 p_comments                 IN  VARCHAR2
93 ) AS
94 --------------------------------------------------------------------------------------------------------------------------------------------
95   --Created by  : knaraset ( Oracle IDC)
96   --Date created: 21-JUN-2001
97   --
98   --Purpose:  This procedure will create override records to the students who satisfied the given criteria,
99   --          corresponding to the all steps passed as parameters.
100   --
101   --   Flow of the process
102   --------------------------------------
103   --
104   --    ENRP_ELGBL_OVERRIDE ( ** Main Function )
105   --     |
106   --     | Function ENRP_LOG_PARA ( ** log parameters )
107   --     | Function ENRP_VAL_PARA ( ** Validate parameters )
108   --     |   LOOP for all students
109   --     |     Igs_En_Elgb_Ovr_Pkg.insert_row (** If not exists )
110   --     |     Procedure ENRP_INS_STEP_OVER ( ** create override records for all steps passed )
111   --              | Procedure enrp_chk_pers_over/enrp_chk_prg_over/enrp_chk_unit_over ( ** based on the step type different call)
112   --                      | Igs_En_Gen_015.validation_step_is_overridden ( ** whether step is overriden )
113   --                      | Igs_En_Elgb_Ovr_Step_Pkg.insert_row ( ** create override record for the step )
114   --
115   --
116   --Known limitations/enhancements and/or remarks:
117   --
118   --Change History:
119   --Who         When               What
120   --kkillams    05-11-2002         As part of sevis build two new parameters p_sevis_auth_cd and p_comments are added.
121   --                               bug no # 2641905
122   --svanukur    17-APR-2003        As part of bug #2744699, modified the parameters entered in the log file. Also used messages for prompts in the
123   --                               log file instead of hard coded values for NLS compliance.
124   --                               created cursors cur_person_id_grp, cur_person_id, cur_step and variable l_step to populate
125   --                               the log file.
126   --rvangala    11-NOV-2003        Changed query of Cursor cur_criteria_satisfied to include call to
127   --                               igs_en_gen_011.match_term_sca_params
128   --ckasu       18-FEB-2004        Variable l_not_found was initialised to FALSE and code was changed inorder to log a Message
129   --                               'No Student was selected for given Criteria' when no data was found for Override record Processing
130   --                               as a part of bug 3442015
131   ---------------------------------------------------------------------------------------------------------------------------------------
132 
133  CURSOR cur_elgb_over(p_person_id NUMBER,p_cal_type VARCHAR2,p_ci_seq_number NUMBER)IS
134  SELECT elgb_override_id
135  FROM igs_en_elgb_ovr
136  WHERE person_id = p_person_id AND
137        cal_type = p_cal_type AND
138            ci_sequence_number = p_ci_seq_number;
139 
140  CURSOR cur_criteria_satisfied(p_course_cd VARCHAR2,p_course_version NUMBER,p_unit_cd VARCHAR2, p_unit_version NUMBER,
141                                p_unit_set_cd VARCHAR2,p_unit_set_version NUMBER, p_org_unit_start_dt DATE,
142                                p_load_cal_type VARCHAR2, p_load_cal_seq NUMBER) IS
143  SELECT DISTINCT(sca.person_id) person_id
144  FROM igs_en_stdnt_ps_att sca
145  WHERE (p_person_id IS NULL OR
146         sca.person_id = p_person_id) AND
147            (p_person_id_group IS NULL OR
148             EXISTS ( SELECT 'x'
149                          FROM igs_pe_prsid_grp_mem pig
150                                  WHERE pig.group_id = p_person_id_group AND
151                                        pig.person_id = sca.person_id)) AND
152        sca.course_cd LIKE NVL(p_course_cd,'%')  AND
153        igs_en_gen_011.match_term_sca_params (
154 			sca.person_id,
155 			sca.course_cd,
156 			sca.version_number,
157 			sca.attendance_type,
158 			sca.attendance_mode,
159 			sca.location_cd,
160 			p_course_cd,
161 			p_course_version,
162 			p_attendance_type,
163 			p_attendance_mode,
164 			p_location_cd,
165 			p_load_cal_type,
166 			p_load_cal_seq) = 'Y'
167 	  AND
168            sca.course_attempt_status LIKE NVL(p_program_attempt_status,'%') AND
169            (p_unit_cd_comb IS NULL OR
170             EXISTS (SELECT 'X'
171                         FROM igs_en_su_attempt sua
172                                 WHERE sua.person_id = sca.person_id AND
173                                       sua.course_cd = sca.course_cd AND
174                                       sua.unit_cd = p_unit_cd AND
175                                           sua.version_number = p_unit_version)) AND
176        (p_unit_set_comb IS NULL OR
177             EXISTS (SELECT 'X'
178                         FROM igs_as_su_setatmpt
179                                 WHERE unit_set_cd = p_unit_set_cd AND
180                                       us_version_number = p_unit_set_version AND
181                                           person_id = sca.person_id AND
182                                       course_cd = sca.course_cd )) AND
183 /*         (p_class_stand IS NULL OR
184             NVL(sca.class_standing_override,get_class_standing(sca.person_id,sca.course_cd,'N'))
185                    = p_class_stand ) AND*/
186            (p_org_unit_cd IS NULL OR
187             EXISTS (SELECT 'X'
188                         FROM igs_ps_ver ps
189                                 WHERE ps.course_cd = sca.course_cd AND
190                                       ps.version_number = sca.version_number AND
191                                           ((ps.responsible_org_unit_cd = p_org_unit_cd AND
192                                         ps.responsible_ou_start_dt = p_org_unit_start_dt) OR
193                                                 igs_or_gen_001.orgp_get_within_ou(ps.responsible_org_unit_cd,
194                                                                                   ps.responsible_ou_start_dt,
195                                                                                                                   p_org_unit_cd,
196                                                                                                                   p_org_unit_start_dt,
197                                                                                                                   'N') = 'Y')));
198 
199 
200  CURSOR cur_org_unit_st_dt(p_org_unit_cd VARCHAR2) IS
201  SELECT start_dt
202  FROM igs_or_unit
203  WHERE org_unit_cd = p_org_unit_cd;
204 
205  CURSOR cur_person_id_grp(p_person_id_group  NUMBER) IS
206  SELECT PG.GROUP_CD||'-'||PG.GROUP_ID
207  FROM IGS_PE_PERSID_GROUP PG
208  WHERE PG.group_id = p_person_id_group;
209 
210  CURSOR cur_person_id(p_person_id NUMBER) IS
211  SELECT PE.party_number person_number
212  FROM hz_parties  PE
213  WHERE PE.party_id  = p_person_id;
214 
215  CURSOR cur_step(p_lookup_type VARCHAR2, p_step VARCHAR2) IS
216  SELECT LKV.meaning
217  FROM IGS_Lookup_values LKV
218  WHERE  lkv.lookup_type = p_lookup_type AND
219   LKV.lookup_code = p_step;
220 
221 
222  CURSOR cur_get_cal_cat (cp_cal_type IGS_CA_TYPE.CAL_TYPE%TYPE) IS
223  SELECT s_cal_cat
224  FROM igs_ca_type
225  WHERE cal_type = cp_cal_type;
226 
227  CURSOR cur_load_cal (cp_teach_cal_type VARCHAR2, cp_teach_ci_sequence_number NUMBER) IS
228  SELECT load_cal_type,load_ci_sequence_number
229  FROM igs_ca_teach_to_load_v
230  WHERE teach_cal_type= cp_teach_cal_type
231  AND teach_ci_sequence_number= cp_teach_ci_sequence_number;
232 
233 
234  l_cal_type igs_ca_inst.cal_type%TYPE;
235  l_ci_seq_number igs_ca_inst.sequence_number%TYPE;
236  l_course_cd igs_ps_ver.course_cd%TYPE;
237  l_course_version  igs_ps_ver.version_number%TYPE;
238  l_unit_cd igs_ps_unit_ver.unit_cd%TYPE;
239  l_unit_version  igs_ps_unit_ver.version_number%TYPE;
240  l_unit_set_cd igs_en_unit_set.unit_set_cd%TYPE;
241  l_unit_set_version igs_en_unit_set.version_number%TYPE;
242  l_message_name VARCHAR2(30) := NULL;
243  l_elgb_override_id igs_en_elgb_ovr.elgb_override_id%TYPE;
244  l_rowid VARCHAR2(30);
245  l_record_found BOOLEAN :=FALSE;
246  l_org_unit_start_dt igs_or_unit.start_dt%TYPE;
247  l_person_id_grp VARCHAR2(20);
248  l_person_id VARCHAR2(20);
249  l_step  IGS_Lookups_view.meaning%TYPE;
250  l_load_cal_type igs_ca_teach_to_load_v.load_cal_type%TYPE;
251  l_load_cal_seq_num igs_ca_teach_to_load_v.load_ci_sequence_number%TYPE;
252  l_cal_cat IGS_CA_TYPE.S_CAL_CAT%TYPE;
253 
254  l_is_teach_cal BOOLEAN;
255 
256  --
257  -- procedure to log all the parameters passed
258  -- if no steps provided to override then log error message and stop the process
259  --
260   FUNCTION enrp_log_para(p_message_name OUT NOCOPY VARCHAR2
261            ) RETURN BOOLEAN AS
262 
263   BEGIN
264     IF (p_person_step_1 IS NULL  AND p_program_step_1 IS NULL AND p_unit_step_1 IS NULL
265        AND p_person_step_2 IS NULL  AND p_program_step_2 IS NULL  AND p_unit_step_2 IS NULL
266        AND p_person_step_3 IS NULL  AND p_program_step_3 IS NULL  AND p_unit_step_3 IS NULL
267        AND p_person_step_4 IS NULL  AND p_program_step_4 IS NULL  AND p_unit_step_4 IS NULL
268        AND p_person_ovr_step_1 IS NULL   AND p_unit_ovr_step_1 IS NULL
269        AND p_person_ovr_step_2 IS NULL   AND p_unit_ovr_step_2 IS NULL
270        AND p_person_ovr_step_3 IS NULL   AND p_unit_ovr_step_3 IS NULL
271        AND p_person_ovr_step_4 IS NULL   AND p_unit_ovr_step_4 IS NULL ) THEN
272 
273            p_message_name := 'IGS_EN_NO_STEP_PASSED';
274            RETURN FALSE;
275     END IF;
276         Fnd_Message.SET_NAME ('IGS','IGS_CA_CAL_TYPE');
277         Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': ' ||p_trm_teach_cal_type_comb);
278 
279         IF p_program_cd_comb IS NOT NULL THEN
280            Fnd_Message.SET_NAME ('IGS','IGS_AD_CRS_CD');
281            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||': '||p_program_cd_comb);
282         END IF;
283         IF p_location_cd IS NOT NULL THEN
284            Fnd_Message.SET_NAME ('IGS','IGS_AD_LG_INAP_LOC');
285            Fnd_Message.Set_Token('LOC',p_location_cd);
286            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET);
287         END IF;
288         IF p_attendance_mode IS NOT NULL THEN
289            Fnd_Message.SET_NAME ('IGS','IGS_AD_LG_INAP_ATT_MODE');
290            Fnd_Message.Set_Token('ATTMODE',p_attendance_mode);
291            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET);
292         END IF;
293         IF p_attendance_type IS NOT NULL THEN
294            Fnd_Message.SET_NAME ('IGS','IGS_AD_LG_INAP_ATT_TYPE');
295            Fnd_Message.Set_Token('ATTTYPE',p_attendance_type);
296            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET);
297         END IF;
298         IF p_unit_cd_comb IS NOT NULL THEN
299            Fnd_Message.SET_NAME ('IGS','IGS_AD_UNIT');
300            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': ' ||p_unit_cd_comb);
301         END IF;
302         IF p_unit_set_comb IS NOT NULL THEN
303             Fnd_Message.SET_NAME ('IGS','IGS_AD_UNIT_SET');
304            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': ' ||p_unit_set_comb);
305         END IF;
306         IF p_class_standing IS NOT NULL THEN
307            Fnd_Message.SET_NAME ('IGS','IGS_EN_CLASS_STAND');
308            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': ' ||p_class_standing);
309 
310         END IF;
311         IF p_org_unit_cd IS NOT NULL THEN
312            Fnd_Message.SET_NAME ('IGS','IGS_PR_ORG_UNIT');
313            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': '||p_org_unit_cd);
314         END IF;
315         IF p_person_id_group IS NOT NULL THEN
316            OPEN cur_person_id_grp(p_person_id_group);
317            FETCH cur_person_id_grp INTO l_person_id_grp;
318            CLOSE cur_person_id_grp;
319            Fnd_Message.SET_NAME ('IGS','IGS_AD_ADM_ENQ_ID_GRP');
320            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||': '||l_person_id_grp);
321 
322         END IF;
323         IF p_person_id IS NOT NULL THEN
324            OPEN cur_person_id(p_person_id);
325            FETCH cur_person_id INTO l_person_id;
326            CLOSE cur_person_id;
327            Fnd_Message.SET_NAME ('IGS','IGS_AD_PERSON_ID');
328            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET|| ': '||l_person_id);
329 
330         END IF;
331         IF p_program_attempt_status IS NOT NULL THEN
332           -- program attempt status
333            OPEN cur_step('CRS_ATTEMPT_STATUS',p_program_attempt_status);
334            FETCH cur_step INTO l_step;
335            CLOSE cur_step;
336            Fnd_Message.SET_NAME ('IGS','IGS_RE_ATTMPT_STATUS');
337            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||': '||l_step);
338 
339         END IF;
340         IF p_person_step_1 IS NOT NULL THEN
341         -- person step
342            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_person_step_1);
343            FETCH cur_step INTO l_step;
344            CLOSE cur_step;
345            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_STEP');
346            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||l_step);
347 
348         END IF;
349         IF p_program_step_1 IS NOT NULL THEN
350         -- program step
351            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_program_step_1);
352            FETCH cur_step INTO l_step;
353            CLOSE cur_step;
354            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PGM_STEP');
355            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||l_step);
356 
357         END IF;
358 
359         IF p_over_credit_point_1 IS NOT NULL THEN
360            Fnd_Message.SET_NAME('IGS', 'IGS_EN_DESIRED_LIM');
361            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||p_over_credit_point_1);
362 
363         END IF;
364 
365 	IF p_unit_step_1 IS NOT NULL THEN
366     -- unit step
367            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_unit_step_1);
368            FETCH cur_step INTO l_step;
369            CLOSE cur_step;
370            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_STEP');
371            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||l_step);
372 
373         END IF;
374 
375 	IF p_unit_cd_1 IS NOT NULL THEN
376            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
377            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||p_unit_cd_1);
378 
379         END IF;
380 
381 	IF p_unit_section_1 IS NOT NULL THEN
382            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
383            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||p_unit_section_1);
384 
385         END IF;
386 
387 	IF p_person_step_2 IS NOT NULL THEN
388            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_person_step_2);
389            FETCH cur_step INTO l_step;
390            CLOSE cur_step;
391            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_STEP');
392            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||l_step);
393 
394         END IF;
395         IF p_program_step_2 IS NOT NULL THEN
396            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_program_step_2);
397            FETCH cur_step INTO l_step;
398            CLOSE cur_step;
399            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PGM_STEP');
400            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||l_step);
401         END IF;
402          IF p_over_credit_point_2 IS NOT NULL THEN
403            Fnd_Message.SET_NAME('IGS', 'IGS_EN_DESIRED_LIM');
404            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_over_credit_point_2 );
405         END IF;
406 
407 	IF p_unit_step_2 IS NOT NULL THEN
408            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_unit_step_2);
409            FETCH cur_step INTO l_step;
410            CLOSE cur_step;
411            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_STEP');
412            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||l_step);
413 
414         END IF;
415 
416        IF p_unit_cd_2 IS NOT NULL THEN
417            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
418            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_unit_cd_2);
419 
420         END IF;
421 
422 	IF p_unit_section_2 IS NOT NULL THEN
423            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
424            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_unit_section_2);
425 
426         END IF;
427 
428 
429 	IF p_person_step_3 IS NOT NULL THEN
430            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_person_step_3);
431            FETCH cur_step INTO l_step;
432            CLOSE cur_step;
433            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_STEP');
434            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||l_step);
435 
436         END IF;
437         IF p_program_step_3 IS NOT NULL THEN
438            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_program_step_3);
439            FETCH cur_step INTO l_step;
440            CLOSE cur_step;
441            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PGM_STEP');
442            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||l_step);
443         END IF;
444         IF p_unit_step_3 IS NOT NULL THEN
445            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_unit_step_3);
446            FETCH cur_step INTO l_step;
447            CLOSE cur_step;
448            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_STEP');
449            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||l_step);
450 
451         END IF;
452         IF p_unit_cd_3 IS NOT NULL THEN
453 
454            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
455            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||p_unit_cd_3);
456 
457         END IF;
458 
459 	IF p_unit_section_3 IS NOT NULL THEN
460 
461            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
462            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||p_unit_section_3);
463 
464         END IF;
465 
466 	IF p_person_step_4 IS NOT NULL THEN
467            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_person_step_4);
468            FETCH cur_step INTO l_step;
469            CLOSE cur_step;
470            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_STEP');
471            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||l_step);
472 
473         END IF;
474         IF p_program_step_4 IS NOT NULL THEN
475            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_program_step_4);
476            FETCH cur_step INTO l_step;
477            CLOSE cur_step;
478            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PGM_STEP');
479            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||l_step);
480 
481         END IF;
482         IF p_unit_step_4 IS NOT NULL THEN
483            OPEN cur_step('ENROLMENT_STEP_TYPE_EXT',p_unit_step_4);
484            FETCH cur_step INTO l_step;
485            CLOSE cur_step;
486            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_STEP');
487            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||l_step);
488 --
489         END IF;
490 
491 	IF p_unit_cd_4 IS NOT NULL THEN
492            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
493            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||p_unit_cd_4);
494 
495         END IF;
496 
497 	IF p_unit_section_4 IS NOT NULL THEN
498 
499            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
500            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||p_unit_section_4);
501 
502         END IF;
503 
504         IF p_person_ovr_step_1 IS NOT NULL THEN
505         --Person Override Step
506            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_person_ovr_step_1);
507            FETCH cur_step INTO l_step;
508            CLOSE cur_step;
509            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_OVR_STEP');
510            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||l_step);
511 
512         END IF;
513 
514         IF p_unit_ovr_step_1 IS NOT NULL THEN
515         --unit Override Step
516            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_unit_ovr_step_1);
517            FETCH cur_step INTO l_step;
518            CLOSE cur_step;
519            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_OVR_STEP');
520            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||l_step);
521 
522         END IF;
523         IF p_over_credit_point_3 IS NOT NULL THEN
524 
525            Fnd_Message.SET_NAME('IGS', 'IGS_EN_CRDT_LIM');
526            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '|| p_over_credit_point_3);
527 
528         END IF;
529 
530 	IF p_unit_cd_ovr_1 IS NOT NULL THEN
531 
532            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
533            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||p_unit_cd_ovr_1);
534 
535         END IF;
536 
537 	IF p_unit_section_ovr_1 IS NOT NULL THEN
538 
539            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
540            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 1: '||p_unit_section_ovr_1);
541 
542         END IF;
543 	IF p_person_ovr_step_2 IS NOT NULL THEN
544            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_person_ovr_step_2);
545            FETCH cur_step INTO l_step;
546            CLOSE cur_step;
547            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_OVR_STEP');
548            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||l_step);
549 
550         END IF;
551 
552         IF p_unit_ovr_step_2 IS NOT NULL THEN
553            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_unit_ovr_step_2);
554            FETCH cur_step INTO l_step;
555            CLOSE cur_step;
556            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_OVR_STEP');
557            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||l_step);
558 
559         END IF;
560 
561 
562 	IF p_over_credit_point_4 IS NOT NULL THEN
563            Fnd_Message.SET_NAME('IGS', 'IGS_EN_CRDT_LIM');
564            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_over_credit_point_4);
565 
566         END IF;
567         IF p_unit_cd_ovr_2 IS NOT NULL THEN
568 
569            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
570            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_unit_cd_ovr_2 );
571 
572         END IF;
573 
574 	IF p_unit_section_ovr_2 IS NOT NULL THEN
575 
576            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
577            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 2: '||p_unit_section_ovr_2 );
578          END IF;
579 
580 	IF p_person_ovr_step_3 IS NOT NULL THEN
581            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_person_ovr_step_3);
582            FETCH cur_step INTO l_step;
583            CLOSE cur_step;
584            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_OVR_STEP');
585            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||l_step);
586         END IF;
587 
588 	IF p_unit_ovr_step_3 IS NOT NULL THEN
589            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_unit_ovr_step_3);
590            FETCH cur_step INTO l_step;
591            CLOSE cur_step;
592            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_OVR_STEP');
593            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||l_step);
594         END IF;
595 
596 	IF p_unit_cd_ovr_3 IS NOT NULL THEN
597            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
598            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||p_unit_cd_ovr_3);
599 
600         END IF;
601 
602 	IF p_unit_section_ovr_3 IS NOT NULL THEN
603            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
604            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 3: '||p_unit_section_ovr_3);
605          END IF;
606 	IF p_person_ovr_step_4 IS NOT NULL THEN
607            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_person_ovr_step_4);
608            FETCH cur_step INTO l_step;
609            CLOSE cur_step;
610            Fnd_Message.SET_NAME('IGS', 'IGS_EN_PER_OVR_STEP');
611            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||l_step);
612         END IF;
613 
614         IF p_unit_ovr_step_4 IS NOT NULL THEN
615            OPEN cur_step('ENROLMENT_OVR_STEP_TYPE',p_unit_ovr_step_4);
616            FETCH cur_step INTO l_step;
617            CLOSE cur_step;
618            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_OVR_STEP');
619            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||l_step);
620         END IF;
621         IF p_unit_cd_ovr_4 IS NOT NULL THEN
622            Fnd_Message.SET_NAME('IGS', 'IGS_AD_UNIT');
623            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||p_unit_cd_ovr_4);
624 
625         END IF;
626 
627 	IF p_unit_section_ovr_4 IS NOT NULL THEN
628            Fnd_Message.SET_NAME('IGS', 'IGS_EN_UNIT_SEC');
629            Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET||' 4: '||p_unit_section_ovr_4);
630          END IF;
631         Fnd_File.PUT_LINE(Fnd_File.LOG,'--------------------------------------------------------------------');
632         RETURN TRUE;
633 
634   END enrp_log_para;
635 
636  --
637  -- Function which validates the parameters
638  -- Steps (FMIN_CRDT,FMAX_CRDT,VAR_CREDIT_APPROVAL) should have value in
639  -- credit_point_limit parameter if no value specified log error message and stop the process
640  -- if any other steps has value for then log a warning message and continue the process.
641  --
642  FUNCTION enrp_val_para(p_message_name OUT NOCOPY VARCHAR2
643   )RETURN BOOLEAN AS
644  BEGIN
645 
646    IF (p_program_step_1 IS NULL OR p_program_step_1 NOT IN ('FMIN_CRDT','FMAX_CRDT'))
647                    AND (p_over_credit_point_1 IS NOT NULL ) THEN
648 
649                     p_message_name := 'IGS_EN_DESIRED_LMT_IGN';
650 
651   ELSIF (p_program_step_2 IS NULL OR p_program_step_2 NOT IN ('FMIN_CRDT','FMAX_CRDT'))
652                    AND (p_over_credit_point_2 IS NOT NULL ) THEN
653 
654                    p_message_name := 'IGS_EN_DESIRED_LMT_IGN';
655   END IF;
656 
657   IF  (p_unit_ovr_step_1 IS  NULL OR p_unit_ovr_step_1 NOT IN('VAR_CREDIT_APPROVAL'))
658                   AND (p_over_credit_point_3 IS NOT NULL)THEN
659     --
660                     p_message_name :='IGS_EN_CRDT_LMT_IGN';
661 
662   ELSIF (p_unit_ovr_step_2 IS  NULL OR p_unit_ovr_step_2 NOT IN ('VAR_CREDIT_APPROVAL'))
663                   AND (p_over_credit_point_4 IS NOT NULL) THEN
664     --
665                     p_message_name :='IGS_EN_CRDT_LMT_IGN';
666 
667   END IF;
668 
669    IF  p_unit_ovr_step_1 = 'VAR_CREDIT_APPROVAL' AND p_over_credit_point_3 IS  NULL THEN
670          p_message_name :='IGS_EN_CRDT_LMT_REQ';
671 	 RETURN FALSE;
672    ELSIF p_unit_ovr_step_2 = 'VAR_CREDIT_APPROVAL' AND p_over_credit_point_4 IS  NULL THEN
673          p_message_name :='IGS_EN_CRDT_LMT_REQ';
674 	 RETURN FALSE;
675    END IF;
676 
677    IF  p_unit_step_1 IS NOT NULL AND p_unit_cd_1 IS NULL THEN
678         p_message_name := 'IGS_EN_UNIT_EXISTS';
679 	RETURN FALSE;
680    END IF;
681 
682    IF  p_unit_step_2 IS NOT NULL AND p_unit_cd_2 IS NULL THEN
683         p_message_name := 'IGS_EN_UNIT_EXISTS';
684 	RETURN FALSE;
685    END IF;
686    IF  p_unit_step_3 IS NOT NULL AND p_unit_cd_3 IS NULL THEN
687         p_message_name := 'IGS_EN_UNIT_EXISTS';
688 	RETURN FALSE;
689    END IF;
690    IF  p_unit_step_4 IS NOT NULL AND p_unit_cd_4 IS NULL THEN
691         p_message_name := 'IGS_EN_UNIT_EXISTS';
692 	RETURN FALSE;
693    END IF;
694    IF  p_unit_ovr_step_1 IS NOT NULL AND p_unit_cd_ovr_1 IS NULL THEN
695         p_message_name := 'IGS_EN_UNIT_EXISTS';
696 	RETURN FALSE;
697    END IF;
698    IF  p_unit_ovr_step_2 IS NOT NULL AND p_unit_cd_ovr_2 IS NULL THEN
699         p_message_name := 'IGS_EN_UNIT_EXISTS';
700 	RETURN FALSE;
701    END IF;
702    IF  p_unit_ovr_step_3 IS NOT NULL AND p_unit_cd_ovr_3 IS NULL THEN
703         p_message_name := 'IGS_EN_UNIT_EXISTS';
704 	RETURN FALSE;
705    END IF;
706    IF  p_unit_ovr_step_4 IS NOT NULL AND p_unit_cd_ovr_4 IS NULL THEN
707         p_message_name := 'IGS_EN_UNIT_EXISTS';
708 	RETURN FALSE;
709    END IF;
710 
711    IF  p_unit_step_1 IS  NULL AND (p_unit_cd_1 IS NOT NULL
712    OR p_unit_section_1 IS NOT NULL) THEN
713         p_message_name := 'IGS_EN_UNIT_NT_REQD';
714 
715    END IF;
716    IF  p_unit_step_2 IS  NULL AND (p_unit_cd_2 IS NOT NULL
717    OR p_unit_section_2 IS NOT NULL) THEN
718         p_message_name := 'IGS_EN_UNIT_NT_REQD';
719 
720    END IF;
721    IF  p_unit_step_3 IS  NULL AND (p_unit_cd_3 IS NOT NULL
722    OR p_unit_section_3 IS NOT NULL) THEN
723         p_message_name := 'IGS_EN_UNIT_NT_REQD';
724 
725    END IF;
726    IF  p_unit_step_4 IS  NULL AND (p_unit_cd_4 IS NOT NULL
727    OR p_unit_section_4 IS NOT NULL) THEN
728         p_message_name := 'IGS_EN_UNIT_NT_REQD';
729 
730    END IF;
731    IF  p_unit_ovr_step_1 IS  NULL AND (p_unit_cd_ovr_1 IS NOT NULL
732    OR p_unit_section_ovr_1 IS NOT NULL) THEN
733         p_message_name := 'IGS_EN_UNIT_NT_REQD';
734 
735    END IF;
736    IF  p_unit_ovr_step_2 IS  NULL AND (p_unit_cd_ovr_2 IS NOT NULL
737    OR p_unit_section_ovr_2 IS NOT NULL) THEN
738         p_message_name := 'IGS_EN_UNIT_NT_REQD';
739 
740    END IF;
741 
742    IF  p_unit_ovr_step_3 IS  NULL AND (p_unit_cd_ovr_3 IS NOT NULL
743    OR p_unit_section_ovr_3 IS NOT NULL) THEN
744         p_message_name := 'IGS_EN_UNIT_NT_REQD';
745 
746    END IF;
747 
748    IF  p_unit_ovr_step_4 IS  NULL AND (p_unit_cd_ovr_4 IS NOT NULL
749    OR p_unit_section_ovr_4 IS NOT NULL) THEN
750         p_message_name := 'IGS_EN_UNIT_NT_REQD';
751 
752    END IF;
753 
754    RETURN TRUE;
755 
756 
757  END enrp_val_para;
758 
759  --
760  -- This Procedure will create(if not exists) the override records for the steps passed as parameters
761  -- corresponding to the person override record created in igs_en_elgb_ovr table
762  --
763  PROCEDURE enrp_ins_step_over(p_person_id NUMBER, p_cal_type VARCHAR2, p_ci_seq_number NUMBER,
764                               p_elgb_override_id IN NUMBER, p_unit_cd VARCHAR2, p_unit_version NUMBER,
765                               p_is_teach_cal BOOLEAN
766   )AS
767 
768     CURSOR cur_check_override (
769                                 cp_elgb_override_id      IGS_EN_ELGB_OVR_STEP.ELGB_OVERRIDE_ID%TYPE,
770                                 cp_eligibility_step_type IGS_EN_ELGB_OVR_STEP.STEP_OVERRIDE_TYPE%TYPE )IS
771     SELECT   step_override_limit,
772              step_override_type
773     FROM     igs_en_elgb_ovr_step eos
774     WHERE    eos.elgb_override_id   = cp_elgb_override_id
775     AND      eos.step_override_type = cp_eligibility_step_type;
776 
777     lr_cur_check_override  cur_check_override%ROWTYPE;
778 
779      CURSOR cur_pers_number(p_party_id NUMBER)IS
780      SELECT party_number
781      FROM hz_parties
782      WHERE party_id = p_party_id;
783 
784      l_person_number hz_parties.party_number%TYPE;
785 
786      CURSOR cur_step_meaning (cp_step_Type IGS_LOOKUP_VALUES.LOOKUP_CODE%TYPE) IS
787      SELECT meaning
788      FROM   igs_lookup_values
789      WHERE  lookup_code = cp_step_Type
790      AND (LOOKUP_TYPE = 'ENROLMENT_STEP_TYPE_EXT'
791           OR LOOKUP_TYPE = 'ENROLMENT_OVR_STEP_TYPE');
792 
793 	l_message VARCHAR2(5000);
794 
795   --
796   -- procedure to check whether record exist, otherwise create new override record for Person Steps
797   PROCEDURE enrp_chk_pers_over(p_elgb_step IN VARCHAR2, p_is_teach_cal IN BOOLEAN
798   )AS
799 
800   l_step_meaning IGS_LOOKUP_VALUES.MEANING%TYPE;
801   l_step_override_limit igs_en_elgb_ovr_step.STEP_OVERRIDE_LIMIT%TYPE;
802   l_rowid VARCHAR2(30);
803   l_elgb_ovr_step_id igs_en_elgb_ovr_step.elgb_ovr_step_id%TYPE;
804 
805   BEGIN
806 
807     l_step_meaning := NULL;
808     OPEN cur_step_meaning(p_elgb_step);
809     FETCH cur_step_meaning INTO l_step_meaning;
810     CLOSE cur_step_meaning;
811     IF p_is_teach_cal THEN
812       Fnd_Message.SET_NAME ('IGS','IGS_EN_CANNOT_CREATE_STEP');
813       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' ||l_step_meaning || ' - ' || Fnd_Message.GET);
814       RETURN;
815     END IF;-- end of IF p_is_teach_cal THEN
816 
817 
818     OPEN cur_check_override(p_elgb_override_id,p_elgb_step);
819     FETCH cur_check_override INTO lr_cur_check_override;
820    BEGIN
821     IF cur_check_override%NOTFOUND THEN
822 
823       Igs_En_Elgb_Ovr_Step_Pkg.insert_row(x_rowid => l_rowid,
824                                         x_elgb_ovr_step_id => l_elgb_ovr_step_id,
825                                         x_elgb_override_id => p_elgb_override_id, -- from parameter of container procedure
826 
827                                         x_step_override_type => p_elgb_step,
828                                         x_step_override_dt => TRUNC(SYSDATE),
829                                         x_step_override_limit => NULL,
830                                         x_mode => 'R');
831 
832 
833       Fnd_Message.SET_NAME ('IGS','IGS_EN_CR_SUCCESS');
834       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' ||l_step_meaning || ' - ' || Fnd_Message.GET);
835     ELSE
836       Fnd_Message.SET_NAME ('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
837       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' || Fnd_Message.GET);
838     END IF;
839 
840     EXCEPTION
841          WHEN OTHERS THEN
842            l_message := Fnd_Message.GET;
843    	   IF l_message IS NOT NULL THEN
844               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||l_message );
845 	   ELSE
846               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||SQLERRM );
847 	   END IF;
848     END;
849     CLOSE cur_check_override;
850 
851   END enrp_chk_pers_over;
852 
853 
854   PROCEDURE enrp_chk_prg_over(
855             p_elgb_step           IN VARCHAR2,
856             p_step_override_limit IN NUMBER,
857             p_is_teach_cal IN BOOLEAN
858   )AS
859   /*------------------------------------------------------------------------------------------
860   --Created by  : knaraset, Oracle IDC
861   --Date created:
862   --
863   --Purpose:
864   -- procedure to check whether record exist, otherwise create new override record for Person Steps
865   --
866   --Known limitations/enhancements and/or remarks:
867   --
868   --Change History:
869   --Who         When              What
870   --kkillams    05-10-2002        New validation checks whether authorization code is defined or not
871   --                              for the MIN credit/Force attendance program steps. If not new logic
872   --                              tries to insert the authorization code, where authorization code
873   --                              passed as a parameter.
874   --svanukur    16-jun-2003       as part of validation consolidtion CR bug #2881385,
875   --                                inserting the unit details into igs_en_elgb_ovr_uoo table which was
876   --				  created as part of build#2829272.
877   --ckasu       13-JUN-2006       modified as a part of bug 5299024.
878   --amuthu      15-jun-2006       Added logic to show a note to the user if an authorization already
879   --                              exists and a new one is not being created.
880   --amuthu      18-Aug-2006       The message IGS_EN_SV_AUTH_ALREADY_EXISTS would be displayed only
881   --                              for non-imig student alone. Bug 5435397
882   -------------------------------------------------------------------------------------------- */
883   --Cursor to get the calendar end date,person id for a given eligibility override.
884   CURSOR cur_elgb_end_dt IS SELECT end_dt,person_id, ci.cal_type, ci.sequence_number FROM  igs_en_elgb_ovr elgb,
885                                                 igs_ca_inst ci
886 					  WHERE elgb.elgb_override_id   = p_elgb_override_id
887                                           AND   elgb.cal_type           = ci.cal_type
888                                           AND   elgb.ci_sequence_number    = ci.sequence_number;
889   l_step_meaning IGS_LOOKUP_VALUES.MEANING%TYPE;
890   l_rowid               VARCHAR2(30);
891   l_elgb_ovr_step_id    NUMBER;
892   l_step_override_limit NUMBER := NULL;
893   l_ci_end_dt           igs_ca_inst.end_dt%TYPE;
894   l_cal_type            igs_ca_inst.cal_type%TYPE;
895   l_ci_sequence_number  igs_ca_inst.sequence_number%TYPE;
896   l_person_id           igs_en_elgb_ovr.person_id%TYPE;
897   l_message VARCHAR2(5000);
898   l_auth_start_Dt igs_en_svs_auth.START_DT%TYPE;
899   l_auth_end_dt igs_en_svs_auth.END_DT%TYPE;
900   l_sevis_auth_id igs_en_svs_auth.SEVIS_AUTH_ID%TYPE;
901   l_sevis_authorization_no igs_en_svs_auth.sevis_authorization_no%TYPE;
902 
903      -- Cursor to check whether active sevis person type exists for that person
904      -- modified by ckasu as a part of bug 5300119
905      CURSOR c_sevis_person_type IS
906        SELECT 'X'
907        FROM igs_pe_typ_instances_all pti,
908             igs_pe_person_types pt
909        WHERE pt.person_type_code = pti.person_type_code
910        AND system_type IN ('NONIMG_STUDENT')
911        AND person_id = p_person_id
912        AND NVL(end_date, SYSDATE) >= SYSDATE;
913 
914     l_sevis_person_type  c_sevis_person_type%ROWTYPE;
915 
916 
917   BEGIN
918     -- if the unit step is 'FMIN_CRDT','FMAX_CRDT' then only create override record with step_override_limit
919     -- otherwise that column will be NULL
920 
921     SAVEPOINT creating_auth_rec;
922 
923     IF p_elgb_step IN ('FMIN_CRDT','FMAX_CRDT') THEN
924           l_step_override_limit := p_step_override_limit;
925     END IF;
926 
927     l_step_meaning := NULL;
928     OPEN cur_step_meaning(p_elgb_step);
929     FETCH cur_step_meaning INTO l_step_meaning;
930     CLOSE cur_step_meaning;
931 
932     IF p_is_teach_cal THEN
933 
934       Fnd_Message.SET_NAME ('IGS','IGS_EN_CANNOT_CREATE_STEP');
935       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' ||l_step_meaning || ' - ' || Fnd_Message.GET);
936       RETURN;
937     END IF;-- end of IF p_is_teach_cal THEN
938 
939 
940     OPEN cur_check_override(p_elgb_override_id,p_elgb_step);
941     FETCH cur_check_override INTO lr_cur_check_override;
942     BEGIN
943     IF cur_check_override%NOTFOUND THEN
944         --Cursor to get the calendar end date for a given eligibility override.
945         OPEN cur_elgb_end_dt;
946         FETCH cur_elgb_end_dt INTO l_ci_end_dt,l_person_id, l_cal_type,l_ci_sequence_number ;
947         CLOSE cur_elgb_end_dt;
948 
949         -- modified by ckasu  as part of bug 5299024 inorder to create the eligible override step
950         -- in upfront.
951 
952         l_rowid:=NULL;
953 
954         Igs_En_Elgb_Ovr_Step_Pkg.insert_row(x_rowid               => l_rowid,
955                                             x_elgb_ovr_step_id    => l_elgb_ovr_step_id,
956                                             x_elgb_override_id    => p_elgb_override_id, -- from parameter of container procedure
957                                             x_step_override_type  => p_elgb_step,
958                                             x_step_override_dt    => TRUNC(SYSDATE),
959                                             x_step_override_limit => l_step_override_limit,
960                                             x_mode                => 'R');
961 
962 
963         --If step is 'FMIN_CRDT' or 'FATD_TYPE', then call the igs_en_sevis.enrf_chk_sevis_auth_req function, which validates the sevis pre-requisites.
964         --And check whether authorization code is required for this step override or not.
965         IF  p_elgb_step IN ('FMIN_CRDT','FATD_TYPE') THEN
966 
967             IF igs_en_sevis.enrf_chk_sevis_auth_req(p_person_id => l_person_id ,
968                                                     p_cal_type => l_cal_type,
969                                                     p_ci_sequence_number => l_ci_sequence_number,
970                                                     p_elgb_step => p_elgb_step
971                                                     ) THEN
972                IF p_sevis_auth_cd IS NOT NULL THEN
973                   l_rowid := NULL;
974                   l_sevis_auth_id := NULL;
975                   l_auth_start_dt := NULL;
976                   l_auth_end_dt := NULL;
977 
978                   igs_en_sevis.enrp_sevis_auth_dflt_dt(
979                                   p_person_id          => l_person_id,
980                                   p_cal_type           => l_cal_type,
981                                   p_ci_sequence_number => l_ci_sequence_number,
982                                   p_dflt_auth_start_dt => l_auth_start_dt,
983                                   p_dflt_auth_end_dt   => l_auth_end_dt);
984 
985                   IF l_auth_end_dt IS NULL OR   l_auth_start_dt IS NULL THEN
986                     --Log a warn  message.
987                     --modfied message name as a part of bug 5299024
988                     ROLLBACK to creating_auth_rec;
989                     Fnd_Message.SET_NAME ('IGS','IGS_EN_AUTH_REC_NO_DATES');
990                     Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || Fnd_Message.GET );
991                     RETURN;
992                   ELSE
993 
994                      SAVEPOINT creating_auth_rec;
995                    --Creating the authorization code for the given person.
996                    --p_comments,p_elgb_override_id,p_sevis_auth_cd these are parameter of container procedure.
997                      igs_en_sevis.create_auth_cal_row (
998                        p_sevis_authorization_code          => p_sevis_auth_cd,
999                        p_start_dt                          => l_auth_start_dt,
1000                        p_end_dt                            => l_auth_end_dt,
1001                        p_comments                          => p_comments,
1002                        p_sevis_auth_id                     => l_sevis_auth_id,
1003                        p_sevis_authorization_no            => l_sevis_authorization_no,
1004                        p_person_id                         => l_person_id,
1005                        p_cal_type                          => l_cal_type,
1006                        p_ci_sequence_number                => l_ci_sequence_number,
1007                        p_cancel_flag                        => 'N');
1008 
1009 
1010                     IF igs_en_sevis.is_auth_records_overlap(l_person_id) THEN
1011                       ROLLBACK to creating_auth_rec;
1012                       FND_MESSAGE.SET_NAME('IGS','IGS_GE_DATES_OVERLAP');
1013                       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || Fnd_Message.GET );
1014                       RETURN;
1015                     END IF;
1016 
1017                   END IF;
1018                ELSE
1019 
1020                   --Log a warn  message.
1021                   ROLLBACK to creating_auth_rec;
1022                   Fnd_Message.SET_NAME ('IGS','IGS_EN_SEVIS_AUTH_REQUIRED');
1023                   Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' ||Fnd_Message.GET );
1024                   RETURN;
1025                END IF;
1026             ELSE
1027              IF FND_PROFILE.VALUE('IGS_SV_ENABLED') = 'Y' THEN
1028                OPEN c_sevis_person_type;
1029                FETCH c_sevis_person_type INTO l_sevis_person_type;
1030                IF c_sevis_person_type%FOUND THEN
1031                  Fnd_Message.SET_NAME ('IGS','IGS_EN_SV_AUTH_ALREADY_EXISTS');
1032                  Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || Fnd_Message.GET );
1033                END IF;
1034                CLOSE c_sevis_person_type;
1035              END IF;
1036             END IF;
1037         END IF;
1038 
1039 
1040       Fnd_Message.SET_NAME ('IGS','IGS_EN_CR_SUCCESS');
1041       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' ||l_step_meaning || ' - ' || Fnd_Message.GET);
1042     ELSE
1043       Fnd_Message.SET_NAME ('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
1044       Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' || Fnd_Message.GET);
1045     END IF;
1046 
1047     EXCEPTION
1048          WHEN OTHERS THEN
1049            ROLLBACK to creating_auth_rec;
1050            l_message := Fnd_Message.GET;
1051    	   IF l_message IS NOT NULL THEN
1052               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||l_message );
1053 	   ELSE
1054               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||SQLERRM );
1055 	   END IF;
1056     END;
1057     CLOSE cur_check_override;
1058 
1059 
1060   END enrp_chk_prg_over;
1061 
1062   --
1063   -- procedure to check whether record exist, otherwise create new override record for Person Steps
1064   PROCEDURE enrp_chk_unit_over(p_elgb_step IN VARCHAR2,p_step_override_limit IN NUMBER,p_unit_cd IN VARCHAR2,
1065   p_version_number IN NUMBER, p_uoo_id IN NUMBER
1066   )AS
1067   /*------------------------------------------------------------------------------------------
1068   --Created by  : knaraset, Oracle IDC
1069   --Date created:
1070   --
1071   --Purpose:
1072   -- procedure to check whether record exist, otherwise create new override record for Person Steps
1073   --
1074   --Known limitations/enhancements and/or remarks:
1075   --
1076   --Change History:
1077   --Who         When               What
1078   --ptandon	02-Jul-2003	   Modified to allow unit level override for multiple units/unit sections
1079 				   to a student in case of same unit step type if the override is for a
1080 				   different unit section. Bug# 3033214
1081 ------------------------------------------------------------------------------------------------------*/
1082   l_step_meaning IGS_LOOKUP_VALUES.MEANING%TYPE;
1083   l_rowid VARCHAR2(30);
1084   l_elgb_ovr_step_id NUMBER(15);
1085   l_elgb_ovr_step_uoo_id NUMBER(15);
1086   l_step_override_limit NUMBER(6,3) := NULL;
1087 
1088   l_step_override_type  igs_en_elgb_ovr_step.step_override_type%TYPE;
1089   l_message VARCHAR2(5000);
1090 
1091   CURSOR cur_get_elgb_ovr_step_id IS
1092     SELECT   elgb_ovr_step_id
1093     FROM     igs_en_elgb_ovr_step eos
1094     WHERE    eos.elgb_override_id   = p_elgb_override_id
1095     AND      eos.step_override_type = p_elgb_step;
1096 
1097   lr_cur_get_elgb_ovr_step_id  IGS_EN_ELGB_OVR_UOO.ELGB_OVR_STEP_ID%TYPE;
1098 
1099   CURSOR cur_check_override_uooid (
1100                                 cp_elgb_ovr_step_id      IGS_EN_ELGB_OVR_UOO.ELGB_OVR_STEP_ID%TYPE)IS
1101     SELECT   elgb_ovr_step_uoo_id
1102     FROM     igs_en_elgb_ovr_uoo eou
1103     WHERE    eou.elgb_ovr_step_id   = cp_elgb_ovr_step_id
1104     AND      ((eou.uoo_id = NVL(p_uoo_id,-1) AND NVL(p_uoo_id,-1) <> -1)
1105     OR (eou.uoo_id = NVL(p_uoo_id,-1) AND NVL(p_uoo_id,-1) = -1 AND eou.unit_cd = p_unit_cd AND eou.version_number = p_version_number));
1106 
1107   lr_cur_check_override_uooid  cur_check_override_uooid%ROWTYPE;
1108 
1109   BEGIN
1110 
1111         -- if the unit step is 'VAR_CREDIT_APPROVAL' then only create override record with step_override_limit
1112         -- otherwise that column will be NULLp_person_id,
1113 
1114     IF p_elgb_step = 'VAR_CREDIT_APPROVAL' THEN
1115        l_step_override_limit := p_step_override_limit;
1116     END IF;
1117 
1118     l_step_meaning := NULL;
1119     OPEN cur_step_meaning(p_elgb_step);
1120     FETCH cur_step_meaning INTO l_step_meaning;
1121     CLOSE cur_step_meaning;
1122 
1123         --
1124         -- check whether override record exists for the given Unit step, given student and in the given calendar.
1125         --
1126     OPEN cur_check_override(p_elgb_override_id,p_elgb_step);
1127     FETCH cur_check_override INTO lr_cur_check_override;
1128     BEGIN
1129     IF cur_check_override%NOTFOUND THEN
1130 
1131             Igs_En_Elgb_Ovr_Step_Pkg.insert_row(x_rowid               => l_rowid,
1132                                                 x_elgb_ovr_step_id    => l_elgb_ovr_step_id,
1133                                                 x_elgb_override_id    => p_elgb_override_id, -- from parameter of container procedure
1134 
1135                                                 x_step_override_type  => p_elgb_step,
1136                                                 x_step_override_dt    => TRUNC(SYSDATE),
1137                                                 x_step_override_limit => l_step_override_limit,
1138                                                 x_mode                => 'R');
1139 
1140      l_rowid :=NULL;
1141 
1142      Igs_En_Elgb_Ovr_Uoo_Pkg.insert_row(x_rowid               => l_rowid,
1143                                                 x_elgb_ovr_step_uoo_id    => l_elgb_ovr_step_uoo_id,
1144                                                 x_elgb_ovr_step_id    => l_elgb_ovr_step_id,
1145                                                 x_unit_cd             => p_unit_cd,
1146                                                 x_version_number      => p_version_number,
1147                                                 x_uoo_id              => p_uoo_id,
1148                                                 x_step_override_limit => l_step_override_limit,
1149                                                 x_mode                => 'R');
1150 
1151     Fnd_Message.SET_NAME ('IGS','IGS_EN_CR_SUCCESS');
1152     Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' || Fnd_Message.GET);
1153     ELSE
1154     	OPEN cur_get_elgb_ovr_step_id;
1155 	FETCH cur_get_elgb_ovr_step_id INTO lr_cur_get_elgb_ovr_step_id;
1156 	CLOSE cur_get_elgb_ovr_step_id;
1157 
1158 	OPEN cur_check_override_uooid(lr_cur_get_elgb_ovr_step_id);
1159 	FETCH cur_check_override_uooid INTO lr_cur_check_override_uooid;
1160 
1161 	IF cur_check_override_uooid%NOTFOUND THEN
1162 		Igs_En_Elgb_Ovr_Uoo_Pkg.insert_row(x_rowid               => l_rowid,
1163 						x_elgb_ovr_step_uoo_id    => l_elgb_ovr_step_uoo_id,
1164                                                 x_elgb_ovr_step_id    => lr_cur_get_elgb_ovr_step_id,
1165                                                 x_unit_cd             => p_unit_cd,
1166                                                 x_version_number      => p_version_number,
1167                                                 x_uoo_id              => p_uoo_id,
1168                                                 x_step_override_limit => l_step_override_limit,
1169                                                 x_mode                => 'R');
1170 		Fnd_Message.SET_NAME ('IGS','IGS_EN_CR_SUCCESS');
1171 		Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' || Fnd_Message.GET);
1172 	ELSE
1173 		Fnd_Message.SET_NAME ('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
1174 		Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' || Fnd_Message.GET);
1175 	END IF;
1176 	CLOSE cur_check_override_uooid;
1177     END IF;
1178     EXCEPTION
1179          WHEN OTHERS THEN
1180 
1181            l_message := Fnd_Message.GET;
1182    	   IF l_message IS NOT NULL THEN
1183               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||l_message );
1184 	   ELSE
1185               Fnd_File.PUT_LINE(Fnd_File.LOG,'        ' || l_step_meaning || ' - ' ||SQLERRM );
1186 	   END IF;
1187     END;
1188     CLOSE cur_check_override;
1189 
1190   END enrp_chk_unit_over;
1191 
1192   --
1193   -- begin of PROCEDURE enrp_ins_step_over
1194   --
1195  BEGIN
1196 
1197    -- fetch the person number
1198 
1199    OPEN cur_pers_number(p_person_id);
1200    FETCH cur_pers_number INTO l_person_number;
1201    CLOSE cur_pers_number;
1202 
1203     Fnd_Message.SET_NAME ('IGS','IGS_PR_PERSON_ID');
1204    -- log the person number into log file for whom override records are going create
1205    Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET || ': ' || l_person_number );
1206 
1207 --
1208 -- for parameter set 1
1209   IF p_person_step_1 IS NOT NULL THEN
1210       enrp_chk_pers_over(p_person_step_1,p_is_teach_cal);
1211   END IF;
1212   IF p_program_step_1 IS NOT NULL THEN
1213          enrp_chk_prg_over(p_program_step_1,p_over_credit_point_1, p_is_teach_cal);
1214   END IF;
1215   IF p_unit_step_1 IS NOT NULL THEN
1216        enrp_chk_unit_over(p_unit_step_1,p_over_credit_point_1,RTRIM(SUBSTR(p_unit_cd_1,1,10)),
1217      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_1,12,3))),p_unit_section_1);
1218   END IF;
1219 
1220 --
1221 -- for parameter set 2
1222   IF p_person_step_2 IS NOT NULL THEN
1223      enrp_chk_pers_over(p_person_step_2,p_is_teach_cal);
1224   END IF;
1225   IF p_program_step_2 IS NOT NULL THEN
1226      enrp_chk_prg_over(p_program_step_2,p_over_credit_point_2, p_is_teach_cal);
1227   END IF;
1228   IF p_unit_step_2 IS NOT NULL THEN
1229      enrp_chk_unit_over(p_unit_step_2,p_over_credit_point_2,RTRIM(SUBSTR(p_unit_cd_2,1,10)),
1230      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_2,12,3))),p_unit_section_2);
1231   END IF;
1232 
1233 --
1234 -- for parameter set 3
1235   IF p_person_step_3 IS NOT NULL THEN
1236      enrp_chk_pers_over(p_person_step_3,p_is_teach_cal);
1237   END IF;
1238   IF p_program_step_3 IS NOT NULL THEN
1239      enrp_chk_prg_over(p_program_step_3,NULL,p_is_teach_cal);
1240   END IF;
1241   IF p_unit_step_3 IS NOT NULL THEN
1242      enrp_chk_unit_over(p_unit_step_3,NULL,RTRIM(SUBSTR(p_unit_cd_3,1,10)),
1243      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_3,12,3))),p_unit_section_3);
1244   END IF;
1245 
1246 --
1247 -- for parameter set 4
1248   IF p_person_step_4 IS NOT NULL THEN
1249      enrp_chk_pers_over(p_person_step_4,p_is_teach_cal);
1250   END IF;
1251   IF p_program_step_4 IS NOT NULL THEN
1252      enrp_chk_prg_over(p_program_step_4,NULL,p_is_teach_cal);
1253   END IF;
1254   IF p_unit_step_4 IS NOT NULL THEN
1255      enrp_chk_unit_over(p_unit_step_4,NULL,RTRIM(SUBSTR(p_unit_cd_4,1,10)),
1256      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_4,12,3))),p_unit_section_4);
1257   END IF;
1258 
1259 --
1260 -- for parameter set 5
1261   IF p_person_ovr_step_1 IS NOT NULL THEN
1262      enrp_chk_pers_over(p_person_ovr_step_1,FALSE);
1263   END IF;
1264   IF p_unit_ovr_step_1 IS NOT NULL THEN
1265      enrp_chk_unit_over(p_unit_ovr_step_1,p_over_credit_point_3,RTRIM(SUBSTR(p_unit_cd_ovr_1,1,10)),
1266      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_ovr_1,12,3))),p_unit_section_ovr_1);
1267   END IF;
1268 
1269 --
1270 -- for parameter set 6
1271   IF p_person_ovr_step_2 IS NOT NULL THEN
1272      enrp_chk_pers_over(p_person_ovr_step_2,FALSE);
1273   END IF;
1274 
1275   IF p_unit_ovr_step_2 IS NOT NULL THEN
1276      enrp_chk_unit_over(p_unit_ovr_step_2,p_over_credit_point_4,RTRIM(SUBSTR(p_unit_cd_ovr_2,1,10)),
1277      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_ovr_2,12,3))), p_unit_section_ovr_2);
1278   END IF;
1279 
1280 --
1281 -- for parameter set 7
1282   IF p_person_ovr_step_3 IS NOT NULL THEN
1283      enrp_chk_pers_over(p_person_ovr_step_3,FALSE);
1284   END IF;
1285 
1286   IF p_unit_ovr_step_3 IS NOT NULL THEN
1287      enrp_chk_unit_over(p_unit_ovr_step_3,NULL,RTRIM(SUBSTR(p_unit_cd_ovr_3,1,10)),
1288      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_ovr_3,12,3))),p_unit_section_ovr_3);
1289   END IF;
1290 
1291 --
1292 -- for parameter set 8
1293   IF p_person_ovr_step_4 IS NOT NULL THEN
1294      enrp_chk_pers_over(p_person_ovr_step_4,FALSE);
1295   END IF;
1296 
1297   IF p_unit_ovr_step_4 IS NOT NULL THEN
1298      enrp_chk_unit_over(p_unit_ovr_step_4,NULL,RTRIM(SUBSTR(p_unit_cd_ovr_4,1,10)),
1299      TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_ovr_4,12,3))),p_unit_section_ovr_4);
1300   END IF;
1301 
1302  END enrp_ins_step_over;
1303 
1304  --
1305  -- Begin of the procedure enrp_elgbl_override
1306  --
1307 BEGIN
1308 
1309 RETCODE :=0;
1310 igs_ge_gen_003.set_org_id(p_org_id);
1311 
1312 --
1313 -- get the details of calendar,program, Unit code and unit set code from the parameters
1314 --
1315  l_cal_type := RTRIM(SUBSTR(p_trm_teach_cal_type_comb,101,10));
1316  l_ci_seq_number := TO_NUMBER(RTRIM(SUBSTR(p_trm_teach_cal_type_comb,112,6)));
1317 
1318  IF p_program_cd_comb IS NOT NULL THEN
1319    l_course_cd := RTRIM(SUBSTR(p_program_cd_comb,1,6));
1320    l_course_version := TO_NUMBER(RTRIM(SUBSTR(p_program_cd_comb,8)));
1321  END IF;
1322 
1323  IF p_unit_cd_comb IS NOT NULL THEN
1324    l_unit_cd := RTRIM(SUBSTR(p_unit_cd_comb,1,10));
1325    l_unit_version :=TO_NUMBER(RTRIM(SUBSTR(p_unit_cd_comb,12)));
1326  END IF;
1327 
1328  IF p_unit_set_comb IS NOT NULL THEN
1329    l_unit_set_cd :=RTRIM(SUBSTR(p_unit_set_comb,1,10));
1330    l_unit_set_version :=TO_NUMBER(RTRIM(SUBSTR(p_unit_set_comb,12)));
1331  END IF;
1332  IF p_org_unit_cd IS NOT NULL THEN
1333    OPEN cur_org_unit_st_dt(p_org_unit_cd);
1334    FETCH cur_org_unit_st_dt INTO l_org_unit_start_dt ;
1335    CLOSE cur_org_unit_st_dt;
1336  END IF;
1337 --
1338 -- call the procedure below to log all the parameters passed to this function
1339  IF NOT enrp_log_para(l_message_name) THEN
1340     -- no steps passed in parameter to override
1341     Fnd_Message.SET_NAME ('IGS',l_message_name);
1342     Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET );
1343 
1344     retcode :=2;
1345     RETURN;
1346  END IF;
1347 
1348 --
1349 -- Validate parameters.
1350 -- all the parameters for the container procedure will be available to the inner function
1351 --
1352  IF NOT enrp_val_para(l_message_name) THEN
1353    -- validation failed log error message
1354     Fnd_Message.SET_NAME ('IGS',l_message_name);
1355     Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET );
1356 
1357         retcode :=2;
1358     RETURN;
1359  END IF;
1360  IF l_message_name IS NOT NULL THEN
1361     Fnd_Message.SET_NAME ('IGS',l_message_name);
1362     Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET );
1363 
1364  END IF;
1365 --
1366 -- loop through all the students who satisfied the cursor criteria
1367 -- and create the override records for the steps passed in parameters
1368 --
1369  OPEN cur_get_cal_cat(l_cal_type);
1370  FETCH cur_get_cal_cat INTO l_cal_cat;
1371  CLOSE cur_get_cal_cat;
1372 
1373  l_is_teach_cal := FALSE;
1374 
1375  IF l_cal_cat = 'LOAD' THEN
1376   l_load_cal_type := l_cal_type;
1377   l_load_cal_seq_num := l_ci_seq_number;
1378  ELSIF l_cal_cat = 'TEACHING' THEN
1379    l_is_teach_cal := TRUE;
1380    OPEN cur_load_cal(l_cal_type,l_ci_seq_number);
1381    FETCH cur_load_cal INTO l_load_cal_type,l_load_cal_seq_num;
1382    CLOSE cur_load_cal;
1383  ELSE
1384   l_load_cal_type := NULL;
1385   l_load_cal_seq_num := NULL;
1386  END IF;
1387 
1388 FOR cur_criteria_satisfied_rec IN cur_criteria_satisfied(l_course_cd ,l_course_version,l_unit_cd, l_unit_version,
1389                                                          l_unit_set_cd,l_unit_set_version, l_org_unit_start_dt,
1390                                                          l_load_cal_type,l_load_cal_seq_num ) LOOP
1391    --
1392    -- log the message that for the following persons override records have been created
1393 
1394    IF NOT l_record_found THEN
1395       l_record_found := TRUE;
1396       Fnd_Message.SET_NAME('IGS','IGS_EN_PERSONS_OVERRIDE');
1397       Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET );
1398 
1399    END IF;
1400 
1401   OPEN cur_elgb_over(cur_criteria_satisfied_rec.person_id,l_cal_type,l_ci_seq_number);
1402   FETCH cur_elgb_over INTO l_elgb_override_id;
1403 
1404   --
1405   -- if override record is not exists for the given student in given calendar(Load/Teach)
1406   IF cur_elgb_over%NOTFOUND THEN
1407     -- create override record for the given student in given calendar(Load/Teach)
1408     l_rowid :=NULL;
1409        Igs_En_Elgb_Ovr_Pkg.insert_row(x_rowid              => l_rowid,
1410                                    x_elgb_override_id   => l_elgb_override_id,
1411                                    x_person_id          => cur_criteria_satisfied_rec.person_id,
1412                                    x_cal_type           => l_cal_type,
1413                                    x_ci_sequence_number => l_ci_seq_number,
1414                                    x_mode               => 'R');
1415   END IF;
1416   CLOSE cur_elgb_over;
1417   --
1418   -- call the procedure to create override records correponding to the steps paased as parameters
1419   --
1420     enrp_ins_step_over(cur_criteria_satisfied_rec.person_id,l_cal_type,l_ci_seq_number,l_elgb_override_id,l_unit_cd,l_unit_version,l_is_teach_cal );
1421 
1422 END LOOP; -- cur_criteria_satisfied_rec
1423 
1424 --  l_record_found is initialised with False at declaration.When an override record doesn't exists then
1425 --  it retains same value and the below If condition evaluates to True and logs Message 'No Student was
1426 --  selected for the given criteria' in log file.
1427 
1428 IF NOT l_record_found THEN
1429   Fnd_Message.SET_NAME('IGS','IGS_EN_NO_STDNT_FOUND');
1430   Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Message.GET );
1431 END IF;
1432 
1433 EXCEPTION
1434         WHEN OTHERS THEN
1435 
1436           retcode:=2;
1437           Fnd_File.PUT_LINE(Fnd_File.LOG,SQLERRM);
1438 
1439 	  ERRBUF := Fnd_Message.GET_STRING('IGS','IGS_GE_UNHANDLED_EXCEPTION');
1440           IGS_GE_MSG_STACK.CONC_EXCEPTION_HNDL;
1441 
1442 END enrp_elgbl_override;
1443 
1444 END igs_en_elgbl_override;