DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_GEN_003

Source


1 PACKAGE BODY IGS_AD_GEN_003 AS
2 /* $Header: IGSAD03B.pls 120.2 2005/08/18 07:46:55 appldev ship $ */
3  -------------------------------------------------------------------------------------------
4   --Change History:
5   --Who         When            What
6   --knag        29-Oct-02       Bug 2647482 : Created the function get_core_or_optional_unit
7   --                                          to return CORE_ONLY/Y/N for CORE/CORE_OPTIONAL/no
8   --                                          as unit enroll indicator to preenroll process
9   --anwest      22-Jul-05       IGS.M (ADTD003): Created the function to act as
10   --                                             a wrapper for the
11   --                                             Admp_Get_Adm_Perd_Dt function
12   --                                             when requiring a Submission
13   --                                             Deadline or Offer Response date
14 -------------------------------------------------------------------------------------------
15 
16 Function Admp_Get_Acai_Aos_Id(
17   p_person_id IN NUMBER ,
18   p_admission_appl_number IN NUMBER ,
19   p_nominated_course_cd IN VARCHAR2 ,
20   p_acai_sequence_number IN NUMBER ,
21   p_date OUT NOCOPY DATE )
22 RETURN NUMBER IS
23 BEGIN   -- admp_get_acai_aos_id
24     -- This module gets the person id and date of the current
25     -- IGS_AD_PS_APPL_INST. adm_outcome_status was set.
26 DECLARE
27     v_person_id IGS_AD_PS_APPL_INST.person_id%TYPE;
28 
29     CURSOR  c_acai IS
30         SELECT  acai.decision_date,
31             acai.decision_make_id
32         FROM    IGS_AD_PS_APPL_INST acai
33         WHERE   acai.person_id          = p_person_id AND
34             acai.admission_appl_number  = p_admission_appl_number AND
35             acai.nominated_course_cd    = p_nominated_course_cd AND
36             acai.sequence_number        = p_acai_sequence_number AND
37             acai.adm_outcome_status IS NOT NULL
38         ORDER BY decision_date DESC;
39 BEGIN
40     v_person_id := NULL;
41     p_date := NULL;
42     OPEN c_acai;
43     FETCH c_acai INTO p_date,
44                     v_person_id;
45     CLOSE c_acai;
46     RETURN v_person_id;
47 EXCEPTION
48     WHEN OTHERS THEN
49         IF (c_acai%ISOPEN) THEN
50             CLOSE c_acai;
51         END IF;
52         App_Exception.Raise_Exception;
53 END;
54 EXCEPTION
55     WHEN OTHERS THEN
56         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
57         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.admp_get_acai_aos_id');
58         IGS_GE_MSG_STACK.ADD;
59         App_Exception.Raise_Exception;
60 END admp_get_acai_aos_id;
61 
62 Function Admp_Get_Acai_Crv(
63   p_person_id IN NUMBER ,
64   p_admission_appl_number IN NUMBER ,
65   p_nominated_course_cd IN VARCHAR2 ,
66   p_sequence_number IN NUMBER ,
67   p_course_cd OUT NOCOPY VARCHAR2 ,
68   p_crv_version_number OUT NOCOPY NUMBER )
69 RETURN VARCHAR2 IS
70 BEGIN   -- admp_get_acai_crv
71     -- Description: This module gets
72     -- IGS_AD_PS_APPL_INST.course_cd/crv_version_number
73 DECLARE
74     CURSOR  c_acai IS
75         SELECT  acai.course_cd,
76             acai.crv_version_number
77         FROM    IGS_AD_PS_APPL_INST acai
78         WHERE   acai.person_id         = p_person_id AND
79             acai.admission_appl_number = p_admission_appl_number AND
80             acai.nominated_course_cd   = p_nominated_course_cd AND
81             acai.sequence_number       = p_sequence_number;
82     v_acai_recs     c_acai%ROWTYPE;
83 BEGIN
84     OPEN c_acai;
85     FETCH c_acai INTO v_acai_recs;
86     IF (c_acai%NOTFOUND) THEN
87         CLOSE c_acai;
88         p_course_cd := NULL;
89         p_crv_version_number := NULL;
90     ELSE
91         CLOSE c_acai;
92         p_course_cd := v_acai_recs.course_cd;
93         p_crv_version_number := v_acai_recs.crv_version_number;
94     END IF;
95 END;
96 EXCEPTION
97     WHEN OTHERS THEN
98         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
99         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.admp_get_acai_crv');
100         IGS_GE_MSG_STACK.ADD;
101         App_Exception.Raise_Exception;
102 END admp_get_acai_crv;
103 
104 Function Admp_Get_Acai_Status(
105   p_person_id IN NUMBER ,
106   p_admission_appl_number IN NUMBER ,
107   p_nominated_course_cd IN VARCHAR2 ,
108   p_sequence_number IN NUMBER ,
109   p_adm_outcome_status OUT NOCOPY VARCHAR2 ,
110   p_adm_offer_resp_status OUT NOCOPY VARCHAR2 )
111 RETURN VARCHAR2 IS
112 BEGIN   -- admp_get_acai_status
113     -- This module gets the adm_outcome_status and adm_offer_resp_status
114     -- for the specified IGS_AD_PS_APPL_INST. It returns the statuses
115     -- formatted to be used by admission course application context blocks.
116 DECLARE
117     CURSOR  c_acai IS
118         SELECT  acai.adm_outcome_status,
119             acai.adm_offer_resp_status,
120             aors.s_adm_offer_resp_status
121         FROM    IGS_AD_PS_APPL_INST     acai,
122             IGS_AD_OFR_RESP_STAT        aors
123         WHERE   aors.adm_offer_resp_status  = acai.adm_offer_resp_status AND
124             acai.person_id          = p_person_id AND
125             acai.admission_appl_number  = p_admission_appl_number AND
126             acai.nominated_course_cd    = p_nominated_course_cd AND
127             acai.sequence_number        = p_sequence_number;
128     v_acai_recs     c_acai%ROWTYPE;
129 BEGIN
130     OPEN c_acai;
131     FETCH c_acai INTO v_acai_recs;
132     IF (c_acai%NOTFOUND) THEN
133         CLOSE c_acai;
134         p_adm_offer_resp_status := NULL;
135         p_adm_outcome_status := NULL;
136         RETURN NULL;
137     ELSE
138         p_adm_offer_resp_status := v_acai_recs.adm_offer_resp_status;
139         p_adm_outcome_status := v_acai_recs.adm_outcome_status;
140     END IF;
141     CLOSE c_acai;
142     IF (v_acai_recs.s_adm_offer_resp_status = 'NOT-APPLIC') THEN
143             RETURN(v_acai_recs.adm_outcome_status);
144     ELSE
145         RETURN(v_acai_recs.adm_outcome_status|| '/' ||
146                v_acai_recs.adm_offer_resp_status);
147     END IF;
148     CLOSE c_acai;
149 END;
150 EXCEPTION
151     WHEN OTHERS THEN
152         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
153         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.admp_get_acai_status');
154         IGS_GE_MSG_STACK.ADD;
155         App_Exception.Raise_Exception;
156 END admp_get_acai_status;
157 
158 Function Admp_Get_Ac_Bfa(
159   p_tac_admission_cd IN VARCHAR2 ,
160   p_admission_cd OUT NOCOPY VARCHAR2 ,
161   p_basis_for_admission_type OUT NOCOPY VARCHAR2 ,
162   p_message_name OUT NOCOPY VARCHAR2 )
163 RETURN BOOLEAN IS
164 BEGIN   -- admp_get_ac_bfa
165     -- This module finds the user defined admission code and basis for
166     -- admission type from the admission code table.
167 DECLARE
168     v_adm_cd        IGS_AD_CD.admission_cd%TYPE;
169     v_basis_for_adm_type    IGS_AD_BASIS_FOR_AD.basis_for_admission_type%TYPE;
170     CURSOR c_aco IS
171         SELECT  admission_cd,
172             basis_for_admission_type
173         FROM    IGS_AD_CD
174         WHERE   tac_admission_cd  = p_tac_admission_cd AND
175             closed_ind   = 'N'
176         ORDER BY basis_for_admission_type ASC;
177 BEGIN
178     p_message_name := null;
179     OPEN c_aco;
180     FETCH c_aco INTO v_adm_cd,
181              v_basis_for_adm_type;
182     IF (c_aco%NOTFOUND) THEN
183         CLOSE c_aco;
184         p_message_name := 'IGS_AD_CANNOT_DERIVE_ADMCD';
185         RETURN FALSE;
186     ELSIF v_basis_for_adm_type IS NULL THEN
187         CLOSE c_aco;
188         p_message_name := 'IGS_AD_CANNOT_DERIVE_ADMTYPE';
189         RETURN FALSE;
190     END IF;
191     p_admission_cd := v_adm_cd;
192     p_basis_for_admission_type := v_basis_for_adm_type;
193     CLOSE c_aco;
194     RETURN TRUE;
195 END;
196 EXCEPTION
197    WHEN OTHERS THEN
198         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
199         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.admp_get_ac_bfa');
200         IGS_GE_MSG_STACK.ADD;
201         App_Exception.Raise_Exception;
202 END admp_get_ac_bfa;
203 
204 Function Admp_Get_Adm_Perd_Dt(
205   p_dt_alias IN VARCHAR2 ,
206   p_adm_cal_type IN VARCHAR2 ,
207   p_adm_ci_sequence_number IN NUMBER ,
208   p_admission_cat IN VARCHAR2 ,
209   p_s_admission_process_type IN VARCHAR2 ,
210   p_course_cd IN VARCHAR2 ,
211   p_version_number IN NUMBER ,
212   p_acad_cal_type IN VARCHAR2 ,
213   p_location_cd IN VARCHAR2 ,
214   p_attendance_mode IN VARCHAR2 ,
215   p_attendance_type IN VARCHAR2 )
216 RETURN DATE IS
217 BEGIN   --admp_get_adm_perd_dt
218     --This module returns the date value for an admission period date alias.
219 DECLARE
220     v_sacc_due_dt_alias     IGS_AD_CAL_CONF.adm_appl_due_dt_alias%TYPE;
221     v_sacc_final_dt_alias       IGS_AD_CAL_CONF.adm_appl_final_dt_alias%TYPE;
222     v_daiv_alias_val            DATE;
223     v_dai_sequence_number       IGS_AD_PECRS_OFOP_DT.dai_sequence_number%TYPE;
224     v_apcood_found          BOOLEAN;
225     v_curr_component_ctr        NUMBER;
226     v_high_component_ctr        NUMBER;
227     CURSOR c_sacc IS
228         SELECT  adm_appl_due_dt_alias,
229             adm_appl_final_dt_alias
230         FROM    IGS_AD_CAL_CONF sacc
231         WHERE   s_control_num = 1;
232     CURSOR c_daiv IS
233         SELECT IGS_CA_GEN_001.calp_set_alias_value(absolute_val, IGS_CA_GEN_002.cals_clc_dt_from_dai(ci_sequence_number, CAL_TYPE, DT_ALIAS, sequence_number) ) alias_val
234         FROM     IGS_CA_DA_INST daiv,
235              IGS_AD_PERD_AD_CAT apac
236         WHERE   daiv.dt_alias           = p_dt_alias            AND
237             apac.adm_cal_type       = p_adm_cal_type        AND
238             apac.adm_ci_sequence_number = p_adm_ci_sequence_number  AND
239             apac.admission_cat      = p_admission_cat       AND
240             apac.adm_cal_type       = daiv.cal_type         AND
241             apac.adm_ci_sequence_number = daiv.ci_sequence_number   AND
242             NOT EXISTS(
243                 SELECT 'x'
244                 FROM    IGS_AD_PECRS_OFOP_DT    apcood
245                 WHERE   apcood.adm_cal_type     = apac.adm_cal_type     AND
246                     apcood.adm_ci_sequence_number   = apac.adm_ci_sequence_number   AND
247                     apcood.dt_alias         = daiv.dt_alias         AND
248                     apcood.dai_sequence_number  = daiv.sequence_number)
249         ORDER BY 1 desc;
250     CURSOR c_daiv2 IS
251         SELECT IGS_CA_GEN_001.calp_set_alias_value(absolute_val, IGS_CA_GEN_002.cals_clc_dt_from_dai(ci_sequence_number, CAL_TYPE, DT_ALIAS, sequence_number) ) alias_val
252         FROM     IGS_CA_DA_INST daiv
253         WHERE   daiv.cal_type           = p_adm_cal_type        AND
254             daiv.ci_sequence_number     = p_adm_ci_sequence_number  AND
255             daiv.dt_alias           = p_dt_alias            AND
256             daiv.sequence_number        = v_dai_sequence_number;
257     CURSOR c_apcood IS
258         SELECT  apcood.s_admission_process_type,
259             apcood.course_cd,
260             apcood.version_number,
261             apcood.acad_cal_type,
262             apcood.location_cd,
263             apcood.attendance_mode,
264             apcood.attendance_type,
265             apcood.dai_sequence_number
266         FROM    IGS_AD_PECRS_OFOP_DT    apcood
267         WHERE   apcood.adm_cal_type     = p_adm_cal_type        AND
268             apcood.adm_ci_sequence_number   = p_adm_ci_sequence_number  AND
269             apcood.admission_cat        = p_admission_cat       AND
270             apcood.dt_alias         = p_dt_alias;
271 BEGIN
272     --Initialise variables
273     v_apcood_found      := FALSE;
274     v_curr_component_ctr    := 0;
275     v_high_component_ctr    := 0;
276     v_daiv_alias_val    := NULL;
277     --Validate parameters, none can be null
278     IF p_dt_alias IS NULL OR
279             p_adm_cal_type          IS NULL OR
280             p_adm_ci_sequence_number    IS NULL OR
281             p_admission_cat         IS NULL THEN
282         RETURN NULL;
283     END IF;
284     --Determine if date alias is allowed admission period date override
285     OPEN c_sacc;
286     FETCH c_sacc INTO   v_sacc_due_dt_alias,
287                 v_sacc_final_dt_alias;
288     IF (c_sacc%NOTFOUND) THEN
289         CLOSE c_sacc;
290         RETURN NULL;
291     END IF;
292     CLOSE c_sacc;
293     IF (           ((v_sacc_due_dt_alias IS NULL)               OR
294             (v_sacc_due_dt_alias <> p_dt_alias))            AND
295                ((v_sacc_final_dt_alias IS NULL)                 OR
296             (v_sacc_final_dt_alias<> p_dt_alias)))          THEN
297         --Get the date value straight from the dt_alias_instance linked to the
298         -- admission
299         --Period, the date alias passed cannot have admission period date overrides
300         --applied
301         OPEN c_daiv;
302         FETCH c_daiv INTO v_daiv_alias_val;
303         IF (c_daiv%NOTFOUND) THEN
304             CLOSE c_daiv;
305             RETURN NULL;
306         END IF;
307         CLOSE c_daiv;
308         RETURN v_daiv_alias_val;
309     END IF;
310     IF p_s_admission_process_type IS NULL AND
311             p_course_cd     IS NULL AND
312             p_version_number    IS NULL AND
313             p_acad_cal_type     IS NULL AND
314             p_location_cd       IS NULL AND
315             p_attendance_mode   IS NULL AND
316             p_attendance_type   IS NULL THEN
317         RETURN NULL;
318     END IF;
319     --Determine if date overrides exist for the date alias in the admission period
320     FOR v_apcood_rec IN c_apcood LOOP
321         v_apcood_found := TRUE;
322         --Check that the record firstly is valid for the parameters
323         IF ((v_apcood_rec.s_admission_process_type IS NULL  OR
324                 v_apcood_rec.s_admission_process_type = p_s_admission_process_type) AND
328                 v_apcood_rec.acad_cal_type  = p_acad_cal_type))         AND
325                 (v_apcood_rec.course_cd IS NULL OR
326                 (v_apcood_rec.course_cd     = p_course_cd       AND
327                 v_apcood_rec.version_number     = p_version_number  AND
329                 (v_apcood_rec.location_cd   IS NULL OR
330                 v_apcood_rec.location_cd    = p_location_cd)            AND
331                 (v_apcood_rec.attendance_mode   IS NULL OR
332                 v_apcood_rec.attendance_mode    = p_attendance_mode)            AND
333                 (v_apcood_rec.attendance_type   IS NULL OR
334                 v_apcood_rec.attendance_type    = p_attendance_type))   THEN
335             --Match on the components and save the IGS_CA_DA_INST_V key for the
336             --Record that matches with the highest number of components
337             IF (v_apcood_rec.s_admission_process_type IS NOT NULL) THEN
338                 IF (v_apcood_rec.s_admission_process_type = p_s_admission_process_type) THEN
339                     v_curr_component_ctr := v_curr_component_ctr + 1;
340                 END IF;
341             END IF;
342             IF (v_apcood_rec.course_cd IS NOT NULL) THEN
343                 IF (v_apcood_rec.course_cd = p_course_cd    AND
344                         v_apcood_rec.version_number = p_version_number  AND
345                         v_apcood_rec.acad_cal_type  = p_acad_cal_type) THEN
346                     v_curr_component_ctr := v_curr_component_ctr + 1;
347                 END IF;
348             END IF;
349             IF (v_apcood_rec.location_cd IS NOT NULL) THEN
350                 IF (v_apcood_rec.location_cd = p_location_cd) THEN
351                     v_curr_component_ctr := v_curr_component_ctr + 1;
352                 END IF;
353             END IF;
354             IF (v_apcood_rec.attendance_mode IS NOT NULL) THEN
355                 IF (v_apcood_rec.attendance_mode = p_attendance_mode) THEN
356                     v_curr_component_ctr := v_curr_component_ctr + 1;
357                 END IF;
358             END IF;
359             IF (v_apcood_rec.attendance_type IS NOT NULL) THEN
360                 IF (v_apcood_rec.attendance_type = p_attendance_type) THEN
361                     v_curr_component_ctr := v_curr_component_ctr + 1;
362                 END IF;
363             END IF;
364             --If this record has the most number of matches then we want to use
365             --its dai_sequence_number
366             IF (v_curr_component_ctr > v_high_component_ctr) THEN
367                 v_high_component_ctr := v_curr_component_ctr;
368                 v_dai_sequence_number := v_apcood_rec.dai_sequence_number;
369             END IF;
370             v_curr_component_ctr := 0;
371         END IF;
372     END LOOP;
373     IF (NOT v_apcood_found) THEN
374         --Get the date value straight from the dt_alias_instance
375         --linked to the admission period
376         OPEN c_daiv;
377         FETCH c_daiv INTO v_daiv_alias_val;
378         CLOSE c_daiv;
379         RETURN v_daiv_alias_val;
380     END IF;
381     IF (v_dai_sequence_number IS NULL) THEN
382         --Get the date value straight from the dt_alias_instance
383         --linked to the admission Period, no override was found
384         OPEN c_daiv;
385         FETCH c_daiv INTO v_daiv_alias_val;
386         CLOSE c_daiv;
387         RETURN v_daiv_alias_val;
388     END IF;
389     OPEN c_daiv2;
390     FETCH c_daiv2 INTO v_daiv_alias_val;
391     IF (c_daiv2%NOTFOUND) THEN
392         CLOSE c_daiv2;
393         RETURN NULL;
394     END IF;
395     CLOSE c_daiv2;
396     RETURN v_daiv_alias_val;
397 END;
398 END admp_get_adm_perd_dt;
399 
400 Procedure Admp_Get_Adm_Pp(
401   p_oracle_username IN VARCHAR2 ,
402   p_adm_acad_cal_type OUT NOCOPY VARCHAR2 ,
403   p_adm_acad_ci_sequence_number OUT NOCOPY NUMBER ,
404   p_adm_acad_alternate_code OUT NOCOPY VARCHAR2 ,
405   p_adm_acad_abbreviation OUT NOCOPY VARCHAR2 ,
406   p_adm_adm_cal_type OUT NOCOPY VARCHAR2 ,
407   p_adm_adm_ci_sequence_number OUT NOCOPY NUMBER ,
408   p_adm_adm_alternate_code OUT NOCOPY VARCHAR2 ,
409   p_adm_adm_abbreviation OUT NOCOPY VARCHAR2 ,
410   p_adm_admission_cat OUT NOCOPY VARCHAR2 ,
411   p_adm_s_admission_process_type OUT NOCOPY VARCHAR2 ,
412   p_adm_ac_description OUT NOCOPY VARCHAR2 )
413 IS
414 BEGIN
415   NULL;
416 END admp_get_adm_pp;
417 
418 Procedure Admp_Get_Apcs_Mndtry(
419   p_admission_cat IN VARCHAR2 ,
420   p_s_admission_process_type IN VARCHAR2 ,
421   p_mandatory_athletics OUT NOCOPY BOOLEAN,
422   p_mandatory_alternate OUT NOCOPY BOOLEAN ,
423   p_mandatory_address OUT NOCOPY BOOLEAN ,
424   p_mandatory_disability OUT NOCOPY BOOLEAN ,
425   p_mandatory_visa OUT NOCOPY BOOLEAN ,
426   p_mandatory_finance OUT NOCOPY BOOLEAN ,
427   p_mandatory_notes OUT NOCOPY BOOLEAN ,
428   p_mandatory_statistics OUT NOCOPY BOOLEAN ,
429   p_mandatory_alias OUT NOCOPY BOOLEAN ,
430   p_mandatory_tertiary OUT NOCOPY BOOLEAN ,
431   p_mandatory_aus_sec_ed OUT NOCOPY BOOLEAN ,
432   p_mandatory_os_sec_ed OUT NOCOPY BOOLEAN ,
433   p_mandatory_employment OUT NOCOPY BOOLEAN ,
434   p_mandatory_membership OUT NOCOPY BOOLEAN ,
435   p_mandatory_dob OUT NOCOPY BOOLEAN ,
436   p_mandatory_title OUT NOCOPY BOOLEAN ,
437   p_mandatory_referee OUT NOCOPY BOOLEAN ,
438   p_mandatory_scholarship OUT NOCOPY BOOLEAN ,
439   p_mandatory_lang_prof OUT NOCOPY BOOLEAN ,
443   p_mandatory_fee_assess OUT NOCOPY BOOLEAN ,
440   p_mandatory_interview OUT NOCOPY BOOLEAN ,
441   p_mandatory_exchange OUT NOCOPY BOOLEAN ,
442   p_mandatory_adm_test OUT NOCOPY BOOLEAN ,
444   p_mandatory_cor_category OUT NOCOPY BOOLEAN ,
445   p_mandatory_enr_category OUT NOCOPY BOOLEAN ,
446   p_mandatory_research OUT NOCOPY BOOLEAN ,
447   p_mandatory_rank_app OUT NOCOPY BOOLEAN ,
448   p_mandatory_completion OUT NOCOPY BOOLEAN ,
449   p_mandatory_rank_set OUT NOCOPY BOOLEAN ,
450   p_mandatory_basis_adm OUT NOCOPY BOOLEAN ,
451   p_mandatory_crs_international OUT NOCOPY BOOLEAN ,
452   p_mandatory_ass_tracking OUT NOCOPY BOOLEAN ,
453   p_mandatory_adm_code OUT NOCOPY BOOLEAN ,
454   p_mandatory_fund_source OUT NOCOPY BOOLEAN ,
455   p_mandatory_location OUT NOCOPY BOOLEAN ,
456   p_mandatory_att_mode OUT NOCOPY BOOLEAN ,
457   p_mandatory_att_type OUT NOCOPY BOOLEAN ,
458   p_mandatory_unit_set OUT NOCOPY BOOLEAN ,
459   p_mandatory_evaluation_tab OUT NOCOPY BOOLEAN ,
460   p_mandatory_prog_approval OUT NOCOPY BOOLEAN ,
461   p_mandatory_indices OUT NOCOPY BOOLEAN ,
462   p_mandatory_tst_scores OUT NOCOPY BOOLEAN ,
463   p_mandatory_outcome OUT NOCOPY BOOLEAN ,
464   p_mandatory_override OUT NOCOPY BOOLEAN ,
465   p_mandatory_spl_consider OUT NOCOPY BOOLEAN ,
466   p_mandatory_cond_offer OUT NOCOPY BOOLEAN ,
467   p_mandatory_offer_dead OUT NOCOPY BOOLEAN ,
468   p_mandatory_offer_resp OUT NOCOPY BOOLEAN ,
469   p_mandatory_offer_defer OUT NOCOPY BOOLEAN ,
470   p_mandatory_offer_compl OUT NOCOPY BOOLEAN ,
471   p_mandatory_transfer OUT NOCOPY BOOLEAN ,
472   p_mandatory_other_inst OUT NOCOPY BOOLEAN ,
473   p_mandatory_edu_goals OUT NOCOPY BOOLEAN ,
474   p_mandatory_acad_interest OUT NOCOPY BOOLEAN ,
475   p_mandatory_app_intent OUT NOCOPY BOOLEAN ,
476   p_mandatory_spl_interest OUT NOCOPY BOOLEAN ,
477   p_mandatory_spl_talents OUT NOCOPY BOOLEAN ,
478   p_mandatory_miscell OUT NOCOPY BOOLEAN ,
479   p_mandatory_fees OUT NOCOPY BOOLEAN ,
480   p_mandatory_program OUT NOCOPY BOOLEAN ,
481   p_mandatory_completness OUT NOCOPY BOOLEAN ,
482   p_mandatory_creden OUT NOCOPY BOOLEAN ,
483   p_mandatory_review_det OUT NOCOPY BOOLEAN ,
484   p_mandatory_recomm_det OUT NOCOPY BOOLEAN ,
485   p_mandatory_fin_aid OUT NOCOPY BOOLEAN ,
486   p_mandatory_acad_honors OUT NOCOPY BOOLEAN ,
487   p_mandatory_des_unitsets OUT NOCOPY BOOLEAN,
488   p_mandatory_extrcurr     OUT NOCOPY BOOLEAN )
489 IS
490 BEGIN   -- admp_get_apcs_mndtry
491     -- Return the steps for an admission process category
492 DECLARE
493     v_unit_set_step     BOOLEAN DEFAULT FALSE;
494     v_un_crs_us     BOOLEAN DEFAULT FALSE;
495     CURSOR c_apcs IS
496         SELECT  apcs.s_admission_step_type
497         FROM    IGS_AD_PRCS_CAT_STEP    apcs
498         WHERE   admission_cat           = p_admission_cat       AND
499             s_admission_process_type    = p_s_admission_process_type    AND
500             mandatory_step_ind      = 'Y' AND
501             step_group_type <> 'TRACK'; -- 2402377
502 BEGIN
503     -- Initialise the output parameters
504     p_mandatory_athletics       := FALSE;
505     p_mandatory_alternate       := FALSE;
506     p_mandatory_address     := FALSE;
507     p_mandatory_disability      := FALSE;
508     p_mandatory_visa        := FALSE;
509     p_mandatory_finance     := FALSE;
510     p_mandatory_notes       := FALSE;
511     p_mandatory_statistics      := FALSE;
512     p_mandatory_alias       := FALSE;
513     p_mandatory_tertiary        := FALSE;
514     p_mandatory_aus_sec_ed      := FALSE;
515     p_mandatory_os_sec_ed       := FALSE;
516     p_mandatory_employment      := FALSE;
517     p_mandatory_membership      := FALSE;
518     p_mandatory_referee     := FALSE;
519     p_mandatory_scholarship     := FALSE;
520     p_mandatory_lang_prof       := FALSE;
521     p_mandatory_interview       := FALSE;
522     p_mandatory_exchange        := FALSE;
523     p_mandatory_adm_test        := FALSE;
524     p_mandatory_fee_assess      := FALSE;
525     p_mandatory_cor_category    := FALSE;
526     p_mandatory_enr_category    := FALSE;
527     p_mandatory_research        := FALSE;
528     p_mandatory_rank_app        := FALSE;
529     p_mandatory_completion      := FALSE;
530     p_mandatory_rank_set        := FALSE;
531     p_mandatory_basis_adm       := FALSE;
532     p_mandatory_crs_international   := FALSE;
533     p_mandatory_ass_tracking    := FALSE;
534     p_mandatory_adm_code        := FALSE;
535     p_mandatory_fund_source     := FALSE;
536     p_mandatory_unit_set        := FALSE;
537     p_mandatory_dob         := TRUE;
538     p_mandatory_title       := TRUE;
539     p_mandatory_location        := TRUE;
540     p_mandatory_att_mode        := TRUE;
541     p_mandatory_att_type        := TRUE;
542 
543         p_mandatory_evaluation_tab  := FALSE;
544     p_mandatory_prog_approval   := FALSE;
545     p_mandatory_indices         := FALSE;
546     p_mandatory_tst_scores      := FALSE;
547     p_mandatory_outcome         := FALSE;
548     p_mandatory_override        := FALSE;
549     p_mandatory_spl_consider    := FALSE;
550     p_mandatory_cond_offer      := FALSE;
551     p_mandatory_offer_dead      := FALSE;
552     p_mandatory_offer_resp      := FALSE;
553     p_mandatory_offer_defer     := FALSE;
554     p_mandatory_offer_compl     := FALSE;
555     p_mandatory_transfer        := FALSE;
559     p_mandatory_app_intent      := FALSE;
556     p_mandatory_other_inst      := FALSE;
557     p_mandatory_edu_goals       := FALSE;
558     p_mandatory_acad_interest   := FALSE;
560     p_mandatory_spl_interest    := FALSE;
561     p_mandatory_spl_talents     := FALSE;
562     p_mandatory_miscell     := FALSE;
563     p_mandatory_fees        := FALSE;
564     p_mandatory_program         := FALSE;
565     p_mandatory_completness     := FALSE;
566     p_mandatory_creden      := FALSE;
567     p_mandatory_review_det      := FALSE;
568     p_mandatory_recomm_det      := FALSE;
569     p_mandatory_fin_aid         := FALSE;
570     p_mandatory_acad_honors     := FALSE;
571     p_mandatory_des_unitsets        := FALSE; -- added for 2382599
572     p_mandatory_extrcurr            := FALSE;
573 
574     FOR v_apcs_rec IN c_apcs LOOP
575         IF (v_apcs_rec.s_admission_step_type = 'ATHLETICS') THEN
576             p_mandatory_athletics := TRUE;
577         END IF;
578         IF (v_apcs_rec.s_admission_step_type = 'PER-ALTERNATE') THEN
579             p_mandatory_alternate := TRUE;
580         END IF;
581         IF (v_apcs_rec.s_admission_step_type = 'PER-ADDR') THEN
582             p_mandatory_address := TRUE;
583         END IF;
584         IF (v_apcs_rec.s_admission_step_type = 'DISABILITY') THEN
585             p_mandatory_disability := TRUE;
586         END IF;
587         IF (v_apcs_rec.s_admission_step_type = 'PER-INTL') THEN
588             p_mandatory_visa := TRUE;
589         END IF;
590         IF (v_apcs_rec.s_admission_step_type = 'FINANCE') THEN
591             p_mandatory_finance := TRUE;
592         END IF;
593         IF (v_apcs_rec.s_admission_step_type = 'PER-NOTES') THEN
594             p_mandatory_notes := TRUE;
595         END IF;
596         IF (v_apcs_rec.s_admission_step_type = 'PER-STAT') THEN
597             p_mandatory_statistics := TRUE;
598         END IF;
599         IF (v_apcs_rec.s_admission_step_type = 'PER-ALIASES') THEN
600             p_mandatory_alias := TRUE;
601         END IF;
602         IF (v_apcs_rec.s_admission_step_type = 'TERT-EDN') THEN
603             p_mandatory_tertiary := TRUE;
604         END IF;
605         IF (v_apcs_rec.s_admission_step_type = 'AUS-SEC-ED') THEN
606             p_mandatory_aus_sec_ed := TRUE;
607         END IF;
608         IF (v_apcs_rec.s_admission_step_type = 'OS-SEC-ED') THEN
609             p_mandatory_os_sec_ed := TRUE;
610         END IF;
611         IF (v_apcs_rec.s_admission_step_type = 'EMPLOYMENT') THEN
612             p_mandatory_employment := TRUE;
613         END IF;
614         IF (v_apcs_rec.s_admission_step_type = 'PROFMEMBER') THEN
615             p_mandatory_membership := TRUE;
616         END IF;
617         IF (v_apcs_rec.s_admission_step_type = 'REFEREE') THEN
618             p_mandatory_referee := TRUE;
619         END IF;
620         IF (v_apcs_rec.s_admission_step_type = 'SCHOLRSHIP') THEN
621             p_mandatory_scholarship := TRUE;
622         END IF;
623         IF (v_apcs_rec.s_admission_step_type = 'LANG-PROF') THEN
624             p_mandatory_lang_prof := TRUE;
625         END IF;
626         IF (v_apcs_rec.s_admission_step_type = 'INTERVIEW') THEN
627             p_mandatory_interview := TRUE;
628         END IF;
629         IF (v_apcs_rec.s_admission_step_type = 'EXCHANGE') THEN
630             p_mandatory_exchange := TRUE;
631         END IF;
632         IF (v_apcs_rec.s_admission_step_type = 'ADM-TEST') THEN
633             p_mandatory_adm_test := TRUE;
634         END IF;
635         IF (v_apcs_rec.s_admission_step_type = 'FEE-ASSESS') THEN
636             p_mandatory_fee_assess := TRUE;
637         END IF;
638         IF (v_apcs_rec.s_admission_step_type = 'CORCATEGRY') THEN
639             p_mandatory_cor_category := TRUE;
640         END IF;
641         IF (v_apcs_rec.s_admission_step_type = 'ENRCATEGRY') THEN
642             p_mandatory_enr_category := TRUE;
643         END IF;
644         IF (v_apcs_rec.s_admission_step_type = 'RESEARCH') THEN
645             p_mandatory_research := TRUE;
646         END IF;
647         IF (v_apcs_rec.s_admission_step_type = 'RANK-APP') THEN
648             p_mandatory_rank_app := TRUE;
649         END IF;
650         IF (v_apcs_rec.s_admission_step_type = 'COMPLETION') THEN
651             p_mandatory_completion := TRUE;
652         END IF;
653         IF (v_apcs_rec.s_admission_step_type = 'RANK-SET') THEN
654             p_mandatory_rank_set := TRUE;
655         END IF;
656         IF (v_apcs_rec.s_admission_step_type = 'BASIS-ADM') THEN
657             p_mandatory_basis_adm := TRUE;
658         END IF;
659         IF (v_apcs_rec.s_admission_step_type = 'CRS-INTERN') THEN
660             p_mandatory_crs_international := TRUE;
661         END IF;
662         IF (v_apcs_rec.s_admission_step_type = 'ASS-TRACK') THEN
663             p_mandatory_ass_tracking := TRUE;
664         END IF;
665         IF (v_apcs_rec.s_admission_step_type = 'ADM-CODE') THEN
666             p_mandatory_adm_code := TRUE;
667         END IF;
668         IF (v_apcs_rec.s_admission_step_type = 'FUNDSOURCE') THEN
669             p_mandatory_fund_source := TRUE;
670         END IF;
671         IF (v_apcs_rec.s_admission_step_type = 'UN-DOB') THEN
672             p_mandatory_dob := FALSE;
673         END IF;
674         IF (v_apcs_rec.s_admission_step_type = 'UN-TITLE') THEN
678             p_mandatory_location := FALSE;
675             p_mandatory_title := FALSE;
676         END IF;
677         IF (v_apcs_rec.s_admission_step_type = 'UN-CRS-LOC') THEN
679         END IF;
680         IF (v_apcs_rec.s_admission_step_type = 'UN-CRS-MOD') THEN
681             p_mandatory_att_mode := FALSE;
682         END IF;
683         IF (v_apcs_rec.s_admission_step_type = 'UN-CRS-TYP') THEN
684             p_mandatory_att_type := FALSE;
685         END IF;
686         IF (v_apcs_rec.s_admission_step_type = 'UNIT-SET') THEN
687             v_unit_set_step := TRUE;
688         END IF;
689         IF (v_apcs_rec.s_admission_step_type = 'UN-CRS-US') THEN
690             v_un_crs_us := TRUE;
691         END IF;
692 
693         IF (v_apcs_rec.s_admission_step_type = 'PGM-APPRV') THEN
694                 p_mandatory_prog_approval  := TRUE;
695                 END IF;
696         IF (v_apcs_rec.s_admission_step_type = 'ACAD-HONORS') THEN
697                 p_mandatory_acad_honors  := TRUE;
698                 END IF;
699             IF (v_apcs_rec.s_admission_step_type = 'ACAD-INTEREST') THEN
700                 p_mandatory_acad_interest  := TRUE;
701                 END IF;
702         IF (v_apcs_rec.s_admission_step_type = 'ACAD-INTENT') THEN
703                 p_mandatory_app_intent  := TRUE;
704                 END IF;
705         IF (v_apcs_rec.s_admission_step_type = 'EDU-GOALS') THEN
706                 p_mandatory_edu_goals    := TRUE;
707                 END IF;
708         IF (v_apcs_rec.s_admission_step_type = 'OTH-INST-APPL') THEN
709                 p_mandatory_other_inst    := TRUE;
710                 END IF;
711         IF (v_apcs_rec.s_admission_step_type = 'SPL-TALENT') THEN
712                 p_mandatory_spl_talents    := TRUE;
713                 END IF;
714         IF (v_apcs_rec.s_admission_step_type = 'SPL-INTEREST') THEN
715                 p_mandatory_spl_talents    := TRUE;
716                 END IF;
717         IF (v_apcs_rec.s_admission_step_type = 'MISC-DTL') THEN
718                 p_mandatory_miscell    := TRUE;
719                 END IF;
720         IF (v_apcs_rec.s_admission_step_type = 'FINAID') THEN
721                 p_mandatory_fin_aid     := TRUE;
722                 END IF;
723 
724         IF (v_apcs_rec.s_admission_step_type = 'DES-UNITSETS') THEN -- added for 2382599
725                 p_mandatory_des_unitsets     := TRUE;
726                 END IF;
727 
728         IF (v_apcs_rec.s_admission_step_type = 'EXTRACURRI') THEN
729                         p_mandatory_extrcurr := TRUE;
730                 END IF;
731 
732 
733     END LOOP;
734     IF (v_unit_set_step AND
735             NOT v_un_crs_us) THEN
736         p_mandatory_unit_set := TRUE;
737     END IF;
738 EXCEPTION
739     WHEN OTHERS THEN
740         IF (c_apcs%ISOPEN) THEN
741             CLOSE c_apcs;
742         END IF;
743         App_Exception.Raise_Exception;
744 END;
745 EXCEPTION
746     WHEN OTHERS THEN
747         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
748         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.admp_get_apcs_mndtry');
749         IGS_GE_MSG_STACK.ADD;
750         App_Exception.Raise_Exception;
751 END admp_get_apcs_mndtry;
752 
753 PROCEDURE get_entr_doc_apc (p_admission_cat IN IGS_AD_PRCS_CAT_STEP.admission_cat%TYPE,
754                                    p_s_admission_process_type IN IGS_AD_PRCS_CAT_STEP.s_admission_process_type%TYPE,
755                                    l_adm_doc_status OUT NOCOPY IGS_AD_PS_APPL_INST_ALL.adm_doc_status%TYPE,
756                                    l_adm_entr_qual_status OUT NOCOPY IGS_AD_PS_APPL_INST_ALL.adm_entry_qual_status%TYPE) IS
757 /*****************************************************************************************
758 Created By: [email protected]
759 Date Created : 09-SEP-2002
760 Purpose: 1.Returns the application completion status and entry qual status based on APC
761 Known limitations,enhancements,remarks:
762 Change History
763 Who        When          What
764 *****************************************************************************************/
765 CURSOR c_apcs_step (
766                 cp_admission_cat                IGS_AD_PRCS_CAT_STEP.admission_cat%TYPE,
767                 cp_s_admission_process_type     IGS_AD_PRCS_CAT_STEP.s_admission_process_type%TYPE,
768                 cp_s_admission_step_type        IGS_AD_PRCS_CAT_STEP.s_admission_step_type%TYPE) IS
769         SELECT  apcs.s_admission_step_type
770         FROM    IGS_AD_PRCS_CAT_STEP apcs
771         WHERE   apcs.admission_cat = cp_admission_cat AND
772                 apcs.s_admission_process_type = cp_s_admission_process_type AND
773                 apcs.s_admission_step_type = cp_s_admission_step_type AND
774         apcs.step_group_type = 'OUTCOME';
775         l_s_admission_step_type IGS_AD_PRCS_CAT_STEP.s_admission_step_type%TYPE;
776 BEGIN
777   IF p_s_admission_process_type = 'NON-AWARD' THEN
778      l_adm_entr_qual_status := IGS_AD_GEN_009.admp_get_sys_aeqs('NOT-APPLIC');
779      l_adm_doc_status:= IGS_AD_GEN_009.admp_get_sys_ads('NOT-APPLIC');
780   ELSE
781      OPEN c_apcs_step(p_admission_cat,p_s_admission_process_type,'DFLT_ENTRY_QUAL');
782        FETCH c_apcs_step INTO l_s_admission_step_type;
783          IF c_apcs_step%FOUND AND l_s_admission_step_type = 'DFLT_ENTRY_QUAL' THEN
784            l_adm_entr_qual_status := IGS_AD_GEN_009.admp_get_sys_aeqs('QUALIFIED');
785          ELSE
786            l_adm_entr_qual_status := IGS_AD_GEN_009.admp_get_sys_aeqs('PENDING');
787      END IF;
788      CLOSE c_apcs_step;
789 
790      OPEN c_apcs_step(p_admission_cat,p_s_admission_process_type,'DFLT_DOC_STATUS');
791        FETCH c_apcs_step INTO l_s_admission_step_type;
792          IF c_apcs_step%FOUND AND l_s_admission_step_type = 'DFLT_DOC_STATUS' THEN
793            l_adm_doc_status:= IGS_AD_GEN_009.admp_get_sys_ads('SATISFIED');
794          ELSE
795            l_adm_doc_status:= IGS_AD_GEN_009.admp_get_sys_ads('PENDING');
796      END IF;
797      CLOSE c_apcs_step;
798   END IF;
799   END get_entr_doc_apc;
800 
801 FUNCTION get_core_or_optional_unit (
802   p_person_id               igs_ad_appl_all.person_id%TYPE,
803   p_admission_appl_number   igs_ad_appl_all.admission_appl_number%TYPE)
804 RETURN VARCHAR2 IS -- (Y, CORE_ONLY, N)
805 /*****************************************************************************************
806 Created By: knag
807 Date Created : 29-OCT-2002
808 Purpose: To return CORE_ONLY/Y/N for CORE/CORE_OPTIONAL/no as unit enrollment indicator
809          to pre-enrollment process
810 Known limitations,enhancements,remarks:
811 Change History
812 Who        When          What
813 *****************************************************************************************/
814   -- will fetch first CORE_OPTIONAL then CORE if both present
815   CURSOR     c_get_core_or_optional_unit IS
816     SELECT   apcs.s_admission_step_type
817     FROM     igs_ad_prcs_cat_step_all apcs, igs_ad_appl_all appl
818     WHERE    appl.person_id = p_person_id
819     AND      appl.admission_appl_number = p_admission_appl_number
820     AND      apcs.admission_cat = appl.admission_cat
821     AND      apcs.s_admission_process_type = appl.s_admission_process_type
822     AND      apcs.step_group_type = 'UNIT-VAL'
823     AND      apcs.s_admission_step_type IN ('CORE','CORE_OPTIONAL')
824     ORDER BY apcs.s_admission_step_type desc;
825 
826   l_s_admission_step_type igs_ad_prcs_cat_step_all.s_admission_step_type%TYPE;
827 BEGIN
828   IF p_person_id IS NOT NULL AND p_admission_appl_number IS NOT NULL THEN
829     OPEN c_get_core_or_optional_unit;
830     FETCH c_get_core_or_optional_unit INTO l_s_admission_step_type;
831     CLOSE c_get_core_or_optional_unit;
832   END IF;
833   IF l_s_admission_step_type IS NOT NULL THEN
834     IF l_s_admission_step_type = 'CORE_OPTIONAL' THEN
835       l_s_admission_step_type := 'Y';
836     ELSIF l_s_admission_step_type = 'CORE' THEN
837       l_s_admission_step_type := 'CORE_ONLY';
838     END IF;
839   ELSE
840     l_s_admission_step_type := 'N';
841   END IF;
842   RETURN l_s_admission_step_type;
843 EXCEPTION
844   WHEN OTHERS THEN
845     IF c_get_core_or_optional_unit%ISOPEN THEN
846       CLOSE c_get_core_or_optional_unit;
847     END IF;
848     fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
849     fnd_message.set_token('NAME','igs_ad_gen_003.get_core_or_optional_unit');
850     igs_ge_msg_stack.add;
851     app_exception.raise_exception;
852 END get_core_or_optional_unit;
853 
854 
855 Function get_apc_date(p_date_type IN VARCHAR2 ,
856             p_adm_cal_type IN VARCHAR2 ,
857             p_adm_ci_sequence_number IN NUMBER ,
858             p_admission_cat IN VARCHAR2 ,
859             p_s_admission_process_type IN VARCHAR2 ,
860             p_course_cd IN VARCHAR2 ,
861             p_version_number IN NUMBER ,
862             p_acad_cal_type IN VARCHAR2 ,
863             p_location_cd IN VARCHAR2 ,
864             p_attendance_mode IN VARCHAR2 ,
865             p_attendance_type IN VARCHAR2 )
866 RETURN DATE IS
867 
868 /******************************************************************************
869 Created By:     anwest
870 Date Created:   22-JUL-2005
871 Purpose:        To act as a wrapper for the Admp_Get_Adm_Perd_Dt function when
872                 requiring a Submission Deadline or Offer Response date
873 Known limitations,enhancements,remarks:
874 Change History
875 Who        When          What
876 ******************************************************************************/
877 
878 BEGIN
879 
880 DECLARE
881 
885     l_offer_resp_dt_alias   IGS_AD_CAL_CONF.adm_appl_offer_resp_dt_alias%TYPE;
882     l_apc_step_exists       VARCHAR2(1);
883     l_due_dt_alias          IGS_AD_CAL_CONF.adm_appl_due_dt_alias%TYPE;
884     l_final_dt_alias        IGS_AD_CAL_CONF.adm_appl_final_dt_alias%TYPE;
886     l_dt_alias              IGS_AD_CAL_CONF.adm_appl_offer_resp_dt_alias%TYPE;
887     l_out_dt                DATE;
888 
889     CURSOR c_apc_step IS
890         SELECT  'X'
891         FROM    IGS_AD_PRCS_CAT_STEP
892         WHERE   admission_cat = p_admission_cat AND
893                 s_admission_process_type = p_s_admission_process_type AND
894                 s_admission_step_type = 'LATE-APP' AND
895                 step_group_type <> 'TRACK';
896 
897     CURSOR c_dt_alias IS
898         SELECT  adm_appl_due_dt_alias, adm_appl_final_dt_alias, adm_appl_offer_resp_dt_alias
899         FROM   IGS_AD_CAL_CONF
900         WHERE  s_control_num = '1';
901 
902 BEGIN
903 
904     OPEN c_dt_alias;
905     FETCH c_dt_alias INTO l_due_dt_alias, l_final_dt_alias, l_offer_resp_dt_alias;
906     CLOSE c_dt_alias;
907 
908     IF p_date_type = 'SUBMISSION_DEADLINE' THEN
909 
910         OPEN c_apc_step;
911         FETCH c_apc_step INTO l_apc_step_exists;
912         CLOSE c_apc_step;
913 
914         IF l_apc_step_exists IS NOT NULL THEN
915             l_dt_alias:= l_final_dt_alias;
916         ELSE
917             l_dt_alias:= l_due_dt_alias;
918         END IF;
919 
920     ELSIF p_date_type = 'OFFER_RESPONSE_DATE' THEN
921 
922         l_dt_alias:= l_offer_resp_dt_alias;
923 
924     ELSE
925 
926         l_dt_alias:= NULL;
927 
928     END IF;
929 
930     RETURN Admp_Get_Adm_Perd_Dt(
931                             l_dt_alias,
932                             p_adm_cal_type,
933                             p_adm_ci_sequence_number,
934                             p_admission_cat,
935                             p_s_admission_process_type,
936                             p_course_cd,
937                             p_version_number,
938                             p_acad_cal_type,
939                             p_location_cd,
940                             p_attendance_mode,
941                             p_attendance_type );
942 
943 END;
944 EXCEPTION
945     WHEN OTHERS THEN
946         Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
947         Fnd_Message.Set_Token('NAME','IGS_AD_GEN_003.get_apc_date');
948         IGS_GE_MSG_STACK.ADD;
949         App_Exception.Raise_Exception;
950 END get_apc_date;
951 
952 END IGS_AD_GEN_003;