1 PACKAGE BODY IGS_EN_GEN_003 AS
2 /* $Header: IGSEN03B.pls 120.5 2006/01/23 01:58:08 smaddali ship $ */
3 /* change history
4 rvangala 27-SEP-2005 Bug 4335046, modified UPD_MAT_MRADM_CAT_TERMS
5 pkpatel 26-MAR-2003 Bug 2261717
6 Tuned functions Enrp_Get_Encmbrd_Ind,
7 npalanis 11-SEP-2002 Bug - 2608360
8 the pe code classes for religion , soci eco status and further education
9 has been transferred to lookups so new columns are added in igs_pe_stat_details table
10 to store codes therefore the tbh calls is modified.
11 ssawhney 30-APR V2API OVN change, igs_pe_stat_pkg signature modified.
12
13 */
14
15 /*-------------------------------------------------------------------------------------------------------------
16 Following package variable keeps the enrp_get_enr_cat function parameters values.
17 -------------------------------------------------------------------------------------------------------------*/
18 pkg_person_id igs_pe_person.person_id%TYPE;
19 pkg_course_cd igs_en_stdnt_ps_att.course_cd%TYPE;
20 pkg_cal_type igs_ca_inst.cal_type%TYPE;
21 pkg_ci_sequence_number igs_ca_inst.sequence_number%TYPE;
22 pkg_session_enrolment_cat igs_as_sc_atmpt_enr.enrolment_cat%TYPE;
23 pkg_enrol_cal_type igs_ca_inst.cal_type%TYPE;
24 pkg_enrol_ci_sequence_number igs_ca_inst.sequence_number%TYPE;
25 pkg_commencement_type VARCHAR2(20);
26 pkg_enroll_catg VARCHAR2(200);
27 pkg_enr_categories VARCHAR2(200);
28 pkg_course_att_status igs_en_stdnt_ps_att.course_attempt_status%TYPE;
29 -------------------------------------------------------------------------------------------------------------
30
31 Function Enrp_Get_Dflt_Dr(
32 p_description OUT NOCOPY VARCHAR2 )
33 RETURN VARCHAR2 AS
34 BEGIN
35 DECLARE
36 v_dis_reason_cd IGS_EN_DCNT_REASONCD.discontinuation_reason_cd%TYPE;
37 v_description IGS_EN_DCNT_REASONCD.description%TYPE;
38
39 CURSOR c_drcd IS
40 SELECT discontinuation_reason_cd,
41 description
42 FROM IGS_EN_DCNT_REASONCD
43 WHERE dflt_ind = 'Y' AND
44 closed_ind = 'N';
45 BEGIN
46 -- This module retrieves the default discontinuation
47 -- reason code for a student IGS_PS_COURSE attempt if the
48 -- discontinuation date has been specified
49 OPEN c_drcd;
50 FETCH c_drcd INTO v_dis_reason_cd, v_description;
51 IF (c_drcd%FOUND) THEN
52 CLOSE c_drcd;
53 p_description := v_description;
54 RETURN v_dis_reason_cd;
55 ELSE
56 CLOSE c_drcd;
57 p_description := NULL;
58 RETURN NULL;
59 END IF;
60 EXCEPTION
61 WHEN OTHERS THEN
62 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
63 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.enrp_get_dflt_dr');
64 IGS_GE_MSG_STACK.ADD;
65 App_Exception.Raise_Exception;
66 END;
67 END enrp_get_dflt_dr;
68
69
70 Function Enrp_Get_Dflt_Fs(
71 p_course_cd IN VARCHAR2 ,
72 p_version_number IN NUMBER )
73 RETURN VARCHAR2 AS
74 BEGIN
75 DECLARE
76 CURSOR c_fund_source_rest(
77 cp_course_cd IGS_PS_VER.course_cd%TYPE,
78 cp_version_number IGS_PS_VER.version_number%TYPE) IS
79 SELECT funding_source
80 FROM IGS_FI_FND_SRC_RSTN
81 WHERE course_cd = cp_course_cd AND
82 version_number = cp_version_number AND
83 dflt_ind = 'Y';
84 BEGIN
85 -- gets the default funding source for a IGS_PS_COURSE version if one
86 -- has been specified
87 FOR v_fund_source_rest_rec IN c_fund_source_rest(
88 p_course_cd,
89 p_version_number)
90 LOOP
91 RETURN v_fund_source_rest_rec.funding_source;
92 END LOOP;
93 RETURN NULL;
94 EXCEPTION
95 WHEN OTHERS THEN
96 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
97 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.enrp_get_dflt_fs');
98 IGS_GE_MSG_STACK.ADD;
99 App_Exception.Raise_Exception;
100 END;
101 END enrp_get_dflt_fs;
102
103
104 Function Enrp_Get_Ecps_Group(
105 p_s_enrolment_step_type IN VARCHAR2 )
106 RETURN VARCHAR2 AS
107 v_step_group_type IGS_LOOKUPS_VIEW.LOOKUP_CODE%TYPE;
108 CURSOR c_sest (cp_s_enrolment_step_type
109 IGS_LOOKUPS_VIEW.LOOKUP_CODE%TYPE) IS
110 SELECT step_group_type
111 FROM IGS_LOOKUPS_VIEW
112 WHERE LOOKUP_CODE = cp_s_enrolment_step_type AND
113 LOOKUP_TYPE = 'ENROLMENT_STEP_TYPE';
114 BEGIN
115 v_step_group_type := NULL;
116 OPEN c_sest(p_s_enrolment_step_type);
117 FETCH c_sest INTO v_step_group_type;
118 CLOSE c_sest;
119 RETURN v_step_group_type;
120 END;
121
122
123 FUNCTION Enrp_Get_Encmbrd_Ind(
124 p_person_id IN NUMBER )
125 RETURN VARCHAR2 AS
126 /* change history
127 WHO WHEN WHAT
128 pkpatel 26-MAR-2003 Bug 2261717
129 Filter the query for efficiency. Removed the COUNT(*) and
130 replaced TRUNC(SYSDATE) with l_sysdate.
131 */
132
133 cst_yes CONSTANT VARCHAR2(1) := 'Y';
134 cst_no CONSTANT VARCHAR2(1) := 'N';
135 v_output VARCHAR2(1);
136 v_count NUMBER;
137 l_sysdate DATE := TRUNC(SYSDATE);
138 --(pathipat) Modified cursor for performance issues. Bug No: 2432563
139 -- Removed variables not used.
140
141 CURSOR c_prsn_encumb
142 (cp_person_id IGS_PE_PERSON.person_id%TYPE) IS
143 SELECT 1
144 FROM IGS_PE_PERS_ENCUMB
145 WHERE person_id = cp_person_id AND
146 (l_sysdate BETWEEN start_dt AND (expiry_dt - 1) OR
147 (expiry_dt IS NULL AND start_dt <= l_sysdate)) ;
148
149
150 BEGIN
151
152 -- This module determines whether or not a IGS_PE_PERSON is
153 -- an encumbranced student and returns the appropriate
154 -- indicator
155
156 -- (pathipat) 'For' loop replaced with the following code, Bug: 2432563
157 -- Conditions checked for in the loop have been done in the cursor itself
158
159 OPEN c_prsn_encumb (p_person_id);
160 FETCH c_prsn_encumb INTO v_count;
161 IF c_prsn_encumb%FOUND THEN
162 -- return Y - the student has encumbrances
163 CLOSE c_prsn_encumb;
164 v_output := cst_yes;
165 return v_output;
166 END IF;
167 CLOSE c_prsn_encumb;
168
169 -- return N - the student has no encumbrances
170 v_output := cst_no;
171 return v_output;
172
173 END enrp_get_encmbrd_ind;
174
175
176 Function Enrp_Get_Enr_Cat(
177 p_person_id IN NUMBER ,
178 p_course_cd IN VARCHAR2 ,
179 p_cal_type IN VARCHAR2 ,
180 p_ci_sequence_number IN NUMBER ,
181 p_session_enrolment_cat IN VARCHAR2 ,
182 p_enrol_cal_type OUT NOCOPY VARCHAR2 ,
183 p_enrol_ci_sequence_number OUT NOCOPY NUMBER ,
184 p_commencement_type OUT NOCOPY VARCHAR2,
185 p_enr_categories OUT NOCOPY VARCHAR2)
186 -------------------------------------------------------------------------------------------
187 -- This routine will determine the most appropriate enrolment category(ies) for
188 -- a nominated student (and optionally IGS_PS_COURSE attempt) for a nominated
189 -- academic period.
190 -- If the routine is being called for a specific IGS_PS_COURSE, it will also return
191 -- the enrolment period calendar instance in which the match was found
192 -- (this cannot be done when a IGS_PS_COURSE isn?t specified as there may be many
193 -- periods).
194 -- If a IGS_PS_COURSE attempt is not specified the routine may return multiple
195 -- enrolment categories,
196 -- where the student may be eligible in more than one IGS_PS_COURSE. These will be
197 -- returned in the form CATEGORY1,CATEGORY2,ETC?
198 -- The routine will determine the enrolment category(ies) by looking firstly
199 -- for one or more eligible IGS_PS_COURSE attempts (matching the specified
200 -- parameters); then pre-enrolment detail (IGS_AS_SC_ATMPT_ENR records)
201 -- will be searched for matching the specified academic period (i.e. the
202 -- enrolment calendar is a subordinate of the academic calendar).
203 -- If this is not found and the passed session enrolment category is set then
204 -- it will be used.
205 -- If not set, the fallback is to take the enrolment category from the latest
206 -- pre-enrolment detail for each eligible IGS_PS_COURSE.
207 -- It is possible that this routine will not find a match ,in that case find the enrolment category
208 -- at the program level as a part of bug#2043044 .IF stillnot found then return NULL
209 -- enrolment category.
210 -- The calling routine will be responsible for handling this.
211 --Change History:
212 --Who When What
213 --kkillams 06-06-2003 Added new validation, check the input parameter values with
214 -- newly created package level variables, if values are same then
215 -- return the vaules stored in the package variable else do the
216 -- validations. W.r.t. bug no.2829270
217 --ptandon 14-08-2003 Corrected logic to return concatenated string of Enrolment Categories
218 -- as OUT parameter(p_enr_categories) if the student is attempting
219 -- program under more than one Enrolment Category. Bug# 2968590
220 -------------------------------------------------------------------------------------------
221 RETURN VARCHAR2 AS
222 BEGIN
223 DECLARE
224 v_applicable_enrolment_cat VARCHAR2(255);
225 v_crs_applicable_enrolment_cat IGS_AS_SC_ATMPT_ENR.enrolment_cat%TYPE;
226 v_sub_cal_type IGS_CA_INST_REL.sub_cal_type%TYPE;
227 v_first_record BOOLEAN;
228 v_first_time BOOLEAN;
229 v_set_cal BOOLEAN;
230 v_crs_commencement_type VARCHAR2(10);
231 v_commencement_type VARCHAR2(10);
232 v_version_number IGS_EN_STDNT_PS_ATT.version_number%TYPE;
233 v_enrolment_cat IGS_PS_TYPE.enrolment_cat%TYPE;
234 l_position NUMBER;
235 v_course_att_status IGS_EN_STDNT_PS_ATT.course_attempt_status%TYPE;
236
237 CURSOR c_sca(
238 cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE,
239 cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE) IS
240 SELECT person_id,
241 course_cd,
242 version_number,
243 course_attempt_status,
244 student_confirmed_ind
245 FROM IGS_EN_STDNT_PS_ATT
246 WHERE ((cp_course_cd IS NULL AND person_id = cp_person_id) OR
247 (cp_course_cd IS NOT NULL AND course_cd = cp_course_cd AND
248 person_id = cp_person_id));
249 CURSOR c_scae_ci(
250 cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE,
251 cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE) IS
252 SELECT IGS_AS_SC_ATMPT_ENR.enrolment_cat,
253 IGS_AS_SC_ATMPT_ENR.cal_type,
254 IGS_AS_SC_ATMPT_ENR.ci_sequence_number,
255 IGS_CA_INST.start_dt,
256 IGS_CA_INST.end_dt
257 FROM IGS_AS_SC_ATMPT_ENR,
258 IGS_CA_INST
259 WHERE IGS_AS_SC_ATMPT_ENR.person_id = cp_person_id AND
260 IGS_AS_SC_ATMPT_ENR.course_cd = cp_course_cd AND
261 IGS_AS_SC_ATMPT_ENR.cal_type = IGS_CA_INST.cal_type AND
262 IGS_AS_SC_ATMPT_ENR.ci_sequence_number = IGS_CA_INST.sequence_number
263 ORDER BY IGS_CA_INST.start_dt desc;
264 CURSOR c_cir(
265 cp_sup_cal_type IGS_CA_INST.cal_type%TYPE,
266 cp_sup_ci_sequence_number IGS_CA_INST.sequence_number%TYPE,
267 cp_sub_cal_type IGS_CA_INST.cal_type%TYPE,
268 cp_sub_ci_sequence_number IGS_CA_INST.sequence_number%TYPE) IS
269 SELECT sub_cal_type
270 FROM IGS_CA_INST_REL
271 WHERE sup_cal_type = cp_sup_cal_type AND
272 sup_ci_sequence_number = cp_sup_ci_sequence_number AND
273 sub_cal_type = cp_sub_cal_type AND
274 sub_ci_sequence_number = cp_sub_ci_sequence_number;
275
276 --To get the enrollment category at the program level if the enrollment category is NULL
277 -- as a part of self service setup DLD build enh bug#2043044
278 CURSOR c_pst(
279 cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE,
280 cp_version_number IGS_EN_STDNT_PS_ATT.version_number%TYPE) IS
281 SELECT ENROLMENT_CAT
282 FROM IGS_PS_TYPE pt,
283 IGS_PS_VER pv
284 WHERE pv.course_cd = p_course_cd AND
285 pv.course_type = pt.course_type AND
286 pv.version_number = cp_version_number ;
287
288 CURSOR c_scas( cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE,
289 cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE) IS
290 SELECT course_attempt_status
291 FROM IGS_EN_STDNT_PS_ATT
295 BEGIN
292 WHERE PERSON_ID = cp_person_id
293 AND COURSE_CD = cp_course_cd;
294
296 OPEN c_scas(p_person_id, p_course_cd);
297 FETCH c_scas INTO v_course_att_status;
298 CLOSE c_scas;
299
300 IF ((pkg_person_id = p_person_id) AND
301 (pkg_course_cd = p_course_cd) AND
302 (pkg_cal_type = p_cal_type ) AND
303 (pkg_course_att_status = v_course_att_status ) AND
304 (pkg_ci_sequence_number = p_ci_sequence_number) AND
305 ((pkg_session_enrolment_cat = p_session_enrolment_cat) OR
306 (p_session_enrolment_cat IS NULL AND pkg_session_enrolment_cat IS NULL))) THEN
307 p_enrol_cal_type := pkg_enrol_cal_type;
308 p_enrol_ci_sequence_number := pkg_enrol_ci_sequence_number;
309 p_commencement_type := pkg_commencement_type;
310 p_enr_categories := pkg_enr_categories;
311 RETURN pkg_enroll_catg;
312 ELSE
313 pkg_enrol_cal_type := NULL;
314 pkg_enrol_ci_sequence_number := NULL;
315 pkg_commencement_type := NULL;
316 pkg_enroll_catg := NULL;
317 pkg_enr_categories := NULL;
318 pkg_person_id := p_person_id;
319 pkg_course_cd := p_course_cd;
320 pkg_cal_type := p_cal_type;
321 pkg_ci_sequence_number := p_ci_sequence_number;
322 pkg_session_enrolment_cat := p_session_enrolment_cat;
323 pkg_course_att_status := v_course_att_status;
324 END IF;
325
326 p_enrol_cal_type := NULL;
327 p_enrol_ci_sequence_number := NULL;
328 p_commencement_type := NULL;
329 v_commencement_type := NULL;
330 v_applicable_enrolment_cat := NULL;
331 v_first_time := TRUE;
332 FOR v_sca_rec IN c_sca(
333 p_person_id,
334 p_course_cd)
335 LOOP
336 -- Call routine to obtain IGS_PS_COURSE commencement_type
337 IF IGS_EN_GEN_006.ENRP_GET_SCA_COMM(v_sca_rec.person_id,
338 v_sca_rec.course_cd,
339 v_sca_rec.student_confirmed_ind,
340 SYSDATE) THEN
341 IF v_commencement_type IS NULL THEN
342 v_commencement_type := 'NEW';
343 ELSIF v_commencement_type = 'RETURN' THEN
344 v_commencement_type := 'BOTH';
345 END IF;
346 ELSE
347 IF v_commencement_type IS NULL THEN
348 v_commencement_type := 'RETURN';
349 ELSIF v_commencement_type = 'NEW' THEN
350 v_commencement_type := 'BOTH';
351 END IF;
352 END IF;
353 --To get the version number as a part of bug 2043044
354 v_version_number := v_sca_rec.version_number;
355
356 v_crs_applicable_enrolment_cat := NULL;
357 v_first_record := TRUE;
358 v_set_cal := TRUE;
359 FOR v_scae_ci_rec IN c_scae_ci(
360 v_sca_rec.person_id,
361 v_sca_rec.course_cd)
362 LOOP
363 IF(v_first_record AND p_session_enrolment_cat IS NULL) THEN
364 v_crs_applicable_enrolment_cat := v_scae_ci_rec.enrolment_cat;
365 IF(p_course_cd IS NOT NULL) THEN
366 p_enrol_cal_type := v_scae_ci_rec.cal_type;
367 p_enrol_ci_sequence_number := v_scae_ci_rec.ci_sequence_number;
368 END IF;
369 END IF;
370 v_first_record := FALSE;
371 OPEN c_cir(
372 p_cal_type,
373 p_ci_sequence_number,
374 v_scae_ci_rec.cal_type,
375 v_scae_ci_rec.ci_sequence_number);
376 FETCH c_cir INTO v_sub_cal_type;
377 IF (c_cir%FOUND) THEN
378 v_crs_applicable_enrolment_cat := v_scae_ci_rec.enrolment_cat;
379 IF(p_course_cd IS NOT NULL and v_set_cal) THEN
380 p_enrol_cal_type := v_scae_ci_rec.cal_type;
381 p_enrol_ci_sequence_number := v_scae_ci_rec.ci_sequence_number;
382 END IF;
383 CLOSE c_cir;
384 v_set_cal := FALSE;
385 END IF;
386 IF(c_cir%ISOPEN) THEN
387 CLOSE c_cir;
388 END IF;
389 IF(v_crs_applicable_enrolment_cat IS NULL AND
390 p_session_enrolment_cat IS NOT NULL) THEN
391 v_crs_applicable_enrolment_cat := p_session_enrolment_cat;
392 END IF;
393 IF(v_crs_applicable_enrolment_cat IS NOT NULL AND v_first_time) THEN
394 v_first_time := FALSE;
398 (INSTR(v_applicable_enrolment_cat, v_crs_applicable_enrolment_cat) = 0))
395 v_applicable_enrolment_cat := v_applicable_enrolment_cat||
396 v_crs_applicable_enrolment_cat;
397 ELSIF((v_crs_applicable_enrolment_cat IS NOT NULL) AND (NOT v_first_time) AND
399 THEN
400 v_applicable_enrolment_cat := v_applicable_enrolment_cat||','||
401 v_crs_applicable_enrolment_cat;
402 END IF;
403 END LOOP;
404 END LOOP;
405 IF v_applicable_enrolment_cat IS NULL AND
406 p_session_enrolment_cat IS NOT NULL THEN
407 v_applicable_enrolment_cat := p_session_enrolment_cat;
408 END IF;
409 -- If commencement type cannot be determined the default to BOTH.
410 IF v_commencement_type IS NOT NULL THEN
411 p_commencement_type := v_commencement_type;
412 ELSE
413 p_commencement_type := 'BOTH';
414 END IF;
415 --if value of v_applicable_enrolment_cat is NULL then fetch enrolment category at the program level as a part of self service setup dld
416 -- enh number #2043044
417
418 IF v_applicable_enrolment_cat IS NULL THEN
419 OPEN c_pst(p_course_cd, v_version_number );
420 FETCH c_pst into v_applicable_enrolment_cat;
421 CLOSE c_pst;
422 END IF;
423
424 pkg_enrol_cal_type := p_enrol_cal_type;
425 pkg_enrol_ci_sequence_number := p_enrol_ci_sequence_number;
426 pkg_commencement_type := p_commencement_type;
427 pkg_enroll_catg := v_applicable_enrolment_cat;
428 pkg_enr_categories := v_applicable_enrolment_cat;
429
430 p_enr_categories := v_applicable_enrolment_cat;
431 l_position := INSTR(v_applicable_enrolment_cat,',');
432 IF l_position <> 0 THEN
433 pkg_enroll_catg := SUBSTR(v_applicable_enrolment_cat,1,l_position-1);
434 RETURN pkg_enroll_catg;
435 END IF;
436 return v_applicable_enrolment_cat;
437 EXCEPTION
438 WHEN OTHERS THEN
439 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
440 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.Enrp_Get_Enr_Cat');
441 IGS_GE_MSG_STACK.ADD;
442 App_Exception.Raise_Exception;
443 END;
444 END Enrp_Get_Enr_Cat;
445
446
447 Function Enrp_Get_Enr_Ci(
448 p_adm_cal_type IN VARCHAR2 ,
449 p_adm_sequence_number IN NUMBER ,
450 p_enr_cal_type OUT NOCOPY VARCHAR2 ,
451 p_enr_sequence_number OUT NOCOPY NUMBER )
452 RETURN boolean AS
453
454 BEGIN -- enrp_get_enr_ci
455 -- Get the enrolment period which applies to an admission period.
456 -- This is picked up through the relationship between the admission
457 -- and enrolment period, with the enrolment period being the
458 -- subordinate in the relationship.
459 -- If no relationship can be found, the routine will return FALSE.
460 -- If multiple records found, the first period is used (this isn?t
461 -- really a valid scenario)
462 DECLARE
463 cst_active CONSTANT VARCHAR2(10) := 'ACTIVE';
464 cst_enrolment CONSTANT VARCHAR2(10) := 'ENROLMENT';
465 CURSOR c_cir IS
466 SELECT cir.sub_cal_type,
467 cir.sub_ci_sequence_number
468 FROM IGS_CA_INST_REL cir,
469 IGS_CA_INST ci,
470 IGS_CA_TYPE cat,
471 IGS_CA_STAT cs
472 WHERE cir.sup_cal_type = p_adm_cal_type AND
473 cir.sup_ci_sequence_number = p_adm_sequence_number AND
474 ci.cal_type = cir.sub_cal_type AND
475 ci.sequence_number = cir.sub_ci_sequence_number AND
476 cat.cal_type = ci.cal_type AND
477 cat.S_CAL_CAT = cst_enrolment AND
478 cs.cal_status = ci.cal_status AND
479 cs.s_cal_status = cst_active
480 ORDER BY ci.start_dt;
481 v_cir_rec c_cir%ROWTYPE;
482 BEGIN
483 OPEN c_cir;
484 FETCH c_cir INTO v_cir_rec;
485 IF c_cir%NOTFOUND THEN
486 CLOSE c_cir;
487 p_enr_cal_type := NULL;
488 p_enr_sequence_number := NULL;
489 RETURN FALSE;
490 END IF;
491 CLOSE c_cir;
492 p_enr_cal_type := v_cir_rec.sub_cal_type;
493 p_enr_sequence_number := v_cir_rec.sub_ci_sequence_number;
494 RETURN TRUE;
495 EXCEPTION
496 WHEN OTHERS THEN
497 IF c_cir%ISOPEN THEN
498 CLOSE c_cir;
499 END IF;
500 RAISE;
501 END;
502 EXCEPTION
503 WHEN OTHERS THEN
504 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
505 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.enrp_get_enr_ci');
506 IGS_GE_MSG_STACK.ADD;
507 App_Exception.Raise_Exception;
511 Procedure Enrp_Get_Enr_Pp(
508 END enrp_get_enr_ci;
509
510
512 p_username IN VARCHAR2 ,
513 p_cal_type OUT NOCOPY VARCHAR2 ,
514 p_sequence_number OUT NOCOPY NUMBER ,
515 p_enrolment_cat OUT NOCOPY VARCHAR2 ,
516 p_enr_method_type OUT NOCOPY VARCHAR2 )
517 AS
518 BEGIN
519 DECLARE
520 v_person_id IGS_PE_PERSON.person_id%TYPE;
521 v_person_prefs_rec IGS_PE_PERS_PREFS%ROWTYPE;
522 CURSOR c_person(
523 cp_username IGS_PE_PERSON.oracle_username%TYPE) IS
524 SELECT person_id
525 FROM IGS_PE_PERSON
526 WHERE oracle_username = cp_username;
527 CURSOR c_person_prefs(
528 cp_person_id IGS_PE_PERSON.person_id%TYPE) IS
529 SELECT *
530 FROM IGS_PE_PERS_PREFS
531 WHERE person_id = cp_person_id;
532 BEGIN
533 -- this module gets the enrolment values for a IGS_PE_PERSON's preference
534 -- table
535
536 -- commented after ORACLE_USERNAME issue...
537 -- added after ORACLE_USERNAME issue...
538 v_person_id := FND_GLOBAL.USER_ID;
539
540 OPEN c_person_prefs(
541 v_person_id);
542 FETCH c_person_prefs INTO v_person_prefs_rec;
543
544 IF (c_person_prefs%NOTFOUND) THEN
545 CLOSE c_person_prefs;
546 p_cal_type := NULL;
547 p_sequence_number := NULL;
548 p_enrolment_cat := NULL;
549 p_enr_method_type := NULL;
550 ELSE
551 CLOSE c_person_prefs;
552 p_cal_type := v_person_prefs_rec.enr_acad_cal_type;
553 p_sequence_number := v_person_prefs_rec.enr_acad_sequence_number;
554 p_enrolment_cat := v_person_prefs_rec.enr_enrolment_cat;
555 p_enr_method_type := v_person_prefs_rec.enr_enr_method_type;
556 END IF;
557 RETURN;
558 EXCEPTION
559 WHEN OTHERS THEN
560 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
561 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.enrp_get_enr_pp');
562 IGS_GE_MSG_STACK.ADD;
563 App_Exception.Raise_Exception;
564 END;
565 END enrp_get_enr_pp;
566
567
568 Function Enrp_Get_Excld_Unit(
569 p_person_id IN NUMBER ,
570 p_course_cd IN VARCHAR2 ,
571 p_effective_dt IN DATE )
572 RETURN VARCHAR2 AS
573
574 BEGIN
575 DECLARE
576 v_pue_start_dt IGS_PE_PERS_UNT_EXCL.pue_start_dt%TYPE;
577 v_expiry_dt IGS_PE_PERS_UNT_EXCL.expiry_dt%TYPE;
578 v_message_name varchar2(30);
579 CURSOR c_psd_ed IS
580 SELECT pue.pue_start_dt,
581 pue.expiry_dt
582 FROM IGS_PE_PERSENC_EFFCT pee,
583 IGS_PE_PERS_UNT_EXCL pue
584 WHERE pee.person_id = p_person_id AND
585 pee.s_encmb_effect_type = 'EXC_CRS_U' AND
586 pee.course_cd = p_course_cd AND
587 pue.person_id = pee.person_id AND
588 pue.encumbrance_type = pee.encumbrance_type AND
589 pue.pen_start_dt = pee.pen_start_dt AND
590 pue.s_encmb_effect_type = pee.s_encmb_effect_type AND
591 pue.pee_start_dt = pee.pee_start_dt AND
592 pue.pee_sequence_number = pee.sequence_number;
593 BEGIN
594 -- This function validates whether or not a IGS_PE_PERSON is
595 -- excluded from admission or enrolment in a specific IGS_PS_UNIT.
596 -- Validate the input parameters
597 IF p_person_id IS NULL OR
598 p_course_cd IS NULL OR
599 p_effective_dt IS NULL THEN
600 RETURN 'N';
601 END IF;
602 --Validate for an exclusion from the university
603 IF IGS_EN_VAL_ENCMB.enrp_val_excld_prsn(
604 p_person_id,
605 p_course_cd,
606 p_effective_dt,
607 v_message_name) = FALSE THEN
608 RETURN 'Y';
609 END IF;
610 --Validate for an exclusion from a specific IGS_PS_UNIT.
611 OPEN c_psd_ed;
612 LOOP
613 FETCH c_psd_ed INTO v_pue_start_dt,
614 v_expiry_dt;
615 EXIT WHEN c_psd_ed%NOTFOUND;
616 --Validate if the dates of a returned record overlap with the effective date.
617 IF v_expiry_dt IS NULL THEN
618 IF v_pue_start_dt <= p_effective_dt THEN
619 CLOSE c_psd_ed;
620 RETURN 'Y';
621 END IF;
622 ELSE
623 IF p_effective_dt BETWEEN v_pue_start_dt AND (v_expiry_dt - 1) THEN
624 CLOSE c_psd_ed;
625 RETURN 'Y';
626 END IF;
627 END IF;
628 END LOOP;
629 CLOSE c_psd_ed;
630 --- Return the default value
631 RETURN 'N';
635 Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
632 END;
633 EXCEPTION
634 WHEN OTHERS THEN
636 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.enrp_get_excld_unit');
637 IGS_GE_MSG_STACK.ADD;
638 App_Exception.Raise_Exception;
639 END enrp_get_excld_unit;
640
641 Function Get_Student_Ind(
642 p_person_id IN NUMBER )
643 RETURN VARCHAR2 AS
644
645 -- Cursor modified for the bug# 1956253
646 CURSOR pe_typ_cd IS
647 SELECT DISTINCT pti.person_type_code
648 FROM igs_pe_typ_instances_all pti,
649 igs_pe_person_types ppt
650 WHERE person_id = p_person_id AND
651 ppt.system_type = 'STUDENT' AND
652 ppt.person_type_code = pti.person_type_code AND
653 SYSDATE BETWEEN start_date and NVL(end_date,igs_ge_date.igsdate('9999/01/01'));
654
655 lv_pe_typ_cd pe_typ_cd%RowType;
656
657 BEGIN
658 open pe_typ_cd;
659 FETCH pe_typ_cd INTO lv_pe_typ_cd;
660 IF (pe_typ_cd%FOUND) THEN
661 CLOSE pe_typ_cd;
662 RETURN('Y');
663 ELSE
664 CLOSE pe_typ_cd;
665 RETURN('N');
666 END IF;
667
668 END Get_Student_Ind;
669
670
671 Function Get_Staff_Ind(
672 p_person_id IN NUMBER )
673 RETURN VARCHAR2 AS
674
675 -- Removed select from igs_pe_person_v (pathipat) Bug:2432563
676
677 CURSOR pe_typ_cd IS
678 SELECT pti.person_type_code
679 FROM igs_pe_typ_instances pti
680 WHERE pti.person_id = p_person_id
681 AND pti.system_type = 'STAFF'
682 AND SYSDATE BETWEEN pti.start_date AND NVL(pti.end_date,SYSDATE);
683
684 lv_pe_typ_cd pe_typ_cd%RowType;
685
686 BEGIN
687
688 open pe_typ_cd;
689 FETCH pe_typ_cd INTO lv_pe_typ_cd;
690 IF (pe_typ_cd%FOUND) THEN
691 CLOSE pe_typ_cd;
692 RETURN('Y');
693 ELSE
694 CLOSE pe_typ_cd;
695 RETURN('N');
696 END IF;
697 END Get_Staff_Ind;
698
699 FUNCTION Stdnt_Crs_Atmpt_Stat (perid NUMBER)
700 RETURN VARCHAR2 AS
701
702 CURSOR stu_period_c IS
703 SELECT COURSE_ATTEMPT_STATUS
704 FROM IGS_EN_STDNT_PS_ATT
705 WHERE PERSON_ID=perid;
706
707 BEGIN
708 FOR person_cursor IN stu_period_c LOOP
709 IF person_cursor.COURSE_ATTEMPT_STATUS='ENROLLED' THEN
710 RETURN ('Y');
711 ELSE
712 RETURN ('N');
713 END IF;
714 END LOOP;
715 return('N');
716 EXCEPTION WHEN OTHERS THEN
717 Return('N');
718 END Stdnt_Crs_Atmpt_Stat;
719 --Procedure added as a part of self service setup DLD to set values of matriculation term,
720 --recent admittance term and catalog terms based on the profile values setup for the passed person
721 --as a part of enh bug 2043044
722
723 --Removed columns from igs_pe_stat_details_pkg call as a part of bug number 2203778
724
725 PROCEDURE UPD_MAT_MRADM_CAT_TERMS(
726 p_person_id IN NUMBER,
727 p_program_cd IN VARCHAR2,
728 p_unit_attempt_status IN VARCHAR2,
729 p_teach_cal_type IN VARCHAR2,
730 p_teach_ci_seq_num IN NUMBER)
731
732 /*
733 || change history
734 || WHO WHEN WHAT
735 || ssawhney 30-APR V2API OVN change, igs_pe_stat_pkg signature modified.
736 */
737 IS
738 --Added attribute columns in IGS_PE_DETAILS TBH call as a part of descritpive flexfield added as a part of bug nu:2203778
739 lv_profile_matr_cd VARCHAR2(300) := FND_PROFILE.VALUE('IGS_PE_MATR_TERM');
740 lv_profile_cat_cd VARCHAR2(300) := FND_PROFILE.VALUE('IGS_PE_CATALOG');
741 lv_profile_mr_admit_cd VARCHAR2(300) := FND_PROFILE.VALUE('IGS_PE_RECENT_TERM');
742 lv_cal_term VARCHAR2(10) := 'FALSE';
743 XXX_ROWID VARCHAR2(25);
744 lv_rowid VARCHAR2(25);
745
746 v_return_status Varchar2(1) :='S';
747 v_msg_count NUMBER;
748 v_msg_Data VARCHAR2(2000);
749 v_party_last_update_date DATE;
750 lv_perosn_profile_id hz_person_profiles.person_profile_id%TYPE ;
751 l_ovn hz_parties.object_version_number%TYPE;
752
753
754
755
756 CURSOR c_espa(cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE,
757 cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE) IS
758 Select version_number
759 FROM IGS_EN_STDNT_PS_ATT
760 WHERE course_cd = cp_course_cd AND
761 person_id = cp_person_id;
762 lv_version_number IGS_EN_STDNT_PS_ATT.version_number%TYPE;
763 CURSOR c_pst(cp_course_cd IGS_PS_VER.course_cd%TYPE,
764 cp_version_number IGS_PS_VER.version_number%TYPE) IS
765 Select award_course_ind
766 FROM IGS_PS_TYPE pt,
767 IGS_PS_VER pv
768 WHERE pv.course_type = pt.course_type AND
769 pv.course_cd = cp_course_cd AND
770 pv.version_number = cp_version_number ;
771 lv_award_course_ind IGS_PS_TYPE.award_course_ind%TYPE;
772 CURSOR c_cttl(cp_teach_cal_type IGS_CA_TEACH_TO_LOAD_V.teach_cal_type%TYPE,
773 cp_teach_ci_seq_num IGS_CA_TEACH_TO_LOAD_V.teach_ci_sequence_number%TYPE) IS
774 Select load_cal_type,
775 load_ci_sequence_number
776 FROM IGS_CA_TEACH_TO_LOAD_V
780 lv_cttl_rec c_cttl%ROWTYPE;
777 WHERE teach_cal_type = cp_teach_cal_type AND
778 teach_ci_sequence_number = cp_teach_ci_seq_num
779 ORDER BY load_start_dt desc ;
781 CURSOR c_apai(cp_course_cd IGS_EN_STDNT_PS_ATT.course_cd%TYPE,
782 cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE) IS
783 SELECT count(ai.person_id) cnt
784 FROM IGS_AD_PS_APPL_INST ai,
785 IGS_AD_OFR_RESP_STAT ar
786 WHERE ai.adm_offer_resp_status = ar.adm_offer_resp_status AND
787 ar.s_adm_offer_resp_status = 'ACCEPTED' AND
788 ai.person_id = cp_person_id AND
789 ai.course_cd = cp_course_cd ;
790 lv_apai_rec c_apai%ROWTYPE;
791 --Cursor to get the row values for updating roe values
792 CURSOR c_psd(cp_person_id IGS_EN_STDNT_PS_ATT.person_id%TYPE) IS
793 SELECT rowid,
794 person_id,
795 effective_start_date,
796 effective_end_date,
797 religion_cd,
798 socio_eco_cd,
799 next_to_kin,
800 in_state_tuition,
801 tuition_st_date,
802 tuition_end_date,
803 further_education_cd,
804 MATR_CAL_TYPE,
805 MATR_SEQUENCE_NUMBER ,
806 INIT_CAL_TYPE ,
807 INIT_SEQUENCE_NUMBER ,
808 RECENT_CAL_TYPE ,
809 RECENT_SEQUENCE_NUMBER ,
810 CATALOG_CAL_TYPE ,
811 CATALOG_SEQUENCE_NUMBER ,
812 ATTRIBUTE_CATEGORY,
813 ATTRIBUTE1,
814 ATTRIBUTE2,
815 ATTRIBUTE3,
816 ATTRIBUTE4,
817 ATTRIBUTE5,
818 ATTRIBUTE6,
819 ATTRIBUTE7,
820 ATTRIBUTE8,
821 ATTRIBUTE9,
822 ATTRIBUTE10,
823 ATTRIBUTE11,
824 ATTRIBUTE12,
825 ATTRIBUTE13,
826 ATTRIBUTE14,
827 ATTRIBUTE15,
828 ATTRIBUTE16,
829 ATTRIBUTE17,
830 ATTRIBUTE18,
831 ATTRIBUTE19,
832 ATTRIBUTE20
833 FROM IGS_PE_STAT_DETAILS
834 WHERE person_id = cp_person_id;
835 lv_psd_rec c_psd%ROWTYPE;
836
837
838
839
840 BEGIN
841 --If for the person corresponding record does not exist in IGS_PE_STAT_DETAILS table then create a record in IGS_PE_STAT_DETAILS table
842 OPEN c_psd(p_person_id);
843 Fetch c_psd INTO lv_psd_rec;
844 IF c_psd%FOUND then
845 CLOSE c_psd;
846 ELSE
847 Igs_Pe_Stat_Details_Pkg.Insert_Row (
848 x_rowid => lv_rowid,
849 x_person_id => p_person_id,
850 x_effective_start_date => SYSDATE,
851 x_effective_end_date => NULL,
852 x_religion_cd => NULL,
853 x_socio_eco_cd => NULL,
854 x_next_to_kin => NULL,
855 x_in_state_tuition => 'N',
856 x_tuition_st_date => NULL,
857 x_tuition_end_date => NULL,
858 x_further_education_cd => NULL,
859 X_MATR_CAL_TYPE => NULL,
860 X_MATR_SEQUENCE_NUMBER => NULL,
861 X_INIT_CAL_TYPE => NULL,
862 X_INIT_SEQUENCE_NUMBER => NULL,
863 X_RECENT_CAL_TYPE => NULL,
864 X_RECENT_SEQUENCE_NUMBER => NULL,
865 X_CATALOG_CAL_TYPE => NULL,
866 X_CATALOG_SEQUENCE_NUMBER => NULL,
867 X_MODE => 'R',
868 X_ATTRIBUTE_CATEGORY => NULL,
869 X_ATTRIBUTE1 => NULL,
870 X_ATTRIBUTE2 => NULL,
871 X_ATTRIBUTE3 => NULL,
872 X_ATTRIBUTE4 => NULL,
873 X_ATTRIBUTE5 => NULL,
874 X_ATTRIBUTE6 => NULL,
875 X_ATTRIBUTE7 => NULL,
876 x_ATTRIBUTE8 => NULL,
877 X_ATTRIBUTE9 => NULL,
878 X_ATTRIBUTE10 => NULL,
879 X_ATTRIBUTE11 => NULL,
880 X_ATTRIBUTE12 => NULL,
881 X_ATTRIBUTE13 => NULL,
882 X_ATTRIBUTE14 => NULL,
883 X_ATTRIBUTE15 => NULL,
884 X_ATTRIBUTE16 => NULL,
885 X_ATTRIBUTE17 => NULL,
889
886 X_ATTRIBUTE18 => NULL,
887 X_ATTRIBUTE19 => NULL,
888 X_ATTRIBUTE20 => NULL );
890
891
892 CLOSE c_psd;
893 END IF;
894
895
896 lv_cal_term := 'FALSE';
897 OPEN c_psd(p_person_id);
898 FETCH c_psd into lv_psd_rec;
899 --Check the value of matriculation fields,if nULL then proceed to populate them by the given logic
900 IF lv_psd_rec.MATR_CAL_TYPE IS NULL OR lv_psd_rec.MATR_SEQUENCE_NUMBER IS NULL THEN
901 CLOSE c_psd;
902 --derive the matriculation term based on the following logic if unit_attempt_status is ENROLLED
903 IF p_unit_attempt_status = 'ENROLLED' then
904
905 --derive the matriculation term based on the following logic if matriculation term profile value is NON GENERIC
906 IF lv_profile_matr_cd = 'NON_GENERIC' THEN
907
908 OPEN c_espa(p_program_cd,p_person_id);
909 FETCH c_espa INTO lv_version_number ;
910
911 --Check if the program code passed is a non-generic program by checking value of award_course_ind
912 OPEN c_pst(p_program_cd,lv_version_number);
913 FETCH c_pst INTO lv_award_course_ind;
914
915 IF lv_award_course_ind = 'Y' THEN
916 lv_cal_term := 'TRUE' ;
917 ELSE
918 lv_cal_term := 'FALSE' ;
919 END IF;
920 CLOSE c_pst;
921 CLOSE c_espa;
922 --derive the matriculation term based on the following logic if matriculation term profile value is Non Generic and Generic
923
924 ELSIF lv_profile_matr_cd = 'ALL' THEN
925 lv_cal_term := 'TRUE' ;
926 END IF;
927
928 IF lv_cal_term = 'TRUE' THEN
929 OPEN c_cttl(p_teach_cal_type,p_teach_ci_seq_num);
930 FETCH c_cttl into lv_cttl_rec ;
931 OPEN c_psd(p_person_id);
932 FETCH c_psd into lv_psd_rec;
933 IF lv_profile_cat_cd = 'MATRICULATION' THEN
934 --If matriculation term is present and catalog profile option is MATRICULATION TERM then
935 --update the catalog fields of the IGS_PE_STAT_DETAILS with the values fetched above beside updating the matricualtion fields also
936
937
938 Igs_Pe_Stat_Details_Pkg.update_row (
939 x_rowid => lv_psd_rec.rowid,
940 x_person_id => lv_psd_rec.person_id ,
941 x_effective_start_date => lv_psd_rec.effective_start_date,
942 x_effective_end_date => lv_psd_rec.effective_end_date,
943 x_religion_cd => lv_psd_rec.religion_cd,
944 x_socio_eco_cd => lv_psd_rec.socio_eco_cd,
945 x_next_to_kin => lv_psd_rec.next_to_kin,
946 x_in_state_tuition => lv_psd_rec.in_state_tuition,
947 x_tuition_st_date => lv_psd_rec.tuition_st_date,
948 x_tuition_end_date => lv_psd_rec.tuition_end_date,
949 x_further_education_cd => lv_psd_rec.further_education_cd,
950 X_MATR_CAL_TYPE => lv_cttl_rec.load_cal_type,
951 X_MATR_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
952 X_INIT_CAL_TYPE => lv_psd_rec.INIT_CAL_TYPE,
953 X_INIT_SEQUENCE_NUMBER => lv_psd_rec.INIT_SEQUENCE_NUMBER,
954 X_RECENT_CAL_TYPE => lv_psd_rec.RECENT_CAL_TYPE,
955 X_RECENT_SEQUENCE_NUMBER => lv_psd_rec.RECENT_SEQUENCE_NUMBER ,
956 X_CATALOG_CAL_TYPE => lv_cttl_rec.load_cal_type ,
957 X_CATALOG_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
958 X_MODE => 'R' ,
959 X_ATTRIBUTE_CATEGORY => lv_psd_rec.ATTRIBUTE_CATEGORY,
960 X_ATTRIBUTE1 => lv_psd_rec.ATTRIBUTE1,
961 X_ATTRIBUTE2 => lv_psd_rec.ATTRIBUTE2,
962 X_ATTRIBUTE3 => lv_psd_rec.ATTRIBUTE3,
963 X_ATTRIBUTE4 => lv_psd_rec.ATTRIBUTE4,
964 X_ATTRIBUTE5 => lv_psd_rec.ATTRIBUTE5,
965 X_ATTRIBUTE6 => lv_psd_rec.ATTRIBUTE6,
966 X_ATTRIBUTE7 => lv_psd_rec.ATTRIBUTE7,
967 x_ATTRIBUTE8 => lv_psd_rec.ATTRIBUTE8,
968 X_ATTRIBUTE9 => lv_psd_rec.ATTRIBUTE9,
969 X_ATTRIBUTE10 => lv_psd_rec.ATTRIBUTE10,
970 X_ATTRIBUTE11 => lv_psd_rec.ATTRIBUTE11,
971 X_ATTRIBUTE12 => lv_psd_rec.ATTRIBUTE12,
972 X_ATTRIBUTE13 => lv_psd_rec.ATTRIBUTE13,
973 X_ATTRIBUTE14 => lv_psd_rec.ATTRIBUTE14,
977 X_ATTRIBUTE18 => lv_psd_rec.ATTRIBUTE18,
974 X_ATTRIBUTE15 => lv_psd_rec.ATTRIBUTE15,
975 X_ATTRIBUTE16 => lv_psd_rec.ATTRIBUTE16,
976 X_ATTRIBUTE17 => lv_psd_rec.ATTRIBUTE17,
978 X_ATTRIBUTE19 => lv_psd_rec.ATTRIBUTE19,
979 X_ATTRIBUTE20 => lv_psd_rec.ATTRIBUTE20);
980
981 ELSE
982 --Just updating the matriculation fields
983 Igs_Pe_Stat_Details_Pkg.update_row (
984 x_rowid => lv_psd_rec.rowid,
985 x_person_id => lv_psd_rec.person_id ,
986 x_effective_start_date => lv_psd_rec.effective_start_date,
987 x_effective_end_date => lv_psd_rec.effective_end_date,
988 x_religion_cd => lv_psd_rec.religion_cd,
989 x_socio_eco_cd => lv_psd_rec.socio_eco_cd,
990 x_next_to_kin => lv_psd_rec.next_to_kin,
991 x_in_state_tuition => lv_psd_rec.in_state_tuition,
992 x_tuition_st_date => lv_psd_rec.tuition_st_date,
993 x_tuition_end_date => lv_psd_rec.tuition_end_date,
994 x_further_education_cd => lv_psd_rec.further_education_cd,
995 X_MATR_CAL_TYPE => lv_cttl_rec.load_cal_type,
996 X_MATR_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
997 X_INIT_CAL_TYPE => lv_psd_rec.INIT_CAL_TYPE,
998 X_INIT_SEQUENCE_NUMBER => lv_psd_rec.INIT_SEQUENCE_NUMBER,
999 X_RECENT_CAL_TYPE => lv_psd_rec.RECENT_CAL_TYPE,
1000 X_RECENT_SEQUENCE_NUMBER => lv_psd_rec.RECENT_SEQUENCE_NUMBER ,
1001 X_CATALOG_CAL_TYPE => lv_psd_rec.CATALOG_CAL_TYPE ,
1002 X_CATALOG_SEQUENCE_NUMBER => lv_psd_rec.CATALOG_SEQUENCE_NUMBER,
1003 X_MODE => 'R' ,
1004 X_ATTRIBUTE_CATEGORY => lv_psd_rec.ATTRIBUTE_CATEGORY,
1005 X_ATTRIBUTE1 => lv_psd_rec.ATTRIBUTE1,
1006 X_ATTRIBUTE2 => lv_psd_rec.ATTRIBUTE2,
1007 X_ATTRIBUTE3 => lv_psd_rec.ATTRIBUTE3,
1008 X_ATTRIBUTE4 => lv_psd_rec.ATTRIBUTE4,
1009 X_ATTRIBUTE5 => lv_psd_rec.ATTRIBUTE5,
1010 X_ATTRIBUTE6 => lv_psd_rec.ATTRIBUTE6,
1011 X_ATTRIBUTE7 => lv_psd_rec.ATTRIBUTE7,
1012 x_ATTRIBUTE8 => lv_psd_rec.ATTRIBUTE8,
1013 X_ATTRIBUTE9 => lv_psd_rec.ATTRIBUTE9,
1014 X_ATTRIBUTE10 => lv_psd_rec.ATTRIBUTE10,
1015 X_ATTRIBUTE11 => lv_psd_rec.ATTRIBUTE11,
1016 X_ATTRIBUTE12 => lv_psd_rec.ATTRIBUTE12,
1017 X_ATTRIBUTE13 => lv_psd_rec.ATTRIBUTE13,
1018 X_ATTRIBUTE14 => lv_psd_rec.ATTRIBUTE14,
1019 X_ATTRIBUTE15 => lv_psd_rec.ATTRIBUTE15,
1020 X_ATTRIBUTE16 => lv_psd_rec.ATTRIBUTE16,
1021 X_ATTRIBUTE17 => lv_psd_rec.ATTRIBUTE17,
1022 X_ATTRIBUTE18 => lv_psd_rec.ATTRIBUTE18,
1023 X_ATTRIBUTE19 => lv_psd_rec.ATTRIBUTE19,
1024 X_ATTRIBUTE20 => lv_psd_rec.ATTRIBUTE20);
1025
1026 END IF;
1027 CLOSE c_psd;
1028 CLOSE c_cttl;
1029 END IF;
1030 END IF;
1031 END IF;
1032 IF(c_psd%ISOPEN) THEN
1033 CLOSE c_psd;
1034 END IF;
1035
1036 --To set the value of recent admittance term based on profile option value
1037 IF lv_profile_mr_admit_cd = 'ACCPT_OFFER_UNIT_ATTEMPT' THEN
1038 OPEN c_apai(p_program_cd,p_person_id);
1039 FETCH c_apai INTO lv_apai_rec;
1040
1041 --if an accepted admission application exists
1042 IF lv_apai_rec.cnt > 0 THEN
1043 CLOSE c_apai;
1044 OPEN c_cttl(p_teach_cal_type,p_teach_ci_seq_num);
1045 FETCH c_cttl into lv_cttl_rec ;
1046 OPEN c_psd(p_person_id);
1047 FETCH c_psd into lv_psd_rec ;
1048
1049 IF lv_profile_cat_cd = 'MR_ADM_TERM' THEN
1050 --Updating the catalog fields also alongwith recent admittacne term fields
1051 --if recent admittance term is present and catalog prfile is set to Recent admittance term
1052 Igs_Pe_Stat_Details_Pkg.update_row (
1053 x_rowid => lv_psd_rec.rowid,
1054 x_person_id => lv_psd_rec.person_id ,
1058 x_socio_eco_cd => lv_psd_rec.socio_eco_cd,
1055 x_effective_start_date => lv_psd_rec.effective_start_date,
1056 x_effective_end_date => lv_psd_rec.effective_end_date,
1057 x_religion_cd => lv_psd_rec.religion_cd,
1059 x_next_to_kin => lv_psd_rec.next_to_kin,
1060 x_in_state_tuition => lv_psd_rec.in_state_tuition,
1061 x_tuition_st_date => lv_psd_rec.tuition_st_date,
1062 x_tuition_end_date => lv_psd_rec.tuition_end_date,
1063 x_further_education_cd => lv_psd_rec.further_education_cd,
1064 X_MATR_CAL_TYPE => lv_psd_rec.MATR_CAL_TYPE,
1065 X_MATR_SEQUENCE_NUMBER => lv_psd_rec.MATR_SEQUENCE_NUMBER,
1066 X_INIT_CAL_TYPE => lv_psd_rec.INIT_CAL_TYPE,
1067 X_INIT_SEQUENCE_NUMBER => lv_psd_rec.INIT_SEQUENCE_NUMBER,
1068 X_RECENT_CAL_TYPE => lv_cttl_rec.load_cal_type,
1069 X_RECENT_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
1070 X_CATALOG_CAL_TYPE => lv_cttl_rec.load_cal_type ,
1071 X_CATALOG_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
1072 X_MODE => 'R',
1073 X_ATTRIBUTE_CATEGORY => lv_psd_rec.ATTRIBUTE_CATEGORY,
1074 X_ATTRIBUTE1 => lv_psd_rec.ATTRIBUTE1,
1075 X_ATTRIBUTE2 => lv_psd_rec.ATTRIBUTE2,
1076 X_ATTRIBUTE3 => lv_psd_rec.ATTRIBUTE3,
1077 X_ATTRIBUTE4 => lv_psd_rec.ATTRIBUTE4,
1078 X_ATTRIBUTE5 => lv_psd_rec.ATTRIBUTE5,
1079 X_ATTRIBUTE6 => lv_psd_rec.ATTRIBUTE6,
1080 X_ATTRIBUTE7 => lv_psd_rec.ATTRIBUTE7,
1081 x_ATTRIBUTE8 => lv_psd_rec.ATTRIBUTE8,
1082 X_ATTRIBUTE9 => lv_psd_rec.ATTRIBUTE9,
1083 X_ATTRIBUTE10 => lv_psd_rec.ATTRIBUTE10,
1084 X_ATTRIBUTE11 => lv_psd_rec.ATTRIBUTE11,
1085 X_ATTRIBUTE12 => lv_psd_rec.ATTRIBUTE12,
1086 X_ATTRIBUTE13 => lv_psd_rec.ATTRIBUTE13,
1087 X_ATTRIBUTE14 => lv_psd_rec.ATTRIBUTE14,
1088 X_ATTRIBUTE15 => lv_psd_rec.ATTRIBUTE15,
1089 X_ATTRIBUTE16 => lv_psd_rec.ATTRIBUTE16,
1090 X_ATTRIBUTE17 => lv_psd_rec.ATTRIBUTE17,
1091 X_ATTRIBUTE18 => lv_psd_rec.ATTRIBUTE18,
1092 X_ATTRIBUTE19 => lv_psd_rec.ATTRIBUTE19,
1093 X_ATTRIBUTE20 => lv_psd_rec.ATTRIBUTE20);
1094
1095 ELSE
1096 --only update the recent admittance fields
1097 Igs_Pe_Stat_Details_Pkg.update_row (
1098 x_rowid => lv_psd_rec.rowid,
1099 x_person_id => lv_psd_rec.person_id ,
1100 x_effective_start_date => lv_psd_rec.effective_start_date,
1101 x_effective_end_date => lv_psd_rec.effective_end_date,
1102 x_religion_cd => lv_psd_rec.religion_cd,
1103 x_socio_eco_cd => lv_psd_rec.socio_eco_cd,
1104 x_next_to_kin => lv_psd_rec.next_to_kin,
1105 x_in_state_tuition => lv_psd_rec.in_state_tuition,
1106 x_tuition_st_date => lv_psd_rec.tuition_st_date,
1107 x_tuition_end_date => lv_psd_rec.tuition_end_date,
1108 x_further_education_cd => lv_psd_rec.further_education_cd,
1109 X_MATR_CAL_TYPE => lv_psd_rec.MATR_CAL_TYPE,
1110 X_MATR_SEQUENCE_NUMBER => lv_psd_rec.MATR_SEQUENCE_NUMBER,
1111 X_INIT_CAL_TYPE => lv_psd_rec.INIT_CAL_TYPE,
1112 X_INIT_SEQUENCE_NUMBER => lv_psd_rec.INIT_SEQUENCE_NUMBER,
1113 X_RECENT_CAL_TYPE => lv_cttl_rec.load_cal_type,
1114 X_RECENT_SEQUENCE_NUMBER => lv_cttl_rec.load_ci_sequence_number,
1115 X_CATALOG_CAL_TYPE => lv_psd_rec.CATALOG_CAL_TYPE ,
1116 X_CATALOG_SEQUENCE_NUMBER => lv_psd_rec.CATALOG_SEQUENCE_NUMBER,
1117 X_MODE => 'R' ,
1118 X_ATTRIBUTE_CATEGORY => lv_psd_rec.ATTRIBUTE_CATEGORY,
1119 X_ATTRIBUTE1 => lv_psd_rec.ATTRIBUTE1,
1120 X_ATTRIBUTE2 => lv_psd_rec.ATTRIBUTE2,
1121 X_ATTRIBUTE3 => lv_psd_rec.ATTRIBUTE3,
1122 X_ATTRIBUTE4 => lv_psd_rec.ATTRIBUTE4,
1123 X_ATTRIBUTE5 => lv_psd_rec.ATTRIBUTE5,
1124 X_ATTRIBUTE6 => lv_psd_rec.ATTRIBUTE6,
1125 X_ATTRIBUTE7 => lv_psd_rec.ATTRIBUTE7,
1126 x_ATTRIBUTE8 => lv_psd_rec.ATTRIBUTE8,
1127 X_ATTRIBUTE9 => lv_psd_rec.ATTRIBUTE9,
1128 X_ATTRIBUTE10 => lv_psd_rec.ATTRIBUTE10,
1129 X_ATTRIBUTE11 => lv_psd_rec.ATTRIBUTE11,
1130 X_ATTRIBUTE12 => lv_psd_rec.ATTRIBUTE12,
1131 X_ATTRIBUTE13 => lv_psd_rec.ATTRIBUTE13,
1132 X_ATTRIBUTE14 => lv_psd_rec.ATTRIBUTE14,
1133 X_ATTRIBUTE15 => lv_psd_rec.ATTRIBUTE15,
1134 X_ATTRIBUTE16 => lv_psd_rec.ATTRIBUTE16,
1135 X_ATTRIBUTE17 => lv_psd_rec.ATTRIBUTE17,
1136 X_ATTRIBUTE18 => lv_psd_rec.ATTRIBUTE18,
1137 X_ATTRIBUTE19 => lv_psd_rec.ATTRIBUTE19,
1138 X_ATTRIBUTE20 => lv_psd_rec.ATTRIBUTE20);
1139 NULL;
1140
1141 END IF;
1142
1143 Close c_psd;
1144 CLOSE c_cttl;
1145 END IF;
1146 IF(c_apai%ISOPEN) THEN
1147 CLOSE c_apai;
1148 END IF;
1149 END IF;
1150 --to close any cursor if open
1151
1152
1153 IF(c_psd%ISOPEN) THEN
1154 CLOSE c_psd;
1155 END IF;
1156 IF(c_cttl%ISOPEN) THEN
1157 CLOSE c_cttl;
1158 END IF;
1159 IF(c_apai%ISOPEN) THEN
1160 CLOSE c_apai;
1161 END IF;
1162 EXCEPTION
1163 WHEN OTHERS THEN
1164 FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
1165 FND_MESSAGE.SET_TOKEN('NAME','IGS_EN_GEN_003.upd_mat_mradm_cat_terms');
1166 IGS_GE_MSG_STACK.ADD;
1167 App_Exception.Raise_Exception;
1168
1169 END UPD_MAT_MRADM_CAT_TERMS;
1170
1171
1172
1173 END IGS_EN_GEN_003 ;