[Home] [Help]
27: )
28: RETURN VARCHAR2 IS
29: /* Define the required local variables */
30: l_igs_pr_class_std_id igs_pr_class_std.igs_pr_class_std_id%TYPE;
31: l_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE;
32: l_consider_changes igs_pr_cs_schdl.consider_changes%TYPE;
33: l_class_standing_override igs_pr_class_std.class_standing%TYPE;
34: l_min_cp_count igs_pr_css_class_std.min_cp%TYPE;
35: l_acad_year_count igs_pr_css_class_std.acad_year%TYPE;
28: RETURN VARCHAR2 IS
29: /* Define the required local variables */
30: l_igs_pr_class_std_id igs_pr_class_std.igs_pr_class_std_id%TYPE;
31: l_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE;
32: l_consider_changes igs_pr_cs_schdl.consider_changes%TYPE;
33: l_class_standing_override igs_pr_class_std.class_standing%TYPE;
34: l_min_cp_count igs_pr_css_class_std.min_cp%TYPE;
35: l_acad_year_count igs_pr_css_class_std.acad_year%TYPE;
36: l_acad_year igs_pr_css_class_std.acad_year%TYPE;
41: l_acad_cal_type igs_ca_inst.cal_type%TYPE;
42: l_acad_ci_sequence_number igs_ca_inst.sequence_number%TYPE;
43: l_Load_Cal_type igs_ca_inst.cal_type%TYPE;
44: l_Load_Ci_Sequence_Number igs_ca_inst.sequence_number%TYPE;
45: l_effective_dt igs_pr_cs_schdl.start_dt%TYPE;
46: l_earned_cp NUMBER;
47: l_attempted_cp NUMBER;
48: l_return_status VARCHAR2(100);
49: l_msg_count NUMBER(6);
58:
59: /* Cursor to get the Student Program Attempt and Class Standing Details */
60: CURSOR c_spa IS
61: SELECT NVL(spat.class_standing_id,spa.igs_pr_class_std_id) igs_pr_class_std_id,
62: css.igs_pr_cs_schdl_id,
63: css.consider_changes
64: FROM IGS_EN_STDNT_PS_ATT spa,
65: IGS_PS_VER pv,
66: IGS_PS_TYPE pt,
63: css.consider_changes
64: FROM IGS_EN_STDNT_PS_ATT spa,
65: IGS_PS_VER pv,
66: IGS_PS_TYPE pt,
67: IGS_PR_CS_SCHDL css,
68: IGS_EN_SPA_TERMS spat
69: WHERE spa.person_id = p_person_id
70: AND spa.course_cd = p_course_cd
71: AND spa.course_cd = pv.course_cd
89: WHERE igs_pr_class_std_id = cp_igs_pr_class_std_id;
90:
91:
92: /* Cursors to get the class standing calculation method */
93: CURSOR C_cs_min_cp(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE ) IS
94: SELECT COUNT(*)
95: FROM igs_pr_css_class_std
96: WHERE igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
97: AND min_cp IS NOT NULL;
92: /* Cursors to get the class standing calculation method */
93: CURSOR C_cs_min_cp(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE ) IS
94: SELECT COUNT(*)
95: FROM igs_pr_css_class_std
96: WHERE igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
97: AND min_cp IS NOT NULL;
98: CURSOR C_cs_acad_yr(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE ) IS
99: SELECT COUNT(*)
100: FROM igs_pr_css_class_std
94: SELECT COUNT(*)
95: FROM igs_pr_css_class_std
96: WHERE igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
97: AND min_cp IS NOT NULL;
98: CURSOR C_cs_acad_yr(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE ) IS
99: SELECT COUNT(*)
100: FROM igs_pr_css_class_std
101: WHERE igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
102: AND acad_year IS NOT NULL;
97: AND min_cp IS NOT NULL;
98: CURSOR C_cs_acad_yr(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE ) IS
99: SELECT COUNT(*)
100: FROM igs_pr_css_class_std
101: WHERE igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
102: AND acad_year IS NOT NULL;
103:
104: /* Cursor to get the academic year method details with load deatils */
105: CURSOR C_acad_year (cp_load_cal_type igs_ca_inst.cal_type%TYPE,
135: AND cir3.sup_cal_type = ci1.cal_type
136: AND cir3.sup_ci_sequence_number = ci1.sequence_number);
137:
138: /* Cursor to Select Class Standing matching the Period Range */
139: CURSOR C_Get_Cs_for_acad_yr(cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE,
140: cp_acad_year igs_pr_css_class_std.acad_year%TYPE ) IS
141: SELECT ipcs.class_standing
142: FROM igs_pr_css_class_std ipccs,
143: igs_pr_class_std ipcs
140: cp_acad_year igs_pr_css_class_std.acad_year%TYPE ) IS
141: SELECT ipcs.class_standing
142: FROM igs_pr_css_class_std ipccs,
143: igs_pr_class_std ipcs
144: WHERE ipccs.igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
145: AND ipccs.acad_year = cp_acad_year
146: AND ipccs.igs_pr_class_std_id = ipcs.igs_pr_class_std_id;
147:
148: /* Cursor to Get the details of the most recent load calendar attempted */
145: AND ipccs.acad_year = cp_acad_year
146: AND ipccs.igs_pr_class_std_id = ipcs.igs_pr_class_std_id;
147:
148: /* Cursor to Get the details of the most recent load calendar attempted */
149: CURSOR c_load_ci (cp_consider_changes IGS_PR_CS_SCHDL.consider_changes%TYPE) IS
150: SELECT ci.cal_type,
151: ci.sequence_number
152: FROM igs_ca_type ct,
153: igs_ca_inst ci
179: AND cir.sup_cal_type = ct.cal_type
180: AND ct.s_cal_cat = 'ACADEMIC';
181:
182: /*Cursor to SELECT Class Standing matching the CP RANGE */
183: CURSOR C_Get_cs_cp_range( cp_igs_pr_cs_schdl_id igs_pr_cs_schdl.igs_pr_cs_schdl_id%TYPE,
184: cp_cp igs_pr_css_class_std.min_cp%TYPE ) IS
185: SELECT ipcs.class_standing
186: FROM igs_pr_css_class_std ipccs,
187: igs_pr_class_std ipcs
184: cp_cp igs_pr_css_class_std.min_cp%TYPE ) IS
185: SELECT ipcs.class_standing
186: FROM igs_pr_css_class_std ipccs,
187: igs_pr_class_std ipcs
188: WHERE ipccs.igs_pr_cs_schdl_id = cp_igs_pr_cs_schdl_id
189: AND ipccs.min_cp <= cp_cp
190: AND ipccs.max_cp >= cp_cp
191: AND ipccs.igs_pr_class_std_id = ipcs.igs_pr_class_std_id;
192:
277: END IF;
278: /* Get Student Program Attempt and Program Type details*/
279: OPEN c_spa;
280: FETCH c_spa INTO l_igs_pr_class_std_id,
281: l_igs_pr_cs_schdl_id,
282: l_consider_changes;
283: /**
284: * Logging - l_igs_pr_class_std_id, l_igs_pr_cs_schdl_id, l_consider_changes
285: *
280: FETCH c_spa INTO l_igs_pr_class_std_id,
281: l_igs_pr_cs_schdl_id,
282: l_consider_changes;
283: /**
284: * Logging - l_igs_pr_class_std_id, l_igs_pr_cs_schdl_id, l_consider_changes
285: *
286: */
287: IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
288: fnd_log.string (fnd_log.level_statement,
288: fnd_log.string (fnd_log.level_statement,
289: 'igs.plsql.igs_pr_get_class_std.get_class_standing',
290: 'Student Program Attempt and Program Type details - '||
291: 'l_igs_pr_class_std_id => '||l_igs_pr_class_std_id||';'||
292: 'l_igs_pr_cs_schdl_id => '||l_igs_pr_cs_schdl_id||';'||
293: 'l_onsider_changes => '||l_consider_changes||';'
294: );
295: END IF;
296: CLOSE c_spa;
309: 'Class Standing Override values set => '||l_class_standing_override
310: );
311: END IF;
312: RETURN l_class_standing_override;
313: ELSIF l_igs_pr_cs_schdl_id IS NULL OR l_consider_changes IS NULL THEN
314: /* Return Null if the class standing setup is not done */
315: /**
316: * Logging -
317: *
337: CLOSE c_load_ci;
338: /* Determine the Class Standing calculation method
339: A Program Type Class Standing Schedule cannot have child records
340: with both start and end cp values and academic year values set. */
341: OPEN C_cs_min_cp(l_igs_pr_cs_schdl_id);
342: FETCH C_cs_min_cp INTO l_min_cp_count;
343: CLOSE C_cs_min_cp;
344: OPEN C_cs_acad_yr(l_igs_pr_cs_schdl_id);
345: FETCH C_cs_acad_yr INTO l_acad_year_count;
340: with both start and end cp values and academic year values set. */
341: OPEN C_cs_min_cp(l_igs_pr_cs_schdl_id);
342: FETCH C_cs_min_cp INTO l_min_cp_count;
343: CLOSE C_cs_min_cp;
344: OPEN C_cs_acad_yr(l_igs_pr_cs_schdl_id);
345: FETCH C_cs_acad_yr INTO l_acad_year_count;
346: CLOSE C_cs_acad_yr;
347: IF NVL(l_min_cp_count, 0) = 0 AND NVL(l_acad_year_count, 0) = 0 THEN
348: /**
378: FETCH c_acad_year INTO l_acad_year;
379: CLOSE c_acad_year;
380: END IF;
381: /* Select Class Standing matching the Period Range */
382: OPEN C_Get_Cs_for_acad_yr(l_igs_pr_cs_schdl_id, l_acad_year) ;
383: FETCH C_Get_Cs_for_acad_yr INTO l_class_standing;
384: CLOSE C_Get_Cs_for_acad_yr;
385: /**
386: * Logging - l_class_standing
466: /* For predictive the cp total is earned cp plus enrolled cp */
467: l_cp := l_cp + NVL(l_enrolled_cp, 0);
468: END IF;
469: /* SELECT Class Standing matching the CP RANGE */
470: OPEN C_Get_cs_cp_range( l_igs_pr_cs_schdl_id, l_cp);
471: FETCH C_Get_cs_cp_range INTO l_class_standing;
472: CLOSE C_Get_cs_cp_range;
473: /**
474: * Logging - l_class_standing