1 PACKAGE BODY igs_ad_val_acai_status AS
2 /* $Header: IGSAD24B.pls 120.8 2005/11/25 04:51:02 appldev ship $ */
3 --bug 1956374 msrinivi Removed duplicate func enrp_val_trnsfr_act 27 aug,01
4 -- Validate the IGS_AD_PS_APPL_INST.adm_entry_qual_status.
5 -- hreddych #2602077 SF Integration Added the FUNCTION admp_val_aods_update
6 --sarakshi 27-Feb-2003 Enh#2797116,modified procedure admp_val_lafs_coo ,added delete_falg check in the where clause
7 -- of the cursor c_coo
8 FUNCTION admp_val_acai_aeqs(
9 p_adm_entry_qual_status IN VARCHAR2 ,
10 p_adm_outcome_status IN VARCHAR2 ,
11 p_s_admission_process_type IN VARCHAR2 ,
12 p_message_name OUT NOCOPY VARCHAR2 )
13 RETURN BOOLEAN AS
14 BEGIN -- admp_val_acai_aeqs
15 -- Validate the IGS_AD_PS_APPL_INST.adm_entry_qual_status.
16 DECLARE
17 v_message_name VARCHAR2(30);
18 v_s_adm_entry_qual_status igs_ad_ent_qf_stat.s_adm_entry_qual_status%TYPE;
19 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
20 BEGIN
21 -- Set the default message number
22 p_message_name := NULL;
23 -- Perform item level validations.
24 IF IGS_AD_VAL_ACAI_STATUS.admp_val_aeqs_item (
25 p_adm_entry_qual_status,
26 p_s_admission_process_type,
27 v_message_name) = FALSE THEN
28 p_message_name := v_message_name;
29 RETURN FALSE;
30 END IF;
31 -- Perform cross-status validations.
32 -- Get the system status values.
33 v_s_adm_entry_qual_status := IGS_AD_GEN_007.ADMP_GET_SAEQS (p_adm_entry_qual_status);
34 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (p_adm_outcome_status);
35 -- Validate against the admission outcome status.
36 IF IGS_AD_VAL_ACAI_STATUS.admp_val_aeqs_aos (
37 v_s_adm_entry_qual_status,
38 v_s_adm_outcome_status,
39 v_message_name) = FALSE THEN
40 p_message_name := v_message_name;
41 RETURN FALSE;
42 END IF;
43 RETURN TRUE;
44 END;
45 EXCEPTION
46 WHEN OTHERS THEN
47 IF p_message_name <> 'IGS_GE_UNHANDLED_EXP' AND FND_MSG_PUB.Count_Msg < 1 THEN
48 p_message_name := 'IGS_GE_UNHANDLED_EXP';
49 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
50 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_aeqs');
51 IGS_GE_MSG_STACK.ADD;
52 END IF;
53 App_Exception.Raise_Exception;
54
55 END admp_val_acai_aeqs;
56 --
57 -- Validate the IGS_AD_PS_APPL_INST.adm_entry_qual_status.
58 FUNCTION admp_val_aeqs_item(
59 p_adm_entry_qual_status IN VARCHAR2 ,
60 p_s_admission_process_type IN VARCHAR2 ,
61 p_message_name OUT NOCOPY VARCHAR2 )
62 RETURN BOOLEAN AS
63 BEGIN -- admp_val_aeqs_item
64 -- Validate the IGS_AD_PS_APPL_INST.adm_entry_qual_status.
65 -- It must be open and valid.
66 DECLARE
67 v_message_name VARCHAR2(30);
68 v_s_adm_entry_qual_status igs_ad_ent_qf_stat.s_adm_entry_qual_status%TYPE;
69 BEGIN
70 -- Set the default message number
71 p_message_name := NULL;
72 -- Validate the closed indicator
73 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aeqs_closed(
74 p_adm_entry_qual_status,
75 v_message_name) THEN
76 p_message_name := v_message_name;
77 RETURN FALSE;
78 END IF;
79 -- Validate against the system admission process type.
80 v_s_adm_entry_qual_status := NVL(IGS_AD_GEN_007.ADMP_GET_SAEQS(
81 p_adm_entry_qual_status), 'NULL');
82 IF p_s_admission_process_type = 'NON-AWARD' THEN
83 -- The admission entry qualification status must be
84 -- Not Applicable for Non Award applications
85 IF v_s_adm_entry_qual_status <> 'NOT-APPLIC' THEN
86 p_message_name := 'IGS_AD_ADMENTRY_QUALIFY_ST';
87 RETURN FALSE;
88 END IF;
89 ELSE
90 -- The admission entry qualification status must be
91 -- a value other than Not Applicable for applications
92 -- that are not Non Award
93 IF v_s_adm_entry_qual_status = 'NOT-APPLIC' THEN
94 p_message_name := 'IGS_AD_ADM_ENTRY_QUALIFYST' ;
95 RETURN FALSE;
96 END IF;
97 END IF;
98 RETURN TRUE;
99 END;
100 END admp_val_aeqs_item;
101 --
102 -- Validate if IGS_AD_ENT_QF_STAT.adm_entry_qual_status is closed.
103 FUNCTION admp_val_aeqs_closed(
104 p_adm_entry_qual_status IN VARCHAR2 ,
105 p_message_name OUT NOCOPY VARCHAR2 )
106 RETURN BOOLEAN AS
107 BEGIN -- admp_val_aeqs_closed
108 -- Validate the adm_entry_qual_status closed indicator
109 DECLARE
110 CURSOR c_aeqs(
111 cp_adm_entry_qual_status IGS_AD_ENT_QF_STAT.adm_entry_qual_status%TYPE) IS
112 SELECT closed_ind
113 FROM IGS_AD_ENT_QF_STAT
114 WHERE adm_entry_qual_status = cp_adm_entry_qual_status;
115 v_aeqs_rec c_aeqs%ROWTYPE;
116 cst_yes CONSTANT CHAR := 'Y';
117 BEGIN
118 -- Set the default message number
119 p_message_name := NULL;
120 -- Cursor handling
121 OPEN c_aeqs(
122 p_adm_entry_qual_status);
123 FETCH c_aeqs INTO v_aeqs_rec;
124 IF c_aeqs%NOTFOUND THEN
125 CLOSE c_aeqs;
126 RETURN TRUE;
127 END IF;
128 CLOSE c_aeqs;
129 IF (v_aeqs_rec.closed_ind = cst_yes) THEN
130 p_message_name := 'IGS_AD_ADM_ENTRY_CLS_ST_CLOSE';
131 RETURN FALSE;
132 END IF;
133 -- Return the default value
134 RETURN TRUE;
135 END;
136 END admp_val_aeqs_closed;
137 --
138 -- Validates adm_entry_qual_status against adm_outcome_status.
139 FUNCTION admp_val_aeqs_aos(
140 p_s_adm_entry_qual_status IN VARCHAR2 ,
141 p_s_adm_outcome_status IN VARCHAR2 ,
142 p_message_name OUT NOCOPY VARCHAR2 )
143 RETURN BOOLEAN AS
144 BEGIN -- admp_val_aeqs_aos
145 -- This module validates IGS_AD_PS_APPL_INST.adm_entry_qual_status
146 -- against IGS_AD_PS_APPL_INST.adm_outcome_status
147 -- Validations are:
148 -- If the admission entry qualification status is applicable for the
149 -- admission application, then it cannot be pending if an offer has been made.
150 -- If the admission entry qualification status is applicable for the admission
151 -- application, then it cannot be not-qualified if an offer is being made.
152 DECLARE
153 cst_not_applic CONSTANT
154 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE:= 'NOT-APPLIC';
155 cst_pending CONSTANT
156 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'PENDING';
157 cst_not_qual CONSTANT
158 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'NOT-QUAL';
159 cst_offer CONSTANT IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'OFFER';
160 cst_cond_offer CONSTANT
161 IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'COND-OFFER';
162 cst_withdrawn CONSTANT
163 IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'WITHDRAWN';
164 cst_voided CONSTANT IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'VOIDED';
165 BEGIN
166 p_message_name := NULL;
167 -- Only validate the admission entry qualification status if
168 -- it has a system value other then not-applicable
169 IF (p_s_adm_entry_qual_status <> cst_not_applic) THEN
170 -- The admission entry qualification status cannot
171 -- be pending if an offer has been made.
172 IF (p_s_adm_entry_qual_status = cst_pending AND
173 p_s_adm_outcome_status IN (
174 cst_offer,
175 cst_cond_offer,
176 cst_withdrawn,
177 cst_voided)) THEN
178 p_message_name := 'IGS_AD_NOTBE_PENDING_OFR_MADE';
179 RETURN FALSE;
180 END IF;
181 -- The admission entry qualification status cannot
182 -- be not-qualified if an offer is being made.
183 IF (p_s_adm_entry_qual_status = cst_not_qual AND
184 p_s_adm_outcome_status IN (
185 cst_offer,
186 cst_cond_offer)) THEN
187 p_message_name := 'IGS_AD_NOTBE_NOTQUALIF_OFRMAD';
188 RETURN FALSE;
189 END IF;
190 END IF;
191
192 RETURN TRUE;
193 END;
194 EXCEPTION
195 WHEN OTHERS THEN
196 p_message_name := 'IGS_GE_UNHANDLED_EXP';
197 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
198 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aeqs_aos');
199 IGS_GE_MSG_STACK.ADD;
200 App_Exception.Raise_Exception;
201 END admp_val_aeqs_aos;
202 --
203 -- Validate the IGS_AD_PS_APPL_INST.adm_doc_status.
204 FUNCTION admp_val_acai_ads(
205 p_adm_doc_status IN VARCHAR2 ,
206 p_adm_outcome_status IN VARCHAR2 ,
207 p_adm_cndtnl_offer_status IN VARCHAR2 ,
208 p_s_admission_process_type IN VARCHAR2 ,
209 p_cond_offer_doc_allowed IN VARCHAR2,
210 p_message_name OUT NOCOPY VARCHAR2 )
211 RETURN BOOLEAN AS
212 BEGIN -- admp_val_acai_ads
213 -- Validate the IGS_AD_PS_APPL_INST.adm_doc_status.
214 DECLARE
215 v_message_name VARCHAR2(30);
216 v_s_adm_doc_status igs_ad_doc_stat.s_adm_doc_status%TYPE;
217 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
218 v_s_adm_cndtnl_offer_status igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE;
219 BEGIN
220 -- Set the default message number
221 p_message_name := NULL;
222 -- Perform item level validations.
223 IF IGS_AD_VAL_ACAI_STATUS.admp_val_ads_item (
224 p_adm_doc_status,
225 p_s_admission_process_type,
226 v_message_name) = FALSE THEN
227 p_message_name := v_message_name;
228 RETURN FALSE;
229 END IF;
230 -- Perform cross-status validations.
231 -- Get the system status values.
232 v_s_adm_doc_status := IGS_AD_GEN_007.ADMP_GET_SADS (p_adm_doc_status);
233 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (p_adm_outcome_status);
234 v_s_adm_cndtnl_offer_status := IGS_AD_GEN_007.ADMP_GET_SACOS (p_adm_cndtnl_offer_status);
235 -- Validate against the admission outcome status.
236 IF IGS_AD_VAL_ACAI_STATUS.admp_val_ads_aos (
237 v_s_adm_doc_status,
238 v_s_adm_outcome_status,
239 v_s_adm_cndtnl_offer_status,
240 p_cond_offer_doc_allowed,
241 v_message_name) = FALSE THEN
242 p_message_name := v_message_name;
243 RETURN FALSE;
244 END IF;
245 RETURN TRUE;
246 END;
247 EXCEPTION
248 WHEN OTHERS THEN
249 IF p_message_name <> 'IGS_GE_UNHANDLED_EXP' AND FND_MSG_PUB.Count_Msg < 1 THEN
250 p_message_name := 'IGS_GE_UNHANDLED_EXP';
251 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
252 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_ads');
253 IGS_GE_MSG_STACK.ADD;
254 END IF;
255 App_Exception.Raise_Exception;
256
257 END admp_val_acai_ads;
258 --
259 -- Validate the IGS_AD_PS_APPL_INST.adm_doc_status.
260 FUNCTION admp_val_ads_item(
261 p_adm_doc_status IN VARCHAR2 ,
262 p_s_admission_process_type IN VARCHAR2 ,
263 p_message_name OUT NOCOPY VARCHAR2 )
264 RETURN BOOLEAN AS
265 BEGIN -- admp_val_ads_item
266 -- Validate the IGS_AD_PS_APPL_INST.adm_doc_status,
267 -- It must be open and valid
268 DECLARE
269 v_message_name VARCHAR2(30);
270 v_s_adm_doc_status igs_ad_doc_stat.s_adm_doc_status%TYPE;
271 BEGIN
272 -- Set the default message number
273 p_message_name := NULL;
274 -- Validate the closed indicator
275 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_ads_closed(
276 p_adm_doc_status,
277 v_message_name) THEN
278 p_message_name := v_message_name;
279 RETURN FALSE;
280 END IF;
281 -- Validate against the system admission process type.
282 v_s_adm_doc_status := NVL(IGS_AD_GEN_007.ADMP_GET_SADS(
283 p_adm_doc_status), 'NULL');
284 IF p_s_admission_process_type = 'NON-AWARD' THEN
285 -- The admission documentation status must be
286 -- Not Applicable for Non Award applications
287 IF v_s_adm_doc_status <> 'NOT-APPLIC' THEN
288 p_message_name := 'IGS_AD_ADMDOC_STATUS';
289 RETURN FALSE;
290 END IF;
291 ELSE
292 -- The admission documentation status must be
293 -- a value other than Not Applicable for applications
294 -- that are not Non Award
295 IF v_s_adm_doc_status = 'NOT-APPLIC' THEN
296 p_message_name := 'IGS_AD_ADM_DOC_STATUS';
297 RETURN FALSE;
298 END IF;
299 END IF;
300 RETURN TRUE;
301 END;
302 END admp_val_ads_item;
303 --
304 -- Validate if IGS_AD_DOC_STAT.adm_doc_status is closed.
305 FUNCTION admp_val_ads_closed(
306 p_adm_doc_status IN VARCHAR2 ,
307 p_message_name OUT NOCOPY VARCHAR2 )
308 RETURN BOOLEAN AS
309 BEGIN -- admp_val_ads_closed
310 -- Validate the IGS_AD_DOC_STAT closed indicator
311 DECLARE
312 CURSOR c_ads(
313 cp_adm_doc_status IGS_AD_DOC_STAT.adm_doc_status%TYPE) IS
314 SELECT closed_ind
315 FROM IGS_AD_DOC_STAT
316 WHERE adm_doc_status = cp_adm_doc_status;
317 v_ads_rec c_ads%ROWTYPE;
318 cst_yes CONSTANT CHAR := 'Y';
319 BEGIN
320 -- Set the default message number
321 p_message_name := NULL;
322 -- Cursor handling
323 OPEN c_ads(
324 p_adm_doc_status);
325 FETCH c_ads INTO v_ads_rec;
326 IF c_ads%NOTFOUND THEN
327 CLOSE c_ads;
328 RETURN TRUE;
329 END IF;
330 CLOSE c_ads;
331 IF (v_ads_rec.closed_ind = cst_yes) THEN
332 p_message_name := 'IGS_AD_ADMDOC_STATUS_CLOSED';
333 RETURN FALSE;
334 END IF;
335 -- Return the default value
336 RETURN TRUE;
337 END;
338 END admp_val_ads_closed;
339 --
340 -- Validates adm_doc_status against adm_outcome_status.
341 FUNCTION admp_val_ads_aos(
342 p_s_adm_doc_status IN VARCHAR2 ,
343 p_s_adm_outcome_status IN VARCHAR2 ,
344 p_s_adm_cndtnl_offer_status IN VARCHAR2 ,
345 p_cond_offer_doc_allowed IN VARCHAR2,
346 p_message_name OUT NOCOPY VARCHAR2 )
347 RETURN BOOLEAN AS
348 BEGIN -- admp_val_ads_aos
349 -- This module validates IGS_AD_PS_APPL_INST.adm_doc_status against
350 -- IGS_AD_PS_APPL_INST.adm_outcome_status.
351 -- Validations are:
352 -- If the admission documentation status is applicable for the admission
353 -- application, then it cannot be pending if an offer has been made.
354 -- The admission documentation status cannot be incomplete, unsatisfactory
355 -- or rejected if a non-conditional offer has been made or a conditional offer
356 -- has been made but documentation conditional offers are not allowed.
357 -- The admission documentation status cannot be incomple, unsatisfactory or
358 -- rejected if a conditional offer has been satisfied.
359 DECLARE
360 cst_not_applic CONSTANT
361 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'NOT-APPLIC';
362 cst_pending CONSTANT
363 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'PENDING';
364 cst_incomplete CONSTANT
365 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'INCOMPLETE';
366 cst_unsatisfac CONSTANT
367 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'UNSATISFAC';
368 cst_rejected_f CONSTANT
369 IGS_AD_ENT_QF_STAT.s_adm_entry_qual_status%TYPE := 'REJECTED-F';
370 cst_offer CONSTANT IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'OFFER';
371 cst_cond_offer CONSTANT
372 IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'COND-OFFER';
373 cst_withdrawn CONSTANT
374 IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'WITHDRAWN';
375 cst_voided CONSTANT IGS_AD_OU_STAT.s_adm_outcome_status%TYPE := 'VOIDED';
376 cst_satisfied CONSTANT
377 IGS_AD_CNDNL_OFRSTAT.s_adm_cndtnl_offer_status%TYPE := 'SATISFIED';
378 BEGIN
379 p_message_name := NULL;
380 -- Only validate the admission documentation status if
381 -- it has a system value other then not-applicable.
382 IF (p_s_adm_doc_status <> cst_not_applic) THEN
383 -- The admission documentation status cannot
384 -- be pending if an offer has been made.
385 IF (p_s_adm_doc_status = cst_pending AND
386 p_s_adm_outcome_status IN (
387 cst_offer,
388 cst_cond_offer,
389 cst_withdrawn,
390 cst_voided)) THEN
391 p_message_name := 'IGS_AD_NOTBE_PENDNG_OFR_MADE';
392 RETURN FALSE;
393 END IF;
394 -- The admission documentation status cannot be incomplete, unsatisfactory
395 -- or rejected if a non-conditional offer has been made, or a conditional
396 -- offer has been made, but documentation conditional offers are not
397 -- allowed.
398 IF p_s_adm_doc_status IN (
399 cst_incomplete,
400 cst_unsatisfac,
401 cst_rejected_f) THEN
402 IF p_s_adm_outcome_status = cst_offer THEN
403 p_message_name := 'IGS_AD_NOTBE_INCOMPL_OFR_MADE';
404 RETURN FALSE;
405 END IF;
406 IF p_s_adm_outcome_status = cst_cond_offer AND
407 p_cond_offer_doc_allowed = 'N' THEN
408 p_message_name := 'IGS_AD_ADMDOC_NOTBE_IMCOMPL';
409 RETURN FALSE;
410 END IF;
411 END IF;
412 -- The admission documentation status cannot be unsatisfactory
413 -- or rejected if a conditional offer has been satisfied.
414 IF (p_s_adm_doc_status IN (cst_incomplete, cst_unsatisfac, cst_rejected_f) AND
415 p_s_adm_outcome_status = cst_cond_offer AND
416 p_s_adm_cndtnl_offer_status = cst_satisfied) THEN
417 p_message_name := 'IGS_AD_NOTBE_INCOMP_OFR_MADE';
418 RETURN FALSE;
419 END IF;
420 END IF;
421
422 RETURN TRUE;
423 END;
424 EXCEPTION
425 WHEN OTHERS THEN
426 p_message_name := 'IGS_GE_UNHANDLED_EXP';
427 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
428 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_ads_aos');
429 IGS_GE_MSG_STACK.ADD;
430 App_Exception.Raise_Exception;
431 END admp_val_ads_aos;
432 --
433 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status.
434 FUNCTION admp_val_acai_aods(
435 p_person_id IN NUMBER ,
436 p_admission_appl_number IN NUMBER ,
437 p_nominated_course_cd IN VARCHAR2 ,
438 p_acai_sequence_number IN NUMBER ,
439 p_course_cd IN VARCHAR2 ,
440 p_adm_offer_dfrmnt_status IN VARCHAR2 ,
441 p_old_adm_dfrmnt_status IN VARCHAR2 ,
442 p_adm_offer_resp_status IN VARCHAR2 ,
443 p_deferral_allowed IN VARCHAR2,
444 p_s_admission_process_type IN VARCHAR2 ,
445 p_message_name OUT NOCOPY VARCHAR2 )
446 RETURN BOOLEAN AS
447 BEGIN -- admp_val_acai_aods
448 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status.
449 DECLARE
450 v_s_adm_offer_dfrmnt_status
451 IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status%TYPE;
452 v_old_s_adm_dfrmnt_status
453 IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status%TYPE;
454 v_s_adm_offer_resp_status
455 IGS_AD_PS_APPL_INST.adm_offer_resp_status%TYPE;
456 v_message_name VARCHAR2(30);
457 BEGIN
458 -- Set the default message number
459 p_message_name := NULL;
460 -- Perform item level validations.
461 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aods_item (
462 p_person_id,
463 p_admission_appl_number,
464 p_nominated_course_cd,
465 p_acai_sequence_number,
466 p_course_cd,
467 p_adm_offer_dfrmnt_status,
468 p_s_admission_process_type,
469 p_deferral_allowed,
470 v_message_name) THEN
471 p_message_name := v_message_name;
472 RETURN FALSE;
473 END IF;
474 -- Set local variables to system values
475 v_s_adm_offer_dfrmnt_status := IGS_AD_GEN_008.ADMP_GET_SAODS (
476 p_adm_offer_dfrmnt_status);
477 v_old_s_adm_dfrmnt_status := IGS_AD_GEN_008.ADMP_GET_SAODS (
478 p_old_adm_dfrmnt_status);
479 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS (
480 p_adm_offer_resp_status);
481 -- Validate against the admission offer response status.
482 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aods_aors (
483 v_s_adm_offer_dfrmnt_status,
484 v_old_s_adm_dfrmnt_status,
485 v_s_adm_offer_resp_status,
486 v_message_name) THEN
487 p_message_name := v_message_name;
488 RETURN FALSE;
489 END IF;
490 -- Return the default value
491 RETURN TRUE;
492 END;
493 EXCEPTION
494 WHEN OTHERS THEN
495 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
496 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_aods');
497 IGS_GE_MSG_STACK.ADD;
498 App_Exception.Raise_Exception;
499 END admp_val_acai_aods;
500 --
501 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status.
502 FUNCTION admp_val_aods_item(
503 p_person_id IN NUMBER ,
504 p_admission_appl_number IN NUMBER ,
505 p_nominated_course_cd IN VARCHAR2 ,
506 p_acai_sequence_number IN NUMBER ,
507 p_course_cd IN VARCHAR2 ,
508 p_adm_offer_dfrmnt_status IN VARCHAR2 ,
509 p_s_admission_process_type IN VARCHAR2 ,
510 p_deferral_allowed IN VARCHAR2,
511 p_message_name OUT NOCOPY VARCHAR2 )
512 RETURN BOOLEAN AS
513 BEGIN -- admp_val_aods_item
514 -- This module validates the IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status.
515 -- Perform item level validations only.
516 -- Validations are:
517 -- ? The adm_offer_dfrmnt_status must be open. (AODS01)
518 -- ? If the deferment is not allowed for the admission application,
519 -- then the admission offer deferment status must have a value of
520 -- not-applicable. (AODS02)
521 -- ? If the admission application is re-admission, course transfer
522 -- or non-Award, then the admission offer deferment status must have
523 -- a value of not-applicable. (AODS03)
524 -- ? Deferment cannot be rejected if the course has been
525 -- confirmed. (AODS04)
526 DECLARE
527 CURSOR c_sca IS
528 SELECT 'x'
529 FROM IGS_EN_STDNT_PS_ATT sca
530 WHERE sca.person_id = p_person_id AND
531 NVL(sca.adm_nominated_course_cd, 'NULL') =
532 NVL(p_nominated_course_cd, 'NULL') AND
533 NVL(sca.adm_admission_appl_number, -1) = NVL(p_admission_appl_number, -1) AND
534 NVL(sca.adm_sequence_number, -1) = NVL(p_acai_sequence_number, -1) AND
535 sca.student_confirmed_ind = 'Y';
536 v_sca_exists VARCHAR2(1);
537 v_s_adm_offer_dfrmnt_status
538 IGS_AD_OFRDFRMT_STAT.s_adm_offer_dfrmnt_status%TYPE;
539 v_message_name VARCHAR2(30);
540 BEGIN
541 -- Set the default message number
542 p_message_name := NULL;
543 -- Validate the closed indicator.
544 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aods_closed (
545 p_adm_offer_dfrmnt_status,
546 v_message_name) THEN
547 p_message_name := v_message_name;
548 RETURN FALSE;
549 END IF;
550 v_s_adm_offer_dfrmnt_status := IGS_AD_GEN_008.ADMP_GET_SAODS(
551 p_adm_offer_dfrmnt_status);
552 -- Validate the offer response status against the system admission
553 -- process type and the admission process category step.
554 IF v_s_adm_offer_dfrmnt_status <> 'NOT-APPLIC' THEN
555 -- Deferments are not allowed for this admission application.
556 -- The admission offer deferment status must be set to not-applicable.
557 IF p_deferral_allowed = 'N' THEN
558 -- deferment is not allowed
559 p_message_name := 'IGS_AD_DFRMNT_NOT_ALLOW';
560 RETURN FALSE;
561 END IF;
562 -- Validate the offer response status against the
563 -- system admission process type.
564 -- Deferment is not applicable for re-admission, course transfer
565 -- or non-Award admission applications. The admission offer
566 -- deferment status must be set to not-applicable.
567 IF p_s_admission_process_type IN (
568 'RE-ADMIT',
569 'TRANSFER',
570 'NON-AWARD') THEN
571 p_message_name := 'IGS_AD_DFRMNT_NOT_APPLICABLE';
572 RETURN FALSE;
573 END IF;
574 END IF;
575 -- Validate against student course attempt
576 IF v_s_adm_offer_dfrmnt_status = 'REJECTED' THEN
577 -- Cannot reject deferral if the course is confirmed
578 -- If the applicant accepted the initial offer,
579 -- then this status can be set to withdrawn.
580 OPEN c_sca;
581 FETCH c_sca INTO v_sca_exists;
582 IF c_sca%FOUND THEN
583 CLOSE c_sca;
584 p_message_name := 'IGS_AD_DFRMNT_NOT_REJECT';
585 RETURN FALSE;
586 END IF;
587 CLOSE c_sca;
588 END IF;
589 -- Return the default value
590 RETURN TRUE;
591 EXCEPTION
592 WHEN OTHERS THEN
593 IF c_sca%ISOPEN THEN
594 CLOSE c_sca;
595 END IF;
596 RAISE;
597 END;
598 EXCEPTION
599 WHEN OTHERS THEN
600 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
601 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aods_item');
602 IGS_GE_MSG_STACK.ADD;
603 App_Exception.Raise_Exception;
604 END admp_val_aods_item;
605 --
606 -- Validate if IGS_AD_OFRDFRMT_STAT.adm_offer_dfrmnt_status is closed.
607 FUNCTION admp_val_aods_closed(
608 p_adm_offer_dfrmnt_status IN VARCHAR2 ,
609 p_message_name OUT NOCOPY VARCHAR2 )
610 RETURN BOOLEAN AS
611 BEGIN -- admp_val_aods_closed
612 -- Validate the adm_offer_dfrmnt_status closed indicator
613 DECLARE
614 CURSOR c_aods(
615 cp_adm_offer_dfrmnt_status
616 IGS_AD_OFRDFRMT_STAT.adm_offer_dfrmnt_status%TYPE) IS
617 SELECT closed_ind
618 FROM IGS_AD_OFRDFRMT_STAT
619 WHERE adm_offer_dfrmnt_status = cp_adm_offer_dfrmnt_status;
620 v_aods_rec c_aods%ROWTYPE;
621 cst_yes CONSTANT CHAR := 'Y';
622 BEGIN
623 -- Set the default message number
624 p_message_name := NULL;
625 -- Cursor handling
626 OPEN c_aods(
627 p_adm_offer_dfrmnt_status);
628 FETCH c_aods INTO v_aods_rec;
629 IF c_aods%NOTFOUND THEN
630 CLOSE c_aods;
631 RETURN TRUE;
632 END IF;
633 CLOSE c_aods;
634 IF (v_aods_rec.closed_ind = cst_yes) THEN
635 p_message_name := 'IGS_AD_ADMOFR_DEFER_ST_CLOSED';
636 RETURN FALSE;
637 END IF;
638 -- Return the default value
639 RETURN TRUE;
640 END;
641 EXCEPTION
642 WHEN OTHERS THEN
643 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
644 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aods_closed');
645 IGS_GE_MSG_STACK.ADD;
646 App_Exception.Raise_Exception;
647 END admp_val_aods_closed;
648 --
649 -- Validates adm_offer_dfrmnt_status against adm_offer_resp_status.
650 FUNCTION admp_val_aods_aors(
651 p_s_adm_offer_dfrmnt_status IN VARCHAR2 ,
652 p_old_s_adm_dfrmnt_status IN VARCHAR2 ,
653 p_s_adm_offer_resp_status IN VARCHAR2 ,
654 p_message_name OUT NOCOPY VARCHAR2 )
655 RETURN BOOLEAN AS
656 BEGIN -- admp_val_aods_aors
657 -- This module validates IGS_AD_PS_APPL_INST.adm_offer_dfrmnt_status
658 -- against IGS_AD_PS_APPL_INST.adm_offer_resp_status.
659 -- Validations are:
660 -- * The admission offer deferment status must have a system value
661 -- of not-applicable when the admission offer response status is
662 -- pending, lapsed or not-applicable. (AODS05)
663 -- * The admission offer deferment status cannot be changed from
664 -- not-applicable when the admission offer response status does
665 -- not have a system value of deferral. (AODS06)
666 -- * The admission offer deferment status must not have a system
667 -- value of not-applicable when the admission offer response
668 -- status is deferral. (AODS07, AORS10)
669 DECLARE
670 cst_pending CONSTANT VARCHAR2(10) := 'PENDING';
671 cst_lapsed CONSTANT VARCHAR2(10) := 'LAPSED';
672 cst_not_applic CONSTANT VARCHAR2(10) := 'NOT-APPLIC';
673 cst_deferral CONSTANT VARCHAR2(10) := 'DEFERRAL';
674 BEGIN
675 -- Set the default message number
676 p_message_name := NULL;
677 IF p_s_adm_offer_dfrmnt_status <> cst_not_applic THEN
678 -- Cannot set to values other than not applicable if the
679 -- offer response status is pending, lapsed or not applicable
680 IF p_s_adm_offer_resp_status IN (
681 cst_pending,
682 cst_lapsed,
683 cst_not_applic) THEN
684 p_message_name := 'IGS_AD_OFFER_DFRMNT_STATUS';
685 RETURN FALSE;
686 END IF;
687 -- Cannot change from not applicable if the offer
688 -- response status is not deferral
689 IF p_old_s_adm_dfrmnt_status = cst_not_applic AND
690 p_s_adm_offer_resp_status <> cst_deferral THEN
691 p_message_name := 'IGS_AD_DFRMNT_STATUS_NOT_CHG';
692 RETURN FALSE;
693 END IF;
694 END IF;
695 -- Cannot be not applicable if offer response
696 -- status is deferral.
697 IF p_s_adm_offer_dfrmnt_status = cst_not_applic AND
698 p_s_adm_offer_resp_status = cst_deferral THEN
699 p_message_name := 'IGS_AD_DFRMNT_ST_NOT_APPL';
700 Return FALSE;
701 END IF;
702 -- Return the default value
703 RETURN TRUE;
704 END;
705 EXCEPTION
706 WHEN OTHERS THEN
707 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
708 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aods_aors');
709 IGS_GE_MSG_STACK.ADD;
710 App_Exception.Raise_Exception;
711 END admp_val_aods_aors;
712 --
713 -- Validate the IGS_AD_PS_APPL_INST.late_adm_fee_status.
714 FUNCTION admp_val_acai_lafs(
715 p_late_adm_fee_status IN VARCHAR2 ,
716 p_late_appl_allowed IN VARCHAR2,
717 p_late_fees_required IN VARCHAR2,
718 p_cond_offer_fee_allowed IN VARCHAR2,
719 p_appl_dt IN DATE ,
720 p_course_cd IN VARCHAR2 ,
721 p_crv_version_number IN NUMBER ,
722 p_acad_cal_type IN VARCHAR2 ,
723 p_location_cd IN VARCHAR2 ,
724 p_attendance_mode IN VARCHAR2 ,
725 p_attendance_type IN VARCHAR2 ,
726 p_adm_cal_type IN VARCHAR2 ,
727 p_adm_ci_sequence_number IN NUMBER ,
728 p_admission_cat IN VARCHAR2 ,
729 p_s_admission_process_type IN VARCHAR2 ,
730 p_adm_outcome_status IN VARCHAR2 ,
731 p_adm_cndtnl_offer_status IN VARCHAR2 ,
732 p_message_name OUT NOCOPY VARCHAR2 )
733 RETURN BOOLEAN AS
734 BEGIN -- admp_val_acai_lafs
735 -- Validate the IGS_AD_PS_APPL_INST.late_adm_fee_status.
736 DECLARE
737 v_s_late_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
738 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
739 v_s_adm_cndtnl_offer_status igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE ;
740 v_message_name VARCHAR2(30);
741 BEGIN
742 -- Set the default message number
743 p_message_name := NULL;
744 -- Perform item level validations.
745 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_item (
746 p_late_adm_fee_status,
747 p_late_appl_allowed,
748 v_message_name) THEN
749 p_message_name := v_message_name;
750 RETURN FALSE;
751 END IF;
752 v_s_late_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS (
753 p_late_adm_fee_status);
754 -- Validate against the course offering option details.
755 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_coo (
756 v_s_late_adm_fee_status,
757 p_late_appl_allowed,
758 p_late_fees_required,
759 p_appl_dt,
760 p_course_cd,
761 p_crv_version_number,
762 p_acad_cal_type,
763 p_location_cd,
764 p_attendance_mode,
765 p_attendance_type,
766 p_adm_cal_type,
767 p_adm_ci_sequence_number,
768 p_admission_cat,
769 p_s_admission_process_type,
770 v_message_name) THEN
771 p_message_name := v_message_name;
772 RETURN FALSE;
773 END IF;
774 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (
775 p_adm_outcome_status);
776 v_s_adm_cndtnl_offer_status := IGS_AD_GEN_007.ADMP_GET_SACOS (
777 p_adm_cndtnl_offer_status);
778 -- Validate against the admission outcome status.
779 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_aos (
780 v_s_late_adm_fee_status,
781 v_s_adm_outcome_status,
782 v_s_adm_cndtnl_offer_status,
783 p_cond_offer_fee_allowed,
784 v_message_name) THEN
785 p_message_name := v_message_name;
786 RETURN FALSE;
787 END IF;
788 -- Return the default value
789 RETURN TRUE;
790 END;
791 EXCEPTION
792 WHEN OTHERS THEN
793 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
794 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_lafs');
795 IGS_GE_MSG_STACK.ADD;
796 App_Exception.Raise_Exception;
797 END admp_val_acai_lafs;
798 --
799 -- Validate the IGS_AD_PS_APPL_INST.late_adm_fee_status.
800 FUNCTION admp_val_lafs_item(
801 p_late_adm_fee_status IN VARCHAR2 ,
802 p_late_appl_allowed IN VARCHAR2,
803 p_message_name OUT NOCOPY VARCHAR2 )
804 RETURN BOOLEAN AS
805 BEGIN -- admp_val_lafs_item
806 -- Validate the IGS_AD_PS_APPL_INST.late_adm_fee_status.
807 -- Perform item level validations only.
808 -- Validations are:
809 -- * The late_adm_fee_status must be open. (LAFS01)
810 -- * If late applications are not allowed the late_adm_fee_status
811 -- must have a system value of not-applicable. (LAFS02)
812 DECLARE
813 v_message_name VARCHAR2(30);
814 v_s_late_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
815 BEGIN
816 -- Set the default message number
817 p_message_name := NULL;
818 -- Validate the closed indicator
819 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_afs_closed (
820 p_late_adm_fee_status,
821 v_message_name) THEN
822 p_message_name := v_message_name;
823 RETURN FALSE;
824 END IF;
825 -- Get the late admission fee status system value.
826 v_s_late_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS(
827 p_late_adm_fee_status);
828 -- Validate when late applications are not allowed.
829 IF p_late_appl_allowed = 'N' AND
830 v_s_late_adm_fee_status <> 'NOT-APPLIC' THEN
831 -- If late applications are not allowed the late admission
832 -- fee status must have a value of not-applicable.
833 p_message_name := 'IGS_AD_LATE_ADMFEE_STATUS';
834 RETURN FALSE;
835 END IF;
836 -- Return the default value
837 RETURN TRUE;
838 END;
839 EXCEPTION
840 WHEN OTHERS THEN
841 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
842 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_item');
843 IGS_GE_MSG_STACK.ADD;
844 App_Exception.Raise_Exception;
845 END admp_val_lafs_item;
846 --
847 -- Validate if IGS_AD_FEE_STAT.adm_fee_status is closed.
848 FUNCTION admp_val_afs_closed(
849 p_adm_fee_status IN VARCHAR2 ,
850 p_message_name OUT NOCOPY VARCHAR2 )
851 RETURN BOOLEAN AS
852 BEGIN -- admp_val_afs_closed
853 -- Validate if IGS_AD_FEE_STAT.adm_fee_status is closed
854 DECLARE
855 CURSOR c_afs IS
856 SELECT closed_ind
857 FROM IGS_AD_FEE_STAT
858 WHERE adm_fee_status = p_adm_fee_status;
859 v_closed_ind IGS_AD_FEE_STAT.closed_ind%TYPE;
860 BEGIN
861 -- Set the default message number
862 p_message_name := NULL;
863 -- Cursor handling
864 OPEN c_afs;
865 FETCH c_afs INTO v_closed_ind;
866 IF c_afs%FOUND THEN
867 IF (v_closed_ind = 'Y') THEN
868 CLOSE c_afs;
869 p_message_name := 'IGS_AD_ADMFEE_STATUS_CLOSED';
870 RETURN FALSE;
871 END IF;
872 END IF;
873 -- Return the default value
874 CLOSE c_afs;
875 RETURN TRUE;
876 END;
877 EXCEPTION
878 WHEN OTHERS THEN
879 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
880 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_afs_closed');
881 IGS_GE_MSG_STACK.ADD;
882 App_Exception.Raise_Exception;
883 END admp_val_afs_closed;
884 --
885 -- Validates late_adm_fee_status against the course offering option.
886 FUNCTION admp_val_lafs_coo(
887 p_s_late_adm_fee_status IN VARCHAR2 ,
888 p_late_appl_allowed IN VARCHAR2,
889 p_late_fees_required IN VARCHAR2,
890 p_appl_dt IN DATE ,
891 p_course_cd IN VARCHAR2 ,
892 p_crv_version_number IN NUMBER ,
893 p_acad_cal_type IN VARCHAR2 ,
894 p_location_cd IN VARCHAR2 ,
895 p_attendance_mode IN VARCHAR2 ,
896 p_attendance_type IN VARCHAR2 ,
897 p_adm_cal_type IN VARCHAR2 ,
898 p_adm_ci_sequence_number IN NUMBER ,
899 p_admission_cat IN VARCHAR2 ,
900 p_s_admission_process_type IN VARCHAR2 ,
901 p_message_name OUT NOCOPY VARCHAR2
902 )
903 RETURN BOOLEAN AS
904 BEGIN -- admp_val_lafs_coo
905 -- This module validates the IGS_AD_PS_APPL_INST.late_adm_fee_status
906 -- against the course offering option details of the admission course
907 -- application instance.
908 -- Validations are :
909 -- If late applications are allowed and the application is late and late
910 -- fees are required, then the late_adm_fee_status must not have a system
911 -- value of not-applicable. (LAFS03)
912 DECLARE
913 CURSOR c_coo IS
914 SELECT coo.location_cd,
915 coo.attendance_mode,
916 coo.attendance_type
917 FROM IGS_PS_OFR_OPT coo
918 WHERE coo.course_cd = p_course_cd AND
919 coo.version_number = p_crv_version_number AND
920 coo.cal_type = p_acad_cal_type AND
921 coo.delete_flag = 'N';
922 v_coo_match BOOLEAN DEFAULT TRUE;
923 v_return_flag BOOLEAN DEFAULT FALSE;
924 v_message_name VARCHAR2(30) DEFAULT NULL;
925 BEGIN
926 -- Set the default message number
927 p_message_name := NULL;
928 -- Validate when late applications are allowed and the application is
929 -- late and late fees are required.
930 IF p_late_appl_allowed = 'Y' AND
931 p_late_fees_required = 'Y' THEN
932 v_coo_match := FALSE;
933 FOR v_coo_rec IN c_coo LOOP
934 -- Restrict the course offering options to match on input parameters
935 IF (p_location_cd IS NULL OR
936 v_coo_rec.location_cd = p_location_cd) AND
937 (p_attendance_mode IS NULL OR
938 v_coo_rec.attendance_mode = p_attendance_mode) AND
939 (p_attendance_type IS NULL OR
940 v_coo_rec.attendance_type = p_attendance_type) THEN
941 v_coo_match := TRUE;
942 -- Check if the app[lication is late.
943 IF IGS_AD_VAL_ACAI.admp_val_acai_late(
944 p_appl_dt,
945 p_course_cd,
946 p_crv_version_number,
947 p_acad_cal_type,
948 v_coo_rec.location_cd,
949 v_coo_rec.attendance_mode,
950 v_coo_rec.attendance_type,
951 p_adm_cal_type,
952 p_adm_ci_sequence_number,
953 p_admission_cat,
954 p_s_admission_process_type,
955 p_late_appl_allowed,
956 v_message_name) THEN
957 v_return_flag := TRUE;
958 EXIT;
959 END IF;
960 END IF;
961 END LOOP;
962 IF v_return_flag THEN
963 RETURN TRUE;
964 END IF;
965 -- Check if any course offering options were validated.
966 -- If they were, and this point is reached, then the
967 -- admission course application instance must be late.
968 IF v_coo_match THEN
969 IF p_s_late_adm_fee_status = 'NOT-APPLIC' THEN
970 -- The late admission fee status must have a value
971 -- other than not-applicable for a late application
972 -- that requires late fees.
973 p_message_name := 'IGS_AD_LATE_ADMFEE';
974 RETURN FALSE;
975 END IF;
976 END IF;
977 END IF;
978 -- Return the default value
979 RETURN TRUE;
980 EXCEPTION
981 WHEN OTHERS THEN
982 IF c_coo%ISOPEN THEN
983 CLOSE c_coo;
984 END IF;
985 RAISE;
986 END;
987 EXCEPTION
988 WHEN OTHERS THEN
989 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
990 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_coo');
991 IGS_GE_MSG_STACK.ADD;
992 App_Exception.Raise_Exception;
993 END admp_val_lafs_coo;
994 --
995 -- Validates late_adm_fee_status against adm_outcome_status.
996 FUNCTION admp_val_lafs_aos(
997 p_s_late_adm_fee_status IN VARCHAR2 ,
998 p_s_adm_outcome_status IN VARCHAR2 ,
999 p_s_adm_cndtnl_offer_status IN VARCHAR2 ,
1000 p_cond_offer_fee_allowed IN VARCHAR2,
1001 p_message_name OUT NOCOPY VARCHAR2 )
1002 RETURN BOOLEAN AS
1003 BEGIN -- admp_val_lafs_aos
1004 -- This module validates IGS_AD_PS_APPL_INST.adm_late_fee_status
1005 -- against IGS_AD_PS_APPL_INST.adm_outcome_status.
1006 -- Validations are:
1007 -- * The late admission fee status cannot be pending
1008 -- if an offer has been made. (LAFS04)
1009 -- * An offer cannot be made if late fees have been
1010 -- assessed but not received in total. (LAFS05)
1011 -- * Fees cannot be outstanding for a satisfied conditional offer.
1012 DECLARE
1013 BEGIN
1014 -- Set the default message number
1015 p_message_name := 0;
1016 -- Validate when late fees are pending and an offer has been made.
1017 -- Cannot be determining late fees if an offer has been made.
1018 IF p_s_late_adm_fee_status = 'PENDING' AND
1019 p_s_adm_outcome_status IN (
1020 'OFFER',
1021 'COND-OFFER',
1022 'WITHDRAWN',
1023 'VOIDED') THEN
1024 p_message_name := 'IGS_AD_LATE_ADMFEE_NOTPENDING';
1025 RETURN FALSE;
1026 END IF;
1027 -- Validate when late fees are assessed and an offer is being made.
1028 IF p_s_late_adm_fee_status = 'ASSESSED' THEN
1029 -- Cannot make an offer if late fees have been assessed but not
1030 -- received in total.
1031 IF p_s_adm_outcome_status = 'OFFER' THEN
1032 p_message_name := 'IGS_AD_OFFER_CANNOT_MADE';
1033 RETURN FALSE;
1034 END IF;
1035 IF p_s_adm_outcome_status = 'COND-OFFER' AND
1036 p_cond_offer_fee_allowed = 'N' THEN
1037 p_message_name := 'IGS_AD_LATEFEE_CANNOT_ASSESS';
1038 RETURN FALSE;
1039 END IF;
1040 -- Cannot have outstanding fees for a conditional offer
1041 -- that has been satisfied
1042 IF p_s_adm_outcome_status = 'COND-OFFER' AND
1043 p_s_adm_cndtnl_offer_status = 'SATISFIED' THEN
1044 p_message_name := 'IGS_AD_FEE_CANNOT_BE_OUTSTAND';
1045 RETURN FALSE;
1046 END IF;
1047 END IF;
1048 -- Return the default value
1049 RETURN TRUE;
1050 END;
1051 EXCEPTION
1052 WHEN OTHERS THEN
1053 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1054 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_aos');
1055 IGS_GE_MSG_STACK.ADD;
1056 App_Exception.Raise_Exception;
1057 END admp_val_lafs_aos;
1058 --
1059 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_resp_status.
1060 FUNCTION admp_val_acai_aors(
1061 p_person_id IN NUMBER ,
1062 p_admission_appl_number IN NUMBER ,
1063 p_nominated_course_cd IN VARCHAR2 ,
1064 p_acai_sequence_number IN NUMBER ,
1065 p_course_cd IN VARCHAR2 ,
1066 p_adm_offer_resp_status IN VARCHAR2 ,
1067 p_old_adm_offer_resp_status IN VARCHAR2 ,
1068 p_adm_outcome_status IN VARCHAR2 ,
1069 p_adm_offer_dfrmnt_status IN VARCHAR2 ,
1070 p_old_adm_offer_dfrmnt_status IN VARCHAR2 ,
1071 p_adm_outcome_status_auth_dt IN DATE ,
1072 p_actual_response_dt IN DATE ,
1073 p_adm_cal_type IN VARCHAR2 ,
1074 p_adm_ci_sequence_number IN NUMBER ,
1075 p_admission_cat IN VARCHAR2 ,
1076 p_s_admission_process_type IN VARCHAR2 ,
1077 p_deferral_allowed IN VARCHAR2,
1078 p_multi_offer_allowed IN VARCHAR2,
1079 p_multi_offer_limit IN NUMBER ,
1080 p_pre_enrol_step IN VARCHAR2 ,
1081 p_cndtnl_off_must_be_stsfd_ind IN VARCHAR2,
1082 p_cndtnl_offer_satisfied_dt IN DATE ,
1083 p_called_from IN VARCHAR2 ,
1084 p_message_name OUT NOCOPY VARCHAR2,
1085 p_decline_ofr_reason IN VARCHAR2, -- IGSM
1086 p_attent_other_inst_cd IN VARCHAR2 -- igsm
1087 )
1088 RETURN BOOLEAN AS
1089 BEGIN -- admp_val_acai_aors
1090 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_resp_status.
1091 DECLARE
1092 cst_accepted CONSTANT VARCHAR2(10) := 'ACCEPTED';
1093 cst_form CONSTANT VARCHAR2(5) := 'FORM';
1094 cst_trg_br CONSTANT VARCHAR2(7) := 'TRG_BR';
1095 cst_trg_as CONSTANT VARCHAR2(7) := 'TRG_AS';
1096 cst_notcoming CONSTANT VARCHAR2(10) := 'NOT-COMING';
1097 cst_rejected CONSTANT VARCHAR2(10) := 'REJECTED';
1098 cst_otherinst CONSTANT VARCHAR2(10) := 'OTHER-INST';
1099 v_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
1100 v_old_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
1101 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
1102 v_s_adm_offer_dfrmnt_status igs_ad_ofrdfrmt_stat.s_adm_offer_dfrmnt_status%TYPE;
1103 v_old_s_adm_dfrmnt_status igs_ad_ofrdfrmt_stat.s_adm_offer_dfrmnt_status%TYPE;
1104 v_message_name VARCHAR2(30);
1105
1106 BEGIN
1107 -- Set the default message number
1108 p_message_name := NULL;
1109 IF (p_called_from IN (cst_form, cst_trg_br)) THEN
1110 -- Perform item level validations.
1111 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aors_item (
1112 p_person_id,
1113 p_admission_appl_number,
1114 p_nominated_course_cd,
1115 p_acai_sequence_number,
1116 p_course_cd,
1117 p_adm_offer_resp_status,
1118 p_actual_response_dt,
1119 p_s_admission_process_type,
1120 p_deferral_allowed,
1121 p_pre_enrol_step,
1122 v_message_name,
1123 p_decline_ofr_reason,
1124 p_attent_other_inst_cd ) THEN
1125 p_message_name := v_message_name;
1126 RETURN FALSE;
1127 END IF;
1128
1129 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS (
1130 p_adm_offer_resp_status);
1131 v_old_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS (
1132 p_old_adm_offer_resp_status);
1133 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (
1134 p_adm_outcome_status);
1135
1136 IF v_s_adm_offer_resp_status IN (cst_notcoming, cst_rejected) AND p_decline_ofr_reason IS NULL THEN --arvsrini igsm
1137 p_message_name := 'IGS_AD_ADMOFR_WITH_REAS';
1138 RETURN FALSE;
1139 END IF;
1140
1141 IF p_decline_ofr_reason = cst_otherinst AND p_attent_other_inst_cd IS NULL THEN --arvsrini igsm
1142 p_message_name := 'IGS_AD_NO_OTH_INST';
1143 RETURN FALSE;
1144 END IF;
1145
1146
1147 -- Validate against the admission outcome status.
1148 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aors_aos (
1149 v_s_adm_offer_resp_status,
1150 v_old_s_adm_offer_resp_status,
1151 v_s_adm_outcome_status,
1152 p_adm_outcome_status_auth_dt,
1153 v_message_name) THEN
1154 p_message_name := v_message_name;
1155 RETURN FALSE;
1156 END IF;
1157 v_s_adm_offer_dfrmnt_status := IGS_AD_GEN_008.ADMP_GET_SAODS (
1158 p_adm_offer_dfrmnt_status);
1159 v_old_s_adm_dfrmnt_status := IGS_AD_GEN_008.ADMP_GET_SAODS (
1160 p_old_adm_offer_dfrmnt_status);
1161 -- Validate against the admission offer deferment status.
1162 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_aods_aors (
1163 v_s_adm_offer_dfrmnt_status,
1164 v_old_s_adm_dfrmnt_status,
1165 v_s_adm_offer_resp_status,
1166 v_message_name) THEN
1167 p_message_name := v_message_name;
1168 RETURN FALSE;
1169 END IF;
1170 -- Validate a conditional offer that must be satisfied before
1171 -- it can be accepted.
1172 IF v_s_adm_offer_resp_status = cst_accepted AND
1173 p_cndtnl_off_must_be_stsfd_ind = 'Y' AND
1174 p_cndtnl_offer_satisfied_dt IS NULL THEN
1175 p_message_name := 'IGS_AD_CONDOFR_ACCEPTED';
1176 RETURN FALSE;
1177 END IF;
1178 END IF;
1179 -- Perform the following validations when the module has been called from the
1180 -- Form or from the after statement database trigger.
1181 IF (p_called_from IN (cst_form, cst_trg_as)) THEN
1182 -- Determine the system admission outcome status and system admission
1183 -- offer response status. Will have already been determined if
1184 -- called from FORM.
1185 IF p_called_from = cst_trg_as THEN
1186 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (p_adm_outcome_status);
1187 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS (p_adm_offer_resp_status);
1188 END IF;
1189 -- Validate multiple offers.
1190 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_offer_mult (
1191 p_person_id,
1192 p_admission_appl_number,
1193 p_nominated_course_cd,
1194 p_acai_sequence_number,
1195 p_course_cd,
1196 v_s_adm_outcome_status,
1197 v_s_adm_offer_resp_status,
1198 p_adm_cal_type,
1199 p_adm_ci_sequence_number,
1200 p_admission_cat,
1201 p_s_admission_process_type,
1202 p_multi_offer_allowed,
1203 p_multi_offer_limit,
1204 p_message_name) THEN
1205 RETURN FALSE;
1206 END IF;
1207 END IF;
1208 RETURN TRUE;
1209 END;
1210 EXCEPTION
1211 WHEN OTHERS THEN
1212 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1213 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_aors');
1214 IGS_GE_MSG_STACK.ADD;
1215 App_Exception.Raise_Exception;
1216 END admp_val_acai_aors;
1217 --
1218 -- Validate the IGS_AD_PS_APPL_INST.adm_offer_resp_status.
1219 FUNCTION admp_val_aors_item(
1220 p_person_id IN NUMBER ,
1221 p_admission_appl_number IN NUMBER ,
1222 p_nominated_course_cd IN VARCHAR2 ,
1223 p_acai_sequence_number IN NUMBER ,
1224 p_course_cd IN VARCHAR2 ,
1225 p_adm_offer_resp_status IN VARCHAR2 ,
1226 p_actual_response_dt IN DATE ,
1227 p_s_admission_process_type IN VARCHAR2 ,
1228 p_deferral_allowed IN VARCHAR2 ,
1229 p_pre_enrol_step IN VARCHAR2,
1230 p_message_name OUT NOCOPY VARCHAR2,
1231 p_decline_ofr_reason IN VARCHAR2,
1232 p_attent_other_inst_cd IN VARCHAR2
1233
1234 )
1235 RETURN BOOLEAN AS
1236 BEGIN -- admp_val_aors_item
1237 -- This module validates the IGS_AD_PS_APPL_INST.adm_offer_resp_status.
1238 -- Perform item level validations only.
1239 -- Validations are:
1240 -- * The adm_offer_resp_status must be open. (AORS01)
1241 -- * The admission offer response status cannot be set to pending for
1242 -- a re-admission application. (AORS02)
1243 -- * The admission offer response status cannot be set to pending when
1244 -- the applicant has already responded. (AORS06)
1245 -- * The admission offer response status cannot be set to rejected when
1246 -- the applicant has confirmed their course attempt. (AORS08)
1247 -- * If the deferment is not allowed for the admission application, then
1248 -- the admission offer response status cannot be set to deferral. (AORS05)
1249 -- * If the admission application is re-admission, course transfer or
1250 -- non-Award, then the admission offer response status cannot be set
1251 -- to deferral. (AORS04)
1252 -- * The admission offer response status cannot be set to deferral when
1253 -- the applicant has confirmed their course attempt. (AORS09)
1254 -- * The admission offer response status cannot be set to lapsed for a
1255 -- re-admission application. (AORS03)
1256 -- * The admission offer response status cannot be set to lapsed when the
1257 -- applicant has already responded. (AORS07)
1258 -- * The admission offer response status cannot be set to accepted if the
1259 -- admission course application is a transfer and IGS_PS_STDNT_TRN
1260 -- details do not exist. (AORS17)
1261 -- (these are created via ENRF4150 ? course Transfer)
1262 DECLARE
1263 CURSOR c_sca_conf IS
1264 SELECT sca.course_attempt_status
1265 FROM IGS_EN_STDNT_PS_ATT sca
1266 WHERE sca.person_id = p_person_id AND
1267 sca.course_cd = p_course_cd AND
1268 sca.adm_admission_appl_number IS NOT NULL AND
1269 sca.adm_admission_appl_number = p_admission_appl_number AND
1270 sca.adm_nominated_course_cd IS NOT NULL AND
1271 sca.adm_nominated_course_cd = p_nominated_course_cd AND
1272 sca.adm_sequence_number IS NOT NULL AND
1273 sca.adm_sequence_number = p_acai_sequence_number AND
1274 sca.student_confirmed_ind = 'Y';
1275 v_sca_conf_rec c_sca_conf%ROWTYPE;
1276 v_message_name VARCHAR2(30);
1277 v_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
1278 cst_pending CONSTANT VARCHAR2(10) := 'PENDING';
1279 cst_readmit CONSTANT VARCHAR2(10) := 'RE-ADMIT';
1280 cst_rejected CONSTANT VARCHAR2(10) := 'REJECTED';
1281 cst_discontin CONSTANT VARCHAR2(10) := 'DISCONTIN';
1282 cst_lapsed CONSTANT VARCHAR2(10) := 'LAPSED';
1283 cst_transfer CONSTANT VARCHAR2(10) := 'TRANSFER';
1284 cst_nonaward CONSTANT VARCHAR2(10) := 'NON-AWARD';
1285 cst_deferral CONSTANT VARCHAR2(10) := 'DEFERRAL';
1286 cst_accepted CONSTANT VARCHAR2(10) := 'ACCEPTED';
1287 BEGIN
1288 -- Set the default message number
1289 p_message_name := NULL;
1290 -- Validate the closed indicator.
1291 IF IGS_AD_VAL_ACAI_STATUS.admp_val_aors_closed (
1292 p_adm_offer_resp_status,
1293 v_message_name) = FALSE THEN
1294 p_message_name := v_message_name;
1295 RETURN FALSE;
1296 END IF;
1297 -- Validate each value of offer response status.
1298 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS(
1299 p_adm_offer_resp_status);
1300 IF v_s_adm_offer_resp_status = cst_pending THEN
1301 -- Re-admission only has accepted or rejected response status.
1302 IF p_s_admission_process_type = cst_readmit THEN
1303 p_message_name := 'IGS_AD_ADMOFR_READM_APPL';
1304 RETURN FALSE;
1305 END IF;
1306 -- Cannot set to pending if a response has been given
1307 -- (this is recognised by the actual response date being set).
1308 IF p_actual_response_dt IS NOT NULL THEN
1309 p_message_name := 'IGS_AD_ADMOFR_RESPONDED';
1310 RETURN FALSE;
1311 END IF;
1312 END IF;
1313
1314 /*
1315 IF v_s_adm_offer_resp_status = cst_rejected THEN
1316 -- Can only reject if applicant has not already enrolled
1317 OPEN c_sca_conf;
1318 FETCH c_sca_conf INTO v_sca_conf_rec;
1319 IF c_sca_conf%FOUND THEN
1320 CLOSE c_sca_conf;
1321 IF p_s_admission_process_type = cst_readmit THEN
1322 IF v_sca_conf_rec.course_attempt_status NOT IN (
1323 cst_discontin,
1324 cst_lapsed) THEN
1325 p_message_name := 'IGS_AD_ADMOFR_NOT_SET_REJECT' ;
1326 RETURN FALSE;
1327 END IF;
1328 ELSE
1329 p_message_name := 'IGS_AD_ADMOFR_NOT_SET_REJECT';
1330 RETURN FALSE;
1331 END IF;
1332 ELSE -- %NOTFOUND
1333 CLOSE c_sca_conf;
1334 END IF;
1335 END IF;
1336 */
1337 IF v_s_adm_offer_resp_status = cst_deferral THEN
1338 IF p_deferral_allowed = 'N' THEN
1339 -- deferment not allowed
1340 p_message_name := 'IGS_AD_DFRMNT_NOT_ALLOW_ADM';
1341 RETURN FALSE;
1342 END IF;
1343 -- Can only defer if process types are course or SHORT-ADM
1344 IF p_s_admission_process_type IN (
1345 cst_readmit,
1346 cst_transfer,
1347 cst_nonaward) THEN
1348 p_message_name := 'IGS_AD_DFRMNT_NOT_APPLI_READM';
1349 RETURN FALSE;
1350 END IF;
1351
1352 /*
1353 -- Can only defer if the applicant has not already enrolled
1354 -- (NOTE, can use same cursor as With rejected)
1355 OPEN c_sca_conf;
1356 FETCH c_sca_conf INTO v_sca_conf_rec;
1357 IF c_sca_conf%FOUND THEN
1358 CLOSE c_sca_conf;
1359 p_message_name := 'IGS_AD_OFRST_NOTSET_DEFERRAL';
1360 RETURN FALSE;
1361 END IF;
1362 CLOSE c_sca_conf;
1363 */
1364 END IF;
1365 IF v_s_adm_offer_resp_status = cst_lapsed THEN
1366 -- Re-admission only has accepted or rejected response status
1367 IF p_s_admission_process_type = cst_readmit THEN
1368 p_message_name := 'IGS_AD_OFRST_NOTSET_LAPSED';
1369 RETURN FALSE;
1370 END IF;
1371 -- Can only set to lapsed if pending or lapsed (lapsing
1372 -- is done by a background process)
1373 -- This is recognised by the setting of the actual response date
1374 IF p_actual_response_dt IS NOT NULL THEN
1375 p_message_name := 'IGS_AD_OFRST_NOTSET_RESPONDED';
1376 RETURN FALSE;
1377 END IF;
1378 END IF;
1379 IF v_s_adm_offer_resp_status = cst_accepted THEN
1380 -- Can only accept admission application for transfer if
1381 -- IGS_PS_STDNT_TRN details exist
1382 IF p_s_admission_process_type = cst_transfer THEN
1383 IF IGS_EN_VAL_SCA.enrp_val_trnsfr_acpt(
1384 p_person_id,
1385 p_course_cd,
1386 NULL, -- student confirmed ind
1387 p_admission_appl_number,
1388 p_nominated_course_cd,
1389 p_adm_offer_resp_status,
1390 v_message_name) = FALSE THEN
1391 p_message_name := v_message_name;
1392 RETURN FALSE;
1393 END IF;
1394 END IF;
1395 END IF;
1396
1397
1398
1399 -- Return the default value
1400 RETURN TRUE;
1401 EXCEPTION
1402 WHEN OTHERS THEN
1403 IF c_sca_conf%ISOPEN THEN
1404 CLOSE c_sca_conf;
1405 END IF;
1406 RAISE;
1407 END;
1408 EXCEPTION
1409 WHEN OTHERS THEN
1410 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1411 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aors_item');
1412 IGS_GE_MSG_STACK.ADD;
1413 App_Exception.Raise_Exception;
1414 END admp_val_aors_item;
1415 --
1416 -- Validate if IGS_AD_OFR_RESP_STAT.adm_offer_resp_status is closed.
1417 FUNCTION admp_val_aors_closed(
1418 p_adm_offer_resp_status IN VARCHAR2 ,
1419 p_message_name OUT NOCOPY VARCHAR2 )
1420 RETURN BOOLEAN AS
1421 BEGIN
1422 DECLARE
1423 v_closed_ind IGS_AD_OFR_RESP_STAT.closed_ind%TYPE;
1424 CURSOR c_aors IS
1425 SELECT aors.closed_ind
1426 FROM IGS_AD_OFR_RESP_STAT aors
1427 WHERE aors.adm_offer_resp_status = p_adm_offer_resp_status;
1428 BEGIN
1429 -- Validate if IGS_AD_OFR_RESP_STAT.adm_offer_resp_status is closed.
1430 OPEN c_aors;
1431 FETCH c_aors INTO v_closed_ind;
1432 IF (c_aors%FOUND) THEN
1433 IF (v_closed_ind = 'Y') THEN
1434 CLOSE c_aors;
1435 p_message_name := 'IGS_AD_ADMOFR_RESP_ST_CLOSED';
1436 RETURN FALSE;
1437 END IF;
1438 END IF;
1439 CLOSE c_aors;
1440 p_message_name := NULL;
1441 RETURN TRUE;
1442 EXCEPTION
1443 WHEN OTHERS THEN
1444 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1445 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aors_closed');
1446 IGS_GE_MSG_STACK.ADD;
1447 App_Exception.Raise_Exception;
1448 END;
1449 END admp_val_aors_closed;
1450 --
1451 -- Validates adm_offer_resp_status against adm_outcome_status.
1452 FUNCTION admp_val_aors_aos(
1453 p_s_adm_offer_resp_status IN VARCHAR2 ,
1454 p_old_s_adm_offer_resp_status IN VARCHAR2 ,
1455 p_s_adm_outcome_status IN VARCHAR2 ,
1456 p_adm_outcome_status_auth_dt IN DATE ,
1457 p_message_name OUT NOCOPY VARCHAR2 )
1458 RETURN BOOLEAN AS
1459 BEGIN -- admp_val_aors_aos
1460 -- This module validates the IGS_AD_PS_APPL_INST.adm_offer_resp_status
1461 -- against IGS_AD_PS_APPL_INST.adm_outcome_status.
1462 -- Validations are:
1463 -- ? The admission offer response status cannot be pending if an offer
1464 -- has not been made. (AORS11)
1465 -- ? The admission offer response status cannot be accepted, rejected
1466 -- or deferral unless an offer has been made. (AORS12)
1467 -- ? The admission offer response status cannot be changed to accepted,
1468 -- rejected or deferral from lapsed unless overriding of status
1469 -- validation is permitted. (AORS13)
1470 -- ? The admission offer response cannot be lapsed unless an offer has
1471 -- been made. (AORS14)
1472 -- ? The admission offer response cannot be not-applicable when an offer
1473 -- has been made. (AORS15)
1474 DECLARE
1475 cst_pending CONSTANT VARCHAR2(10) := 'PENDING';
1476 cst_rejected CONSTANT VARCHAR2(10) := 'REJECTED';
1477 cst_no_quota CONSTANT VARCHAR2(10) := 'NO-QUOTA';
1478 cst_accepted CONSTANT VARCHAR2(10) := 'ACCEPTED';
1479 cst_offer CONSTANT VARCHAR2(10) := 'OFFER';
1480 cst_cond_offer CONSTANT VARCHAR2(10) := 'COND-OFFER';
1481 cst_withdrawn CONSTANT VARCHAR2(10) := 'WITHDRAWN';
1482 cst_voided CONSTANT VARCHAR2(10) := 'VOIDED';
1483 cst_deferral CONSTANT VARCHAR2(10) := 'DEFERRAL';
1484 cst_lapsed CONSTANT VARCHAR2(10) := 'LAPSED';
1485 cst_not_applic CONSTANT VARCHAR2(10) := 'NOT-APPLIC';
1486 BEGIN
1487 -- Set the default message number
1488 p_message_name := NULL;
1489 -- Cannot be pending without having made an offer
1490 IF p_s_adm_offer_resp_status = cst_pending AND
1491 p_s_adm_outcome_status IN (
1492 cst_pending,
1493 cst_rejected,
1494 cst_no_quota) THEN
1495 p_message_name := 'IGS_AD_OFRST_NOTPENDING';
1496 RETURN FALSE;
1497 END IF;
1498 IF p_s_adm_offer_resp_status IN (
1499 cst_accepted,
1500 cst_rejected,
1501 cst_deferral) THEN
1502 -- Cannot have an offer response if not being made an offer
1503 IF p_s_adm_outcome_status NOT IN (
1504 cst_offer,
1505 cst_cond_offer,
1506 cst_withdrawn,
1507 cst_voided) THEN
1508 p_message_name := 'IGS_AD_OFRST_NOTACCEPTED';
1509 RETURN FALSE;
1510 END IF;
1511
1512 END IF;
1513 -- Cannot lapse if offer has not been made
1514 IF p_s_adm_offer_resp_status = cst_lapsed AND
1515 p_s_adm_outcome_status NOT IN (
1516 cst_offer,
1517 cst_cond_offer,
1518 cst_withdrawn,
1519 cst_voided) THEN
1520 p_message_name := 'IGS_AD_OFR_RESP_NOTLAPSED';
1521 RETURN FALSE;
1522 END IF;
1523 -- Cannot be not applicable if offer is being made
1524 IF p_s_adm_offer_resp_status = cst_not_applic AND
1525 p_s_adm_outcome_status IN (
1526 cst_offer,
1527 cst_cond_offer) THEN
1528 p_message_name := 'IGS_AD_OFR_RESP_NOTAPPLICABLE';
1529 RETURN FALSE;
1530 END IF;
1531 -- Return the default value
1532 RETURN TRUE;
1533 END;
1534 EXCEPTION
1535 WHEN OTHERS THEN
1536 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1537 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aors_aos');
1538 IGS_GE_MSG_STACK.ADD;
1539 App_Exception.Raise_Exception;
1540 END admp_val_aors_aos;
1541 --
1542 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status.
1543 FUNCTION admp_val_acai_aos(
1544 p_person_id IN NUMBER ,
1545 p_admission_appl_number IN NUMBER ,
1546 p_nominated_course_cd IN VARCHAR2 ,
1547 p_acai_sequence_number IN NUMBER ,
1548 p_course_cd IN VARCHAR2 ,
1549 p_crv_version_number IN NUMBER ,
1550 p_location_cd IN VARCHAR2 ,
1551 p_attendance_mode IN VARCHAR2 ,
1552 p_attendance_type IN VARCHAR2 ,
1553 p_unit_set_cd IN VARCHAR2 ,
1554 p_us_version_number IN NUMBER ,
1555 p_acad_cal_type IN VARCHAR2 ,
1556 p_acad_ci_sequence_number IN NUMBER ,
1557 p_adm_cal_type IN VARCHAR2 ,
1558 p_adm_ci_sequence_number IN NUMBER ,
1559 p_admission_cat IN VARCHAR2 ,
1560 p_s_admission_process_type IN VARCHAR2 ,
1561 p_appl_dt IN DATE ,
1562 p_fee_cat IN VARCHAR2 ,
1563 p_correspondence_cat IN VARCHAR2 ,
1564 p_enrolment_cat IN VARCHAR2 ,
1565 p_adm_outcome_status IN VARCHAR2 ,
1566 p_old_adm_outcome_status IN VARCHAR2 ,
1567 p_adm_doc_status IN VARCHAR2 ,
1568 p_adm_fee_status IN VARCHAR2 ,
1569 p_late_adm_fee_status IN VARCHAR2 ,
1570 p_adm_cndtnl_offer_status IN VARCHAR2 ,
1571 p_adm_entry_qual_status IN VARCHAR2 ,
1572 p_adm_offer_resp_status IN VARCHAR2 ,
1573 p_old_adm_offer_resp_status IN VARCHAR2 ,
1574 p_adm_outcome_status_auth_dt IN DATE ,
1575 p_set_outcome_allowed IN VARCHAR2 ,
1576 p_cond_offer_assess_allowed IN VARCHAR2,
1577 p_cond_offer_fee_allowed IN VARCHAR2 ,
1578 p_cond_offer_doc_allowed IN VARCHAR2,
1579 p_late_appl_allowed IN VARCHAR2 ,
1580 p_fees_required IN VARCHAR2 ,
1581 p_multi_offer_allowed IN VARCHAR2 ,
1582 p_multi_offer_limit IN NUMBER ,
1583 p_pref_allowed IN VARCHAR2,
1584 p_unit_set_appl IN VARCHAR2,
1585 p_check_person_encumb IN VARCHAR2,
1586 p_check_course_encumb IN VARCHAR2,
1587 p_called_from IN VARCHAR2 ,
1588 p_message_name OUT NOCOPY VARCHAR2 )
1589 RETURN BOOLEAN AS
1590 BEGIN -- admp_val_acai_aos
1591 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status
1592 DECLARE
1593 cst_form CONSTANT VARCHAR2(6) := 'FORM';
1594 cst_trg_br CONSTANT VARCHAR2(6) := 'TRG_BR';
1595 cst_trg_as CONSTANT VARCHAR2(6) := 'TRG_AS';
1596 v_message_name VARCHAR2(30);
1597 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
1598 v_old_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
1599 v_s_adm_doc_status igs_ad_doc_stat.s_adm_doc_status%TYPE;
1600 v_s_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
1601 v_late_s_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
1602 v_s_adm_entry_qual_status igs_ad_ent_qf_stat.s_adm_entry_qual_status%TYPE;
1603 v_s_adm_cndtnl_offer_status igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE;
1604 v_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
1605 v_old_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
1606 BEGIN
1607 -- Perform the following validations when the module has been called
1608 -- from the form or from the before row database trigger
1609 IF (p_called_from IN (
1610 cst_form,
1611 cst_trg_br)) THEN
1612 -- Perform item level validations
1613 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_aos_item(
1614 p_adm_outcome_status,
1615 p_old_adm_outcome_status,
1616 p_adm_fee_status,
1617 p_set_outcome_allowed,
1618 p_cond_offer_assess_allowed,
1619 p_cond_offer_fee_allowed,
1620 p_cond_offer_doc_allowed,
1621 p_person_id,
1622 p_admission_appl_number,
1623 p_nominated_course_cd,
1624 p_acai_sequence_number,
1625 v_message_name) = FALSE) THEN
1626 p_message_name := v_message_name;
1627 RETURN FALSE;
1628 END IF;
1629 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(p_adm_outcome_status);
1630 v_old_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(p_old_adm_outcome_status);
1631 v_s_adm_doc_status := IGS_AD_GEN_007.ADMP_GET_SADS(p_adm_doc_status);
1632 v_s_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS(p_adm_fee_status);
1633 v_late_s_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS(p_late_adm_fee_status);
1634 -- Validate against the other admission course
1635 -- application instance status values
1636 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_aos_status(
1637 v_s_adm_outcome_status,
1638 v_old_s_adm_outcome_status,
1639 v_s_adm_doc_status,
1640 v_s_adm_fee_status,
1641 v_late_s_adm_fee_status,
1642 p_cond_offer_assess_allowed,
1643 p_cond_offer_fee_allowed,
1644 p_cond_offer_doc_allowed,
1645 p_late_appl_allowed,
1646 p_fees_required,
1647 v_message_name) = FALSE) THEN
1648 p_message_name := v_message_name;
1649 RETURN FALSE;
1650 END IF;
1651 v_s_adm_entry_qual_status := IGS_AD_GEN_007.ADMP_GET_SAEQS(p_adm_entry_qual_status);
1652 -- Validate the admission outcome status against
1653 -- the admission entry qualification status
1654 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_aeqs_aos(
1655 v_s_adm_entry_qual_status,
1656 v_s_adm_outcome_status,
1657 v_message_name) = FALSE) THEN
1658 p_message_name := v_message_name;
1659 RETURN FALSE;
1660 END IF;
1661 v_s_adm_cndtnl_offer_status := IGS_AD_GEN_007.ADMP_GET_SACOS(p_adm_cndtnl_offer_status);
1662 -- Validate the admission outcome status
1663 -- against the admission documentation status
1664 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_ads_aos(
1665 v_s_adm_doc_status,
1666 v_s_adm_outcome_status,
1667 v_s_adm_cndtnl_offer_status,
1668 p_cond_offer_doc_allowed,
1669 v_message_name) = FALSE) THEN
1670 p_message_name := v_message_name;
1671 RETURN FALSE;
1672 END IF;
1673 -- Validate the admission outcome status
1674 -- against the late admission fee status
1675 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_lafs_aos(
1676 v_late_s_adm_fee_status,
1677 v_s_adm_outcome_status,
1678 v_s_adm_cndtnl_offer_status,
1679 p_cond_offer_fee_allowed,
1680 v_message_name) = FALSE) THEN
1681 p_message_name := v_message_name;
1682 RETURN FALSE;
1683 END IF;
1684 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS(p_adm_offer_resp_status);
1685 v_old_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS(p_old_adm_offer_resp_status);
1686 -- Validate the admission outcome status against
1687 -- the admission offer response status
1688 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_aors_aos(
1689 v_s_adm_offer_resp_status,
1690 v_old_s_adm_offer_resp_status,
1691 v_s_adm_outcome_status,
1692 p_adm_outcome_status_auth_dt,
1693 v_message_name) = FALSE) THEN
1694 p_message_name := v_message_name;
1695 RETURN FALSE;
1696 END IF;
1697 END IF;
1698 IF (p_called_from IN (
1699 cst_form,
1700 cst_trg_as)) THEN
1701 -- Determine the system admission outcome status and system admission offer
1702 -- response status.
1703 -- If called from Form then this will have already been determined.
1704 IF p_called_from = cst_trg_as THEN
1705 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(p_adm_outcome_status);
1706 v_s_adm_offer_resp_status := IGS_AD_GEN_008.ADMP_GET_SAORS(p_adm_offer_resp_status);
1707 END IF;
1708 -- Validate the admission course application instance outcome
1709 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_acai_otcome(
1710 p_person_id,
1711 p_admission_appl_number,
1712 p_nominated_course_cd,
1713 p_acai_sequence_number,
1714 p_course_cd,
1715 p_crv_version_number,
1716 p_location_cd,
1717 p_attendance_mode,
1718 p_attendance_type,
1719 p_unit_set_cd,
1720 p_us_version_number,
1721 p_acad_cal_type,
1722 p_acad_ci_sequence_number,
1723 p_adm_cal_type,
1724 p_adm_ci_sequence_number,
1725 p_admission_cat,
1726 p_s_admission_process_type,
1727 p_appl_dt,
1728 p_fee_cat,
1729 p_correspondence_cat,
1730 p_enrolment_cat,
1731 v_s_adm_outcome_status,
1732 p_adm_outcome_status_auth_dt,
1733 p_check_person_encumb,
1734 p_check_course_encumb,
1735 p_pref_allowed,
1736 p_late_appl_allowed,
1737 p_unit_set_appl,
1738 p_called_from,
1739 v_message_name) = FALSE) THEN
1740 p_message_name := v_message_name;
1741 RETURN FALSE;
1742 END IF;
1743 -- Validate multiple offers
1744 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_offer_mult(
1745 p_person_id,
1746 p_admission_appl_number,
1747 p_nominated_course_cd,
1748 p_acai_sequence_number,
1749 p_course_cd,
1750 v_s_adm_outcome_status,
1751 v_s_adm_offer_resp_status,
1752 p_adm_cal_type,
1753 p_adm_ci_sequence_number,
1754 p_admission_cat,
1755 p_s_admission_process_type,
1756 p_multi_offer_allowed,
1757 p_multi_offer_limit,
1758 v_message_name) = FALSE) THEN
1759 p_message_name := v_message_name;
1760 RETURN FALSE;
1761 END IF;
1762 END IF;
1763 p_message_name := NULL;
1764 RETURN TRUE;
1765 END;
1766 EXCEPTION
1767 WHEN OTHERS THEN
1768 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1769 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_aos');
1770 IGS_GE_MSG_STACK.ADD;
1771 App_Exception.Raise_Exception;
1772 END admp_val_acai_aos;
1773 --
1774 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status.
1775 FUNCTION admp_val_aos_item(
1776 p_adm_outcome_status IN VARCHAR2 ,
1777 p_old_adm_outcome_status IN VARCHAR2 ,
1778 p_adm_fee_status IN VARCHAR2 ,
1779 p_set_outcome_allowed IN VARCHAR2 ,
1780 p_cond_offer_assess_allowed IN VARCHAR2,
1781 p_cond_offer_fee_allowed IN VARCHAR2,
1782 p_cond_offer_doc_allowed IN VARCHAR2,
1783 p_person_id IN NUMBER ,
1784 p_admission_appl_number IN NUMBER ,
1785 p_nominated_course_cd IN VARCHAR2 ,
1786 p_acai_sequence_number IN NUMBER ,
1787 p_message_name OUT NOCOPY VARCHAR2 )
1788 RETURN BOOLEAN AS
1789 BEGIN -- admp_val_aos_item
1790 -- This module validates the IGS_AD_PS_APPL_INST.adm_outcome_status.
1791 -- The adm_outcome_status must be open. (AOS01)
1792 -- The admission outcome status may not be set to a value other than pending
1793 -- when setting of the admission outcome status is not allowed for the
1794 -- admission application. (AOS02)
1795 -- A conditional offer cannot be made when conditional offers are not allowed
1796 -- for the admission application. (AOS22)
1797 -- The admission outcome status can only be changed to withdrawn or voided
1798 -- after an offer has been made. (AOS17)
1799 -- A conditional offer cannot be made when application fees are outstanding
1800 -- and fee conditional offers are not allowed. (AOS25)
1801
1802 -- Enh# : 2217104, DLD Admit to Future Term.
1803 -- Navin Sinha 13-Feb-2002, Added condition for 'OFFER-FUTURE-TERM'.
1804 -- 1. s_adm_outcome_status can be set to 'OFFER-FUTURE-TERM' only if s_admission_process_type IN ('COURSE', 'NON-AWARD', 'SHORT-ADM')
1805 DECLARE
1806 cst_pending CONSTANT VARCHAR2(7) := 'PENDING';
1807 cst_cond_offer CONSTANT VARCHAR2(10) := 'COND-OFFER';
1808 cst_withdrawn CONSTANT VARCHAR2(9) := 'WITHDRAWN';
1809 cst_voided CONSTANT VARCHAR2(6) := 'VOIDED';
1810 cst_rejected CONSTANT VARCHAR2(8) := 'REJECTED';
1811 cst_no_quota CONSTANT VARCHAR2(8) := 'NO-QUOTA';
1812 cst_received CONSTANT VARCHAR2(8) := 'RECEIVED';
1813 cst_exempt CONSTANT VARCHAR2(8) := 'EXEMPT';
1814 cst_not_applic CONSTANT VARCHAR2(10) := 'NOT-APPLIC';
1815 cst_deleted CONSTANT VARCHAR2(7) := 'DELETED';
1816 cst_unconfirmed CONSTANT VARCHAR2(11) := 'UNCONFIRM';
1817 cst_offer_future_term CONSTANT VARCHAR2(20) := 'OFFER-FUTURE-TERM';
1818 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
1819 v_old_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
1820 v_s_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
1821 v_message_name VARCHAR2(30);
1822 v_dummy VARCHAR2(1);
1823 CURSOR c_sca IS
1824 SELECT 'x'
1825 FROM IGS_EN_STDNT_PS_ATT sca
1826 WHERE sca.person_id = p_person_id AND
1827 sca.adm_admission_appl_number IS NOT NULL AND
1828 sca.adm_admission_appl_number = p_admission_appl_number AND
1829 sca.adm_nominated_course_cd IS NOT NULL AND
1830 sca.adm_nominated_course_cd = p_nominated_course_cd AND
1831 sca.adm_sequence_number IS NOT NULL AND
1832 sca.adm_sequence_number = p_acai_sequence_number AND
1833 sca.course_attempt_status NOT IN (cst_deleted, cst_unconfirmed);
1834
1835 CURSOR c_sap(cp_person_id NUMBER, cp_admission_appl_number NUMBER) IS
1836 SELECT s_admission_process_type
1837 FROM igs_ad_appl
1838 WHERE person_id = cp_person_id
1839 AND admission_appl_number = cp_admission_appl_number;
1840 c_sap_rec c_sap%ROWTYPE;
1841 BEGIN
1842 p_message_name := NULL;
1843 -- Validate the closed indicator
1844 IF(IGS_AD_VAL_ACAI_STATUS.admp_val_aos_closed (
1845 p_adm_outcome_status,
1846 v_message_name) = FALSE) THEN
1847 p_message_name := v_message_name;
1848 RETURN FALSE;
1849 END IF;
1850 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS (
1851 p_adm_outcome_status);
1852 -- Validate the admission outcome status against the admission process
1853 -- category steps.
1854 -- Validate if outcome can be set.
1855 IF(p_set_outcome_allowed = 'N' AND
1856 v_s_adm_outcome_status <> cst_pending AND
1857 p_adm_outcome_status <> p_old_adm_outcome_status) THEN
1858 -- The admission outcome status must be pending when
1859 -- the outcome cannot be set.
1860 p_message_name := 'IGS_AD_OFRST_VALUE_PENDING';
1861 RETURN FALSE;
1862 END IF;
1863 -- Validate if a conditional offer can be made.
1864 IF(p_cond_offer_assess_allowed = 'N' AND
1865 p_cond_offer_fee_allowed = 'N' AND
1866 p_cond_offer_doc_allowed = 'N' AND
1867 v_s_adm_outcome_status = cst_cond_offer) THEN
1868 -- The admission outcome status status must be conditional offers
1869 -- when conditional offers are not allowed.
1870 p_message_name := 'IGS_AD_CONDOFR_NOT_MADE';
1871 RETURN FALSE;
1872 END IF;
1873 v_old_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(
1874 p_old_adm_outcome_status);
1875 -- Validate change of the admission outcome status value.
1876 IF(v_s_adm_outcome_status IN (cst_withdrawn, cst_voided) AND
1877 v_old_s_adm_outcome_status IN (cst_pending, cst_rejected, cst_no_quota) AND
1878 NVL(igs_ad_cancel_reconsider.g_cancel_recons_on,'N') <> 'Y' )THEN
1879 -- Cannot withdraw or void and unless an offer is made first. In case the update is made from the cancel
1880 -- reconsideration job, this restriction should not be there.
1881 p_message_name := 'IGS_AD_OUTCOME_STATUS_CHG';
1882 RETURN FALSE;
1883 END IF;
1884 IF v_s_adm_outcome_status IN (cst_pending, cst_rejected, cst_no_quota) THEN
1885 OPEN c_sca;
1886 FETCH c_sca INTO v_dummy;
1887 IF (c_sca%FOUND) THEN
1888 -- Cannot set outcome pending, rejected or no-quota when the
1889 -- applicant has an existing course attempt.
1890 CLOSE c_sca;
1891 p_message_name := 'IGS_AD_OUTCOME_CANNOT_SETTO';
1892 RETURN FALSE;
1893 END IF;
1894 CLOSE c_sca;
1895 END IF;
1896
1897 -- Enh# : 2217104, DLD Admit to Future Term.
1898 IF v_s_adm_outcome_status = cst_offer_future_term THEN
1899 OPEN c_sap(p_person_id, p_admission_appl_number);
1900 FETCH c_sap INTO c_sap_rec;
1901 IF (c_sap%FOUND) AND c_sap_rec.s_admission_process_type NOT IN ('COURSE', 'NON-AWARD', 'SHORT-ADM') THEN
1902 CLOSE c_sap;
1903 p_message_name := 'IGS_AD_OUTCOME_FUTURE_TERM';
1904 RETURN FALSE;
1905 END IF;
1906 CLOSE c_sap;
1907 END IF;
1908
1909 v_s_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS (
1910 p_adm_fee_status);
1911 -- Validate a non-fee conditional offer.
1912 IF(v_s_adm_outcome_status = cst_cond_offer AND
1913 p_cond_offer_fee_allowed = 'N' AND
1914 v_s_adm_fee_status NOT IN (cst_received, cst_exempt, cst_not_applic)) THEN
1915 p_message_name := 'IGS_AD_APPLFEES_OUTSTANDING';
1916 RETURN FALSE;
1917 END IF;
1918 RETURN TRUE;
1919 EXCEPTION
1920 WHEN OTHERS THEN
1921 IF c_sca%ISOPEN THEN
1922 CLOSE c_sca;
1923 END IF;
1924 IF c_sap%ISOPEN THEN
1925 CLOSE c_sap;
1926 END IF;
1927 RAISE;
1928 END;
1929 EXCEPTION
1930 WHEN OTHERS THEN
1931 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1932 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aos_item'|| SQLERRM);
1933 IGS_GE_MSG_STACK.ADD;
1934 App_Exception.Raise_Exception;
1935 END admp_val_aos_item;
1936 --
1937 -- Validate if IGS_AD_OU_STAT.adm_outcome_status is closed.
1938 FUNCTION admp_val_aos_closed(
1939 p_adm_outcome_status IN VARCHAR2 ,
1940 p_message_name OUT NOCOPY VARCHAR2 )
1941 RETURN BOOLEAN AS
1942 BEGIN
1943 DECLARE
1944 v_closed_ind IGS_AD_OU_STAT.closed_ind%TYPE;
1945 CURSOR c_aos IS
1946 SELECT aos.closed_ind
1947 FROM IGS_AD_OU_STAT aos
1948 WHERE aos.adm_outcome_status = p_adm_outcome_status;
1949 BEGIN
1950 -- Validate if IGS_AD_OU_STAT.adm_outcome_status is closed.
1951 OPEN c_aos;
1952 FETCH c_aos INTO v_closed_ind;
1953 IF (c_aos%FOUND) THEN
1954 IF (v_closed_ind = 'Y') THEN
1955 CLOSE c_aos;
1956 p_message_name := 'IGS_AD_ADM_OUCOME_ST_CLOSED';
1957 RETURN FALSE;
1958 END IF;
1959 END IF;
1960 CLOSE c_aos;
1961 p_message_name := NULL;
1962 RETURN TRUE;
1963 EXCEPTION
1964 WHEN OTHERS THEN
1965 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
1966 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aos_closed');
1967 IGS_GE_MSG_STACK.ADD;
1968 App_Exception.Raise_Exception;
1969 END;
1970 END admp_val_aos_closed;
1971 --
1972 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status.
1973 FUNCTION admp_val_aos_status(
1974 p_s_adm_outcome_status IN VARCHAR2 ,
1975 p_old_s_adm_outcome_status IN VARCHAR2 ,
1976 p_s_adm_doc_status IN VARCHAR2 ,
1977 p_s_adm_fee_status IN VARCHAR2 ,
1978 p_late_s_adm_fee_status IN VARCHAR2 ,
1979 p_cond_offer_assess_allowed IN VARCHAR2,
1980 p_cond_offer_fee_allowed IN VARCHAR2,
1981 p_cond_offer_doc_allowed IN VARCHAR2,
1982 p_late_appl_allowed IN VARCHAR2,
1983 p_fees_required IN VARCHAR2,
1984 p_message_name OUT NOCOPY VARCHAR2 )
1985 RETURN BOOLEAN AS
1986 BEGIN -- admp_val_aos_status
1987 -- This module validates the IGS_AD_PS_APPL_INST.adm_outcome_status
1988 -- against
1989 -- other statuses in IGS_AD_PS_APPL_INST.
1990 -- Validations are:
1991 -- If a documentation conditional offer is being made, then the admission
1992 -- documentation status must be incomplete. (AOS24).
1993 -- If a fee conditional offer is being made, then the admission application
1994 -- fee status must be assessed or the late admission fee status must be
1995 -- assessed. (AOS27).
1996 -- An offer cannot be made while there are outstanding admission application
1997 -- fees. (AFS04, AFS05, AOS20)
1998 DECLARE
1999 cst_cond_offer CONSTANT VARCHAR2(10) := 'COND-OFFER';
2000 cst_incomplete CONSTANT VARCHAR2(10) := 'INCOMPLETE';
2001 cst_assessed CONSTANT VARCHAR2(8) := 'ASSESSED';
2002 cst_offer CONSTANT VARCHAR2(5) := 'OFFER';
2003 cst_pending CONSTANT VARCHAR2(7) := 'PENDING';
2004 BEGIN
2005 p_message_name := NULL;
2006 -- Validate when outcome status is changed to conditional offer.
2007 IF(p_s_adm_outcome_status = cst_cond_offer AND
2008 p_old_s_adm_outcome_status <> cst_cond_offer) THEN
2009 IF(p_cond_offer_assess_allowed = 'N') THEN -- assessor conditions allowed
2010 IF(p_cond_offer_doc_allowed = 'Y') THEN-- documentation conditions allowed
2011 --Check for a documentation condition
2012 IF(p_s_adm_doc_status = cst_incomplete) THEN
2013 p_message_name := NULL;
2014 RETURN TRUE;
2015 END IF;
2016 END IF;
2017 IF(p_cond_offer_fee_allowed = 'Y') THEN -- fee conditions allowed
2018 IF(p_s_adm_fee_status = cst_assessed) THEN
2019 p_message_name := NULL;
2020 RETURN TRUE;
2021 END IF;
2022 -- Check for late fee condition
2023 IF(p_late_appl_allowed = 'Y') THEN
2024 IF(p_late_s_adm_fee_status = cst_assessed) THEN
2025 p_message_name := NULL;
2026 RETURN TRUE;
2027 END IF;
2028 END IF;
2029 END IF;
2030 -- If reached here, then it is invalid to make a conditional offer
2031 p_message_name := 'IGS_AD_INVALID_COND_OFFER';
2032 RETURN FALSE;
2033 END IF;
2034 END IF;
2035 -- Validate the application fees when outcome status is set to offer.
2036 IF(p_s_adm_outcome_status = cst_offer) THEN
2037 IF(p_fees_required = 'Y') THEN
2038 -- Cannot make an offer if admission fees are outstanding
2039 IF(p_s_adm_fee_status IN (cst_pending, cst_assessed)) THEN
2040 p_message_name := 'IGS_AD_ADMAPL_FEES_OUTSTANDIN';
2041 RETURN FALSE;
2042 END IF;
2043 END IF;
2044 END IF;
2045 RETURN TRUE;
2046 END;
2047 EXCEPTION
2048 WHEN OTHERS THEN
2049 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2050 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aos_status');
2051 IGS_GE_MSG_STACK.ADD;
2052 App_Exception.Raise_Exception;
2053 END admp_val_aos_status;
2054 --
2055 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status.
2056 FUNCTION admp_val_acai_otcome(
2057 p_person_id IN NUMBER ,
2058 p_admission_appl_number IN NUMBER ,
2059 p_nominated_course_cd IN VARCHAR2 ,
2060 p_acai_sequence_number IN NUMBER ,
2061 p_course_cd IN VARCHAR2 ,
2062 p_crv_version_number IN NUMBER ,
2063 p_location_cd IN VARCHAR2 ,
2064 p_attendance_mode IN VARCHAR2 ,
2065 p_attendance_type IN VARCHAR2 ,
2066 p_unit_set_cd IN VARCHAR2 ,
2067 p_us_version_number IN NUMBER ,
2068 p_acad_cal_type IN VARCHAR2 ,
2069 p_acad_ci_sequence_number IN NUMBER ,
2070 p_adm_cal_type IN VARCHAR2 ,
2071 p_adm_ci_sequence_number IN NUMBER ,
2072 p_admission_cat IN VARCHAR2 ,
2073 p_s_admission_process_type IN VARCHAR2 ,
2074 p_appl_dt IN DATE ,
2075 p_fee_cat IN VARCHAR2 ,
2076 p_correspondence_cat IN VARCHAR2 ,
2077 p_enrolment_cat IN VARCHAR2 ,
2078 p_s_adm_outcome_status IN VARCHAR2 ,
2079 p_adm_outcome_status_auth_dt IN DATE ,
2080 p_check_person_encumb IN VARCHAR2,
2081 p_check_course_encumb IN VARCHAR2,
2082 p_pref_allowed IN VARCHAR2 ,
2083 p_late_appl_allowed IN VARCHAR2,
2084 p_unit_set_appl IN VARCHAR2,
2085 p_called_from IN VARCHAR2 ,
2086 p_message_name OUT NOCOPY VARCHAR2 )
2087 RETURN BOOLEAN AS
2088 BEGIN -- admp_val_acai_otcome
2089 -- Validate the IGS_AD_PS_APPL_INST.adm_outcome_status.
2090 -- Validations are -
2091 -- * The outcome cannot be set to pending for a non-preference application for
2092 -- which an outcome letter has been created. (This is with the exception of
2093 -- reconsideration and deferment processing). (AOS03)
2094 -- * The outcome cannot be set to pending for a preference application for
2095 -- which an outcome letter has been created and there are no other admission
2096 -- course application instances with an outcome of other than pending.
2097 -- (This is with the exception of reconsideration and deferment processing).
2098 -- (AOS04)
2099 -- * An admission course application instance cannot be offered while the
2100 -- outcome of admission units is still pending. (AOS05)
2101 -- * An admission course application instance cannot be offered if it is
2102 -- incomplete. (AOS06)
2103 -- * An admission course application instance cannot be offered if IGS_PE_PERSON
2104 -- encumbrance checking is required for the admission application and the
2105 -- IGS_PE_PERSON has an encumbrance. (AOS07)
2106 -- * An admission course application instance cannot be offered if course
2107 -- encumbrance checking is required for the admission application and the
2108 -- IGS_PE_PERSON has an encumbrance on the course being offered. (AOS08)
2109 -- * An admission course application instance cannot be offered if the full
2110 -- components of a valid course offering pattern are not specified. NOTE,
2111 -- late applications can be overridden. (AOS09)
2112 -- * An admission course application instance cannot be offered if the
2113 -- existing student course attempt is not valid. (AOS10)
2114 -- * An admission course application instance cannot be offered if IGS_PS_UNIT sets
2115 -- are applicable for the admission application and the IGS_PS_UNIT set is not vaild.
2116 -- (AOS11)
2117 -- * An admission course application instance cannot be offered if course
2118 -- encumbrance checking is required for the admission application and IGS_PS_UNIT
2119 -- sets are applicable for the admission application and the IGS_PE_PERSON has an
2120 -- encumbrance on the IGS_PS_UNIT set being offered. (AOS11-A)
2121 -- * An admission course application instance cannot be offered if the
2122 -- proposed commencement date is not valid (AOS32).
2123 -- * An admission course application instance can only be withdrawn or voided
2124 -- if the IGS_PE_PERSON is not enrolled the admission course. (AOS17-A)
2125 DECLARE
2126 v_check CHAR;
2127 cst_error CONSTANT VARCHAR2(1) := 'E';
2128 cst_pending CONSTANT VARCHAR2(10) := 'PENDING';
2129 cst_outcome_lt CONSTANT VARCHAR2(10) := 'OUTCOME-LT';
2130 cst_offer CONSTANT VARCHAR2(10) := 'OFFER';
2131 cst_cond_offer CONSTANT VARCHAR2(10) := 'COND-OFFER';
2132 cst_withdrawn CONSTANT VARCHAR2(10) := 'WITHDRAWN';
2133 cst_voided CONSTANT VARCHAR2(10) := 'VOIDED';
2134 cst_unconfirm CONSTANT VARCHAR2(10) := 'UNCONFIRM';
2135 cst_discontin CONSTANT VARCHAR2(10) := 'DISCONTIN';
2136 cst_deleted CONSTANT VARCHAR2(10) := 'DELETED';
2137 cst_lapsed CONSTANT VARCHAR2(10) := 'LAPSED';
2138 v_deferment_processing BOOLEAN ;
2139 v_reconsideration_processing BOOLEAN ;
2140 v_defermt_processing BOOLEAN ;
2141 v_reconsideratn_processing BOOLEAN ;
2142 v_message_name VARCHAR2(30);
2143 v_return_type VARCHAR2(1);
2144 v_late_ind VARCHAR2(1);
2145 v_course_attempt_status IGS_EN_STDNT_PS_ATT.course_attempt_status%TYPE;
2146 v_adm_outcome_status IGS_AD_OU_STAT.adm_outcome_status%TYPE;
2147 v_effective_dt DATE;
2148 v_prpsd_commencement_dt IGS_EN_STDNT_PS_ATT.commencement_dt%TYPE;
2149 v_ca_sequence_number NUMBER;
2150 CURSOR c_aal IS
2151 SELECT 'x'
2152 FROM IGS_AD_APPL_LTR aal
2153 WHERE aal.person_id = p_person_id AND
2154 aal.admission_appl_number = p_admission_appl_number AND
2155 aal.correspondence_type = cst_outcome_lt;
2156 CURSOR c_acai_aos IS
2157 SELECT 'x'
2158 FROM IGS_AD_PS_APPL_INST acai,
2159 IGS_AD_OU_STAT aos
2160 WHERE acai.person_id = p_person_id AND
2161 acai.admission_appl_number = p_admission_appl_number AND
2162 (acai.nominated_course_cd <> p_nominated_course_cd OR
2163 acai.sequence_number <> p_acai_sequence_number) AND
2164 acai.adm_outcome_status = aos.adm_outcome_status AND
2165 aos.s_adm_outcome_status <> cst_pending;
2166 CURSOR c_acaiu_auos IS
2167 SELECT 'x'
2168 FROM IGS_AD_PS_APLINSTUNT acaiu,
2169 IGS_AD_UNIT_OU_STAT auos
2170 WHERE acaiu.person_id = p_person_id AND
2171 acaiu.admission_appl_number = p_admission_appl_number AND
2172 acaiu.nominated_course_cd = p_nominated_course_cd AND
2173 acaiu.acai_sequence_number = p_acai_sequence_number AND
2174 auos.s_adm_outcome_status = cst_pending AND
2175 acaiu.adm_unit_outcome_status = auos.adm_unit_outcome_status;
2176 CURSOR c_sca IS
2177 SELECT sca.course_attempt_status
2178 FROM IGS_EN_STDNT_PS_ATT sca
2179 WHERE sca.person_id = p_person_id AND
2180 sca.course_cd = p_course_cd AND
2181 sca.adm_admission_appl_number = p_admission_appl_number AND
2182 sca.adm_nominated_course_cd = p_nominated_course_cd AND
2183 sca.adm_sequence_number = p_acai_sequence_number;
2184
2185
2186 v_cty_res_typ_ind IGS_PS_TYPE.research_type_ind%TYPE;
2187
2188 CURSOR c_crv_cty IS
2189 SELECT cty.research_type_ind
2190 FROM IGS_PS_VER crv,
2191 IGS_PS_TYPE cty
2192 WHERE crv.course_cd = p_course_cd AND
2193 crv.version_number = p_crv_version_number AND
2194 crv.course_type = cty.course_type;
2195
2196 --------------------------------------------SUB-FUNCTION-----------------------
2197 FUNCTION admpl_chk_res_or_def(
2198 p_person_id IGS_AD_PS_APPL_INST.person_id%TYPE,
2199 p_admission_appl_number IGS_AD_PS_APPL_INST.admission_appl_number%TYPE,
2200 p_nominated_course_cd IGS_AD_PS_APPL_INST.nominated_course_cd%TYPE,
2201 p_acai_sequence_number IGS_AD_PS_APPL_INST.sequence_number%TYPE,
2202 v_defermt_processing IN OUT NOCOPY BOOLEAN,
2203 v_reconsideratn_processing IN OUT NOCOPY BOOLEAN)
2204 RETURN BOOLEAN
2205 AS
2206 BEGIN -- admpl_chk_res_or_def
2207 -- Determine if reconsideration or deferment is being processed
2208 DECLARE
2209 cst_trg_as CONSTANT VARCHAR2(10) := 'TRG_AS';
2210 cst_deferral CONSTANT VARCHAR2(10) := 'DEFERRAL';
2211 cst_approved CONSTANT VARCHAR2(10) := 'APPROVED';
2212 cst_no_quota CONSTANT VARCHAR2(10) := 'NO-QUOTA';
2213 cst_rejected CONSTANT VARCHAR2(10) := 'REJECTED';
2214 v_s_adm_outcome_status IGS_AD_OU_STAT.s_adm_outcome_status%TYPE;
2215 v_s_adm_offer_resp_status IGS_AD_OFR_RESP_STAT.s_adm_offer_resp_status%TYPE;
2216 v_s_adm_offer_dfrmnt_status IGS_LOOKUPS_VIEW.lookup_code%TYPE;
2217 v_ret_val BOOLEAN;
2218 v_check CHAR := NULL;
2219 v_counter NUMBER := 0;
2220 CURSOR c_recent_his IS
2221 SELECT aos.s_adm_outcome_status,
2222 aors.s_adm_offer_resp_status,
2223 aods.s_adm_offer_dfrmnt_status
2224 FROM IGS_AD_PS_APLINSTHST acaih,
2225 IGS_AD_OU_STAT aos,
2226 IGS_AD_OFR_RESP_STAT aors,
2227 IGS_AD_OFRDFRMT_STAT aods
2228 WHERE acaih.person_id = p_person_id AND
2229 acaih.admission_appl_number = p_admission_appl_number AND
2230 acaih.nominated_course_cd = p_nominated_course_cd AND
2231 acaih.sequence_number = p_acai_sequence_number AND
2232 acaih.adm_outcome_status = aos.adm_outcome_status (+) AND
2233 acaih.adm_offer_resp_status = aors.adm_offer_resp_status (+)AND
2234 acaih.adm_offer_dfrmnt_status = aods.adm_offer_dfrmnt_status (+)
2235 ORDER BY acaih.hist_start_dt DESC;
2236 CURSOR c_sca IS
2237 SELECT 'x'
2238 FROM IGS_AD_PS_APPL
2239 WHERE person_id = p_person_id AND
2240 admission_appl_number = p_admission_appl_number AND
2241 nominated_course_cd = p_nominated_course_cd AND
2242 req_for_reconsideration_ind = 'Y';
2243 BEGIN
2244 v_ret_val := FALSE;
2245 IF p_called_from = cst_trg_as THEN
2246 v_defermt_processing := FALSE;
2247 v_reconsideratn_processing := FALSE;
2248 -- Select the first record only.
2249 -- (This is the most recent history record inserted. This history record
2250 -- will have been
2251 -- inserted as a part of reconsideration or deferment processing.)
2252 -- Determine if deferment is being processed
2253 FOR v_recent_his_rec IN c_recent_his LOOP
2254 IF c_recent_his%ROWCOUNT = 1 THEN
2255 IF v_recent_his_rec.s_adm_offer_resp_status IS NOT NULL AND
2256 v_recent_his_rec.s_adm_offer_resp_status = cst_deferral AND
2257 v_recent_his_rec.s_adm_offer_dfrmnt_status IS NOT NULL AND
2258 v_recent_his_rec.s_adm_offer_dfrmnt_status = cst_approved THEN
2259 v_defermt_processing := TRUE;
2260 v_ret_val := TRUE;
2261 EXIT;
2262 END IF;
2263 -- Determine if reconsideration is being processed.
2264 IF NOT v_defermt_processing THEN
2265 IF v_recent_his_rec.s_adm_outcome_status IN (
2266 cst_no_quota,
2267 cst_rejected) THEN
2268 OPEN c_sca;
2269 FETCH c_sca INTO v_check;
2270 IF c_sca%FOUND THEN
2271 CLOSE c_sca;
2272 v_reconsideratn_processing := TRUE;
2273 v_ret_val := TRUE;
2274 EXIT;
2275 END IF;
2276 CLOSE c_sca;
2277 END IF;
2278 END IF; -- NOT v_defermt_processing
2279 END IF; -- if first record
2280 END LOOP;
2281 END IF; -- p_called_from = cst_trg_as
2282 RETURN v_ret_val;
2283 EXCEPTION
2284 WHEN OTHERS THEN
2285 IF c_recent_his%ISOPEN THEN
2286 CLOSE c_recent_his;
2287 END IF;
2288 IF c_sca%ISOPEN THEN
2289 CLOSE c_sca;
2290 END IF;
2291 END;
2292 EXCEPTION
2293 WHEN OTHERS THEN
2294 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2295 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admpl_chk_res_or_def');
2296 IGS_GE_MSG_STACK.ADD;
2297 App_Exception.Raise_Exception;
2298 END admpl_chk_res_or_def;
2299 --------------------------------------------------MAIN-------------------------
2300 BEGIN
2301 v_deferment_processing := FALSE;
2302 v_reconsideration_processing := FALSE;
2303 v_defermt_processing := FALSE;
2304 v_reconsideratn_processing := FALSE;
2305
2306 p_message_name := NULL;
2307 ------------------------------------------------------------------------------
2308 -- Validate an outcome of pending.
2309 ------------------------------------------------------------------------------
2310 IF p_s_adm_outcome_status = cst_pending THEN
2311 -- Check for the existence of an admission application letter
2312 OPEN c_aal;
2313 FETCH c_aal INTO v_check;
2314 IF c_aal%FOUND THEN
2315 CLOSE c_aal;
2316 IF p_pref_allowed = 'N' THEN
2317 IF NOT admpl_chk_res_or_def(
2318 p_person_id,
2319 p_admission_appl_number,
2320 p_nominated_course_cd,
2321 p_acai_sequence_number,
2322 v_defermt_processing,
2323 v_reconsideratn_processing) THEN
2324 v_deferment_processing := v_defermt_processing;
2325 v_reconsideration_processing := v_reconsideratn_processing;
2326 -- Determine if reconsideration or deferment is being processed.
2327 IF NOT v_deferment_processing AND
2328 NOT v_reconsideration_processing THEN
2329 -- (only one course to an application)
2330 -- Outcome status cannot be pending if an admission outcome
2331 -- letter has already been inserted (the letter will need to be deleted).
2332 p_message_name := 'IGS_AD_ST_NOTBE_PENDING_DEL';
2333 RETURN FALSE;
2334 END IF;
2335 END IF;
2336 ELSE -- p_pref_allowed = 'N'
2337 -- Cannot have an admission outcome letter if setting this instance to
2338 -- pending means that there are no IGS_AD_PS_APPL_INST with an outcome
2339 -- in the
2340 -- admission application (exclude this instance in select)
2341 OPEN c_acai_aos;
2342 FETCH c_acai_aos INTO v_check;
2343 IF c_acai_aos%NOTFOUND THEN
2344 CLOSE c_acai_aos;
2345 IF NOT admpl_chk_res_or_def(
2346 p_person_id,
2347 p_admission_appl_number,
2348 p_nominated_course_cd,
2349 p_acai_sequence_number,
2350 v_defermt_processing,
2351 v_reconsideratn_processing) THEN
2352 v_deferment_processing := v_defermt_processing;
2353 v_reconsideration_processing := v_reconsideratn_processing;
2354 -- Determine if reconsideration or deferment is being processed.
2355 IF NOT v_deferment_processing AND
2356 NOT v_reconsideration_processing THEN
2357 p_message_name := 'IGS_AD_ST_NOTBE_PENDING';
2358 RETURN FALSE;
2359 END IF;
2360 END IF; -- admpl_chk_res_or_def(...)
2361 ELSE -- c_acai_aos%NOTFOUND
2362 CLOSE c_acai_aos;
2363 END IF; -- c_acai_aos%NOTFOUND
2364 END IF; -- p_pref_allowed = 'N'
2365 ELSE -- c_aal%FOUND
2366 CLOSE c_aal;
2367 END IF;
2368 END IF; -- (PENDING)
2369 ------------------------------------------------------------------------------
2370 -- Validate an outcome of offer or conditional offer.
2371 ------------------------------------------------------------------------------
2372 IF p_s_adm_outcome_status IN ( cst_offer,
2373 cst_cond_offer) THEN
2374 ------------------------------------------------------------------------------
2375 -- Cannot make an offer if pending IGS_PS_UNIT outcome status exists.
2376 ------------------------------------------------------------------------------
2377 OPEN c_acaiu_auos;
2378 FETCH c_acaiu_auos INTO v_check;
2379 IF c_acaiu_auos%FOUND THEN
2380 p_message_name := 'IGS_AD_CANNOT_MAKE_OFR_PENDIN';
2381 CLOSE c_acaiu_auos;
2382 RETURN FALSE;
2383 END IF;
2384 CLOSE c_acaiu_auos;
2385 ------------------------------------------------------------------------------
2386 -- Cannot make an offer if the admission application is incomplete.
2387 ------------------------------------------------------------------------------
2388 -- Determine the effective date for performing the complete check.
2389 -- v_effective_dt := IGS_AD_GEN_005.ADMP_GET_CRV_STRT_DT (
2390 -- p_adm_cal_type,
2391 -- p_adm_ci_sequence_number);
2392 v_effective_dt := TRUNC(SYSDATE);
2393 -- Perform complete check.
2394 IF NOT IGS_AD_VAL_ACAI.admp_val_offer_comp(
2395 p_person_id,
2396 p_admission_appl_number,
2397 p_nominated_course_cd,
2398 p_acai_sequence_number,
2399 p_course_cd,
2400 p_crv_version_number,
2401 p_admission_cat,
2402 p_s_admission_process_type,
2403 v_effective_dt,
2404 p_called_from,
2405 p_message_name) THEN
2406 RETURN FALSE;
2407 END IF;
2408 -----------------------------------------------------------------------------
2409 -- Cannot make an offer if IGS_PE_PERSON encumbrance checking is required and the
2410 -- applicant is encumbered.
2411 -----------------------------------------------------------------------------
2412 IF p_check_person_encumb = 'Y' THEN
2413 -- Determine the effective date for performing the encumbrance check.
2414 v_effective_dt := NVL(IGS_AD_GEN_006.ADMP_GET_ENCMB_DT (
2415 p_adm_cal_type,
2416 p_adm_ci_sequence_number),SYSDATE);
2417 IF NOT IGS_EN_VAL_ENCMB.enrp_val_excld_prsn (
2418 p_person_id,
2419 NULL, -- Input parameter course code: not applicable
2420 v_effective_dt,
2421 v_message_name) THEN
2422 p_message_name := 'IGS_AD_OFR_CANNOT_BEMADE';
2423 RETURN FALSE;
2424 END IF;
2425 END IF;
2426 -----------------------------------------------------------------------------
2427 -- Cannot make an offer if course encumbrance checking is required and the
2428 -- applicant course
2429 -- is encumbered.
2430 -----------------------------------------------------------------------------
2431 IF p_check_course_encumb = 'Y' THEN
2432 IF NOT IGS_AD_VAL_ACAI.admp_val_acai_encmb(
2433 p_person_id,
2434 p_course_cd,
2435 p_adm_cal_type,
2436 p_adm_ci_sequence_number,
2437 p_check_course_encumb,
2438 'Y', -- Offer indicator
2439 p_message_name,
2440 v_return_type) THEN
2441 IF v_return_type = cst_error THEN -- (cst_error - 'E')
2442 RETURN FALSE;
2443 END IF;
2444 END IF;
2445 END IF;
2446 -----------------------------------------------------------------------------
2447 -- Cannot make an offer if course version is planned.
2448 -----------------------------------------------------------------------------
2449 IF NOT IGS_AD_VAL_CRS_ADMPERD.admp_val_coo_crv(
2450 p_course_cd,
2451 p_crv_version_number,
2452 p_s_admission_process_type,
2453 'Y', -- Offer indicator,
2454 p_message_name) THEN
2455 RETURN FALSE;
2456 END IF;
2457 -----------------------------------------------------------------------------
2458 -- Cannot make an offer if the course offering option is not valid.
2459 -----------------------------------------------------------------------------
2460 IF NOT IGS_AD_VAL_ACAI.admp_val_acai_cop (
2461 p_course_cd,
2462 p_crv_version_number,
2463 p_location_cd,
2464 p_attendance_mode,
2465 p_attendance_type,
2466 p_acad_cal_type,
2467 p_acad_ci_sequence_number,
2468 p_adm_cal_type,
2469 p_adm_ci_sequence_number,
2470 p_admission_cat,
2471 p_s_admission_process_type,
2472 'Y', -- Offer indicator,
2473 p_appl_dt,
2474 p_late_appl_allowed,
2475 'N', -- Deferred application
2476 p_message_name,
2477 v_return_type,
2478 v_late_ind) THEN
2479 IF v_return_type = cst_error THEN
2480 IF v_late_ind = 'Y' THEN
2481 -- If overriding outcome is allowed for the admission application,
2482 -- then the late application is valid.
2483 IF p_adm_outcome_status_auth_dt IS NULL THEN
2484 RETURN FALSE;
2485 END IF;
2486 ELSE
2487 RETURN FALSE;
2488 END IF;
2489 END IF;
2490 END IF;
2491 -----------------------------------------------------------------------------
2492 -- Cannot make an offer if the course is not valid against existing student
2493 -- course attempts.
2494 -----------------------------------------------------------------------------
2495 IF NOT IGS_AD_VAL_ACAI.admp_val_aca_sca (
2496 p_person_id,
2497 p_course_cd,
2498 p_appl_dt,
2499 p_admission_cat,
2500 p_s_admission_process_type,
2501 p_fee_cat,
2502 p_correspondence_cat,
2503 p_enrolment_cat,
2504 'Y', -- Offer indicator,
2505 p_message_name,
2506 v_return_type) THEN
2507 IF v_return_type = cst_error THEN
2508 RETURN FALSE;
2509 END IF;
2510 END IF;
2511 -----------------------------------------------------------------------------
2512 -- Cannot make offer if IGS_PS_UNIT set is applicable for the admission application
2513 -- and the IGS_PS_UNIT set is invalid.
2514 -----------------------------------------------------------------------------
2515 IF p_unit_set_appl = 'Y' THEN
2516 IF NOT IGS_AD_VAL_ACAI.admp_val_acai_us (
2517 p_unit_set_cd,
2518 p_us_version_number,
2519 p_course_cd,
2520 p_crv_version_number,
2521 p_acad_cal_type,
2522 p_location_cd,
2523 p_attendance_mode,
2524 p_attendance_type,
2525 p_admission_cat,
2526 'Y', -- Offer indicator,
2527 p_unit_set_appl,
2528 p_message_name,
2529 v_return_type) THEN
2530 IF v_return_type = cst_error THEN
2531 RETURN FALSE;
2532 END IF;
2533 END IF;
2534 ----------------------------------------------------------------------------
2535 -- Cannot make an offer if course encumbrance checking is required and IGS_PS_UNIT
2536 -- set is applicable for the application and the applicant IGS_PS_UNIT set is
2537 -- encumbered.
2538 ----------------------------------------------------------------------------
2539 IF p_check_course_encumb = 'Y' THEN
2540 IF NOT IGS_AD_VAL_ACAI.admp_val_us_encmb (
2541 p_person_id,
2542 p_course_cd,
2543 p_unit_set_cd,
2544 p_us_version_number,
2545 p_adm_cal_type,
2546 p_adm_ci_sequence_number,
2547 p_check_course_encumb, -- Check course encumbrance indicator,
2548 'Y', -- Offer indicator,
2549 p_message_name,
2550 v_return_type) THEN
2551 IF v_return_type = cst_error THEN
2552 RETURN FALSE;
2553 END IF;
2554 END IF;
2555 END IF; -- p_check_course_encumb = 'Y'
2556 END IF; -- p_unit_set_appl = 'Y'
2557 -----------------------------------------------------------------------------
2558 -- Cannot make an offer if the proposed commencement date is not valid.
2559 -----------------------------------------------------------------------------
2560 --Determine the proposed commencement date.
2561 v_prpsd_commencement_dt := IGS_EN_GEN_002.ENRP_GET_ACAD_COMM (
2562 p_acad_cal_type,
2563 p_acad_ci_sequence_number,
2564 p_person_id,
2565 p_course_cd,
2566 p_admission_appl_number,
2567 p_nominated_course_cd,
2568 p_acai_sequence_number,
2569 'Y'); -- Check proposed commencement date indicator.
2570 --Determine the user defined outcome status.
2571 v_adm_outcome_status := IGS_AD_GEN_009.ADMP_GET_SYS_AOS(
2572 p_s_adm_outcome_status);
2573
2574 -- Need to by pass the check for research programs
2575
2576 OPEN c_crv_cty;
2577 FETCH c_crv_cty INTO v_cty_res_typ_ind;
2578
2579 IF c_crv_cty%FOUND THEN
2580 -- bug no 2124050
2581 -- ADDED the CLOSE c_cr_cty after checking FOUND in the cursor
2582 -- previously it was done before checking the cursor
2583 -- by rrengara on 12-MAR-2002
2584 CLOSE c_crv_cty;
2585 IF v_cty_res_typ_ind = 'Y' THEN
2586 IF NOT IGS_RE_VAL_CA.admp_val_acai_comm (
2587 p_person_id,
2588 p_course_cd,
2589 p_crv_version_number,
2590 p_admission_appl_number,
2591 p_nominated_course_cd,
2592 p_acai_sequence_number,
2593 p_adm_cal_type,
2594 p_adm_ci_sequence_number,
2595 v_adm_outcome_status,
2596 v_prpsd_commencement_dt,
2597 NULL, -- Minimum_Submission_Date
2598 v_ca_sequence_number, -- IGS_RE_CANDIDATURE Sequence Number
2599 'ACAI', -- Parent
2600 p_message_name) THEN
2601 RETURN FALSE;
2602 END IF;
2603 END IF;
2604 END IF;
2605 END IF; -- (OFFER, COND-OFFER)
2606 ------------------------------------------------------------------------------
2607 -- Validate an outcome of withdrawn or voided.
2608 ------------------------------------------------------------------------------
2609 IF p_s_adm_outcome_status IN ( cst_withdrawn,
2610 cst_voided) THEN
2611 -- Cannot withdraw or void offer if applicant is currently enrolled in their
2612 -- course of admission.
2613 OPEN c_sca;
2614 FETCH c_sca INTO v_course_attempt_status;
2615 IF c_sca%FOUND THEN
2616 IF v_course_attempt_status NOT IN (
2617 cst_unconfirm,
2618 cst_discontin,
2619 cst_deleted,
2620 cst_lapsed) THEN
2621 CLOSE c_sca;
2622 p_message_name := 'IGS_AD_INST_NOTBE_WITHDRAWN';
2623 RETURN FALSE;
2624 END IF;
2625 END IF;
2626 CLOSE c_sca;
2627 END IF; -- (WITHDRAWN, VOIDED)
2628 p_message_name := NULL;
2629 RETURN TRUE;
2630 EXCEPTION
2631 WHEN OTHERS THEN
2632 IF c_aal%ISOPEN THEN
2633 CLOSE c_aal;
2634 END IF;
2635 IF c_acai_aos%ISOPEN THEN
2636 CLOSE c_acai_aos;
2637 END IF;
2638 IF c_acaiu_auos%ISOPEN THEN
2639 CLOSE c_acaiu_auos;
2640 END IF;
2641 IF c_sca%ISOPEN THEN
2642 CLOSE c_sca;
2643 END IF;
2644 RAISE;
2645 END;
2646 EXCEPTION
2647 WHEN OTHERS THEN
2648 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2649 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_otcome');
2650 IGS_GE_MSG_STACK.ADD;
2651 App_Exception.Raise_Exception;
2652 END admp_val_acai_otcome;
2653 --
2654 -- This module validates multiple IGS_AD_PS_APPL_INST offers.
2655 FUNCTION admp_val_offer_mult(
2656 p_person_id IN NUMBER ,
2657 p_admission_appl_number IN NUMBER ,
2658 p_nominated_course_cd IN VARCHAR2 ,
2659 p_acai_sequence_number IN NUMBER ,
2660 p_course_cd IN VARCHAR2 ,
2661 p_s_adm_outcome_status IN VARCHAR2 ,
2662 p_s_adm_offer_resp_status IN VARCHAR2 ,
2663 p_adm_cal_type IN VARCHAR2 ,
2664 p_adm_ci_sequence_number IN NUMBER ,
2665 p_admission_cat IN VARCHAR2 ,
2666 p_s_admission_process_type IN VARCHAR2 ,
2667 p_multi_offer_allowed IN VARCHAR2,
2668 p_multi_offer_limit IN NUMBER ,
2669 p_message_name OUT NOCOPY VARCHAR2 )
2670 RETURN BOOLEAN AS
2671 BEGIN -- Validates multiple IGS_AD_PS_APPL_INST offers
2672 -- Validations are
2673 -- * If the admission application does not allow multiple offers then only one
2674 -- admission
2675 -- course application instance can be currently offered to the IGS_PE_PERSON within
2676 -- the
2677 -- admission period and admission process category. (AOS13)
2678 -- * If the admission application allows multiple offers then the number of
2679 -- current offers
2680 -- for the IGS_PE_PERSON within the same admission period and admission process
2681 -- category must
2682 -- be less than or equal to the number of offers allowed for the admission
2683 -- process
2684 -- category (AOS14)
2685 -- * The admission course application instance cannot be offered if the IGS_PE_PERSON
2686 -- has already
2687 -- been has a current offered for the same course in the same admission
2688 -- period. (AOS15)
2689 DECLARE
2690 v_check CHAR;
2691 v_count NUMBER(5);
2692 cst_offer CONSTANT VARCHAR2(10) := 'OFFER';
2693 cst_cond_offer CONSTANT VARCHAR2(10) := 'COND-OFFER';
2694 cst_rejected CONSTANT VARCHAR2(10) := 'REJECTED';
2695 cst_not_applic CONSTANT VARCHAR2(10) := 'NOT-APPLIC';
2696 CURSOR c_acaiv_aos IS
2697 SELECT 'x'
2698 FROM IGS_AD_PS_APPL_INST acaiv, /* References to IGS_AD_PS_APPL_INST_APLINST_V replaced with IGS_AD_PS_APPL_INST Bug 3150054 */
2699 IGS_AD_OU_STAT aos,
2700 IGS_AD_OFR_RESP_STAT aors
2701 WHERE acaiv.person_id = p_person_id AND
2702 (acaiv.admission_appl_number <> p_admission_appl_number OR
2703 acaiv.nominated_course_cd <> p_nominated_course_cd OR
2704 acaiv.sequence_number <> p_acai_sequence_number) AND
2705 acaiv.course_cd = p_course_cd AND
2706 acaiv.adm_cal_type = p_adm_cal_type AND
2707 acaiv.adm_ci_sequence_number = p_adm_ci_sequence_number AND
2708 aos.s_adm_outcome_status IN (cst_offer, cst_cond_offer) AND
2709 aors.s_adm_offer_resp_status NOT IN (cst_rejected, cst_not_applic) AND
2710 acaiv.adm_outcome_status = aos.adm_outcome_status AND
2711 acaiv.adm_offer_resp_status = aors.adm_offer_resp_status;
2712 CURSOR c_cnt_acaiv_aa_aos IS
2713 SELECT count(*)
2714 FROM IGS_AD_PS_APPL_INST acaiv, /* References to IGS_AD_PS_APPL_INST_APLINST_V replaced with IGS_AD_PS_APPL_INST Bug 3150054 */
2715 IGS_AD_APPL aa,
2716 IGS_AD_OU_STAT aos,
2717 IGS_AD_OFR_RESP_STAT aors
2718 WHERE acaiv.person_id = p_person_id AND
2719 (acaiv.admission_appl_number <> p_admission_appl_number OR
2720 acaiv.nominated_course_cd <> p_nominated_course_cd OR
2721 acaiv.sequence_number <> p_acai_sequence_number) AND
2722 acaiv.adm_cal_type = p_adm_cal_type AND
2723 acaiv.adm_ci_sequence_number = p_adm_ci_sequence_number AND
2724 aa.admission_cat = p_admission_cat AND
2725 aa.s_admission_process_type = p_s_admission_process_type AND
2726 aos.s_adm_outcome_status IN (cst_offer, cst_cond_offer) AND
2727 aors.s_adm_offer_resp_status NOT IN (cst_rejected, cst_not_applic) AND
2728 aa.person_id = acaiv.person_id AND
2729 aa.admission_appl_number = acaiv.admission_appl_number AND
2730 -- aa.acad_cal_type = acaiv.acad_cal_type AND -- Commented this line as the join is not required Bug 3150054
2731 -- aa.acad_ci_sequence_number = acaiv.acad_ci_sequence_number AND -- Commented this line as the join is not required Bug 3150054
2732 aos.adm_outcome_status = acaiv.adm_outcome_status AND
2733 acaiv.adm_offer_resp_status = aors.adm_offer_resp_status;
2734 BEGIN
2735 p_message_name := NULL;
2736 -- Only perform multiple offer validations when the admission course
2737 -- application instance has been
2738 -- offered or conditionally offered.
2739 IF p_s_adm_outcome_status IN (cst_offer, cst_cond_offer) AND
2740 p_s_adm_offer_resp_status NOT IN (cst_rejected,cst_not_applic)THEN
2741 OPEN c_cnt_acaiv_aa_aos;
2742 FETCH c_cnt_acaiv_aa_aos INTO v_count;
2743 CLOSE c_cnt_acaiv_aa_aos;
2744 -- Validate when multiple offers are not allowed.
2745 IF p_multi_offer_allowed = 'N' THEN
2746 IF v_count > 0 THEN
2747 -- Cannot make an offer to more than one course in the same admission
2748 -- process category if multiple offers are not allowed.
2749 p_message_name := 'IGS_AD_MULTIPLE_OFRS_NOTALLOW';
2750 RETURN FALSE;
2751 END IF;
2752 ELSE
2753 -- Validate when multiple offers are allowed.
2754 IF v_count >= p_multi_offer_limit THEN
2755 -- Multiple offer limit has been reached. No more offers can be made.
2756 p_message_name := 'IGS_AD_MULTIPLE_OFFER_LIMIT';
2757 RETURN FALSE;
2758 END IF;
2759 END IF;
2760 -- Validate offers within the same admission period
2761 OPEN c_acaiv_aos;
2762 FETCH c_acaiv_aos INTO v_check;
2763 IF (c_acaiv_aos%FOUND) THEN
2764 -- Cannot make an offer if this course is already being offered to this
2765 -- applicant in this admission period.
2766 CLOSE c_acaiv_aos;
2767 p_message_name := 'IGS_AD_PRSN_CANNOTOFR_SAMEPRG';
2768 RETURN FALSE;
2769 END IF;
2770 CLOSE c_acaiv_aos;
2771 END IF;
2772 RETURN TRUE;
2773 EXCEPTION
2774 WHEN OTHERS THEN
2775 IF (c_acaiv_aos%ISOPEN) THEN
2776 CLOSE c_acaiv_aos;
2777 END IF;
2778 IF (c_cnt_acaiv_aa_aos%ISOPEN) THEN
2779 CLOSE c_acaiv_aos;
2780 END IF;
2781 END;
2782 EXCEPTION
2783 WHEN OTHERS THEN
2784 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2785 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_offer_mult');
2786 IGS_GE_MSG_STACK.ADD;
2787 App_Exception.Raise_Exception;
2788 END admp_val_offer_mult;
2789 --
2790 -- Validate offers across admission process categories (same adm period).
2791 FUNCTION admp_val_offer_x_apc(
2792 p_person_id IN NUMBER ,
2793 p_admission_appl_number IN NUMBER ,
2794 p_nominated_course_cd IN VARCHAR2 ,
2795 p_acai_sequence_number IN NUMBER ,
2796 p_adm_outcome_status IN VARCHAR2 ,
2797 p_adm_offer_resp_status IN VARCHAR2 ,
2798 p_adm_cal_type IN VARCHAR2 ,
2799 p_adm_ci_sequence_number IN NUMBER ,
2800 p_admission_cat IN VARCHAR2 ,
2801 p_s_admission_process_type IN VARCHAR2 ,
2802 p_message_name OUT NOCOPY VARCHAR2 ,
2803 p_return_type OUT NOCOPY VARCHAR2 )
2804 RETURN BOOLEAN AS
2805 BEGIN -- admp_val_offer_x_apc
2806 -- Validate admission application offers across admission process categories
2807 -- within the same admission period.
2808 -- Validations are :
2809 -- * Warn if the IGS_PE_PERSON is being made an offer and they already have a
2810 -- current offer in another admission process category for
2811 -- this admission period.
2812 DECLARE
2813 cst_offer CONSTANT IGS_AD_OU_STAT.s_adm_outcome_status%TYPE :='OFFER';
2814 cst_cond_offer CONSTANT
2815 IGS_AD_OU_STAT.s_adm_outcome_status%TYPE :='COND-OFFER';
2816 cst_rejected CONSTANT
2817 IGS_AD_OFR_RESP_STAT.s_adm_offer_resp_status%TYPE :='REJECTED';
2818 cst_not_applic CONSTANT
2819 IGS_AD_OFR_RESP_STAT.s_adm_offer_resp_status%TYPE :='NOT-APPLIC';
2820 cst_warn CONSTANT VARCHAR2(1) := 'W';
2821 cst_error CONSTANT VARCHAR2(1) := 'E';
2822 v_aaaa_exists VARCHAR2(1);
2823 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
2824 v_s_adm_offer_resp_status igs_ad_ofr_resp_stat.s_adm_offer_resp_status%TYPE;
2825 CURSOR c_aaaa IS
2826 SELECT 'x'
2827 FROM IGS_AD_PS_APPL_INST acaiv, /* References to IGS_AD_PS_APPL_INST_APLINST_V replaced with IGS_AD_PS_APPL_INST Bug 3150054 */
2828 IGS_AD_APPL aa,
2829 IGS_AD_OU_STAT aos,
2830 IGS_AD_OFR_RESP_STAT aors
2831 WHERE acaiv.person_id = p_person_id AND
2832 (acaiv.admission_appl_number <> p_admission_appl_number OR
2833 acaiv.nominated_course_cd <> p_nominated_course_cd OR
2834 acaiv.sequence_number <> p_acai_sequence_number) AND
2835 aa.person_id = acaiv.person_id AND
2836 aa.admission_appl_number = acaiv.admission_appl_number AND
2837 (aa.admission_cat <> p_admission_cat OR
2838 aa.s_admission_process_type <> p_s_admission_process_type) AND
2839 acaiv.adm_cal_type = p_adm_cal_type AND
2840 acaiv.adm_ci_sequence_number = p_adm_ci_sequence_number AND
2841 aos.s_adm_outcome_status IN (
2842 cst_offer,
2843 cst_cond_offer) AND
2844 aors.s_adm_offer_resp_status NOT IN (
2845 cst_rejected,
2846 cst_not_applic) AND
2847 acaiv.adm_outcome_status = aos.adm_outcome_status AND
2848 acaiv.adm_offer_resp_status = aors.adm_offer_resp_status;
2849 BEGIN
2850 -- Set the default message number
2851 p_message_name := NULL;
2852 p_return_type := NULL;
2853 -- Get the status system values.
2854 v_s_adm_outcome_status := (IGS_AD_GEN_008.ADMP_GET_SAOS (p_adm_outcome_status));
2855 v_s_adm_offer_resp_status := (IGS_AD_GEN_008.ADMP_GET_SAORS (p_adm_offer_resp_status));
2856 IF v_s_adm_outcome_status IN (
2857 cst_offer,
2858 cst_cond_offer) AND
2859 v_s_adm_offer_resp_status not in (cst_rejected, cst_not_applic) THEN
2860 OPEN c_aaaa;
2861 FETCH c_aaaa INTO v_aaaa_exists;
2862 IF c_aaaa%FOUND THEN
2863 CLOSE c_aaaa;
2864 p_message_name := 'IGS_AD_PRSN_CUROFR_ADMPRC';
2865 p_return_type := cst_warn;
2866 RETURN FALSE;
2867 END IF;
2868 CLOSE c_aaaa;
2869 END IF;
2870 -- Return the default value
2871 RETURN TRUE;
2872 EXCEPTION
2873 WHEN OTHERS THEN
2874 IF c_aaaa%ISOPEN THEN
2875 CLOSE c_aaaa;
2876 END IF;
2877 RAISE;
2878 END;
2879 EXCEPTION
2880 WHEN OTHERS THEN
2881 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2882 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_offer_x_apc');
2883 IGS_GE_MSG_STACK.ADD;
2884 App_Exception.Raise_Exception;
2885 END admp_val_offer_x_apc;
2886 --
2887 -- Validate update of the admission outcome status.
2888 FUNCTION admp_val_aos_update(
2889 p_person_id IN NUMBER ,
2890 p_admission_appl_number IN NUMBER ,
2891 p_adm_outcome_status IN VARCHAR2 ,
2892 p_old_adm_outcome_status IN VARCHAR2 ,
2893 p_message_name OUT NOCOPY VARCHAR2 ,
2894 p_return_type OUT NOCOPY VARCHAR2 )
2895 RETURN BOOLEAN AS
2896 BEGIN -- admp_val_aos_update
2897 -- Validate update of the admission outcome status.
2898 -- On update of the admission outcome status warn if outcome letter
2899 -- correspondence is yet to be issued and phrases relating to the old status
2900 -- are attached
2901 DECLARE
2902 v_aal_seq_no IGS_AD_APPL_LTR.sequence_number%TYPE;
2903 v_sent_dt DATE;
2904 cst_warn CONSTANT VARCHAR2(1) := 'W';
2905 cst_error CONSTANT VARCHAR2(1) := 'E';
2906 CURSOR c_seq_no IS
2907 SELECT aal.sequence_number
2908 FROM IGS_AD_APPL_LTR aal,
2909 IGS_AD_APPL_LTR_PHR aalp
2910 WHERE aalp.person_id = p_person_id AND
2911 aalp.admission_appl_number = p_admission_appl_number AND
2912 aalp.correspondence_type = 'OUTCOME-LT' AND
2913 aal.person_id = aalp.person_id AND
2914 aal.admission_appl_number = aalp.admission_appl_number AND
2915 aal.correspondence_type = aalp.correspondence_type AND
2916 aal.sequence_number = aalp.aal_sequence_number;
2917 BEGIN
2918 -- Check if the outcome status has been updated
2919 IF p_adm_outcome_status <> p_old_adm_outcome_status THEN
2920 -- Warn on change of outcome status if outcome letter correspondence
2921 -- is yet to be issued and has phrases relating to the old status attached
2922 OPEN c_seq_no;
2923 FETCH c_seq_no INTO v_aal_seq_no;
2924 IF (c_seq_no%FOUND)THEN
2925 -- Determine if the correspondence has been sent
2926 v_sent_dt := IGS_AD_GEN_002.ADMP_GET_AAL_SENT_DT (
2927 p_person_id,
2928 p_admission_appl_number,
2929 'OUTCOME-LT',
2930 v_aal_seq_no);
2931 IF v_sent_dt IS NULL THEN
2932 -- Current correspondence may need to be corrected
2933 p_message_name := 'IGS_AD_CHG_ADMOUTCOME_STATUS';
2934 p_return_type := cst_warn;
2935 CLOSE c_seq_no;
2936 RETURN FALSE;
2937 END IF;
2938 END IF;
2939 CLOSE c_seq_no;
2940 END IF;
2941 p_message_name := NULL;
2942 p_return_type := NULL;
2943 RETURN TRUE;
2944 END;
2945 EXCEPTION
2946 WHEN OTHERS THEN
2947 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2948 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aos_update');
2949 IGS_GE_MSG_STACK.ADD;
2950 App_Exception.Raise_Exception;
2951 END admp_val_aos_update;
2952 --
2953 -- Validate the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status.
2954 FUNCTION admp_val_acai_acos(
2955 p_adm_cndtnl_offer_status IN VARCHAR2 ,
2956 p_old_adm_cndtnl_offer_status IN VARCHAR2 ,
2957 p_adm_outcome_status IN VARCHAR2 ,
2958 p_adm_doc_status IN VARCHAR2 ,
2959 p_late_adm_fee_status IN VARCHAR2 ,
2960 p_adm_fee_status IN VARCHAR2 ,
2961 p_late_appl_allowed IN VARCHAR2,
2962 p_fees_required IN VARCHAR2,
2963 p_cond_offer_assess_allowed IN VARCHAR2,
2964 p_cond_offer_fee_allowed IN VARCHAR2,
2965 p_cond_offer_doc_allowed IN VARCHAR2,
2966 p_message_name OUT NOCOPY VARCHAR2 )
2967 RETURN BOOLEAN AS
2968 BEGIN --admp_val_acai_acos
2969 --Validate the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status
2970 DECLARE
2971 v_message_name VARCHAR2(30);
2972 v_s_adm_cndtnl_offer_status igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE;
2973 v_old_s_adm_cndtnl_offer_stat igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE;
2974 v_s_adm_outcome_status igs_ad_ou_stat.s_adm_outcome_status%TYPE;
2975 v_s_adm_doc_status igs_ad_doc_stat.s_adm_doc_status%TYPE;
2976 v_late_s_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
2977 BEGIN
2978 --set the default message number
2979 p_message_name := NULL;
2980 --Perform item level validations.
2981 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_acos_item (
2982 p_adm_cndtnl_offer_status,
2983 p_adm_fee_status,
2984 p_fees_required,
2985 p_cond_offer_assess_allowed,
2986 p_cond_offer_fee_allowed,
2987 p_cond_offer_doc_allowed,
2988 v_message_name) = FALSE) THEN
2989 p_message_name := v_message_name;
2990 RETURN FALSE;
2991 END IF;
2992 v_s_adm_cndtnl_offer_status := IGS_AD_GEN_007.ADMP_GET_SACOS(
2993 p_adm_cndtnl_offer_status);
2994 v_old_s_adm_cndtnl_offer_stat := IGS_AD_GEN_007.ADMP_GET_SACOS(
2995 p_old_adm_cndtnl_offer_status);
2996 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(
2997 p_adm_outcome_status);
2998 v_s_adm_doc_status := IGS_AD_GEN_007.ADMP_GET_SADS(
2999 p_adm_doc_status);
3000 v_late_s_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS(
3001 p_late_adm_fee_status);
3002 --Validate against the other admission course application instance status
3003 -- values.
3004 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_acos_status (
3005 v_s_adm_cndtnl_offer_status,
3006 v_old_s_adm_cndtnl_offer_stat,
3007 v_s_adm_outcome_status,
3008 v_s_adm_doc_status,
3009 v_late_s_adm_fee_status,
3010 p_late_appl_allowed,
3011 v_message_name) = FALSE) THEN
3012 p_message_name := v_message_name;
3013 RETURN FALSE;
3014 END IF;
3015 RETURN TRUE;
3016 END;
3017 EXCEPTION
3018 WHEN OTHERS THEN
3019 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3020 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_acos');
3021 IGS_GE_MSG_STACK.ADD;
3022 App_Exception.Raise_Exception;
3023 END admp_val_acai_acos;
3024 --
3025 -- Validate the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status.
3026 FUNCTION admp_val_acos_item(
3027 p_adm_cndtnl_offer_status IN VARCHAR2 ,
3028 p_adm_fee_status IN VARCHAR2 ,
3029 p_fees_required IN VARCHAR2 ,
3030 p_cond_offer_assess_allowed IN VARCHAR2 ,
3031 p_cond_offer_fee_allowed IN VARCHAR2 ,
3032 p_cond_offer_doc_allowed IN VARCHAR2 ,
3033 p_message_name OUT NOCOPY VARCHAR2 )
3034 RETURN BOOLEAN AS
3035 BEGIN --admp_val_acos_item
3036 --Validate the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status.
3037 --The IGS_AD_CNDNL_OFRSTAT must be open. (ACOS01)
3038 --The conditional offer status must be not-applicable when conditional
3039 --offers are not allowed. (ACOS02)
3040 --If fees are required for the application, then fees must not be outstanding
3041 --for the conditional offer to be satisfied. (ACOS08)
3042 DECLARE
3043 v_message_name VARCHAR2(30);
3044 v_s_adm_fee_status igs_ad_fee_stat.s_adm_fee_status%TYPE;
3045 v_s_adm_cndtnl_offer_status igs_ad_cndnl_ofrstat.s_adm_cndtnl_offer_status%TYPE;
3046 BEGIN
3047 --set the default message number
3048 p_message_name := NULL;
3049 --validate the closed indicator
3050 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_acos_closed (
3051 p_adm_cndtnl_offer_status,
3052 v_message_name) = FALSE) THEN
3053 p_message_name := v_message_name;
3054 RETURN FALSE;
3055 END IF;
3056 v_s_adm_cndtnl_offer_status := IGS_AD_GEN_007.ADMP_GET_SACOS (p_adm_cndtnl_offer_status);
3057 --Validate the conditional offer status against
3058 ---the admission process category steps.
3059 IF (p_cond_offer_assess_allowed = 'N' AND
3060 p_cond_offer_fee_allowed = 'N' AND
3061 p_cond_offer_doc_allowed = 'N' AND
3062 v_s_adm_cndtnl_offer_status <> 'NOT-APPLIC') THEN
3063 --The conditional offer status must be not-applicable
3064 --when conditional offers are not allowed.
3065 p_message_name := 'IGS_AD_CONDOFRST_NOTAPPLICABL';
3066 RETURN FALSE;
3067 END IF;
3068 --Validate the conditional offer status against the admission application fee
3069 -- status.
3070 IF (p_fees_required = 'Y' AND
3071 v_s_adm_cndtnl_offer_status = 'SATISFIED') THEN
3072 --The admission conditional offer status cannot be satisfied if
3073 --application fees are still being assessed or haven't been determined.
3074 v_s_adm_fee_status := IGS_AD_GEN_008.ADMP_GET_SAFS(p_adm_fee_status);
3075 IF (v_s_adm_fee_status IN ('PENDING', 'ASSESSED')) THEN
3076 p_message_name := 'IGS_AD_CONDOFR_NOTSATISFIED';
3077 RETURN FALSE;
3078 END IF;
3079 END IF;
3080 RETURN TRUE;
3081 END;
3082 EXCEPTION
3083 WHEN OTHERS THEN
3084 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3085 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acos_item');
3086 IGS_GE_MSG_STACK.ADD;
3087 App_Exception.Raise_Exception;
3088 END admp_val_acos_item;
3089 --
3090 -- Validate if IGS_AD_CNDNL_OFRSTAT.adm_cndtnl_offer_status is closed.
3091 FUNCTION admp_val_acos_closed(
3092 p_adm_cndtnl_offer_status IN VARCHAR2 ,
3093 p_message_name OUT NOCOPY VARCHAR2 )
3094 RETURN BOOLEAN AS
3095 BEGIN -- admp_val_acos_closed
3096 -- Validate the IGS_AD_CNDNL_OFRSTAT closed indicator
3097 DECLARE
3098 CURSOR c_acos(
3099 cp_adm_cndtnl_offer_status
3100 IGS_AD_CNDNL_OFRSTAT.adm_cndtnl_offer_status%TYPE) IS
3101 SELECT closed_ind
3102 FROM IGS_AD_CNDNL_OFRSTAT
3103 WHERE adm_cndtnl_offer_status =cp_adm_cndtnl_offer_status;
3104 v_acos_rec c_acos%ROWTYPE;
3105 cst_yes CONSTANT CHAR := 'Y';
3106 BEGIN
3107 -- Set the default message number
3108 p_message_name := NULL;
3109 -- Cursor handling
3110 OPEN c_acos(
3111 p_adm_cndtnl_offer_status);
3112 FETCH c_acos INTO v_acos_rec;
3113 IF c_acos%NOTFOUND THEN
3114 CLOSE c_acos;
3115 RETURN TRUE;
3116 END IF;
3117 CLOSE c_acos;
3118 IF (v_acos_rec.closed_ind = cst_yes) THEN
3119 p_message_name := 'IGS_AD_ADMCOND_OFR_ST_CLOSED';
3120 RETURN FALSE;
3121 END IF;
3122 -- Return the default value
3123 RETURN TRUE;
3124 END;
3125 EXCEPTION
3126 WHEN OTHERS THEN
3127 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3128 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acos_closed');
3129 IGS_GE_MSG_STACK.ADD;
3130 App_Exception.Raise_Exception;
3131 END admp_val_acos_closed;
3132 --
3133 -- Validate the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status.
3134 FUNCTION admp_val_acos_status(
3135 p_s_adm_cndtnl_offer_status IN VARCHAR2 ,
3136 p_old_s_adm_cndtnl_offer_sts IN VARCHAR2 ,
3137 p_s_adm_outcome_status IN VARCHAR2 ,
3138 p_s_adm_doc_status IN VARCHAR2 ,
3139 p_late_s_adm_fee_status IN VARCHAR2 ,
3140 p_late_appl_allowed IN VARCHAR2,
3141 p_message_name OUT NOCOPY VARCHAR2 )
3142 RETURN BOOLEAN AS
3143 BEGIN --admp_val_acos_status
3144 --This module validates the IGS_AD_PS_APPL_INST.adm_cndtnl_offer_status
3145 --against other IGS_AD_PS_APPL_INST statuses.
3146 DECLARE
3147 BEGIN
3148 --set the default message number
3149 p_message_name := NULL;
3150 --Validate the admission conditional offer status against the admission outcome
3151 -- status.
3152 IF (p_s_adm_cndtnl_offer_status <> 'NOT-APPLIC' AND
3153 p_old_s_adm_cndtnl_offer_sts = 'NOT-APPLIC' AND
3154 p_s_adm_outcome_status <> 'COND-OFFER') THEN
3155 --The admission conditional offer status cannot be changed from
3156 --not-applicable if the admission outcome status is not conditional offer.
3157 p_message_name := 'IGS_AD_CONDOFR_NOTCHANGED' ;
3158 RETURN FALSE;
3159 END IF;
3160 IF (p_s_adm_cndtnl_offer_status = 'PENDING' AND
3161 p_s_adm_outcome_status NOT IN('COND-OFFER', 'WITHDRAWN', 'VOIDED')) THEN
3162 --The admission conditional offer status cannot be pending
3163 --if a conditional offer has not been made.
3164 p_message_name := 'IGS_AD_CONDOFR_NOTPENDING';
3165 RETURN FALSE;
3166 END IF;
3167 IF (p_s_adm_cndtnl_offer_status = 'SATISFIED') THEN
3168 IF( p_s_adm_outcome_status NOT IN ('COND-OFFER', 'WITHDRAWN', 'VOIDED')) THEN
3169 --The admission conditional offer status cannot be satisfied if a
3170 --conditional offer has not been made.
3171 p_message_name := 'IGS_AD_CONDOFR_ST_NOT_SATISFI';
3172 RETURN FALSE;
3173 END IF;
3174 --Validate the admission conditional offer status against the
3175 --admission documentation status.
3176 IF( p_s_adm_doc_status IN (
3177 'PENDING', 'UNSATISFAC', 'REJECTED-F', 'INCOMPLETE')) THEN
3178 --The admission conditional offer status cannot be satisfied if
3179 --documentation is unsatisfactory, rejected, incomplete or hasn't been
3180 -- determined.
3181 p_message_name := 'IGS_AD_CONDOFR_NOT_SATISFIED';
3182 RETURN FALSE;
3183 END IF;
3184 --Validate the admission conditional offer status against the late
3185 --admission fee status.
3186 IF (p_late_appl_allowed = 'Y' AND
3187 p_late_s_adm_fee_status IN('PENDING', 'ASSESSED')) THEN
3188 --The admission conditional offer status cannot be satisfied
3189 --if late fees are still being assessed or haven't been determined.
3190 p_message_name := 'IGS_AD_OFRST_LATE_FEES';
3191 RETURN FALSE;
3192 END IF;
3193 END IF;
3194 IF (p_s_adm_cndtnl_offer_status = 'WAIVED' AND
3195 p_s_adm_outcome_status NOT IN('COND-OFFER', 'WITHDRAWN', 'VOIDED')) THEN
3196 --The admission conditional offer status cannot be waived if a
3197 --conditional offer has not been made.
3198 p_message_name := 'IGS_AD_CONDOFR_NOTWAIVED';
3199 RETURN FALSE;
3200 END IF;
3201 --Removed this validation as part of the bug 2395305
3202 /* IF (p_s_adm_cndtnl_offer_status = 'UNSATISFAC' AND
3203 p_s_adm_outcome_status NOT IN('WITHDRAWN', 'VOIDED')) THEN
3204 --The admission conditional offer status cannot be unsatisfactory
3205 --if the conditional offer has not been withdrawn or voided.
3206 p_message_name := 'IGS_AD_ST_NOTBE_UNSATISFACTOR';
3207 RETURN FALSE;
3208 END IF;
3209 */
3210 IF (p_s_adm_cndtnl_offer_status = 'NOT-APPLIC' AND
3211 p_s_adm_outcome_status = 'COND-OFFER') THEN
3212 --The admission conditional offer status cannot be not-applicable
3213 --if a conditional offer has been made.
3214 p_message_name := 'IGS_AD_CONDOFR_NOT_NOTAPPL';
3215 RETURN FALSE;
3216 END IF;
3217 RETURN TRUE;
3218 END;
3219 EXCEPTION
3220 WHEN OTHERS THEN
3221 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3222 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acos_status');
3223 IGS_GE_MSG_STACK.ADD;
3224 App_Exception.Raise_Exception;
3225 END admp_val_acos_status;
3226
3227 FUNCTION admp_val_aods_update(
3228 p_person_id IN NUMBER ,
3229 p_admission_appl_number IN NUMBER ,
3230 p_nominated_course_cd IN VARCHAR2 ,
3231 p_sequence_number IN NUMBER ,
3232 p_offer_deferment_status IN VARCHAR2,
3233 p_message_name OUT NOCOPY VARCHAR2)
3234 RETURN BOOLEAN AS
3235 BEGIN
3236 -- hreddych #2602077 SF Integration Added the FUNCTION admp_val_aods_update
3237 -- This function validates the change in the offer deferment status
3238 -- The offer deferment status can be moved to CONFIRM only when the
3239 -- status is APPROVED.
3240 DECLARE
3241 CURSOR cur_offer_dfrmnt_status(p_person_id igs_ad_ps_appl_inst.person_id%TYPE ,
3242 p_admission_appl_number igs_ad_ps_appl_inst.admission_appl_number%TYPE ,
3243 p_nominated_course_cd igs_ad_ps_appl_inst.nominated_course_cd%TYPE ,
3244 p_sequence_number igs_ad_ps_appl_inst.sequence_number%TYPE) IS
3245 SELECT adm_offer_dfrmnt_status
3246 FROM igs_ad_ps_appl_inst
3247 WHERE person_id = p_person_id AND
3248 admission_appl_number = p_admission_appl_number AND
3249 nominated_course_cd = p_nominated_course_cd AND
3250 sequence_number = p_sequence_number ;
3251
3252 v_new_ofr_dfrmnt_status igs_ad_ofrdfrmt_stat.s_adm_offer_dfrmnt_status%TYPE;
3253 v_ofr_dfrmnt_status igs_ad_ps_appl_inst.adm_offer_dfrmnt_status%TYPE;
3254 v_s_ofr_dfrmnt_status igs_ad_ofrdfrmt_stat.s_adm_offer_dfrmnt_status%TYPE;
3255 BEGIN
3256 v_new_ofr_dfrmnt_status := igs_ad_gen_008.admp_get_saods(p_offer_deferment_status);
3257 IF v_new_ofr_dfrmnt_status = 'CONFIRM' THEN
3258 OPEN cur_offer_dfrmnt_status (p_person_id,p_admission_appl_number,p_nominated_course_cd,
3259 p_sequence_number);
3260 FETCH cur_offer_dfrmnt_status INTO v_ofr_dfrmnt_status ;
3261 CLOSE cur_offer_dfrmnt_status;
3262 v_s_ofr_dfrmnt_status :=igs_ad_gen_008.admp_get_saods(v_ofr_dfrmnt_status) ;
3263 IF v_s_ofr_dfrmnt_status NOT IN ('APPROVED','CONFIRM') THEN
3264 p_message_name := 'IGS_AD_CONF_WITHOUT_APR';
3265 RETURN FALSE;
3266 ELSE
3267 p_message_name :=NULL;
3268 RETURN TRUE;
3269 END IF;
3270 ELSE
3271 p_message_name :=NULL;
3272 RETURN TRUE;
3273 END IF;
3274 END ;
3275 EXCEPTION
3276 WHEN OTHERS THEN
3277 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3278 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_aods_update');
3279 IGS_GE_MSG_STACK.ADD;
3280 App_Exception.Raise_Exception;
3281 END admp_val_aods_update;
3282
3283
3284
3285 FUNCTION admp_val_acai_ais( --arvsrini igsm
3286 p_appl_inst_status IN VARCHAR2 ,
3287 p_ais_reason IN VARCHAR2,
3288 p_adm_outcome_status IN VARCHAR2 ,
3289 p_message_name OUT NOCOPY VARCHAR2 )
3290 RETURN BOOLEAN AS
3291 BEGIN -- admp_val_acai_ais
3292 -- Validate the IGS_AD_PS_APPL_INST.appl_inst_status
3293 DECLARE
3294 v_s_appl_inst_status IGS_AD_PS_APPL_INST.appl_inst_status%TYPE;
3295 v_s_adm_outcome_status IGS_AD_OU_STAT.s_adm_outcome_status%TYPE;
3296 v_message_name VARCHAR2(30);
3297 BEGIN
3298 -- Set the default message number
3299 p_message_name := NULL;
3300 -- Perform item level validations.
3301 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_ais_item (
3302 p_appl_inst_status,
3303 p_ais_reason,
3304 v_message_name) THEN
3305 p_message_name := v_message_name;
3306 RETURN FALSE;
3307 END IF;
3308
3309 -- Set local variables to system values
3310 v_s_appl_inst_status := IGS_AD_GEN_007.ADMP_GET_SAAS(p_appl_inst_status);
3311 v_s_adm_outcome_status := IGS_AD_GEN_008.ADMP_GET_SAOS(p_adm_outcome_status);
3312
3313 IF v_s_appl_inst_status = 'WITHDRAWN' and p_ais_reason IS NULL THEN
3314 p_message_name := 'IGS_AD_WITHD_RSN_MISSING';
3315 RETURN FALSE;
3316 END IF;
3317
3318
3319 -- Validate against the admission outcome status
3320 IF NOT IGS_AD_VAL_ACAI_STATUS.admp_val_ais_aos (
3321 v_s_appl_inst_status,
3322 v_s_adm_outcome_status,
3323 v_message_name) THEN
3324 p_message_name := v_message_name;
3325 RETURN FALSE;
3326 END IF;
3327 -- Return the default value
3328 RETURN TRUE;
3329 END;
3330 EXCEPTION
3331 WHEN OTHERS THEN
3332 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3333 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_acai_ais');
3334 IGS_GE_MSG_STACK.ADD;
3335 App_Exception.Raise_Exception;
3336 END admp_val_acai_ais;
3337
3338
3339
3340
3341 FUNCTION admp_val_ais_item( --arvsrini igsm
3342 p_appl_inst_status IN VARCHAR2 ,
3343 p_ais_reason IN VARCHAR2,
3344 p_message_name OUT NOCOPY VARCHAR2 )
3345 RETURN BOOLEAN AS
3346 -- admp_val_ais_item
3347 -- This module validates the IGS_AD_PS_APPL_INST.appl_inst_status.
3348 -- Validations are:
3349 -- The appl_inst_status must be open.
3350 -- If the appl_inst_status is present then the ais_reason should also be present
3351
3352 v_message_name VARCHAR2(30);
3353 BEGIN
3354 -- Set the default message number
3355 p_message_name := NULL;
3356 -- Validate the closed indicator.
3357 IF (IGS_AD_VAL_ACAI_STATUS.admp_val_ais_closed (
3358 p_appl_inst_status,
3359 v_message_name)=FALSE) THEN
3360 p_message_name := v_message_name;
3361 RETURN FALSE;
3362 END IF;
3363
3364 -- Return the default value
3365 RETURN TRUE;
3366
3367 EXCEPTION
3368 WHEN OTHERS THEN
3369 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3370 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_ais_item');
3371 IGS_GE_MSG_STACK.ADD;
3372 App_Exception.Raise_Exception;
3373 END admp_val_ais_item;
3374
3375
3376
3377 FUNCTION admp_val_ais_closed( --arvsrini igsm
3378 p_appl_inst_status IN VARCHAR2 ,
3379 p_message_name OUT NOCOPY VARCHAR2 )
3380 RETURN BOOLEAN AS
3381 v_closed_ind igs_ad_appl_stat.closed_ind%TYPE;
3382 CURSOR c_ais IS
3383 SELECT ais.closed_ind
3384 FROM igs_ad_appl_stat ais
3385 WHERE ais.adm_appl_status = p_appl_inst_status;
3386 BEGIN
3387 -- Validate if igs_ad_appl_stat.adm_appl_status is closed.
3388 OPEN c_ais;
3389 FETCH c_ais INTO v_closed_ind;
3390 IF (c_ais%FOUND) THEN
3391 IF (v_closed_ind = 'Y') THEN
3392 CLOSE c_ais;
3393 p_message_name := 'IGS_AD_AIS_CLOSED';
3394 RETURN FALSE;
3395 END IF;
3396 END IF;
3397 CLOSE c_ais;
3398 p_message_name := NULL;
3399 RETURN TRUE;
3400 EXCEPTION
3401 WHEN OTHERS THEN
3402 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3403 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_ais_closed');
3404 IGS_GE_MSG_STACK.ADD;
3405 App_Exception.Raise_Exception;
3406 END admp_val_ais_closed;
3407
3408
3409
3410 FUNCTION admp_val_ais_aos( --arvsrini igsm
3411 p_s_appl_inst_status IN VARCHAR2 ,
3412 p_s_adm_outcome_status IN VARCHAR2 ,
3413 p_message_name OUT NOCOPY VARCHAR2 )
3414 RETURN BOOLEAN AS
3415
3416 cst_pending CONSTANT VARCHAR2(10) := 'PENDING';
3417 cst_withdrawn CONSTANT VARCHAR2(10) := 'WITHDRAWN';
3418 BEGIN
3419 -- Set the default message number
3420 p_message_name := NULL;
3421 IF p_s_appl_inst_status = cst_withdrawn AND p_s_adm_outcome_status <> cst_pending THEN
3422 p_message_name := 'IGS_AD_AIS_OUT_PEND';
3423 RETURN FALSE;
3424 END IF;
3425 -- Return the default value
3426 RETURN TRUE;
3427
3428 EXCEPTION
3429 WHEN OTHERS THEN
3430 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3431 Fnd_Message.Set_Token('NAME','IGS_AD_VAL_ACAI_STATUS.admp_val_ais_aos');
3432 IGS_GE_MSG_STACK.ADD;
3433 App_Exception.Raise_Exception;
3434 END admp_val_ais_aos;
3435
3436 END igs_ad_val_acai_status;