DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_SS_GEN_001

Source


1 PACKAGE BODY IGS_AD_SS_GEN_001 AS
2   /* $Header: IGSADB8B.pls 120.36 2006/06/14 12:08:38 arvsrini ship $ */
3   /******************************************************************
4   Created By: tapash.ray
5   Date Created By: 11-DEC-2002
6   Purpose: Transfer API for transfer of data from SS Staging Table to IGS tables
7   Known limitations,enhancements,remarks:
8   Change History
9   Who        When          What
10   apadegal   21-Oct-2005   added set_adm_secur_on and set_adm_secur_off for enabling/disabling security for admin while app submission.
11   abhiskum   25-Aug-2005   Added procedures DELETE_PERSTMT_ATTACHMENT_UP, ADD_PERSTMT_ATTACHMENT_UP for
12                            Update Submitted Applications Page in SS Admin Flow; and
13                            DELETE_PERSTMT_ATTACHMENT, ADD_PERSTMT_ATTACHMENT for Supporting Evidence Page
14                            in SS Applicant Floe, for the IGS.M build
15   abhiskum   21-Mar-2005  Removed call to Update_Appl_Ofres_Inst() in process_OneStop2 for Bug 4234911.
16   pathipat   17-Jun-2003  Enh 2831587 FI210 Credit Card Fund Transfer build
17                           Modified procedure update_ad_offer_resp_and_fee() and call to
18                           igs_ad_app_req_pkg.insert_row in insert_application_fee()
19    smadathi  29-Nov-2002  Enh#2584986.Modifications done in procedures update_ad_offer_resp_and_fee.
20    vvutukur  26-Nov-2002  Enh#2584986.Modifications done in procedures update_ad_offer_resp_and_fee,
21                           insert_application_fee.
22    nshee     29-Aug-2002  Bug 2395510 added 6 columns as part of deferments build
23    knag      29-OCT-2002  Bug 2647482 removed local procedure insert_acad_honors and its calls
24    stammine  10-Jun-2005  Added procedures at for IGS.M build
25   ******************************************************************/
26    g_debug_level CONSTANT NUMBER  := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
27 
28   --Fwd Declarations
29   PROCEDURE logHeader(p_proc_name VARCHAR2, p_mode VARCHAR2);
30   PROCEDURE logDetail(p_debug_msg VARCHAR2, p_mode VARCHAR2);
31   FUNCTION create_application_detail
32                              (p_person_id           IN igs_pe_typ_instances_all.person_id%TYPE,
33                               p_adm_appl_number     IN igs_pe_typ_instances_all.admission_appl_number%TYPE,
34                               p_ss_adm_appl_number IN NUMBER) RETURN BOOLEAN;
35   FUNCTION create_application(p_appl_rec        IN igs_ss_adm_appl_stg%ROWTYPE,
36                               p_message_name    OUT NOCOPY VARCHAR2,
37                               p_return_status   OUT NOCOPY VARCHAR2,
38                               p_adm_appl_number OUT NOCOPY NUMBER)
39     RETURN BOOLEAN;
40   FUNCTION create_program(p_appl_rec        IN igs_ss_adm_appl_stg%ROWTYPE,
41                           p_message_name    OUT NOCOPY VARCHAR2,
42                           p_return_status   OUT NOCOPY VARCHAR2,
43                           p_adm_appl_number IN NUMBER) RETURN BOOLEAN;
44   PROCEDURE update_person_type(p_sequence_number     IN igs_pe_typ_instances_all.sequence_number%TYPE,
45                                p_nominated_course_cd IN igs_pe_typ_instances_all.nominated_course_cd%TYPE,
46                                p_person_id           IN igs_pe_typ_instances_all.person_id%TYPE,
47                                p_adm_appl_number     IN igs_pe_typ_instances_all.admission_appl_number%TYPE);
48   --dhan
49   PROCEDURE insert_othinst(p_person_id             IN NUMBER,
50                            p_adm_appl_id           IN NUMBER,
51                            p_admission_appl_number IN NUMBER);
52   --dhan
53   --modified insert_unit_set_dtls, doesn't have major code 1, 2  SS Bug 2622488
54   PROCEDURE insert_unit_set_dtls(p_sequence_number     IN igs_ad_unit_sets.sequence_number%TYPE,
55                                  p_nominated_course_cd IN igs_ad_unit_sets.nominated_course_cd%TYPE,
56                                  p_person_id           IN igs_ad_unit_sets.person_id%TYPE,
57                                  p_adm_appl_number     IN igs_ad_unit_sets.admission_appl_number%TYPE,
58                                  p_ss_adm_appl_id      IN igs_ss_app_pgm_stg.ss_adm_appl_id%TYPE);
59   --           ,p_unit_set_cd             IN igs_ad_unit_sets.unit_set_cd%TYPE
60   --           ,p_ver_no                  IN igs_ad_unit_sets.version_number%TYPE);
61   --added by nshee during build for Applicant-BOSS SS Bug 2622488
62   PROCEDURE insert_acad_interest(p_person_id       IN igs_ad_acad_interest.person_id%TYPE,
63                                  p_adm_appl_id     IN igs_ss_ad_acadin_stg.ss_adm_appl_id%TYPE,
64                                  p_adm_appl_number IN igs_ad_acad_interest.admission_appl_number%TYPE);
65   PROCEDURE insert_applicant_intent(p_person_id       IN igs_ad_app_intent.person_id%TYPE,
66                                     p_adm_appl_id     IN igs_ss_ad_appint_stg.ss_adm_appl_id%TYPE,
67                                     p_adm_appl_number IN igs_ad_app_intent.admission_appl_number%TYPE);
68   PROCEDURE insert_spl_talent(p_person_id       IN igs_ad_spl_talents.person_id%TYPE,
69                               p_adm_appl_id     IN igs_ss_ad_spltal_stg.ss_adm_appl_id%TYPE,
70                               p_adm_appl_number IN igs_ad_spl_talents.admission_appl_number%TYPE);
71   PROCEDURE insert_special_interest(p_person_id       IN igs_ad_spl_interests.person_id%TYPE,
72                                     p_adm_appl_id     IN igs_ss_ad_splint_stg.ss_adm_appl_id%TYPE,
73                                     p_adm_appl_number IN igs_ad_spl_interests.admission_appl_number%TYPE);
74   --added by nshee during build for Applicant-BOSS SS Bug 2622488
75   PROCEDURE insert_edugoal_details(p_person_id           IN igs_ad_edugoal.person_id%TYPE,
76                                    p_adm_appl_number     IN igs_ad_edugoal.admission_appl_number%TYPE,
77                                    p_ss_adm_appl_id      IN igs_ss_app_pgm_stg.ss_adm_appl_id%TYPE,
78                                    p_nominated_course_cd IN igs_ad_edugoal.nominated_course_cd%TYPE,
79                                    p_sequence_number     IN igs_ad_edugoal.sequence_number%TYPE); --this procedure has been modified, nshee Bug 2622488
80   PROCEDURE transfer_attachment(p_person_id             IN IGS_SS_APPL_PERSTAT.person_id%TYPE,
81                                 p_ss_adm_appl_id        IN IGS_SS_APPL_PERSTAT.ss_adm_appl_id%TYPE,
82                                 p_admission_appl_number IN IGS_AD_APPL_PERSTAT.admission_appl_number%TYPE,
83                                 x_return_status         OUT NOCOPY VARCHAR2);
84   -- Bug # 2389273 [ APPLICATION  FEE SAVED IN SS IS NOT SAVED TO FORMS ]
85   --** added by nshee
86   PROCEDURE insert_application_fee(p_person_id       IN igs_ad_app_req.person_id%TYPE,
87                                    p_adm_appl_id     IN igs_ss_app_req_stg.ss_adm_appl_id%TYPE,
88                                    p_adm_appl_number IN igs_ad_app_req.admission_appl_number%TYPE);
89   --** end of addtion by nshee
90 
91 
92   -- begin apadegal
93  -- Procedure to set the admin security on
94   PROCEDURE  set_adm_secur_on IS
95   BEGIN
96     IGS_AD_SS_GEN_001.g_admin_security_on := 'Y';
97   END;
98  -- proceudre to set the admin security off
99   PROCEDURE  set_adm_secur_off IS
100   BEGIN
101     IGS_AD_SS_GEN_001.g_admin_security_on := 'N';
102   END;
103   -- end apadegal
104 
105 
106   --Main Proc to transfer data from Staging to IGS tables.
107   PROCEDURE transfer_data(x_person_id       IN NUMBER,
108                           x_application_id  IN NUMBER,
109                           x_message_name    OUT NOCOPY VARCHAR2,
110                           x_return_status   OUT NOCOPY VARCHAR2,
111                           p_adm_appl_number OUT NOCOPY NUMBER) AS
112 
113     /*****************************************************************************************
114     Created By: [email protected]
115     Date Created : 11-DEC-2001
116     Purpose: 1.Main Procedure for
117                a.Creating an admission application
118                b.Creating Programs for the Application Created.
119              2.If transfer is successful , it returns a success indicator to the calling routine(SS Application in this case)
120        3.In Case of failure, it returns a failed indicator.
121        4.On Successful Transfer of data , deletes the Staging table Data.
122     Known limitations,enhancements,remarks:
123     Change History
124     Who        When          What
125     *****************************************************************************************/
126 
127     l_message_name                VARCHAR2(2000);
128     l_return_status               VARCHAR2(2);
129     l_admission_appl_number       IGS_AD_APPL.admission_appl_number%TYPE;
130     l_msg_index                   NUMBER;
131     l_msg_count                   NUMBER;
132     l_msg_data                    VARCHAR2(2000);
133     p_hash_msg_name_text_type_tab igs_ad_gen_016.g_msg_name_text_type_table;
134 
135     --Cursor Declaration
136     CURSOR c_adm_appl IS
137       SELECT *
138         FROM igs_ss_adm_appl_stg
139        WHERE person_id = x_person_id
140          AND ss_adm_appl_id = x_application_id;
141 
142     c_adm_appl_rec c_adm_appl%ROWTYPE;
143 
144   BEGIN
145     logHeader('transfer_data', 'S');
146     -- Set the G_CALLED_FROM to 'S' to skip the commit happening in Tracking item completion job
147     IGS_AD_TI_COMP.G_CALLED_FROM := 'S';
148     l_msg_index := IGS_GE_MSG_STACK.count_msg;
149 
150     OPEN c_adm_appl;
151     FETCH c_adm_appl
152       INTO c_adm_appl_rec;
153     CLOSE c_adm_appl;
154     SAVEPOINT sp_save_point1;
155     c_adm_appl_rec.APPL_DATE := SYSDATE;
156     IF create_application(p_appl_rec        => c_adm_appl_rec,
157                           p_message_name    => l_message_name,
158                           p_return_status   => l_return_status,
159                           p_adm_appl_number => l_admission_appl_number) THEN
160       IF create_program(p_appl_rec        => c_adm_appl_rec,
161                         p_message_name    => l_message_name,
162                         p_return_status   => l_return_status,
163                         p_adm_appl_number => l_admission_appl_number) THEN
164          IF create_application_detail(p_person_id         => c_adm_appl_rec.person_id,
165                               p_adm_appl_number           => l_admission_appl_number,
166                               p_ss_adm_appl_number        => c_adm_appl_rec.ss_adm_appl_id) THEN
167          logDetail('create_program         ' || ' is successul ' ||
168                   ' Person Id : ' ||
169                   IGS_GE_NUMBER.TO_CANN(c_adm_appl_rec.person_id),
170                   'S');
171          END IF;
172 
173       ELSE
174         --Program import failed, Set the message and return, in calling proc , check for ret_stat , if 'E' set message sent from here
175         IF FND_MSG_PUB.Count_Msg < 1 AND  l_message_name IS NOT NULL THEN
176           FND_MESSAGE.SET_NAME('IGS', l_message_name);
177           IGS_GE_MSG_STACK.ADD;
178         END IF;
179         x_message_name  := l_message_name;
180         x_return_status := l_return_status;
181         RETURN;
182       END IF;
183     ELSE
184       --Application import failed, Set the message and return, in calling proc , check for ret_stat , if 'E' set message sent from here
185       IF FND_MSG_PUB.Count_Msg < 1 AND   l_message_name IS NOT NULL THEN
186         FND_MESSAGE.SET_NAME('IGS', l_message_name);
187         IGS_GE_MSG_STACK.ADD;
188       END IF;
189       x_message_name  := l_message_name;
190       x_return_status := l_return_status;
191       RETURN;
192     END IF;
193 
194 
195     -- Removing the call from this procedure. Calling Explicitly in Terms and Detials page of Self Service
196     /* delete_ss_appl_stg(x_message_name    => l_message_name,
197                        x_return_status   => l_return_status,
198                        p_adm_appl_number => x_application_id,
199                        p_person_id       => x_person_id);
200     */
201     IF l_return_status NOT IN ('E') OR l_return_status IS NULL THEN
202       x_return_status   := 'S'; --Indicate Success, To be used in Calling Proc , if Status = 'S' , then commit data.
203       p_adm_appl_number := l_admission_appl_number; -- Return the Admission Application Number as OUT NOCOPY Parameter to the calling procedure
204     END IF;
205   EXCEPTION
206     --Main Loop Exception
207     WHEN OTHERS THEN
208       logDetail('Exception from transfer_data, ' || SQLERRM, 'S');
209       x_return_status := 'E';
210 
211       IF l_message_name <> 'IGS_SC_POLICY_EXCEPTION' AND l_message_name <> 'IGS_GE_UNHANDLED_EXP'  AND
212           FND_MSG_PUB.Count_Msg < 1 THEN
213             Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
214             Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.transfer_data -'||SQLERRM);
215             IGS_GE_MSG_STACK.ADD;
216             x_message_name := 'IGS_GE_UNHANDLED_EXP';
217       END IF;
218       App_Exception.Raise_Exception;
219       --     App_Exception.Raise_Exception;  x_return_status is an OUT NOCOPY parameter and will not show the value set, for it if the exception is raised. So commenting out NOCOPY Bug# 2224624
220   END transfer_data;
221 
222   --This Function Creates an Application and Returns TRUE if Application is created.
223   FUNCTION create_application(p_appl_rec        IN igs_ss_adm_appl_stg%ROWTYPE,
224                               p_message_name    OUT NOCOPY VARCHAR2,
225                               p_return_status   OUT NOCOPY VARCHAR2,
226                               p_adm_appl_number OUT NOCOPY NUMBER)
227     RETURN BOOLEAN IS
228 
229     /*****************************************************************************************
230     Created By: [email protected]
231     Date Created : 11-DEC-2001
232     Purpose: 1.Creates an admission application
233              2.If Application Creation is successful ,returns boolean true
234        3.In Case of failure, return boolean False.
235        4.Flow:
236          a.Check if Mandatory Params are Present
237          b.Insert admission application, using Common API Call IGS_AD_GEN_014.insert_adm_appl
238     Known limitations,enhancements,remarks:
239     Change History
240     Who        When          What
241     rrengara   11-jul-2002      Added UK Parameters choice_number and routre pref to insert_adm_appl procedure for bug 2448262 (D) and 2455053 (P)
242     knag       21-Nov-2002   Added alt_appl_id param to call to insert_adm_appl for bug 2664410
243     pbondugu  28-Mar-2003    Passed  funding_source as NULL   to procedure call IGS_AD_GEN_014.insert_adm_appl_prog_inst
244     *****************************************************************************************/
245 
246     --Local Var Declaration
247     l_message_name          VARCHAR2(2000);
248     l_adm_appl_status       IGS_AD_APPL_STAT.adm_appl_status%TYPE;
249     l_adm_fee_status        IGS_AD_FEE_STAT.adm_fee_status%TYPE;
250     l_admission_appl_number IGS_AD_APPL.admission_appl_number%TYPE;
251 
252   BEGIN
253     --Main Begin
254 
255     logHeader('create_application', 'S');
256 
257     ----------------------------------------
258     -- Check if Mandatory Params are Present
259     ----------------------------------------
260     IF p_appl_rec.acad_cal_type IS NULL OR
261        p_appl_rec.acad_cal_seq_number IS NULL OR
262        p_appl_rec.adm_cal_type IS NULL OR
263        p_appl_rec.adm_cal_seq_number IS NULL THEN
264 
265       p_message_name  := 'IGS_SS_SEM_NOT_SUFFICI';
266       p_return_status := 'E';
267       logDetail('Failed in Create Application, Insufficient Sem Args', 'S');
268       RETURN FALSE;
269     END IF;
270 
271     IF p_appl_rec.person_id IS NULL OR p_appl_rec.appl_date IS NULL THEN
272       p_message_name  := 'IGS_SS_PERSDTLS_NOT_SUFFICI';
273       p_return_status := 'E';
274       logDetail('Failed in Create Application, Insufficient Pers Dtls',
275                 'S');
276     END IF;
277 
278     ----------------------------------
279     -- Insert admission application
280     ----------------------------------
281     l_adm_appl_status := Igs_Ad_Gen_008.ADMP_GET_SYS_AAS('RECEIVED');
282     l_adm_fee_status  := Igs_Ad_Gen_009.ADMP_GET_SYS_AFS('NOT-APPLIC');
283 
284     logDetail('Before call to IGS_AD_GEN_014.insert_adm_appl', 'S');
285     IF IGS_AD_GEN_014.insert_adm_appl( -- IF :1
286                                       p_person_id                => p_appl_rec.person_id,
287                                       p_appl_dt                  => p_appl_rec.appl_date,
288                                       p_acad_cal_type            => p_appl_rec.acad_cal_type,
289                                       p_acad_ci_sequence_number  => p_appl_rec.acad_cal_seq_number,
290                                       p_adm_cal_type             => p_appl_rec.adm_cal_type,
291                                       p_adm_ci_sequence_number   => p_appl_rec.adm_cal_seq_number,
292                                       p_admission_cat            => p_appl_rec.admission_cat,
293                                       p_s_admission_process_type => p_appl_rec.s_adm_process_type,
294                                       p_adm_appl_status          => l_adm_appl_status,
295                                       p_adm_fee_status           => l_adm_fee_status, --IN/OUT
296                                       p_tac_appl_ind             => 'N',
297                                       p_adm_appl_number          => l_admission_appl_number, --OUT
298                                       p_message_name             => l_message_name, --OUT
299                                       p_spcl_grp_1               => p_appl_rec.spcl_grp_1,
300                                       p_spcl_grp_2               => p_appl_rec.spcl_grp_2,
301                                       p_common_app               => NULL,
302                                       p_application_type         => p_appl_rec.admission_application_type,
303                                       p_choice_number            => null,
304                                       p_routeb_pref              => NULL,
305                                       p_alt_appl_id              => NULL,
306                                       p_appl_fee_amt             => p_appl_rec.appl_fee_amt) =
307        FALSE THEN
308 
309       ROLLBACK TO sp_save_point1;
310       p_message_name  := l_message_name;
311       p_return_status := 'E';
312       logDetail('IGS_AD_GEN_014.insert_adm_appl Failed,Returned with FALSE and Message: ' ||
313                 l_message_name,
314                 'S');
315       RETURN FALSE;
316     ELSE
317 
318         p_adm_appl_number := l_admission_appl_number;
319         p_return_status   := 'S';
320         RETURN TRUE;
321     END IF;
322 
323   EXCEPTION
324     --Main Loop Exception
325     WHEN OTHERS THEN
326       p_return_status := 'E';
327       logDetail('Exception from create_application, MAIN LOOP: ' || SQLERRM, 'S');
328 
329       IF l_message_name <> 'IGS_SC_POLICY_EXCEPTION' AND l_message_name <> 'IGS_GE_UNHANDLED_EXP'  AND
330           FND_MSG_PUB.Count_Msg < 1 THEN
331             Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
332             Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.create_application -'||SQLERRM);
333             IGS_GE_MSG_STACK.ADD;
334             p_message_name := 'IGS_GE_UNHANDLED_EXP';
335       END IF;
336       App_Exception.Raise_Exception;
337 
338   END create_application; --Main End
339 
340   --This Function Creates Program Application and Program Application Instance
341   FUNCTION create_program(p_appl_rec        IN igs_ss_adm_appl_stg%ROWTYPE,
342                           p_message_name    OUT NOCOPY VARCHAR2,
343                           p_return_status   OUT NOCOPY VARCHAR2,
344                           p_adm_appl_number IN NUMBER) RETURN BOOLEAN AS
345     /*****************************************************************************************
346     Created By: [email protected]
347     Date Created : 11-DEC-2001
348     Purpose: 1.Creates a program for Application Created
349              2.If Program Creation/Import is successful ,returns boolean true
350        3.In Case of failure, return boolean False.
351        4.Flow:
352          a.Insert Admission Program Application (IGS_AD_GEN_014.insert_adm_appl_prog)
353          b.validate descriptive flexfield columns.
354          c.Insert Admission Program Application Instance (IGS_AD_GEN_014.insert_adm_appl_prog_inst)
355          d.Change Person Type To Applicant (update_person_type- Local Procedure Call)
356          e.Insert Unit Set Details (Major First Choice/Major Second Choice) (insert_unit_set_dtls- Local Procedure Call)
357     Known limitations,enhancements,remarks:
358     Change History
359     Who        When          What
360     *****************************************************************************************/
361 
362     --Local Variable Declarations
363     l_message_name        VARCHAR2(2000);
364     v_hecs_payment_option IGS_FI_HECS_PAY_OPTN.hecs_payment_option%TYPE;
365     l_adm_fee_status      IGS_AD_FEE_STAT.adm_fee_status%TYPE;
366     v_sequence_number     IGS_AD_PS_APPL_INST.sequence_number%TYPE;
367     l_return_type         VARCHAR2(127);
368     l_error_code          VARCHAR2(30);
369 
370     CURSOR c_admappl_pgm IS
371       SELECT d.*, m.app_source_id
372         FROM igs_ss_adm_appl_stg m, IGS_SS_APP_PGM_STG d
373        WHERE m.ss_adm_appl_id = d.ss_adm_appl_id
374          AND m.ss_adm_appl_id = p_appl_rec.ss_adm_appl_id
375          AND m.person_id = p_appl_rec.person_id;
376 --Autoadmit
377   l_error_text     VARCHAR2(2000);
378   l_error_code1     NUMBER;
379   BEGIN
380     logHeader('create_program', 'S');
381 
382     FOR c_admappl_pgm_rec in c_admappl_pgm LOOP
383       ----------------------------------------
384       -- Insert Admission Program Application
385       ----------------------------------------
386       logDetail('Before call to IGS_AD_GEN_014.insert_adm_appl_prog', 'S');
387       IF IGS_AD_GEN_014.insert_adm_appl_prog(p_person_id                   => p_appl_rec.person_id,
388                                              p_adm_appl_number             => p_adm_appl_number,
389                                              p_nominated_course_cd         => c_admappl_pgm_rec.nominated_course_cd,
390                                              p_transfer_course_cd          => NULL,
391                                              p_basis_for_admission_type    => NULL,
392                                              p_admission_cd                => NULL,
393                                              p_req_for_reconsideration_ind => 'N', -- (request for reconsideration indicator)
394                                              p_req_for_adv_standing_ind    => 'N', -- (request for advanced standing indicator)
395                                              p_message_name                => l_message_name) =
396          FALSE THEN
397 
398         ROLLBACK TO sp_save_point1;
399         p_message_name:= l_message_name;
400         p_return_status := 'E';
401         logDetail('IGS_AD_GEN_014.insert_adm_appl_prog Failed,Returned with FALSE and Message: ' ||
402                   l_message_name,
403                   'S');
404         RETURN FALSE;
405       END IF;
406       v_hecs_payment_option := NULL;
407 
408       -----------------------------------------------------------
409       --To validate descriptive flexfield columns.
410       --Need to be modified after DAP, to add attributes 21 to 40
411       --This call not needed as the data in DFF is already validated by the Page
412       -----------------------------------------------------------
413       /*logDetail('before call to IGS_AD_IMP_018.validate_desc_flex','S');
414           IF NOT IGS_AD_IMP_018.validate_desc_flex_40_cols
415                 (     p_attribute_category  => c_admappl_pgm_rec.attribute_category,
416               p_attribute1    => c_admappl_pgm_rec.attribute1,
417               p_attribute2    => c_admappl_pgm_rec.attribute2,
418               p_attribute3    => c_admappl_pgm_rec.attribute3,
419               p_attribute4    => c_admappl_pgm_rec.attribute4,
420               p_attribute5    => c_admappl_pgm_rec.attribute5,
421               p_attribute6    => c_admappl_pgm_rec.attribute6,
422               p_attribute7    => c_admappl_pgm_rec.attribute7,
423               p_attribute8    => c_admappl_pgm_rec.attribute8,
424               p_attribute9    => c_admappl_pgm_rec.attribute9,
425               p_attribute10   => c_admappl_pgm_rec.attribute10,
426               p_attribute11   => c_admappl_pgm_rec.attribute11,
427               p_attribute12   => c_admappl_pgm_rec.attribute12,
428               p_attribute13   => c_admappl_pgm_rec.attribute13,
429               p_attribute14   => c_admappl_pgm_rec.attribute14,
430               p_attribute15   => c_admappl_pgm_rec.attribute15,
431               p_attribute16   => c_admappl_pgm_rec.attribute16,
432               p_attribute17   => c_admappl_pgm_rec.attribute17,
433               p_attribute18   => c_admappl_pgm_rec.attribute18,
434               p_attribute19   => c_admappl_pgm_rec.attribute19,
435               p_attribute20   => c_admappl_pgm_rec.attribute20,
436                                       p_attribute21   => c_admappl_pgm_rec.attribute21,
437               p_attribute22   => c_admappl_pgm_rec.attribute22,
438                                       p_attribute23   => c_admappl_pgm_rec.attribute23,
439               p_attribute24   => c_admappl_pgm_rec.attribute24,
440               p_attribute25   => c_admappl_pgm_rec.attribute25,
441               p_attribute26   => c_admappl_pgm_rec.attribute26,
442               p_attribute27   => c_admappl_pgm_rec.attribute27,
443               p_attribute28   => c_admappl_pgm_rec.attribute28,
444               p_attribute29   => c_admappl_pgm_rec.attribute29,
445               p_attribute30   => c_admappl_pgm_rec.attribute30,
446               p_attribute31   => c_admappl_pgm_rec.attribute31,
447               p_attribute32   => c_admappl_pgm_rec.attribute32,
448               p_attribute33   => c_admappl_pgm_rec.attribute33,
449               p_attribute34   => c_admappl_pgm_rec.attribute34,
450               p_attribute35   => c_admappl_pgm_rec.attribute35,
451               p_attribute36   => c_admappl_pgm_rec.attribute36,
452               p_attribute37   => c_admappl_pgm_rec.attribute37,
453               p_attribute38   => c_admappl_pgm_rec.attribute38,
454               p_attribute39   => c_admappl_pgm_rec.attribute39,
455               p_attribute40   => c_admappl_pgm_rec.attribute40,
456               p_desc_flex_name  => 'IGS_SS_APP_PGM_STG_FLEX'
457             ) THEN
458           ROLLBACK TO sp_save_point1;
459           p_message_name := 'IGS_AD_INVALID_DESC_FLEX';
460           p_return_status := 'E';
461           logDetail('IGS_AD_IMP_018.validate_desc_flex Failed,Returned with FALSE and Message: '  || p_message_name,'S');
462             RETURN FALSE;
463               END IF;
464       */
465       ------------------------------------------------
466       -- Insert Admission Program Application Instance
467       ------------------------------------------------
468       l_adm_fee_status := Igs_Ad_Gen_009.ADMP_GET_SYS_AFS('NOT-APPLIC');
469 
470       -- Setting Person Mandatory Validations to False
471       IGS_PE_GEN_004.SKIP_MAND_DATA_VAL;
472 
473 
474       logDetail('before call to local proc insert_adm_appl_prog_inst', 'S');
475       IF IGS_AD_GEN_014.insert_adm_appl_prog_inst(p_person_id                => p_appl_rec.person_id,
476                                                   p_admission_appl_number    => p_adm_appl_number,
477                                                   p_acad_cal_type            => p_appl_rec.acad_cal_type,
478                                                   p_acad_ci_sequence_number  => p_appl_rec.acad_cal_seq_number,
479                                                   p_adm_cal_type             => p_appl_rec.adm_cal_type,
480                                                   p_adm_ci_sequence_number   => p_appl_rec.adm_cal_seq_number,
481                                                   p_admission_cat            => p_appl_rec.admission_cat,
482                                                   p_s_admission_process_type => p_appl_rec.s_adm_process_type,
483                                                   p_appl_dt                  => p_appl_rec.appl_date,
484                                                   p_adm_fee_status           => l_adm_fee_status,
485                                                   p_preference_number        => c_admappl_pgm_rec.preference_number,
486                                                   p_offer_dt                 => NULL,
487                                                   p_offer_response_dt        => NULL,
488                                                   p_course_cd                => c_admappl_pgm_rec.nominated_course_cd,
489                                                   p_crv_version_number       => c_admappl_pgm_rec.crv_version_number,
490                                                   p_location_cd              => c_admappl_pgm_rec.location_cd,
491                                                   p_attendance_mode          => c_admappl_pgm_rec.attendance_mode,
492                                                   p_attendance_type          => c_admappl_pgm_rec.attendance_type,
493                                                   p_unit_set_cd              => c_admappl_pgm_rec.final_unit_set_cd, --earlier passed as null, build 2622488 nshee
494                                                   p_us_version_number        => c_admappl_pgm_rec.final_unit_set_cd_ver, --earlier passed as null, build 2622488 nshee
495                                                   p_fee_cat                  => NULL,
496                                                   p_correspondence_cat       => NULL,
497                                                   p_enrolment_cat            => NULL,
498                                                   p_funding_source           => NULL,
499                                                   p_edu_goal_prior_enroll    => c_admappl_pgm_rec.edu_goal_prior_enroll,
500                                                   p_app_source_id            => c_admappl_pgm_rec.app_source_id,
501                                                   p_apply_for_finaid         => c_admappl_pgm_rec.apply_for_finaid,
502                                                   p_finaid_apply_date        => c_admappl_pgm_rec.finaid_apply_date,
503                                                   p_attribute_category       => c_admappl_pgm_rec.attribute_category,
504                                                   p_attribute1               => c_admappl_pgm_rec.attribute1,
505                                                   p_attribute2               => c_admappl_pgm_rec.attribute2,
506                                                   p_attribute3               => c_admappl_pgm_rec.attribute3,
507                                                   p_attribute4               => c_admappl_pgm_rec.attribute4,
508                                                   p_attribute5               => c_admappl_pgm_rec.attribute5,
509                                                   p_attribute6               => c_admappl_pgm_rec.attribute6,
510                                                   p_attribute7               => c_admappl_pgm_rec.attribute7,
511                                                   p_attribute8               => c_admappl_pgm_rec.attribute8,
512                                                   p_attribute9               => c_admappl_pgm_rec.attribute9,
513                                                   p_attribute10              => c_admappl_pgm_rec.attribute10,
514                                                   p_attribute11              => c_admappl_pgm_rec.attribute11,
515                                                   p_attribute12              => c_admappl_pgm_rec.attribute12,
516                                                   p_attribute13              => c_admappl_pgm_rec.attribute13,
517                                                   p_attribute14              => c_admappl_pgm_rec.attribute14,
518                                                   p_attribute15              => c_admappl_pgm_rec.attribute15,
519                                                   p_attribute16              => c_admappl_pgm_rec.attribute16,
520                                                   p_attribute17              => c_admappl_pgm_rec.attribute17,
521                                                   p_attribute18              => c_admappl_pgm_rec.attribute18,
522                                                   p_attribute19              => c_admappl_pgm_rec.attribute19,
523                                                   p_attribute20              => c_admappl_pgm_rec.attribute20,
524                                                   p_attribute21              => c_admappl_pgm_rec.attribute21,
525                                                   p_attribute22              => c_admappl_pgm_rec.attribute22,
526                                                   p_attribute23              => c_admappl_pgm_rec.attribute23,
527                                                   p_attribute24              => c_admappl_pgm_rec.attribute24,
528                                                   p_attribute25              => c_admappl_pgm_rec.attribute25,
529                                                   p_attribute26              => c_admappl_pgm_rec.attribute26,
530                                                   p_attribute27              => c_admappl_pgm_rec.attribute27,
531                                                   p_attribute28              => c_admappl_pgm_rec.attribute28,
532                                                   p_attribute29              => c_admappl_pgm_rec.attribute29,
533                                                   p_attribute30              => c_admappl_pgm_rec.attribute30,
534                                                   p_attribute31              => c_admappl_pgm_rec.attribute31,
535                                                   p_attribute32              => c_admappl_pgm_rec.attribute32,
536                                                   p_attribute33              => c_admappl_pgm_rec.attribute33,
537                                                   p_attribute34              => c_admappl_pgm_rec.attribute34,
538                                                   p_attribute35              => c_admappl_pgm_rec.attribute35,
539                                                   p_attribute36              => c_admappl_pgm_rec.attribute36,
540                                                   p_attribute37              => c_admappl_pgm_rec.attribute37,
541                                                   p_attribute38              => c_admappl_pgm_rec.attribute38,
542                                                   p_attribute39              => c_admappl_pgm_rec.attribute39,
543                                                   p_attribute40              => c_admappl_pgm_rec.attribute40,
544                                                   p_ss_application_id        => NULL,
545                                                   p_sequence_number          => v_sequence_number,
546                                                   p_return_type              => l_return_type,
547                                                   p_error_code               => l_error_code,
548                                                   p_message_name             => l_message_name,
549                                                   p_entry_status             => c_admappl_pgm_rec.entry_status,
550                                                   p_entry_level              => c_admappl_pgm_rec.entry_level,
551                                                   p_sch_apl_to_id            => c_admappl_pgm_rec.sch_apl_to_id) =
552          FALSE THEN
553 
554         ROLLBACK TO sp_save_point1;
555         p_message_name  := l_message_name;
556         p_return_status := 'E';
557         logDetail('insert_adm_appl_prog_inst Failed,Returned with FALSE and Message: ' ||
558                   l_message_name,
559                   'S');
560         RETURN FALSE;
561       ELSE
562         -- insert_adm_appl_prog_inst Returns with TRUE , since Program is transferred, rest of the processing can proceed.
563 
564         -----------------------------------------------------------------
565         -- Insert Unit Set Details (Major First Choice/Major Second Choice)
566         -----------------------------------------------------------------
567         /*      IF c_admappl_pgm_rec.unit_set_1 IS NOT NULL THEN
568             insert_unit_set_dtls(p_sequence_number     =>v_sequence_number
569                                     ,p_nominated_course_cd   =>c_admappl_pgm_rec.nominated_course_cd
570                     ,p_person_id             =>p_appl_rec.person_id
571                   ,p_adm_appl_number       =>p_adm_appl_number
572                   ,p_unit_set_cd           =>c_admappl_pgm_rec.unit_set_1
573                   ,p_ver_no                =>c_admappl_pgm_rec.unit_set_1_ver_number);
574               END IF;
575 
576         IF c_admappl_pgm_rec.unit_set_2 IS NOT NULL THEN
577             insert_unit_set_dtls(p_sequence_number     =>v_sequence_number
578                                     ,p_nominated_course_cd   =>c_admappl_pgm_rec.nominated_course_cd
579                   ,p_person_id             =>p_appl_rec.person_id
580                   ,p_adm_appl_number       =>p_adm_appl_number
581                   ,p_unit_set_cd           =>c_admappl_pgm_rec.unit_set_2
582                   ,p_ver_no                =>c_admappl_pgm_rec.unit_set_2_ver_number);
583               END IF;*/ --not needed anymore since Major1, Major2 are obsolete. build 2622488
584         ------------------------------------------------------------------
585         -- Insert EduGoal Details (Post Enroll) For The Appl Prog Instance
586         ------------------------------------------------------------------
587         IF c_admappl_pgm_rec.nominated_course_cd IS NOT NULL AND
588            v_sequence_number IS NOT NULL THEN
589           insert_edugoal_details(p_person_id           => p_appl_rec.person_id,
590                                  p_adm_appl_number     => p_adm_appl_number,
591                                  p_ss_adm_appl_id      => c_admappl_pgm_rec.ss_adm_appl_id,
592                                  p_nominated_course_cd => c_admappl_pgm_rec.nominated_course_cd,
593                                  p_sequence_number     => v_sequence_number);
594           insert_unit_set_dtls(p_person_id           => p_appl_rec.person_id,
595                                p_adm_appl_number     => p_adm_appl_number,
596                                p_nominated_course_cd => c_admappl_pgm_rec.nominated_course_cd,
597                                p_sequence_number     => v_sequence_number,
598                                p_ss_adm_appl_id      => c_admappl_pgm_rec.ss_adm_appl_id); --added this call build 2622488
599         END IF;
600 --      Call The assign requirment procedure and admission tracking completion Procedure *** Autoadmit
601 -- This single process will call both the procedure
602     IGS_AD_GEN_014.auto_assign_requirement(
603                         p_person_id                 => p_appl_rec.person_id,
604                         p_admission_appl_number     => p_adm_appl_number,
605                         p_course_cd                 => c_admappl_pgm_rec.nominated_course_cd,
606                         p_sequence_number           => v_sequence_number,
607                         p_called_from         => 'SS',
608                         p_error_text          => l_error_text,
609                         p_error_code          => l_error_code1
610     );
611 
612 --Assign Qualification Types to application instance being submitted
613    IGS_AD_GEN_014.assign_qual_type(p_person_id         => p_appl_rec.person_id,
614                                  p_admission_appl_number     => p_adm_appl_number,
615                                  p_course_cd => c_admappl_pgm_rec.nominated_course_cd,
616                                  p_sequence_number     => v_sequence_number
617    );
618    igs_ad_wf_001.wf_raise_event(p_person_id => p_appl_rec.person_id,
619                                 p_raised_for => 'SAC',
620                                 p_admission_appl_number => p_adm_appl_number,
621                                 p_nominated_course_cd =>c_admappl_pgm_rec.nominated_course_cd,
622                                 p_sequence_number => v_sequence_number
623                                  );
624 
625       END IF; -- insert_adm_appl_prog_inst IF ends.
626     END LOOP; -- LOOP for Main Cursor Ends
627     RETURN TRUE; -- Reaches Here Means That All The Programs For The Application Has Been Imported To OSS
628   EXCEPTION
629     --Main Exception
630     WHEN OTHERS THEN
631       p_return_status := 'E';
632       logDetail('Exception from create_program, MAIN LOOP: ' || SQLERRM, 'S');
633 
634       IF l_message_name <> 'IGS_SC_POLICY_EXCEPTION' AND l_message_name <> 'IGS_GE_UNHANDLED_EXP' AND
635           FND_MSG_PUB.Count_Msg < 1 THEN
636             Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
637             Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.create_program -'||SQLERRM);
638             IGS_GE_MSG_STACK.ADD;
639             p_message_name := 'IGS_GE_UNHANDLED_EXP';
640       END IF;
641       App_Exception.Raise_Exception;
642 
643   END create_program;
644 
645   PROCEDURE update_person_type(p_sequence_number     IN igs_pe_typ_instances_all.sequence_number%TYPE,
646                                p_nominated_course_cd IN igs_pe_typ_instances_all.nominated_course_cd%TYPE,
647                                p_person_id           IN igs_pe_typ_instances_all.person_id%TYPE,
648                                p_adm_appl_number     IN igs_pe_typ_instances_all.admission_appl_number%TYPE) AS
649 
650     /*****************************************************************************************
651     Created By: [email protected]
652     Date Created : 11-DEC-2001
653     Purpose:
654             1. Updates Person Type to Applicant on Successful Import/Transfer of the Application/Prog/Prog Inst
655       2. Flow:
656               a.IGS_PE_TYP_INSTANCES_PKG.insert_row
657 
658     Known limitations,enhancements,remarks:
659     Change History
660     Who        When          What
661     npalanis     10-JUN-2003    Bug:2923413 igs_pe_typ_instances_pkg.update_row call
662                                 modified for the new employment category column added in the table
663     *****************************************************************************************/
664 
665     l_rowid            VARCHAR2(25);
666     l_org_id           NUMBER(15);
667     l_type_instance_id NUMBER;
668     l_person_type_code IGS_PE_PERSON_TYPES.person_type_code%TYPE;
669 
670     CURSOR c_person_type_code(l_system_type IGS_PE_PERSON_TYPES.system_type%TYPE) IS
671       SELECT person_type_code
672         FROM igs_pe_person_types
673        WHERE system_type = l_system_type;
674    lv_mode VARCHAR2(1) DEFAULT 'R';
675   BEGIN
676     --Begin Local Loop 1
677     logHeader('transfer_data', 'S');
678     l_org_id := igs_ge_gen_003.get_org_id;
679 
680     OPEN c_person_type_code('APPLICANT');
681     FETCH c_person_type_code
682       INTO l_person_type_code;
683     CLOSE c_person_type_code;
684     logDetail('Before call to IGS_PE_TYP_INSTANCES_PKG.insert_row', 'S');
685 
686     -- Setting Person Mandatory Validations to False
687     IGS_PE_GEN_004.SKIP_MAND_DATA_VAL;
688 
689 
690     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
691     THEN
692       lv_mode := 'S';
693     END IF;
694 
695     IGS_PE_TYP_INSTANCES_PKG.insert_row(x_rowid                 => l_rowid,
696                                         x_org_id                => l_org_id,
697                                         x_person_id             => p_person_id,
698                                         x_course_cd             => NULL,
699                                         x_type_instance_id      => l_type_instance_id,
700                                         x_person_type_code      => l_person_type_code,
701                                         x_cc_version_number     => NULL,
702                                         x_funnel_status         => NULL,
703                                         x_admission_appl_number => p_adm_appl_number,
704                                         x_nominated_course_cd   => p_nominated_course_cd, --c_admappl_pgm_rec.nominated_course_cd,
705                                         x_ncc_version_number    => NULL,
706                                         x_sequence_number       => p_sequence_number,
707                                         x_start_date            => SYSDATE,
708                                         x_end_date              => NULL,
709                                         x_create_method         => 'CREATE_APPL_INSTANCE',
710                                         x_ended_by              => NULL,
711                                         x_end_method            => NULL,
712                                         x_mode                  => lv_mode,  -- enable security for Admin
713                                         x_emplmnt_category_code => null);
714     logDetail('Person_type Changed to APPLICANT for the person', 'S');
715   EXCEPTION
716     WHEN OTHERS THEN
717       logDetail('inside update_person_type' ||
718                 'Exception from IGS_PE_TYP_INSTANCES_PKG.insert_row ' ||
719                 SQLERRM || 'person_id : ' ||
720                 IGS_GE_NUMBER.TO_CANN(p_person_id),
721                 'S');
722       IF FND_MSG_PUB.Count_Msg < 1 THEN
723         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
724         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.update_person_type -'||SQLERRM);
725         IGS_GE_MSG_STACK.ADD;
726       END IF;
727       App_Exception.Raise_Exception;
728   END update_person_type;
729 
730   PROCEDURE insert_unit_set_dtls(p_sequence_number     IN igs_ad_unit_sets.sequence_number%TYPE,
731                                  p_nominated_course_cd IN igs_ad_unit_sets.nominated_course_cd%TYPE,
732                                  p_person_id           IN igs_ad_unit_sets.person_id%TYPE,
733                                  p_adm_appl_number     IN igs_ad_unit_sets.admission_appl_number%TYPE,
734                                  p_ss_adm_appl_id      IN igs_ss_app_pgm_stg.ss_adm_appl_id%TYPE) AS
735     --           ,p_unit_set_cd             IN igs_ad_unit_sets.unit_set_cd%TYPE
736     --           ,p_ver_no                  IN igs_ad_unit_sets.version_number%TYPE) AS
737     /*****************************************************************************************
738     Created By: [email protected]
739     Date Created : 11-DEC-2001
740     Purpose: 1. Inserts Unit Set Details (Major1/Major2)
741              FLOW: IGS_AD_UNIT_SETS_PKG.insert_row
742     Known limitations,enhancements,remarks:
743     Change History
744     Who        When          What
745     nshee      29-OCT-2002 Modified it, now it inserts data from desired unit sets and not the major1/major2.
746     *****************************************************************************************/
747     l_rowid       VARCHAR2(25);
748     l_unit_set_id igs_ad_unit_sets.unit_set_id%TYPE;
749     l_rank        igs_ad_unit_sets.rank%TYPE;
750     lv_mode VARCHAR2(1) DEFAULT 'R';
751     /*
752     CURSOR c_nxt_rank IS
753      SELECT MAX(rank), 0) + 1
754      FROM igs_ad_unit_sets
755      WHERE
756      person_id    = p_person_id   AND
757      admission_appl_number  = p_adm_appl_number AND
758      nominated_course_cd  = p_nominated_course_cd;
759     */
760 
761     CURSOR c_des_unit_sets IS
762       SELECT unit_set_cd, version_number, rank
763         FROM igs_ss_ad_unitse_stg
764        WHERE ss_admappl_pgm_id =
765              (SELECT ss_admappl_pgm_id
766                 FROM igs_ss_app_pgm_stg
767                WHERE ss_adm_appl_id = p_ss_adm_appl_id --p_adm_appl_number
768                  AND nominated_course_cd = p_nominated_course_cd
769                  AND person_id = p_person_id);
770   BEGIN
771     logHeader('insert_unit_set_dtls', 'S');
772 
773     /*OPEN c_nxt_rank;
774     FETCH c_nxt_rank INTO l_rank;
775     CLOSE c_nxt_rank;*/
776 
777     FOR c_des_unit_sets_rec IN c_des_unit_sets LOOP
778       IF c_des_unit_sets_rec.unit_set_cd IS NOT NULL THEN
779         logDetail('Before call to IGS_AD_UNIT_SETS_PKG.insert_row', 'S');
780         l_rowid       := '';
781         l_unit_set_id := 0;
782 
783 
784             IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
785             THEN
786               lv_mode := 'S';
787             END IF;
788 
789         IGS_AD_UNIT_SETS_PKG.insert_row(x_rowid                 => l_rowid,
790                                         x_unit_set_id           => l_unit_set_id,
791                                         x_person_id             => p_person_id,
792                                         x_admission_appl_number => p_adm_appl_number,
793                                         x_nominated_course_cd   => p_nominated_course_cd,
794                                         x_sequence_number       => p_sequence_number,
795                                         x_unit_set_cd           => c_des_unit_sets_rec.unit_set_cd,
796                                         x_version_number        => c_des_unit_sets_rec.version_number,
797                                         x_rank                  => c_des_unit_sets_rec.rank,
798                                         x_mode                  => lv_mode -- enable security for Admin
799                                         );
800       END IF;
801     END LOOP;
802   EXCEPTION
803     WHEN OTHERS THEN
804       logDetail('Inside insert_unit_set_dtls' ||
805                 'Exception from IGS_AD_UNIT_SETS_PKG.insert_row ' ||
806                 SQLERRM || 'person_id : ' ||
807                 IGS_GE_NUMBER.TO_CANN(p_person_id),
808                 'S');
809       IF FND_MSG_PUB.Count_Msg < 1 THEN
810         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
811         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_unit_set_dtls -'||SQLERRM);
812         IGS_GE_MSG_STACK.ADD;
813       END IF;
814 
815       App_Exception.Raise_Exception;
816   END insert_unit_set_dtls;
817 
818   --added by nshee during build for Applicant-BOSS SS Bug 2622488
819   PROCEDURE insert_acad_interest(p_person_id       IN igs_ad_acad_interest.person_id%TYPE,
820                                  p_adm_appl_id     IN igs_ss_ad_acadin_stg.ss_adm_appl_id%TYPE,
821                                  p_adm_appl_number IN igs_ad_acad_interest.admission_appl_number%TYPE) AS
822     /*****************************************************************************************
823     Created By: [email protected]
824     Date Created : 11-DEC-2001
825     Purpose: 1. Inserts Academic Honors Details (For an Application)
826              FLOW: IGS_AD_ACAD_HONORS_PKG.insert_row
827     Known limitations,enhancements,remarks:
828     Change History
829     Who        When          What
830     *****************************************************************************************/
831 
832     l_rowid            VARCHAR2(25);
833     l_acad_interest_id igs_ad_acad_interest.acad_interest_id%TYPE;
834     lv_mode VARCHAR2(1) DEFAULT 'R';
835     CURSOR c_acad_interest IS
836       SELECT field_of_study
837         FROM igs_ss_ad_acadin_stg
838        WHERE ss_adm_appl_id = p_adm_appl_id;
839 
840   BEGIN
841     logHeader('insert_acad_interest', 'S');
842     FOR c_acad_interest_rec IN c_acad_interest LOOP
843       IF c_acad_interest_rec.field_of_study IS NOT NULL THEN
844         logDetail('Before call to IGS_AD_ACAD_INTEREST_PKG.insert_row',
845                   'S');
846         l_rowid            := '';
847         l_acad_interest_id := 0;
848 
849 
850             IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
851             THEN
852               lv_mode := 'S';
853             END IF;
854 
855 
856         IGS_AD_ACAD_INTEREST_PKG.insert_row(x_rowid                 => l_rowid,
857                                             x_acad_interest_id      => l_acad_interest_id,
858                                             x_person_id             => p_person_id,
859                                             x_admission_appl_number => p_adm_appl_number,
860                                             x_field_of_study        => c_acad_interest_rec.field_of_study,
861                                             x_mode                  => lv_mode -- enable security for Admin
862                                             );
863       END IF;
864     END LOOP;
865   EXCEPTION
866     WHEN OTHERS THEN
867 
868       logDetail('Inside insert_acad_interest' ||
869                 'Exception from IGS_AD_ACAD_INTEREST_PKG.insert_row ' ||
870                 SQLERRM || 'person_id : ' ||
871                 IGS_GE_NUMBER.TO_CANN(p_person_id),
872                 'S');
873       IF FND_MSG_PUB.Count_Msg < 1 THEN
874          Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
875          Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_acad_interest -'||SQLERRM);
876          IGS_GE_MSG_STACK.ADD;
877       END IF;
878       App_Exception.Raise_Exception;
879   END insert_acad_interest;
880 
881   PROCEDURE insert_applicant_intent(p_person_id       IN igs_ad_app_intent.person_id%TYPE,
882                                     p_adm_appl_id     IN igs_ss_ad_appint_stg.ss_adm_appl_id%TYPE,
883                                     p_adm_appl_number IN igs_ad_app_intent.admission_appl_number%TYPE) AS
884     /*****************************************************************************************
885     Created By: [email protected]
886     Date Created : 11-DEC-2001
887     Purpose: 1. Inserts Academic Honors Details (For an Application)
888              FLOW: IGS_AD_ACAD_HONORS_PKG.insert_row
889     Known limitations,enhancements,remarks:
890     Change History
891     Who        When          What
892     *****************************************************************************************/
893 
894     l_rowid         VARCHAR2(25);
895     l_app_intent_id igs_ad_app_intent.app_intent_id%TYPE;
896     lv_mode VARCHAR2(1) DEFAULT 'R';
897 
898     CURSOR c_applicant_intent IS
899       SELECT intent_type_id
900         FROM igs_ss_ad_appint_stg
901        WHERE ss_adm_appl_id = p_adm_appl_id;
902 
903   BEGIN
904     logHeader('insert_applicant_intent', 'S');
905     FOR c_applicant_intent_rec IN c_applicant_intent LOOP
906       IF c_applicant_intent_rec.intent_type_id IS NOT NULL THEN
907         logDetail('Before call to IGS_AD_APP_INTENT_PKG.insert_row', 'S');
908         l_rowid         := '';
909         l_app_intent_id := 0;
910 
911          IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
912             THEN
913               lv_mode := 'S';
914             END IF;
915         IGS_AD_APP_INTENT_PKG.insert_row(x_rowid                 => l_rowid,
916                                          x_app_intent_id         => l_app_intent_id,
917                                          x_person_id             => p_person_id,
918                                          x_admission_appl_number => p_adm_appl_number,
919                                          x_intent_type_id        => c_applicant_intent_rec.intent_type_id,
920                                          x_attribute_category    => NULL,
921                                          x_attribute1            => NULL,
922                                          x_attribute2            => NULL,
923                                          x_attribute3            => NULL,
924                                          x_attribute4            => NULL,
925                                          x_attribute5            => NULL,
926                                          x_attribute6            => NULL,
927                                          x_attribute7            => NULL,
928                                          x_attribute8            => NULL,
929                                          x_attribute9            => NULL,
930                                          x_attribute10           => NULL,
931                                          x_attribute11           => NULL,
932                                          x_attribute12           => NULL,
933                                          x_attribute13           => NULL,
934                                          x_attribute14           => NULL,
935                                          x_attribute15           => NULL,
936                                          x_attribute16           => NULL,
937                                          x_attribute17           => NULL,
938                                          x_attribute18           => NULL,
939                                          x_attribute19           => NULL,
940                                          x_attribute20           => NULL,
941                                          x_mode                  => lv_mode -- enable security for Admin
942                                          );
943       END IF;
944     END LOOP;
945   EXCEPTION
946     WHEN OTHERS THEN
947       logDetail('Inside insert_applicant_intent' ||
948                 'Exception from IGS_AD_APP_INTENT_PKG.insert_row ' ||
949                 SQLERRM || 'person_id : ' ||
950                 IGS_GE_NUMBER.TO_CANN(p_person_id),
951                 'S');
952       IF FND_MSG_PUB.Count_Msg < 1 THEN
953         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
954         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_applicant_intent -'||SQLERRM);
955         IGS_GE_MSG_STACK.ADD;
956       END IF;
957       App_Exception.Raise_Exception;
958   END insert_applicant_intent;
959 
960   PROCEDURE insert_spl_talent(p_person_id       IN igs_ad_spl_talents.person_id%TYPE,
961                               p_adm_appl_id     IN igs_ss_ad_spltal_stg.ss_adm_appl_id%TYPE,
962                               p_adm_appl_number IN igs_ad_spl_talents.admission_appl_number%TYPE) AS
963     /*****************************************************************************************
964     Created By: [email protected]
965     Date Created : 11-DEC-2001
966     Purpose: 1. Inserts Academic Honors Details (For an Application)
967              FLOW: IGS_AD_ACAD_HONORS_PKG.insert_row
968     Known limitations,enhancements,remarks:
969     Change History
970     Who        When          What
971     *****************************************************************************************/
972 
973     l_rowid         VARCHAR2(25);
974     l_spl_talent_id igs_ad_spl_talents.spl_talent_id%TYPE;
975     lv_mode VARCHAR2(1) DEFAULT 'R';
976 
977     CURSOR c_spl_talent IS
978       SELECT special_talent_type_id
979         FROM igs_ss_ad_spltal_stg
980        WHERE ss_adm_appl_id = p_adm_appl_id;
981 
982   BEGIN
983     logHeader('insert_spl_talent', 'S');
984     FOR c_spl_talent_rec IN c_spl_talent LOOP
985       IF c_spl_talent_rec.special_talent_type_id IS NOT NULL THEN
986         logDetail('Before call to IGS_AD_SPL_TALENTS_PKG.insert_row', 'S');
987         l_rowid         := '';
988         l_spl_talent_id := 0;
989 
990 
991         IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
992             THEN
993               lv_mode := 'S';
994             END IF;
995         IGS_AD_SPL_TALENTS_PKG.insert_row(x_rowid                  => l_rowid,
996                                           x_spl_talent_id          => l_spl_talent_id,
997                                           x_person_id              => p_person_id,
998                                           x_admission_appl_number  => p_adm_appl_number,
999                                           x_special_talent_type_id => c_spl_talent_rec.special_talent_type_id,
1000                                           x_mode                  => lv_mode -- enable security for Admin
1001                                           );
1002       END IF;
1003     END LOOP;
1004   EXCEPTION
1005     WHEN OTHERS THEN
1006       logDetail('Inside insert_spl_talent' ||
1007                 'Exception from IGS_AD_SPL_TALENTS_PKG.insert_row ' ||
1008                 SQLERRM || 'person_id : ' ||
1009                 IGS_GE_NUMBER.TO_CANN(p_person_id),
1010                 'S');
1011       IF FND_MSG_PUB.Count_Msg < 1 THEN
1012         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1013         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_spl_talent -'||SQLERRM);
1014         IGS_GE_MSG_STACK.ADD;
1015       END IF;
1016       App_Exception.Raise_Exception;
1017   END insert_spl_talent;
1018 
1019   PROCEDURE insert_special_interest(p_person_id       IN igs_ad_spl_interests.person_id%TYPE,
1020                                     p_adm_appl_id     IN igs_ss_ad_splint_stg.ss_adm_appl_id%TYPE,
1021                                     p_adm_appl_number IN igs_ad_spl_interests.admission_appl_number%TYPE) AS
1022     /*****************************************************************************************
1023     Created By: [email protected]
1024     Date Created : 11-DEC-2001
1025     Purpose: 1. Inserts Academic Honors Details (For an Application)
1026              FLOW: IGS_AD_ACAD_HONORS_PKG.insert_row
1027     Known limitations,enhancements,remarks:
1028     Change History
1029     Who        When          What
1030     *****************************************************************************************/
1031     l_rowid           VARCHAR2(25);
1032     l_spl_interest_id igs_ad_spl_interests.spl_interest_id%TYPE;
1033     lv_mode VARCHAR2(1) DEFAULT 'R';
1034 
1035     CURSOR c_special_interest IS
1036       SELECT special_interest_type_id
1037         FROM igs_ss_ad_splint_stg
1038        WHERE ss_adm_appl_id = p_adm_appl_id;
1039 
1040   BEGIN
1041     logHeader('insert_special_interest', 'S');
1042     FOR c_special_interest_rec IN c_special_interest LOOP
1043       IF c_special_interest_rec.special_interest_type_id IS NOT NULL THEN
1044         logDetail('Before call to  IGS_AD_SPL_INTERESTS_PKG.insert_row',
1045                   'S');
1046         l_rowid           := '';
1047         l_spl_interest_id := 0;
1048 
1049         IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
1050             THEN
1051               lv_mode := 'S';
1052             END IF;
1053 
1054         IGS_AD_SPL_INTERESTS_PKG.insert_row(x_rowid                    => l_rowid,
1055                                             x_spl_interest_id          => l_spl_interest_id,
1056                                             x_person_id                => p_person_id,
1057                                             x_admission_appl_number    => p_adm_appl_number,
1058                                             x_special_interest_type_id => c_special_interest_rec.special_interest_type_id,
1059                                             x_mode                  => lv_mode -- enable security for Admin
1060                                             );
1061       END IF;
1062     END LOOP;
1063   EXCEPTION
1064     WHEN OTHERS THEN
1065       logDetail('Inside insert_special_interest' ||
1066                 'Exception from IGS_AD_SPL_INTERESTS_PKG.insert_row ' ||
1067                 SQLERRM || 'person_id : ' ||
1068                 IGS_GE_NUMBER.TO_CANN(p_person_id),
1069                 'S');
1070       IF FND_MSG_PUB.Count_Msg < 1 THEN
1071         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1072         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_special_interest -'||SQLERRM);
1073         IGS_GE_MSG_STACK.ADD;
1074       END IF;
1075       App_Exception.Raise_Exception;
1076   END insert_special_interest;
1077   --added by nshee during build for Applicant-BOSS SS Bug 2622488
1078   --dhan
1079   PROCEDURE insert_othinst(p_person_id             IN NUMBER,
1080                            p_adm_appl_id           IN NUMBER,
1081                            p_admission_appl_number IN NUMBER) AS
1082     l_rowid         VARCHAR2(25);
1083     l_other_inst_id IGS_AD_OTHER_INST.OTHER_INST_ID%TYPE;
1084      lv_mode VARCHAR2(1) DEFAULT 'R';
1085 
1086     CURSOR c_othinst IS
1087       SELECT othinst.ss_othins_id,
1088              othinst.ss_adm_appl_id,
1089              othinst.institution_code,
1090              i.name,
1091              othinst.new_institution
1092         FROM igs_ss_ad_othins_stg othinst,
1093              igs_ss_adm_appl_stg  appl,
1094              igs_or_institution   i,
1095              igs_pe_hz_parties    php
1096        WHERE othinst.ss_adm_appl_id = appl.ss_adm_appl_id
1097          AND othinst.institution_code = i.institution_cd
1098          AND othinst.institution_code = php.oss_org_unit_cd
1099          AND appl.person_id = p_person_id
1100          AND othinst.ss_adm_appl_id = p_adm_appl_id; -- p_admission_appl_number;
1101 
1102   BEGIN
1103 
1104    IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
1105     THEN
1106       lv_mode := 'S';
1107     END IF;
1108 
1109     FOR c_othinst_rec IN c_othinst LOOP
1110       l_rowid         := '';
1111       l_other_inst_id := 0;
1112       IGS_AD_OTHER_INST_PKG.insert_row(x_rowid                 => l_rowid,
1113                                        x_other_inst_id         => l_other_inst_id,
1114                                        x_person_id             => p_person_id,
1115                                        x_admission_appl_number => p_admission_appl_number,
1116                                        x_institution_code      => c_othinst_rec.institution_code,
1117                                        x_mode                  => lv_mode, -- enable security for Admin
1118                                        x_new_institution       => c_othinst_rec.new_institution);
1119 
1120     END LOOP;
1121   EXCEPTION
1122     WHEN OTHERS THEN
1123       logDetail('Inside insert_othinst' ||
1124                 'Exception from IGS_AD_OTHER_INST_PKG.insert_row ' ||
1125                 SQLERRM || 'person_id : ' ||
1126                 IGS_GE_NUMBER.TO_CANN(p_person_id),
1127                 'S');
1128       IF FND_MSG_PUB.Count_Msg < 1 THEN
1129         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1130         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_othinst -'||SQLERRM);
1131         IGS_GE_MSG_STACK.ADD;
1132       END IF;
1133       App_Exception.Raise_Exception;
1134   END insert_othinst;
1135   --dhan
1136   PROCEDURE insert_edugoal_details(p_person_id           IN igs_ad_edugoal.person_id%TYPE,
1137                                    p_adm_appl_number     IN igs_ad_edugoal.admission_appl_number%TYPE,
1138                                    p_ss_adm_appl_id      IN igs_ss_app_pgm_stg.ss_adm_appl_id%TYPE,
1139                                    p_nominated_course_cd IN igs_ad_edugoal.nominated_course_cd%TYPE,
1140                                    p_sequence_number     IN igs_ad_edugoal.sequence_number%TYPE) AS
1141     /*****************************************************************************************
1142     Created By: [email protected]
1143     Date Created : 11-DEC-2001
1144     Purpose: 1. Inserts Post Educational Goal Details (For an Application Program Instance)
1145              FLOW: IGS_AD_EDUGOAL_PKG.insert_row
1146     Known limitations,enhancements,remarks:
1147     Change History
1148     Who        When          What
1149     nshee     29-oct-2002 modified due to design change in build 2622488
1150     *****************************************************************************************/
1151     l_rowid           VARCHAR2(25);
1152     l_post_edugoal_id IGS_AD_EDUGOAL.post_edugoal_id%TYPE;
1153     lv_mode VARCHAR2(1) DEFAULT 'R';
1154     CURSOR c_postenroll_edu_goal IS
1155       SELECT edu_goal_id
1156         FROM igs_ss_ad_edugoa_stg
1157        WHERE ss_admappl_pgm_id =
1158              (SELECT ss_admappl_pgm_id
1159                 FROM igs_ss_app_pgm_stg
1160                WHERE ss_adm_appl_id = p_ss_adm_appl_id -- p_adm_appl_number
1161                  AND nominated_course_cd = p_nominated_course_cd
1162                  AND person_id = p_person_id);
1163   BEGIN
1164     logHeader('insert_edugoal_details', 'S');
1165 
1166     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
1167     THEN
1168       lv_mode := 'S';
1169     END IF;
1170     FOR c_postenroll_edu_goal_rec IN c_postenroll_edu_goal LOOP
1171       IF c_postenroll_edu_goal_rec.edu_goal_id IS NOT NULL THEN
1172         logDetail('Before call to IGS_AD_EDUGOAL_PKG.insert_row', 'S');
1173 
1174         l_rowid           := '';
1175         l_post_edugoal_id := 0;
1176 
1177         IGS_AD_EDUGOAL_PKG.insert_row(X_ROWID                 => l_rowid,
1178                                       X_POST_EDUGOAL_ID       => l_post_edugoal_id,
1179                                       X_PERSON_ID             => p_person_id,
1180                                       X_ADMISSION_APPL_NUMBER => p_adm_appl_number,
1181                                       X_NOMINATED_COURSE_CD   => p_nominated_course_cd,
1182                                       X_SEQUENCE_NUMBER       => p_sequence_number,
1183                                       X_EDU_GOAL_ID           => c_postenroll_edu_goal_rec.edu_goal_id,
1184                                       x_mode                  => lv_mode-- enable security for Admin
1185                                       );
1186 
1187       END IF;
1188     END LOOP;
1189   EXCEPTION
1190     WHEN OTHERS THEN
1191       logDetail('insert_edugoal_details' ||
1192                 'Exception from IGS_AD_EDUGOAL_PKG.insert_row' || SQLERRM ||
1193                 'person_id : ' || IGS_GE_NUMBER.TO_CANN(p_person_id),
1194                 'S');
1195       IF FND_MSG_PUB.Count_Msg < 1 THEN
1196         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1197         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_edugoal_details -'||SQLERRM);
1198         IGS_GE_MSG_STACK.ADD;
1199       END IF;
1200       App_Exception.Raise_Exception;
1201   END insert_edugoal_details;
1202 
1203   PROCEDURE insert_ss_appl_stg(x_message_name       OUT NOCOPY VARCHAR2,
1204                                x_return_status      OUT NOCOPY VARCHAR2,
1205                                p_person_id          IN NUMBER,
1206                                p_application_type   IN VARCHAR2,
1207                                p_adm_appl_number    IN NUMBER,
1208                                p_admission_cat      IN VARCHAR2,
1209                                p_s_adm_process_type IN VARCHAR2,
1210                                p_login_id           IN NUMBER,
1211                                p_app_source_id      IN NUMBER) AS
1212     /*****************************************************************************************
1213     Created By: [email protected]
1214     Date Created : 11-DEC-2001
1215     Purpose: 1. Inserts record from Self Service Admissions form (New Application Screen)
1216 
1217     Known limitations,enhancements,remarks:
1218     Change History
1219     Who        When          What
1220     rboddu     17-FEB-2002   Added the parameter p_app_source_id. The same is inserted into the table.
1221                              Bug : 2224624
1222     *****************************************************************************************/
1223 
1224   BEGIN
1225     BEGIN
1226       INSERT INTO igs_ss_adm_appl_stg
1227         (ss_adm_appl_id,
1228          person_id,
1229          appl_date,
1230          admission_application_type,
1231          admission_cat,
1232          s_adm_process_type,
1233          last_update_date,
1234          last_updated_by,
1235          creation_date,
1236          created_by,
1237          last_update_login,
1238          app_source_id)
1239       VALUES
1240         (p_adm_appl_number,
1241          p_person_id,
1242          SYSDATE,
1243          p_application_type,
1244          p_admission_cat,
1245          p_s_adm_process_type,
1246          SYSDATE,
1247          p_login_id,
1248          SYSDATE,
1249          p_login_id,
1250          p_login_id,
1251          p_app_source_id);
1252       IF SQL%ROWCOUNT = 0 THEN
1253         x_return_status := 'E';
1254         x_message_name  := 'IGS_GE_UNHANDLED_EXP';
1255       END IF;
1256     END;
1257   EXCEPTION
1258     WHEN OTHERS THEN
1259      logDetail('insert  igs_ss_adm_appl_stg' || SQLERRM ||
1260                 'person_id : ' || IGS_GE_NUMBER.TO_CANN(p_person_id),
1261                 'S');
1262       x_return_status := 'E';
1263       x_message_name  := 'IGS_GE_UNHANDLED_EXP';
1264       IF FND_MSG_PUB.Count_Msg < 1 THEN
1265         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1266         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_ss_appl_stg -'||SQLERRM);
1267         IGS_GE_MSG_STACK.ADD;
1268       END IF;
1269       App_Exception.Raise_Exception;
1270   END insert_ss_appl_stg;
1271 
1272   PROCEDURE insert_ss_appl_perstat_stg(p_return_status              OUT NOCOPY VARCHAR2,
1273                                        p_message_data               OUT NOCOPY VARCHAR2,
1274                                        p_person_id                  IN NUMBER,
1275                                        p_adm_appl_id                IN NUMBER,
1276                                        p_admission_application_type IN VARCHAR2,
1277                                        p_user_id                    IN NUMBER,
1278                                        p_date_received              IN DATE)
1279   /*****************************************************************************************
1280     Created By:
1281     Date Created :
1282     Purpose: 1. Inserts record from Self Service Admissions form (New Application Screen)
1283 
1284     Known limitations,enhancements,remarks:
1285     Change History
1286     Who        When          What
1287     rboddu    17-FEB-2002   Added the parameter p_date_received. The same is inserted into the table.
1288                              Bug : 2224624
1289     rboddu    05-mar-2003   Inserting the Date_Received as TRUNC(p_date_received). Bug: 2731445
1290     *****************************************************************************************/
1291    AS
1292     CURSOR c_perstat_types(l_admission_application_type IN VARCHAR2) IS
1293       SELECT persl_stat_type
1294         From igs_ad_aptyp_pestat
1295        WHERE admission_application_type = l_admission_application_type;
1296     l_stmt_count NUMBER;
1297   BEGIN
1298     SELECT COUNT(ss_perstat_id)
1299       INTO l_stmt_count
1300       FROM igs_ss_appl_perstat
1301      WHERE person_id = p_person_id
1302        AND ss_adm_appl_id = p_adm_appl_id;
1303 
1304     IF l_stmt_count = 0 THEN
1305       FOR c_perstat_types_data IN c_perstat_types(p_admission_application_type) LOOP
1306         BEGIN
1307           INSERT INTO igs_ss_appl_perstat
1308             (ss_perstat_id,
1309              person_id,
1310              ss_adm_appl_id,
1311              admission_application_type,
1312              persl_stat_type,
1313              date_received,
1314              created_by,
1315              creation_date,
1316              attach_exists,
1317              last_updated_by,
1318              last_update_date,
1319              last_update_login)
1320           VALUES
1321             (igs_ss_perstat_id_s.NEXTVAL,
1322              p_person_id,
1323              p_adm_appl_id,
1324              p_admission_application_type,
1325              c_perstat_types_data.persl_stat_type,
1326              TRUNC(p_date_received),
1327              p_user_id,
1328              SYSDATE,
1329              'N',
1330              p_user_id,
1331              SYSDATE,
1332              p_user_id);
1333           IF c_perstat_types%NOTFOUND THEN
1334             p_return_status := 'S';
1335             EXIT;
1336           END IF;
1337         END;
1338       END LOOP;
1339       p_return_status := 'S';
1340     ELSE
1341       p_return_status := 'S';
1342     END IF;
1343   EXCEPTION
1344     WHEN OTHERS THEN
1345      logDetail('insert  igs_ss_appl_perstat' || SQLERRM ||
1346                 'person_id : ' || IGS_GE_NUMBER.TO_CANN(p_person_id),
1347                 'S');
1348       p_return_status := 'E';
1349       p_message_data  := 'IGS_GE_UNHANDLED_EXP';
1350       IF FND_MSG_PUB.Count_Msg < 1 THEN
1351         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1352         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_ss_appl_perstat_stg -'||SQLERRM);
1353         IGS_GE_MSG_STACK.ADD;
1354       END IF;
1355       App_Exception.Raise_Exception;
1356   END insert_ss_appl_perstat_stg;
1357 
1358   PROCEDURE delete_ss_appl_stg(x_message_name    OUT NOCOPY VARCHAR2,
1359                                x_return_status   OUT NOCOPY VARCHAR2,
1360                                p_adm_appl_number IN NUMBER,
1361                                p_person_id       IN NUMBER) AS
1362     /*****************************************************************************************
1363     Created By: [email protected]
1364     Date Created : 11-DEC-2001
1365     Purpose: 1. Deletes record from staging tables if the Application  Creation is successful
1366              2. Also CAlled from SS Application Form to Delete an already Created Application
1367 
1368     Known limitations,enhancements,remarks:
1369     Change History
1370     Who        When          What
1371     tray       16-APR-02     added DML delete for deleting data from igs_ss_ad_sec_stat
1372                              after the application is transferred.
1373     *****************************************************************************************/
1374 
1375     l_message_name                VARCHAR2(2000);
1376     l_return_status               VARCHAR2(2);
1377     l_msg_index                   NUMBER;
1378     l_msg_count                   NUMBER;
1379     l_msg_data                    VARCHAR2(2000);
1380     p_hash_msg_name_text_type_tab igs_ad_gen_016.g_msg_name_text_type_table;
1381 
1382   BEGIN
1383       l_msg_index := IGS_GE_MSG_STACK.count_msg;
1384 
1385     BEGIN
1386       DELETE FROM igs_ss_ad_sec_stat
1387        WHERE person_id = p_person_id
1388          AND ss_adm_appl_id = p_adm_appl_number;
1389 
1390       DELETE FROM igs_ss_app_req_stg
1391        WHERE ss_adm_appl_id = p_adm_appl_number
1392          AND person_id = p_person_id;
1393 
1394       -- dvivekan
1395       -- deleting the per stmt rows not having attachments
1396 
1397       DELETE FROM igs_ss_appl_perstat
1398        WHERE ss_adm_appl_id = p_adm_appl_number
1399          AND person_id = p_person_id;
1400 
1401       --added by nshee during build for Applicant-BOSS SS Bug 2622488
1402       DELETE FROM igs_ss_ad_unitse_stg
1403        WHERE ss_admappl_pgm_id IN
1404              (SELECT ss_admappl_pgm_id
1405                 FROM igs_ss_app_pgm_stg
1406                WHERE ss_adm_appl_id = p_adm_appl_number
1407                  AND person_id = p_person_id);
1408 
1409       DELETE FROM igs_ss_ad_edugoa_stg
1410        WHERE ss_admappl_pgm_id IN
1411              (SELECT ss_admappl_pgm_id
1412                 FROM igs_ss_app_pgm_stg
1413                WHERE ss_adm_appl_id = p_adm_appl_number
1414                  AND person_id = p_person_id);
1415 
1416       DELETE FROM igs_ss_ad_acadin_stg
1417        WHERE ss_adm_appl_id = p_adm_appl_number;
1418 
1419       DELETE FROM igs_ss_ad_appint_stg
1420        WHERE ss_adm_appl_id = p_adm_appl_number;
1421 
1422       DELETE FROM igs_ss_ad_splint_stg
1423        WHERE ss_adm_appl_id = p_adm_appl_number;
1424 
1425       DELETE FROM igs_ss_ad_spltal_stg
1426        WHERE ss_adm_appl_id = p_adm_appl_number;
1427       --added by nshee during build for Applicant-BOSS SS Bug 2622488
1428       -- needs to include in the
1429       -- delete stg table records section
1430       DELETE FROM igs_ss_ad_othins_stg
1431        WHERE ss_adm_appl_id = p_adm_appl_number;
1432       --dhan
1433       DELETE FROM igs_ss_app_pgm_stg
1434        WHERE person_id = p_person_id
1435          AND ss_adm_appl_id = p_adm_appl_number;
1436 
1437       DELETE FROM igs_ss_adm_appl_stg
1438        WHERE ss_adm_appl_id = p_adm_appl_number
1439          AND person_id = p_person_id;
1440 
1441     END;
1442   EXCEPTION
1443     WHEN OTHERS THEN
1444       logDetail('Exception from delete_ss_appl_stg, ' || SQLERRM, 'S');
1445       x_return_status := 'E';
1446       x_message_name :=  'IGS_GE_UNHANDLED_EXP';
1447       IF FND_MSG_PUB.Count_Msg < 1 THEN
1448         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1449         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.delete_ss_appl_stg -'||SQLERRM);
1450         IGS_GE_MSG_STACK.ADD;
1451       END IF;
1452       App_Exception.Raise_Exception;
1453 
1454   END delete_ss_appl_stg;
1455 
1456   --Procedure for transferring Personal Statements/Attachments
1457   PROCEDURE transfer_attachment(p_person_id             IN IGS_SS_APPL_PERSTAT.person_id%TYPE,
1458                                 p_ss_adm_appl_id        IN IGS_SS_APPL_PERSTAT.ss_adm_appl_id%TYPE,
1459                                 p_admission_appl_number IN IGS_AD_APPL_PERSTAT.admission_appl_number%TYPE,
1460                                 x_return_status         OUT NOCOPY VARCHAR2) IS
1461     /*****************************************************************************************
1462     Created By: [email protected]
1463     Date Created : 11-DEC-2001
1464     Purpose: 1. Deletes record from staging tables if the Application  Creation is successful
1465              2. Also CAlled from SS Application Form to Delete an already Created Application
1466 
1467     Known limitations,enhancements,remarks:
1468     Change History
1469     Who        When          What
1470     rboddu     17-FEB-2002   in IGS_AD_APPL_PERSTAT_PKG.Insert_Row, date_received is passed
1471                              NVL(c_ss_appl_perstat_rec.date_received,SYSDATE). Earlier it was just SYSDATE
1472                              Bug : 2224624
1473     rboddu     05-MAR-2003   Passing Received_Date as TRUNC(SYSDATE) if it's null in the SS Table. Bug: 2731445
1474     *****************************************************************************************/
1475     l_rowid           VARCHAR2(25);
1476     l_appl_perstat_id IGS_AD_APPL_PERSTAT.appl_perstat_id%TYPE;
1477     l_from_pk1_value  VARCHAR2(100);
1478     l_to_pk1_value    VARCHAR2(100);
1479     lv_mode VARCHAR2(1) DEFAULT 'R';
1480 
1481     CURSOR c_ss_appl_perstat IS
1482       SELECT ps.*
1483         FROM igs_ss_appl_perstat ps
1484        WHERE ps.ss_adm_appl_id = p_ss_adm_appl_id
1485          AND ps.person_id = p_person_id;
1486 
1487     CURSOR c_ad_appl_perstat IS
1488       SELECT APPL_PERSTAT_ID
1489         FROM igs_ad_appl_perstat
1490        WHERE person_id = p_person_id
1491          AND admission_appl_number = p_admission_appl_number;
1492 
1493     c_ss_appl_perstat_rec c_ss_appl_perstat%ROWTYPE;
1494 
1495   BEGIN
1496 
1497     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
1498     THEN
1499       lv_mode := 'S';
1500     END IF;
1501     --
1502     OPEN c_ss_appl_perstat;
1503     LOOP
1504       FETCH c_ss_appl_perstat
1505         INTO c_ss_appl_perstat_rec; /*There is no way of ensuring that the student visited the personal statements page, if the personal statements page is not visited then no data will be there in the staging table ,
1506          and error will be caused , as per back office functionality application can be created without personal statement. So procedure should return status 'S' when there are no personal statement staging records */
1507       EXIT WHEN c_ss_appl_perstat%NOTFOUND;
1508       IF c_ss_appl_perstat_rec.ATTACH_EXISTS = 'Y' THEN
1509         BEGIN
1510           IGS_AD_APPL_PERSTAT_PKG.Insert_Row(x_rowid                 => l_rowid,
1511                                              x_appl_perstat_id       => l_appl_perstat_id,
1512                                              x_person_id             => c_ss_appl_perstat_rec.person_id,
1513                                              x_admission_appl_number => p_admission_appl_number,
1514                                              x_persl_stat_type       => c_ss_appl_perstat_rec.persl_stat_type,
1515                                              x_date_received         => NVL(c_ss_appl_perstat_rec.date_received,
1516                                                                             TRUNC(SYSDATE)), --If the date_received passed from Self Service is null then insert SYSDATE into OSS Table
1517                                              x_mode                  => lv_mode -- enable security for Admin
1518                                              );
1519           /* If insert is successful copy and delete the attachments to the IGS_AD_APPL_PERSTAT table */
1520           BEGIN
1521 
1522             -- bug 2407148 fix (transferring multiple personal statements)
1523 
1524             /*
1525             OPEN c_ad_appl_perstat;
1526                   LOOP
1527                   FETCH c_ad_appl_perstat INTO l_to_pk1_value;
1528                   EXIT WHEN c_ad_appl_perstat%NOTFOUND;
1529             */
1530 
1531             l_from_pk1_value := IGS_GE_NUMBER.TO_CANN(c_ss_appl_perstat_rec.SS_PERSTAT_ID);
1532             fnd_attached_documents2_pkg.copy_attachments(X_from_entity_name         => 'IGS_SS_APPL_PERSTAT',
1533                                                          X_from_pk1_value           => l_from_pk1_value,
1534                                                          X_from_pk2_value           => NULL,
1535                                                          X_from_pk3_value           => NULL,
1536                                                          X_from_pk4_value           => NULL,
1537                                                          X_from_pk5_value           => NULL,
1538                                                          X_to_entity_name           => 'IGS_AD_APPL_PERSTAT',
1539                                                          X_to_pk1_value             => l_appl_perstat_id, -- l_to_pk1_value is not used bug 2407148 fix
1540                                                          X_to_pk2_value             => NULL,
1541                                                          X_to_pk3_value             => NULL,
1542                                                          X_to_pk4_value             => NULL,
1543                                                          X_to_pk5_value             => NULL,
1544                                                          X_created_by               => NULL,
1545                                                          X_last_update_login        => NULL,
1546                                                          X_program_application_id   => NULL,
1547                                                          X_program_id               => NULL,
1548                                                          X_request_id               => NULL,
1549                                                          X_automatically_added_flag => 'N');
1550 
1551             fnd_attached_documents2_pkg.delete_attachments(X_entity_name              => 'IGS_SS_APPL_PERSTAT',
1552                                                            X_pk1_value                => l_from_pk1_value,
1553                                                            X_pk2_value                => NULL,
1554                                                            X_pk3_value                => NULL,
1555                                                            X_pk4_value                => NULL,
1556                                                            X_pk5_value                => NULL,
1557                                                            X_delete_document_flag     => 'N',
1558                                                            X_automatically_added_flag => 'N');
1559             -- END LOOP;
1560             x_return_status := 'S';
1561           EXCEPTION
1562             WHEN OTHERS THEN
1563               /* If copy and delete is NOT successful */
1564               x_return_status := 'E';
1565           END;
1566           x_return_status := 'S';
1567         EXCEPTION
1568           WHEN OTHERS THEN
1569             /* If insert is NOT successful */
1570             x_return_status := 'E';
1571         END;
1572         DELETE FROM igs_ss_appl_perstat
1573          WHERE ss_perstat_id = c_ss_appl_perstat_rec.SS_PERSTAT_ID;
1574       END IF;
1575 
1576       IF x_return_status <> 'E' OR x_return_status IS NULL THEN
1577         x_return_status := 'S';
1578         /*Indicate Success, to be used in Calling Proc, if Status = 'S', then commit
1579         data */
1580       END IF;
1581     END LOOP;
1582     x_return_status := 'S';
1583   EXCEPTION
1584     WHEN OTHERS THEN
1585       x_return_status := 'E';
1586       logDetail('Exception from transfer_attachment ' || SQLERRM, 'S');
1587       IF FND_MSG_PUB.Count_Msg < 1 THEN
1588         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1589         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.transfer_attachment -'||SQLERRM);
1590         IGS_GE_MSG_STACK.ADD;
1591       END IF;
1592 
1593       App_Exception.Raise_Exception;
1594   END transfer_attachment;
1595 
1596   --Procedure sent from HQ to be added
1597   -----------------------------------
1598   PROCEDURE get_acad_cal(p_adm_cal_type  IN igs_ca_type.cal_type%TYPE,
1599                          p_adm_seq       IN OUT NOCOPY igs_ca_inst.sequence_number%TYPE,
1600                          p_acad_cal_type OUT NOCOPY igs_ca_type.cal_type%TYPE,
1601                          p_acad_seq      OUT NOCOPY igs_ca_inst.sequence_number%TYPE) AS
1602     l_message  fnd_new_messages.message_name%TYPE;
1603     l_start_dt DATE;
1604     l_end_dt   DATE;
1605     l_out      VARCHAR2(2000);
1606 
1607     -- Cursor for getting the Calendar Sequence for the
1608     -- Calendar Type. The Calendar Instance Selected for this calendar
1609     -- should be the nearest one to the System Date
1610     CURSOR cur_sequence(cp_cal_type igs_ca_type.cal_type%TYPE) IS
1611       SELECT ci_adm.sequence_number  adm_sequence_number,
1612              ci_acad.cal_type        acad_cal_type,
1613              ci_acad.sequence_number acad_sequence_number
1614         FROM igs_ca_type     ct_adm,
1615              igs_ca_inst     ci_adm,
1616              igs_ca_stat     cs,
1617              igs_ca_inst_rel cir,
1618              igs_ca_inst     ci_acad,
1619              igs_ca_type     ct_acad
1620        WHERE ct_adm.cal_type = cp_cal_type
1621          AND ct_adm.cal_type = ci_adm.cal_type
1622          AND SYSDATE <= ci_adm.end_dt
1623          AND ct_adm.s_cal_cat = 'ADMISSION'
1624          AND ci_adm.cal_status = cs.cal_status
1625          AND cs.s_cal_status = 'ACTIVE'
1626          AND ci_adm.cal_type = cir.sub_cal_type
1627          AND ci_adm.sequence_number = cir.sub_ci_sequence_number
1628          AND ct_acad.cal_type = ci_acad.cal_type
1629          AND ci_acad.cal_type = cir.sup_cal_type
1630          AND ci_acad.sequence_number = cir.sup_ci_sequence_number
1631          AND ct_acad.s_cal_cat = 'ACADEMIC'
1632        ORDER BY ci_adm.end_dt;
1633 
1634     sequence_rec cur_sequence%ROWTYPE;
1635   BEGIN
1636 
1637     -- If the Admission Calendar Instance is not defined
1638     -- then derive the Admisssion Calendar Instance
1639     IF p_adm_seq IS NULL THEN
1640       OPEN cur_sequence(p_adm_cal_type);
1641       FETCH cur_sequence
1642         INTO sequence_rec;
1643 
1644       IF cur_sequence%NOTFOUND THEN
1645         fnd_message.set_name('IGS', 'IGS_AD_INQ_ADMCAL_SEQ_NOTDFN');
1646         fnd_message.set_token('CAL_TYPE', p_adm_cal_type);
1647         IGS_GE_MSG_STACK.ADD;
1648         app_exception.raise_exception;
1649       END IF;
1650 
1651       p_adm_seq       := sequence_rec.adm_sequence_number;
1652       p_acad_cal_type := sequence_rec.acad_cal_type;
1653       p_acad_seq      := sequence_rec.acad_sequence_number;
1654       CLOSE cur_sequence;
1655     END IF;
1656   EXCEPTION
1657     WHEN OTHERS THEN
1658       RAISE;
1659   END get_acad_cal;
1660 
1661   ----------------------------------
1662   --Function Sent from HQ to be added
1663   ----------------------------------
1664   FUNCTION get_dflt_adm_cal RETURN VARCHAR2 IS
1665     CURSOR cur_adm_cal_conf IS
1666       SELECT inq_cal_type FROM igs_ad_cal_conf;
1667 
1668     l_inq_cal_type igs_ad_cal_conf.inq_cal_type%TYPE;
1669 
1670   BEGIN
1671 
1672     OPEN cur_adm_cal_conf;
1673     FETCH cur_adm_cal_conf
1674       INTO l_inq_cal_type;
1675     CLOSE cur_adm_cal_conf;
1676     RETURN(l_inq_cal_type);
1677 
1678   END get_dflt_adm_cal;
1679   ----------------------------------
1680 
1681   --This is a Debug Mode Proc, outputs which proc is being processed, to stop Debugging pass 'H' to p_mode param
1682   PROCEDURE logHeader(p_proc_name VARCHAR2, p_mode VARCHAR2) AS
1683   BEGIN
1684     IF p_mode = 'S' THEN
1685       --  FND_FILE.PUT_LINE(FND_FILE.LOG,p_proc_name);
1686       --  dbms_output.put_line('*****************Inside Proc: '||p_proc_name||'  **********************');
1687       null; --commented last  line for GSCC , uncomment when using logheader
1688     ELSIF p_mode = 'H' THEN
1689       NULL;
1690     END IF;
1691   END;
1692 
1693   --This is a Debug Mode Proc, outputs each call being processed, to stop Debugging pass 'H' to p_mode param
1694   PROCEDURE logDetail(p_debug_msg VARCHAR2, p_mode VARCHAR2) AS
1695   BEGIN
1696     IF p_mode = 'S' THEN
1697       -- FND_FILE.PUT_LINE(FND_FILE.LOG,p_debug_msg);
1698       --  dbms_output.put_line(p_debug_msg);
1699       null; --commented last  line for GSCC , uncomment when using logheader
1700     ELSIF p_mode = 'H' THEN
1701       NULL;
1702     END IF;
1703   END;
1704 
1705   -- Check to see if there exists any fee for this Application
1706   Procedure Check_FeeExists(p_person_id          IN igs_ad_appl_all.person_id%TYPE,
1707 			    p_adm_appl_num       IN igs_ad_appl_all.admission_appl_number%TYPE,
1708                             x_return_status      OUT NOCOPY VARCHAR2,
1709                             x_message_data       OUT NOCOPY VARCHAR2) AS
1710 
1711     l_fee_amount        NUMBER;
1712     l_msg_count         NUMBER;
1713     l_revenue_acct_code	igs_ad_app_req.REV_ACCOUNT_CD%TYPE;
1714     l_cash_acct_code	igs_ad_app_req.CASH_ACCOUNT_CD%TYPE;
1715     l_revenue_acct_ccid	igs_ad_app_req.REV_GL_CCID%TYPE;
1716     l_cash_acct_ccid	igs_ad_app_req.CASH_GL_CCID%TYPE;
1717 
1718 
1719   BEGIN
1720 
1721     -- check if application fee exists
1722 
1723 
1724     x_message_data := NULL;
1725     x_return_status := 'N';
1726 
1727 
1728     IGS_AD_SS_APPL_FEE_PKG.get_appl_type_fee_details(
1729          p_person_id             =>p_person_id,
1730          p_admission_appl_number =>p_adm_appl_num,
1731          appl_fee_amt            =>l_fee_amount,
1732          revenue_acct_code       =>l_revenue_acct_code,
1733          cash_acct_code          =>l_cash_acct_code,
1734          revenue_acct_ccid       =>l_revenue_acct_ccid,
1735          cash_acct_ccid          =>l_cash_acct_ccid,
1736          x_return_status         =>x_return_status,
1737          x_msg_count             =>l_msg_count,
1738          x_msg_data              =>x_message_data);
1739 
1740     IF l_fee_amount =0 THEN
1741 	x_return_status := 'N';
1742     END IF;
1743 
1744     IF (l_fee_amount IS NOT NULL) AND (l_fee_amount > 0) THEN
1745       x_return_status := 'S';
1746     END IF;
1747 
1748   EXCEPTION
1749     WHEN OTHERS THEN
1750       x_return_status := 'E';
1751       x_message_data := 'IGS_GE_UNHANDLED_EXP';
1752       logDetail('Exception from Check_FeeExists ' || SQLERRM, 'S');
1753       IF FND_MSG_PUB.Count_Msg < 1 THEN
1754         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1755         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Check_FeeExists -'||SQLERRM);
1756         IGS_GE_MSG_STACK.ADD;
1757       END IF;
1758       App_Exception.Raise_Exception;
1759 
1760   END Check_FeeExists;
1761 
1762   -- Check to see if the application is a one-stop type application
1763   Procedure Check_OneStop(p_person_id              IN NUMBER,
1764                           p_admission_cat          IN VARCHAR2,
1765                           p_admission_process_type IN VARCHAR2,
1766                           x_return_status          OUT NOCOPY VARCHAR2,
1767                           x_message_data           OUT NOCOPY VARCHAR2) AS
1768 
1769     l_accept                      VARCHAR2(1);
1770     l_offer                       VARCHAR2(1);
1771     l_one_stop                    VARCHAR2(1);
1772     l_msg_index                   NUMBER;
1773     l_msg_count                   NUMBER;
1774     l_msg_data                    VARCHAR2(2000);
1775     p_hash_msg_name_text_type_tab igs_ad_gen_016.g_msg_name_text_type_table;
1776 
1777     l_prog_label  VARCHAR2(100);
1778     l_label  VARCHAR2(500);
1779     l_debug_str VARCHAR2(4000);
1780 
1781   BEGIN
1782 
1783     l_prog_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop';
1784     l_label      := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.start';
1785 
1786     IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1787       l_debug_str := 'Starting values : Person ID  =' || p_person_id || 'Admission cat  ='||p_admission_cat ||
1788                    'sytem Admission process type  ='|| p_admission_process_type;
1789       fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1790     END IF;
1791 
1792 
1793     Select 'X'
1794       Into l_accept
1795       From igs_ad_prcs_cat_step
1796      Where S_ADMISSION_STEP_TYPE = 'AUTO-ACCEPT'
1797        And ADMISSION_CAT = p_admission_cat
1798        And S_ADMISSION_PROCESS_TYPE = p_admission_process_type
1799        And STEP_GROUP_TYPE <> 'TRACK'; --2402377
1800 
1801 
1802         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1803           l_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.After_Auto_accept_Step_incl';
1804           l_debug_str := 'Auto Accept step is included for APC';
1805           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1806         END IF;
1807 
1808     Select 'X'
1809       Into l_offer
1810       From igs_ad_prcs_cat_step
1811      Where S_ADMISSION_STEP_TYPE = 'AUTO-OFFER'
1812        And ADMISSION_CAT = p_admission_cat
1813        And S_ADMISSION_PROCESS_TYPE = p_admission_process_type
1814        And STEP_GROUP_TYPE <> 'TRACK'; -- 2402377
1815 
1816         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1817           l_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.After_Auto_offer_Step_incl';
1818           l_debug_str := 'Auto Accept step is included for APC';
1819           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1820         END IF;
1821 
1822     -- If no record exists for that combination RETURN 'N',
1823     -- else return 'S'
1824 
1825     If (l_accept IS NOT NULL And l_offer IS NOT NULL) Then
1826         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1827           l_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.One_Stop';
1828           l_debug_str := 'Its One Stop Application !';
1829           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1830         END IF;
1831       l_one_stop := 'Y';
1832     End If;
1833 
1834     If l_one_stop = 'Y' Then
1835       x_return_status := 'S';
1836     End If;
1837 
1838   EXCEPTION
1839     WHEN NO_DATA_FOUND THEN
1840         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1841           l_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.No_data_found';
1842           l_debug_str := 'It Not An One Stop Application ';
1843           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1844         END IF;
1845 
1846       FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_ONESTOP_NO_DATA_FOUND');
1847       IGS_GE_MSG_STACK.ADD;
1848       x_return_status := 'N'; -- This is used to specify that application is not onestop
1849       x_message_data  := 'IGS_AD_ONESTOP_NO_DATA_FOUND';
1850 
1851     WHEN OTHERS THEN
1852         IF fnd_log.test(fnd_log.level_Exception,l_prog_label) THEN
1853           l_label := 'igs.plsql.igs_ad_ss_gen_001.Check_OneStop.Exception_when_others';
1854           l_debug_str := 'In Exception- When Others block of Check_OneStop';
1855           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1856         END IF;
1857 
1858       x_return_status := 'E';
1859       x_message_data := 'IGS_GE_UNHANDLED_EXP';
1860       logDetail('Exception from Check_OneStop ' || SQLERRM, 'S');
1861       IF FND_MSG_PUB.Count_Msg < 1 THEN
1862         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
1863         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Check_OneStop -'||SQLERRM);
1864         IGS_GE_MSG_STACK.ADD;
1865       END IF;
1866       App_Exception.Raise_Exception;
1867 
1868   END Check_OneStop;
1869 
1870   -- This procedure will only be called if it is a one-stop application
1871 
1872   PROCEDURE Process_OneStop(p_admission_appl_number  IN NUMBER,
1873                             p_person_id              IN NUMBER,
1874                             p_admission_cat          IN VARCHAR2,
1875                             p_admission_process_type IN VARCHAR2,
1876                             p_role                   IN VARCHAR2,
1877                             x_return_status          OUT NOCOPY VARCHAR2,
1878                             x_message_data           OUT NOCOPY VARCHAR2) AS
1879 
1880     Cursor c_course IS
1881       Select NOMINATED_COURSE_CD, SEQUENCE_NUMBER
1882         From IGS_AD_PS_APPL_INST_ALL
1883        Where PERSON_ID = p_person_id
1884          And ADMISSION_APPL_NUMBER = p_admission_appl_number;
1885 
1886     l_one_stop                    VARCHAR2(1);
1887     c_course_rec                  c_course%ROWTYPE;
1888     l_return_status               VARCHAR2(1);
1889     l_msg_count                   NUMBER;
1890     l_msg_data                    VARCHAR2(1000);
1891     l_message_data                VARCHAR2(1000);
1892     l_msg_index                   NUMBER;
1893     p_hash_msg_name_text_type_tab igs_ad_gen_016.g_msg_name_text_type_table;
1894 
1895     l_prog_label  VARCHAR2(100);
1896     l_label  VARCHAR2(500);
1897     l_debug_str VARCHAR2(4000);
1898 
1899 
1900   BEGIN
1901 
1902     l_prog_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop';
1903     l_label      := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.start';
1904 
1905     IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1906       l_debug_str := 'Starting values : Adm appl No ='|| p_admission_appl_number ||'Person ID  =' || p_person_id || 'Admission cat  ='||p_admission_cat ||
1907                    'sytem Admission process type  ='|| p_admission_process_type;
1908       fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1909     END IF;
1910 
1911 
1912     -- Check whether the Admission Entry qualification status be updated
1913     -- to system admission entry qualification 'QUALIFIED' and whether
1914     -- the Admission Application status can be updated to 'SATISFIED'
1915     -- If Yes, then update them to the respective values
1916     x_return_status := 'E';
1917     Open c_course;
1918 
1919     LOOP
1920 
1921       FETCH c_course
1922         INTO c_course_rec;
1923 
1924       EXIT WHEN c_course%NOTFOUND;
1925 
1926       BEGIN
1927 
1928         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1929           l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.Before_check_update_aeps_acs';
1930           l_debug_str := 'Beofore IGS_AD_SS_APPL_FEE_PKG.check_update_aeps_acs';
1931           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1932         END IF;
1933 
1934         IGS_AD_SS_APPL_FEE_PKG.check_update_aeps_acs(p_person_id,
1935                                                      p_admission_appl_number,
1936                                                      c_course_rec.nominated_course_cd,
1937                                                      c_course_rec.sequence_number,
1938                                                      l_return_status,
1939                                                      l_msg_count,
1940                                                      l_msg_data);
1941 
1942         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1943           l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_check_update_aeps_acs_ret_Status';
1944           l_debug_str := 'After check_update_aeps_acs l_return_status: ' || l_return_status;
1945           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1946 
1947           l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_check_update_aeps_acs_msg_Data';
1948           l_debug_str := 'After check_update_aeps_acs l_msg_data: ' || l_msg_data;
1949           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1950         END IF;
1951 
1952         IF l_return_status = 'E' THEN          ----check_update_aeps_acs return status
1953            IF p_role <>  'ADMIN' THEN
1954               l_msg_data :=  'IGS_AD_APPL_PRC_FAILED';
1955            END IF;
1956            FND_MESSAGE.SET_NAME('IGS', l_msg_data);
1957            IGS_GE_MSG_STACK.ADD;
1958 	   x_return_status := 'E';
1959            x_message_data  := l_msg_data;
1960            RETURN;
1961 
1962         ELSIF l_return_status = 'S' THEN
1963 
1964           Update_Appl_Eqdo_Inst(p_person_id,
1965                                 p_admission_appl_number,
1966                                 c_course_rec.nominated_course_cd,
1967                                 c_course_rec.sequence_number,
1968                                 l_return_status,
1969                                 l_message_data);
1970 
1971 
1972            IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1973               l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.after_Update_Appl_Eqdo_Inst_ret_Stat';
1974               l_debug_str := 'After Update_Appl_Eqdo_Inst l_return_status: ' || l_return_status;
1975               fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1976 
1977               l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_Update_Appl_Eqdo_Inst_msg_Data';
1978               l_debug_str := 'After Update_Appl_Eqdo_Inst l_message_data: ' || l_message_data;
1979               fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
1980 
1981            END IF;
1982 
1983            IF l_return_status = 'E' THEN              --- Update_Appl_Eqdo_Inst return status
1984               IF p_role <>  'ADMIN' THEN
1985 	         IGS_GE_MSG_STACK.INITIALIZE; -- Remove all other messages from stack
1986                  l_msg_data :=  'IGS_AD_APPL_PRC_FAILED';
1987                  FND_MESSAGE.SET_NAME('IGS', l_msg_data);
1988                  IGS_GE_MSG_STACK.ADD;
1989               END IF;
1990               x_return_status := 'E';
1991               x_message_data  := l_msg_data;
1992               RETURN;
1993 
1994            ELSIF l_return_status = 'S' THEN
1995             -- check if an offer can be made for the application
1996             -- If Yes, then update the offer status to 'OFFER'
1997 
1998              IGS_AD_SS_APPL_FEE_PKG.check_offer_update(p_person_id,
1999                                                     p_admission_appl_number,
2000                                                     c_course_rec.nominated_course_cd,
2001                                                     c_course_rec.sequence_number,
2002                                                     l_return_status,
2003                                                     l_msg_count,
2004                                                     l_msg_data);
2005 
2006              IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2007                l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_check_offer_update_return_Stat';
2008                l_debug_str := 'After check_offer_update l_return_status: ' || l_return_status;
2009                fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2010 
2011                l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_check_offer_update_Data_msg_Data';
2012                l_debug_str := 'After check_offer_update l_msg_data: ' || l_msg_data;
2013                fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2014               END IF;
2015 
2016             IF l_return_status = 'E' THEN     -- check_offer_update return status
2017               IF p_role <>  'ADMIN' THEN
2018 	        IGS_GE_MSG_STACK.INITIALIZE; -- Remove all other messages from stack
2019                 l_msg_data :=  'IGS_AD_APPL_PRC_FAILED';
2020               END IF;
2021               FND_MESSAGE.SET_NAME('IGS', l_msg_data);
2022               IGS_GE_MSG_STACK.ADD;
2023 	      x_return_status := 'E';
2024               x_message_data  := l_msg_data;
2025               RETURN;
2026 
2027             ELSIF l_return_status = 'S' THEN
2028                Update_Appl_Ofr_Inst(p_person_id,
2029                                  p_admission_appl_number,
2030                                  c_course_rec.nominated_course_cd,
2031                                  c_course_rec.sequence_number,
2032                                  l_return_status,
2033                                  l_message_data);
2034 
2035                  IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2036                     l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_Update_Appl_Ofr_Inst_ret_Stat';
2037                     l_debug_str := 'After Update_Appl_Ofr_Inst l_return_status: ' || l_return_status;
2038                     fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2039 
2040                     l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.After_Update_Appl_Ofr_Inst_msg_Data';
2041                     l_debug_str := 'After Update_Appl_Ofr_Inst l_message_data: ' || l_message_data;
2042                     fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2043                  END IF;
2044 
2045 	         IF l_return_status = 'E' THEN     -- Update_Appl_Ofr_Inst return status
2046                    IF p_role <>  'ADMIN' THEN
2047                       IGS_GE_MSG_STACK.INITIALIZE; -- Remove all other messages from stack
2048                       l_message_data :=  'IGS_AD_APPL_PRC_FAILED';
2049                       FND_MESSAGE.SET_NAME('IGS', l_message_data);
2050                       IGS_GE_MSG_STACK.ADD;
2051                    END IF;
2052                    x_return_status := 'E';
2053                    x_message_data  := l_message_data;
2054                    RETURN;
2055                  END IF;       -- Update_Appl_Ofr_Inst return status
2056 
2057           END IF;  -- check_offer_update return status
2058          END IF;  --- Update_Appl_Eqdo_Inst return status
2059        END IF;  ----check_update_aeps_acs return status
2060 
2061       EXCEPTION
2062         WHEN OTHERS THEN
2063           IF FND_MSG_PUB.Count_Msg < 1 AND l_message_data IS NOT NULL THEN
2064             FND_MESSAGE.SET_NAME('IGS', l_message_data);
2065             IGS_GE_MSG_STACK.ADD;
2066           END IF;
2067           x_return_status := 'E';
2068           x_message_data  := l_message_data;
2069       END;
2070     END LOOP;
2071 
2072     IF c_course%ISOPEN THEN
2073       CLOSE c_course;
2074     END IF;
2075 
2076     x_return_status := 'S';
2077     x_message_data := NULL;
2078 
2079   EXCEPTION
2080     WHEN OTHERS THEN
2081       logDetail('Exception from Process_OneStop, ' || SQLERRM, 'S');
2082       x_return_status := 'E';
2083       IF p_role <>  'ADMIN' THEN
2084 	 IGS_GE_MSG_STACK.INITIALIZE; -- Remove all other messages from stack
2085          FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APPL_PRC_FAILED');
2086          IGS_GE_MSG_STACK.ADD;
2087          x_message_data := 'IGS_AD_APPL_PRC_FAILED';
2088       ELSE
2089           IF FND_MSG_PUB.Count_Msg < 1 THEN
2090             Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2091             Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Process_OneStop -'||SQLERRM);
2092             IGS_GE_MSG_STACK.ADD;
2093 	    App_Exception.Raise_Exception;
2094           END IF;
2095          x_message_data := 'IGS_GE_UNHANDLED_EXP';
2096       END IF;
2097   END Process_OneStop;
2098 
2099   -- This procedure will update the Application fee details,
2100   -- Will check if it is a one-stop application, if yes,then
2101   -- check if the offer response can be made 'ACCEPTED' for the offer
2102   -- if Yes, then update the offer resp status to 'ACCEPTED'
2103   -- This procedure will be called from Student Finance page
2104 
2105   PROCEDURE update_ad_offer_resp_and_fee(p_person_id                   IN NUMBER,
2106                                          p_admission_appl_number       IN NUMBER,
2107                                          p_one_stop_ind                IN VARCHAR2,
2108                                          p_app_fee_amt                 IN NUMBER,
2109                                          p_authorization_number        IN VARCHAR2,
2110                                          x_return_status               OUT NOCOPY VARCHAR2,
2111                                          x_msg_count                   OUT NOCOPY NUMBER,
2112                                          x_msg_data                    OUT NOCOPY VARCHAR2,
2113                                          p_credit_card_code            IN VARCHAR2,
2114                                          p_credit_card_holder_name     IN VARCHAR2,
2115                                          p_credit_card_number          IN VARCHAR2,
2116                                          p_credit_card_expiration_date IN DATE,
2117                                          p_gl_date                     IN DATE,
2118                                          p_rev_gl_ccid                 IN NUMBER,
2119                                          p_cash_gl_ccid                IN NUMBER,
2120                                          p_rev_account_cd              IN VARCHAR2,
2121                                          p_cash_account_cd             IN VARCHAR2,
2122                                          p_credit_card_tangible_cd     IN VARCHAR2) AS
2123     /******************************************************************
2124     Created By:
2125     Date Created By:
2126     Purpose:
2127     Known limitations,enhancements,remarks:
2128     Change History
2129     Who        When          What
2130     pathipat   17-Jun-2003   Enh 2831587 Credit Card Fund Transfer build
2131                              Added new parameter p_credit_card_tangible_cd
2132     smadathi   26-Nov-2002   Enh#2584986. Passed system date to parameter gl_date in the call to igs_ad_ss_appl_fee_pkg.upd_fee_details
2133     vvutukur   26-Nov-2002   Enh#2584986.Added 9 new parameters to this procedure(attributing to credit card details,                              Accounting information and the GL_DATE) as part of GL Interface Build.Passed sysdate
2134                              if gl_date parameter is null in the call to igs_ad_ss_appl_fee_pkg.upd_fee_details.
2135     schodava   24-Jul-2002   Bug # 2467918
2136            Application fee cannot be submitted
2137     knag       28-Oct-2002   Called func igs_ad_gen_003.get_core_or_optional_unit for bug 2647482
2138     ******************************************************************/
2139 
2140     CURSOR c_course IS
2141       Select NOMINATED_COURSE_CD, SEQUENCE_NUMBER
2142         From IGS_AD_PS_APPL_INST_ALL
2143        Where PERSON_ID = p_person_id
2144          And ADMISSION_APPL_NUMBER = p_admission_appl_number;
2145 
2146     --tray Bug 2405076
2147     CURSOR get_appl_dtl(cp_person_id igs_ad_appl.person_id%TYPE, cp_adm_appl_number igs_ad_appl.admission_appl_number%TYPE) IS
2148       SELECT acad_cal_type,
2149              acad_ci_sequence_number,
2150              admission_cat,
2151              s_admission_process_type
2152         FROM IGS_AD_APPL
2153        WHERE person_id = cp_person_id
2154          AND admission_appl_number = cp_adm_appl_number;
2155     get_appl_dtl_rec get_appl_dtl%ROWTYPE;
2156 
2157     --tray Bug 2405076
2158     CURSOR get_enr_cat(cp_adm_cat igs_en_cat_mapping.admission_cat%TYPE) IS
2159       SELECT enrolment_cat
2160         FROM igs_en_cat_mapping
2161        WHERE admission_cat = cp_adm_cat
2162          AND dflt_cat_ind = 'Y';
2163     get_enr_cat_rec get_enr_cat%ROWTYPE;
2164 
2165     l_one_stop      VARCHAR2(1);
2166     c_course_rec    c_course%ROWTYPE;
2167     l_return_status VARCHAR2(1);
2168     --l_adm_cat IGS_AD_APPL_ALL.ADMISSION_CAT%TYPE; changed to cursor now Bug 2405076
2169     --l_adm_proc_type IGS_AD_APPL_ALL. S_ADMISSION_PROCESS_TYPE%TYPE; changed to cursor now Bug 2405076
2170     l_msg_count    NUMBER;
2171     l_msg_data     VARCHAR2(1000);
2172     l_message_data VARCHAR2(1000);
2173     v_warn_level   VARCHAR2(10);
2174     v_message_name VARCHAR2(30);
2175 
2176   BEGIN
2177     l_return_status := 'E';
2178     x_return_status := 'E';
2179 
2180     igs_ad_ss_appl_fee_pkg.upd_fee_details(p_person_id                   => p_person_id,
2181                                            p_admission_appl_number       => p_admission_appl_number,
2182                                            p_app_fee_amt                 => p_app_fee_amt,
2183                                            p_authorization_number        => p_authorization_number,
2184                                            p_sys_fee_status              => 'PAID',
2185                                            p_sys_fee_type                => 'APPL_FEE',
2186                                            p_sys_fee_method              => 'CREDIT_CARD',
2187                                            x_return_status               => l_return_status,
2188                                            x_msg_count                   => l_msg_count,
2189                                            x_msg_data                    => l_msg_data,
2190                                            p_credit_card_code            => p_credit_card_code,
2191                                            p_credit_card_holder_name     => p_credit_card_holder_name,
2192                                            p_credit_card_number          => p_credit_card_number,
2193                                            p_credit_card_expiration_date => p_credit_card_expiration_date,
2194                                            p_gl_date                     => NVL(p_gl_date,
2195                                                                                 TRUNC(SYSDATE)),
2196                                            p_rev_gl_ccid                 => p_rev_gl_ccid,
2197                                            p_cash_gl_ccid                => p_cash_gl_ccid,
2198                                            p_rev_account_cd              => p_rev_account_cd,
2199                                            p_cash_account_cd             => p_cash_account_cd,
2200                                            p_credit_card_tangible_cd     => p_credit_card_tangible_cd);
2201     -- For an application type other than 'One stop',
2202     -- this procedure returned a status of 'E', even if the above call to
2203     -- igs_ad_ss_appl_fee_pkg.upd_fee_details returned a success.
2204     -- This is corrected by equating the return status and message returned by the above
2205     -- call to the out NOCOPY variables x_return_status and x_msg_data
2206 
2207     x_return_status := l_return_status;
2208     x_msg_count     := l_msg_count;
2209     x_msg_data      := l_msg_data;
2210 
2211     --tray Bug 2405076
2212     OPEN get_appl_dtl(p_person_id, p_admission_appl_number);
2213     FETCH get_appl_dtl
2214       INTO get_appl_dtl_rec;
2215     CLOSE get_appl_dtl;
2216 
2217     IF (p_one_stop_ind IS NULL) THEN
2218 
2219       --tray: Select without cursor is not allowed, so changing this to cursor Bug 2405076
2220       /*
2221                       Select ADMISSION_CAT, S_ADMISSION_PROCESS_TYPE
2222                       Into l_adm_cat, l_adm_proc_type
2223                       From IGS_AD_APPL_ALL
2224                       Where person_id = p_person_id
2225                       And admission_appl_number = p_admission_appl_number;
2226       */
2227       Check_OneStop(p_person_id              => p_person_id,
2228                     p_admission_cat          => get_appl_dtl_rec.admission_cat,
2229                     p_admission_process_type => get_appl_dtl_rec.s_admission_process_type,
2230                     x_return_status          => l_one_stop,
2231                     x_message_data           => l_msg_data);
2232 
2233     END IF;
2234 
2235     IF (p_one_stop_ind IS NOT NULL AND p_one_stop_ind ='S') OR (l_one_stop = 'S') THEN
2236 
2237       OPEN c_course;
2238       LOOP
2239         FETCH c_course
2240           INTO c_course_rec;
2241         EXIT WHEN c_course%NOTFOUND;
2242         BEGIN
2243           IGS_AD_SS_APPL_FEE_PKG.check_offer_resp_update(p_person_id,
2244                                                          p_admission_appl_number,
2245                                                          c_course_rec.nominated_course_cd,
2246                                                          c_course_rec.sequence_number,
2247                                                          l_return_status,
2248                                                          l_msg_count,
2249                                                          l_msg_data);
2250           IF l_return_status = 'S' THEN
2251             --tray       pre enr process called Bug 2405076
2252             OPEN get_enr_cat(get_appl_dtl_rec.admission_cat);
2253             FETCH get_enr_cat
2254               INTO get_enr_cat_rec;
2255             CLOSE get_enr_cat;
2256 
2257             IF igs_ad_upd_initialise.perform_pre_enrol(p_person_id,
2258                                                        p_admission_appl_number,
2259                                                        c_course_rec.nominated_course_cd,
2260                                                        c_course_rec.sequence_number,
2261                                                        'Y', -- Confirm course indicator.
2262                                                        'Y', -- Perform eligibility check indicator.
2263                                                        v_message_name) =
2264                FALSE THEN
2265               x_return_status := 'E';
2266               x_msg_data      := 'IGS_AD_AUTO_ENR_FAILED'; --Supressing the error message from the Pre Enr process as per communication on bug2405076
2267             ELSE
2268               Update_Appl_Ofres_Inst(p_person_id,
2269                                      p_admission_appl_number,
2270                                      c_course_rec.nominated_course_cd,
2271                                      c_course_rec.sequence_number,
2272                                      l_return_status,
2273                                      l_message_data);
2274               x_return_status := 'S';
2275             END IF;
2276           END IF;
2277         EXCEPTION
2278           when others then
2279             x_return_status := 'E';
2280             x_msg_data      := l_message_data;
2281         END;
2282       END LOOP;
2283       CLOSE c_course;
2284     END IF;
2285 
2286     IF x_return_status <> 'E' THEN
2287       x_return_status := 'S';
2288     END IF;
2289 
2290 
2291   EXCEPTION
2292     WHEN OTHERS THEN
2293       x_return_status := 'E';
2294       x_msg_data      := 'IGS_GE_UNHANDLED_EXP';
2295       IF FND_MSG_PUB.Count_Msg < 1 THEN
2296 	Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2297 	Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.update_ad_offer_resp_and_fee -'||SQLERRM);
2298 	IGS_GE_MSG_STACK.ADD;
2299       END IF;
2300   END update_ad_offer_resp_and_fee;
2301 
2302   -- This procedure will only be called if it is a one-stop application
2303 
2304   PROCEDURE Process_OneStop2(p_admission_appl_number  IN NUMBER,
2305                              p_person_id              IN NUMBER,
2306                              p_admission_cat          IN VARCHAR2,
2307                              p_admission_process_type IN VARCHAR2,
2308 			     p_role                   IN VARCHAR2,
2309                              x_return_status          OUT NOCOPY VARCHAR2,
2310                              x_msg_data               OUT NOCOPY VARCHAR2) AS
2311     /******************************************************************
2312     Created By:
2313     Date Created By:
2314     Purpose:
2315     Known limitations,enhancements,remarks:
2316     Change History
2317     Who        When          What
2318     knag       28-Oct-2002   Called func igs_ad_gen_003.get_core_or_optional_unit for bug 2647482
2319     ******************************************************************/
2320 
2321     Cursor c_course IS
2322       Select NOMINATED_COURSE_CD, SEQUENCE_NUMBER
2323         From IGS_AD_PS_APPL_INST_ALL
2324        Where PERSON_ID = p_person_id
2325          And ADMISSION_APPL_NUMBER = p_admission_appl_number;
2326 
2327     --tray Bug 2405076
2328     CURSOR get_appl_dtl(cp_person_id igs_ad_appl.person_id%TYPE, cp_adm_appl_number igs_ad_appl.admission_appl_number%TYPE) IS
2329       SELECT acad_cal_type,
2330              acad_ci_sequence_number,
2331              admission_cat,
2332              s_admission_process_type
2333         FROM IGS_AD_APPL
2334        WHERE person_id = cp_person_id
2335          AND admission_appl_number = cp_adm_appl_number;
2336     get_appl_dtl_rec get_appl_dtl%ROWTYPE;
2337 
2338     --tray Bug 2405076
2339     CURSOR get_enr_cat(cp_adm_cat igs_en_cat_mapping.admission_cat%TYPE) IS
2340       SELECT enrolment_cat
2341         FROM igs_en_cat_mapping
2342        WHERE admission_cat = cp_adm_cat
2343          AND dflt_cat_ind = 'Y';
2344     get_enr_cat_rec get_enr_cat%ROWTYPE;
2345 
2346     l_one_stop                    VARCHAR2(1);
2347     c_course_rec                  c_course%ROWTYPE;
2348     l_return_status               VARCHAR2(1);
2349     l_msg_count                   NUMBER;
2350     l_msg_data                    VARCHAR2(1000);
2351     l_message_data                VARCHAR2(1000);
2352     v_warn_level                  VARCHAR2(10);
2353     v_message_name                VARCHAR2(30);
2354     l_msg_index                   NUMBER;
2355     p_hash_msg_name_text_type_tab igs_ad_gen_016.g_msg_name_text_type_table;
2356 
2357     l_prog_label  VARCHAR2(100);
2358     l_label  VARCHAR2(500);
2359     l_debug_str VARCHAR2(4000);
2360 
2361   BEGIN
2362 
2363     l_prog_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop';
2364     l_label      := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop.start';
2365 
2366 
2367         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2368           l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.start';
2369           l_debug_str := 'In Process_OneStop2 Start';
2370           fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2371         END IF;
2372 
2373     -- Check whether the Admission offer resp status be updated
2374     -- to 'ACCEPTED', If Yes, then update them to the respective values
2375     x_return_status := 'E';
2376     x_msg_data := NULL;
2377     OPEN c_course;
2378     LOOP
2379       FETCH c_course
2380         INTO c_course_rec;
2381       EXIT WHEN c_course%NOTFOUND;
2382       BEGIN
2383         IF (FND_LOG.LEVEL_STATEMENT>= g_debug_level ) THEN
2384           FND_LOG.STRING(fnd_log.level_Statement, 'igs.patch.115.sql.igs_ad_ss_gen_001.Process_OneStop2 :', 'Before IGS_AD_SS_APPL_FEE_PKG.check_offer_resp_update');
2385         END IF;
2386         IGS_AD_SS_APPL_FEE_PKG.check_offer_resp_update(p_person_id,
2387                                                        p_admission_appl_number,
2388                                                        c_course_rec.nominated_course_cd,
2389                                                        c_course_rec.sequence_number,
2390                                                        l_return_status,
2391                                                        l_msg_count,
2392                                                        l_msg_data);
2393 
2394 
2395           IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2396              l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.after_check_offer_resp_update_ret_Stat';
2397              l_debug_str := 'After IGS_AD_SS_APPL_FEE_PKG.check_offer_resp_update: l_return_status' || l_return_status;
2398              fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2399 
2400              l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.after_check_offer_resp_update_msg_data';
2401              l_debug_str := 'After IGS_AD_SS_APPL_FEE_PKG.check_offer_resp_update: l_msg_data' || l_msg_data;
2402              fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2403 
2404           END IF;
2405 
2406          IF l_return_status = 'E' THEN          ----check_offer_resp_update return status
2407              IF p_role <>  'ADMIN' THEN
2408                 l_msg_data :=  'IGS_AD_APPL_PRC_FAILED';
2409              END IF;
2410              FND_MESSAGE.SET_NAME('IGS', l_msg_data);
2411              IGS_GE_MSG_STACK.ADD;
2412 	     x_return_status := 'E';
2413              x_msg_data  := l_msg_data;
2414              RETURN;
2415 
2416          ELSIF l_return_status = 'S' Then
2417           --tray       pre enr process called Bug 2405076
2418             OPEN get_appl_dtl(p_person_id, p_admission_appl_number);
2419             FETCH get_appl_dtl
2420               INTO get_appl_dtl_rec;
2421              CLOSE get_appl_dtl;
2422 
2423             OPEN get_enr_cat(get_appl_dtl_rec.admission_cat);
2424             FETCH get_enr_cat
2425               INTO get_enr_cat_rec;
2426             CLOSE get_enr_cat;
2427 
2428 
2429             IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2430                l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.beofore_perform_pre_enrol';
2431                l_debug_str := 'Before igs_ad_upd_initialise.perform_pre_enrol';
2432                fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2433             END IF;
2434 
2435 
2436            IF igs_ad_upd_initialise.perform_pre_enrol(p_person_id,
2437                                                      p_admission_appl_number,
2438                                                      c_course_rec.nominated_course_cd,
2439                                                      c_course_rec.sequence_number,
2440                                                      'Y', -- Confirm course indicator.
2441                                                      'Y', -- Perform eligibility check indicator.
2442                                                      v_message_name) =
2443              FALSE THEN
2444 
2445                IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2446                  l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.after_a_perform_pre_enrol_failed';
2447                  l_debug_str := 'After igs_ad_upd_initialise.perform_pre_enrol Failed v_message_name ' || v_message_name;
2448                  fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2449                 END IF;
2450 
2451 	       FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_AUTO_ENR_FAILED');
2452                IGS_GE_MSG_STACK.ADD;
2453                x_return_status := 'E';
2454                x_msg_data      := 'IGS_AD_AUTO_ENR_FAILED'; --Supressing the error message from the Pre Enr process as per communication on bug2405076
2455 	       RETURN;
2456            ELSE
2457 
2458               IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2459                  l_label := 'igs.plsql.igs_ad_ss_gen_001.Process_OneStop2.after_a_perform_pre_enrol_success';
2460                  l_debug_str := 'igs_ad_upd_initialise.perform_pre_enrol Succesful';
2461                  fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
2462                END IF;
2463 
2464 
2465             /*Commenting as part of Bug 4234911
2466             Update_Appl_Ofres_Inst( p_person_id,
2467                             p_admission_appl_number,
2468                             c_course_rec.nominated_course_cd,
2469                             c_course_rec.sequence_number,
2470                             l_return_status,
2471                             l_message_data );*/
2472             x_return_status := 'S';
2473           END IF;  -- igs_ad_upd_initialise.perform_pre_enrol
2474 
2475         END IF;  --- check_offer_resp_update return status
2476       END;
2477     END LOOP;
2478 
2479     IF c_course%ISOPEN THEN
2480        CLOSE c_course; --tray bug2405076 , earlier cursor was getting inside the LOOP :-(
2481     END IF;
2482 
2483     x_return_status := 'S';
2484 
2485   EXCEPTION
2486     WHEN OTHERS THEN
2487       logDetail('Exception from Process_OneStop2, ' || SQLERRM, 'S');
2488       x_return_status := 'E';
2489       IF p_role <>  'ADMIN' THEN
2490 	 IGS_GE_MSG_STACK.INITIALIZE; -- Remove all other messages from stack
2491          FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APPL_PRC_FAILED');
2492          IGS_GE_MSG_STACK.ADD;
2493          x_msg_data := 'IGS_AD_APPL_PRC_FAILED';
2494       ELSE
2495          IF FND_MSG_PUB.Count_Msg < 1 THEN
2496            Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2497            Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Process_OneStop2 -'||SQLERRM);
2498            IGS_GE_MSG_STACK.ADD;
2499 	   App_Exception.Raise_Exception;
2500          END IF;
2501          x_msg_data := 'IGS_GE_UNHANDLED_EXP';
2502       END IF;
2503 
2504   END Process_OneStop2;
2505 
2506   PROCEDURE Update_Appl_Eqdo_Inst(p_person_id             IN NUMBER,
2507                                   p_admission_appl_number IN NUMBER,
2508                                   p_nominated_course_cd   IN VARCHAR2,
2509                                   p_sequence_number       IN NUMBER,
2510                                   x_return_status         OUT NOCOPY VARCHAR2,
2511                                   x_message_data          OUT NOCOPY VARCHAR2) IS
2512 
2513     CURSOR c_upd_acai_eqdo(cp_person_id IGS_AD_PS_APPL_INST.person_id%TYPE,
2514              cp_admission_appl_number IGS_AD_PS_APPL_INST.admission_appl_number%TYPE,
2515              cp_nominated_course_cd IGS_AD_PS_APPL_INST.nominated_course_cd%TYPE,
2516              cp_sequence_number IGS_AD_PS_APPL_INST.sequence_number%TYPE) IS
2517       SELECT ROWID, acai.*
2518         FROM IGS_AD_PS_APPL_INST acai
2519        WHERE acai.person_id = cp_person_id
2520          AND acai.admission_appl_number = cp_admission_appl_number
2521          AND acai.nominated_course_cd = cp_nominated_course_cd
2522          AND acai.sequence_number = cp_sequence_number
2523          FOR UPDATE OF acai.adm_doc_status, acai.adm_entry_qual_status NOWAIT;
2524 
2525     CURSOR c_admission_process_type(cp_person_id igs_ad_appl_all.person_id%TYPE,
2526               cp_admission_appl_number igs_ad_appl_all.admission_appl_number%TYPE) IS
2527       SELECT s_admission_process_type
2528         FROM igs_ad_appl_all
2529        WHERE person_id = cp_person_id
2530          AND admission_appl_number = cp_admission_appl_number;
2531 
2532     Rec_IGS_AD_PS_APPL_Inst c_upd_acai_eqdo%ROWTYPE;
2533 
2534     l_offer_adm_outcome_status IGS_AD_PS_APPL_INST_ALL.adm_outcome_status%TYPE;
2535     l_application_status       IGS_AD_PS_APPL_INST_ALL.adm_doc_status%TYPE;
2536 
2537     l_offer_resp_status      IGS_AD_PS_APPL_INST_ALL.adm_offer_resp_status%TYPE;
2538     l_entry_qual_status      IGS_AD_PS_APPL_INST_ALL.adm_entry_qual_status%TYPE;
2539     l_admission_process_type IGS_AD_APPL_ALL.s_admission_process_type%TYPE;
2540     lv_mode VARCHAR2(1) DEFAULT 'R';
2541 
2542     l_sc_encoded_text   VARCHAR2(4000);
2543     l_sc_msg_count NUMBER;
2544     l_sc_msg_index NUMBER;
2545     l_sc_app_short_name VARCHAR2(50);
2546     l_sc_message_name   VARCHAR2(50);
2547 
2548   BEGIN
2549 
2550     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
2551     THEN
2552       lv_mode := 'S';
2553     END IF;
2554 
2555 
2556     -- hreddych 3419856 For a NON-AWARD Appl Type the Entry Qual Status and Appl Comp Status
2557     -- should be NOT-APPLIC
2558     OPEN c_admission_process_type(p_person_id, p_admission_appl_number);
2559     FETCH c_admission_process_type
2560       INTO l_admission_process_type;
2561     CLOSE c_admission_process_type;
2562     IF l_admission_process_type = 'NON-AWARD' THEN
2563       l_application_status := igs_ad_gen_009.admp_get_sys_ads('NOT-APPLIC');
2564       l_entry_qual_status  := igs_ad_gen_009.admp_get_sys_aeqs('NOT-APPLIC');
2565     ELSE
2566       l_application_status := igs_ad_gen_009.admp_get_sys_ads('SATISFIED');
2567       l_entry_qual_status  := igs_ad_gen_009.admp_get_sys_aeqs('QUALIFIED');
2568     END IF;
2569 
2570     OPEN c_upd_acai_eqdo(p_person_id,
2571                          p_admission_appl_number,
2572                          p_nominated_course_cd,
2573                          p_sequence_number);
2574 
2575     FETCH c_upd_acai_eqdo
2576       INTO Rec_IGS_AD_PS_APPL_Inst;
2577 
2578     --Commented for Bug Fix 2395667 Moved the code after TBH call :tray
2579     --         CLOSE c_upd_acai_eqdo;
2580 
2581     IF (c_upd_acai_eqdo%FOUND) THEN
2582 
2583       IGS_AD_PS_APPL_Inst_Pkg.UPDATE_ROW(X_ROWID                        => Rec_IGS_AD_PS_APPL_Inst.ROWID,
2584                                          X_PERSON_ID                    => Rec_IGS_AD_PS_APPL_Inst.PERSON_ID,
2585                                          X_ADMISSION_APPL_NUMBER        => Rec_IGS_AD_PS_APPL_Inst.ADMISSION_APPL_NUMBER,
2586                                          X_NOMINATED_COURSE_CD          => Rec_IGS_AD_PS_APPL_Inst.NOMINATED_COURSE_CD,
2587                                          X_SEQUENCE_NUMBER              => Rec_IGS_AD_PS_APPL_Inst.SEQUENCE_NUMBER,
2588                                          X_PREDICTED_GPA                => Rec_IGS_AD_PS_APPL_Inst.PREDICTED_GPA,
2589                                          X_ACADEMIC_INDEX               => Rec_IGS_AD_PS_APPL_Inst.ACADEMIC_INDEX,
2590                                          X_Adm_Cal_Type                 => Rec_IGS_AD_PS_APPL_Inst.ADM_CAL_TYPE,
2591                                          X_APP_FILE_LOCATION            => Rec_IGS_AD_PS_APPL_Inst.APP_FILE_LOCATION,
2592                                          X_Adm_Ci_Sequence_Number       => Rec_IGS_AD_PS_APPL_Inst.ADM_CI_SEQUENCE_NUMBER,
2593                                          X_COURSE_CD                    => Rec_IGS_AD_PS_APPL_Inst.COURSE_CD,
2594                                          X_APP_SOURCE_ID                => Rec_IGS_AD_PS_APPL_Inst.APP_SOURCE_ID,
2595                                          X_CRV_VERSION_NUMBER           => Rec_IGS_AD_PS_APPL_Inst.CRV_VERSION_NUMBER,
2596                                          X_Waitlist_Rank                => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Rank,
2597                                          X_Waitlist_Status              => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Status,
2598                                          X_LOCATION_CD                  => Rec_IGS_AD_PS_APPL_Inst.LOCATION_CD,
2599                                          X_Attent_Other_Inst_Cd         => Rec_IGS_AD_PS_APPL_Inst.Attent_Other_Inst_Cd,
2600                                          X_ATTENDANCE_MODE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_MODE,
2601                                          X_Edu_Goal_Prior_Enroll_Id     => Rec_IGS_AD_PS_APPL_Inst.Edu_Goal_Prior_Enroll_Id,
2602                                          X_ATTENDANCE_TYPE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_TYPE,
2603                                          X_Decision_Make_Id             => Rec_IGS_AD_PS_APPL_Inst.Decision_Make_Id,
2604                                          X_UNIT_SET_CD                  => Rec_IGS_AD_PS_APPL_Inst.UNIT_SET_CD,
2605                                          X_Decision_Date                => Rec_IGS_AD_PS_APPL_Inst.Decision_Date,
2606                                          X_Attribute_Category           => Rec_IGS_AD_PS_APPL_Inst.Attribute_Category,
2607                                          X_Attribute1                   => Rec_IGS_AD_PS_APPL_Inst.Attribute1,
2608                                          X_Attribute2                   => Rec_IGS_AD_PS_APPL_Inst.Attribute2,
2609                                          X_Attribute3                   => Rec_IGS_AD_PS_APPL_Inst.Attribute3,
2610                                          X_Attribute4                   => Rec_IGS_AD_PS_APPL_Inst.Attribute4,
2611                                          X_Attribute5                   => Rec_IGS_AD_PS_APPL_Inst.Attribute5,
2612                                          X_Attribute6                   => Rec_IGS_AD_PS_APPL_Inst.Attribute6,
2613                                          X_Attribute7                   => Rec_IGS_AD_PS_APPL_Inst.Attribute7,
2614                                          X_Attribute8                   => Rec_IGS_AD_PS_APPL_Inst.Attribute8,
2615                                          X_Attribute9                   => Rec_IGS_AD_PS_APPL_Inst.Attribute9,
2616                                          X_Attribute10                  => Rec_IGS_AD_PS_APPL_Inst.Attribute10,
2617                                          X_Attribute11                  => Rec_IGS_AD_PS_APPL_Inst.Attribute11,
2618                                          X_Attribute12                  => Rec_IGS_AD_PS_APPL_Inst.Attribute12,
2619                                          X_Attribute13                  => Rec_IGS_AD_PS_APPL_Inst.Attribute13,
2620                                          X_Attribute14                  => Rec_IGS_AD_PS_APPL_Inst.Attribute14,
2621                                          X_Attribute15                  => Rec_IGS_AD_PS_APPL_Inst.Attribute15,
2622                                          X_Attribute16                  => Rec_IGS_AD_PS_APPL_Inst.Attribute16,
2623                                          X_Attribute17                  => Rec_IGS_AD_PS_APPL_Inst.Attribute17,
2624                                          X_Attribute18                  => Rec_IGS_AD_PS_APPL_Inst.Attribute18,
2625                                          X_Attribute19                  => Rec_IGS_AD_PS_APPL_Inst.Attribute19,
2626                                          X_Attribute20                  => Rec_IGS_AD_PS_APPL_Inst.Attribute20,
2627                                          X_Decision_Reason_Id           => Rec_IGS_AD_PS_APPL_Inst.Decision_Reason_Id,
2628                                          X_US_VERSION_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.US_VERSION_NUMBER,
2629                                          X_Decision_Notes               => Rec_IGS_AD_PS_APPL_Inst.Decision_Notes,
2630                                          X_Pending_Reason_Id            => Rec_IGS_AD_PS_APPL_Inst.Pending_Reason_Id,
2631                                          X_PREFERENCE_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.PREFERENCE_NUMBER,
2632                                          X_ADM_DOC_STATUS               => l_application_status,
2633                                          X_ADM_ENTRY_QUAL_STATUS        => l_entry_qual_status,
2634                                          X_DEFICIENCY_IN_PREP           => Rec_IGS_AD_PS_APPL_Inst.DEFICIENCY_IN_PREP,
2635                                          X_LATE_ADM_FEE_STATUS          => Rec_IGS_AD_PS_APPL_Inst.LATE_ADM_FEE_STATUS,
2636                                          X_Spl_Consider_Comments        => Rec_IGS_AD_PS_APPL_Inst.Spl_Consider_Comments,
2637                                          X_Apply_For_Finaid             => Rec_IGS_AD_PS_APPL_Inst.Apply_For_Finaid,
2638                                          X_Finaid_Apply_Date            => Rec_IGS_AD_PS_APPL_Inst.Finaid_Apply_Date,
2639                                          X_ADM_OUTCOME_STATUS           => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS,
2640                                          X_ADM_OTCM_STAT_AUTH_PER_ID    => Rec_IGS_AD_PS_APPL_Inst.ADM_OTCM_STATUS_AUTH_PERSON_ID,
2641                                          X_ADM_OUTCOME_STATUS_AUTH_DT   => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_AUTH_DT,
2642                                          X_ADM_OUTCOME_STATUS_REASON    => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_REASON,
2643                                          X_OFFER_DT                     => Rec_IGS_AD_PS_APPL_Inst.OFFER_DT,
2644                                          X_Offer_Response_Dt            => Rec_IGS_AD_PS_APPL_Inst.OFFER_RESPONSE_DT,
2645                                          X_PRPSD_COMMENCEMENT_DT        => Rec_IGS_AD_PS_APPL_Inst.Prpsd_Commencement_Dt,
2646                                          X_ADM_CNDTNL_OFFER_STATUS      => Rec_IGS_AD_PS_APPL_Inst.ADM_CNDTNL_OFFER_STATUS,
2647                                          X_CNDTNL_OFFER_SATISFIED_DT    => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_SATISFIED_DT,
2648                                          X_CNDNL_OFR_MUST_BE_STSFD_IND  => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_MUST_BE_STSFD_IND,
2649                                          X_Adm_Offer_Resp_Status        => Rec_IGS_AD_PS_APPL_Inst.ADM_OFFER_RESP_STATUS,
2650                                          X_Actual_Response_Dt           => Rec_IGS_AD_PS_APPL_Inst.ACTUAL_RESPONSE_DT,
2651                                          X_Adm_Offer_Dfrmnt_Status      => Rec_IGS_AD_PS_APPL_Inst.ADM_OFFER_DFRMNT_STATUS,
2652                                          X_Deferred_Adm_Cal_Type        => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CAL_TYPE,
2653                                          X_Deferred_Adm_Ci_Sequence_Num => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CI_SEQUENCE_NUM,
2654                                          X_Deferred_Tracking_Id         => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_TRACKING_ID,
2655                                          X_ASS_RANK                     => Rec_IGS_AD_PS_APPL_Inst.ASS_RANK,
2656                                          X_SECONDARY_ASS_RANK           => Rec_IGS_AD_PS_APPL_Inst.SECONDARY_ASS_RANK,
2657                                          X_INTR_ACCEPT_ADVICE_NUM       => Rec_IGS_AD_PS_APPL_Inst.INTRNTNL_ACCEPTANCE_ADVICE_NUM,
2658                                          X_ASS_TRACKING_ID              => Rec_IGS_AD_PS_APPL_Inst.ASS_TRACKING_ID,
2659                                          X_FEE_CAT                      => Rec_IGS_AD_PS_APPL_Inst.FEE_CAT,
2660                                          X_HECS_PAYMENT_OPTION          => Rec_IGS_AD_PS_APPL_Inst.HECS_PAYMENT_OPTION,
2661                                          X_Expected_Completion_Yr       => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_YR,
2662                                          X_Expected_Completion_Perd     => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_PERD,
2663                                          X_CORRESPONDENCE_CAT           => Rec_IGS_AD_PS_APPL_Inst.CORRESPONDENCE_CAT,
2664                                          X_ENROLMENT_CAT                => Rec_IGS_AD_PS_APPL_Inst.ENROLMENT_CAT,
2665                                          X_FUNDING_SOURCE               => Rec_IGS_AD_PS_APPL_Inst.FUNDING_SOURCE,
2666                                          X_APPLICANT_ACPTNCE_CNDTN      => Rec_IGS_AD_PS_APPL_Inst.APPLICANT_ACPTNCE_CNDTN,
2667                                          X_CNDTNL_OFFER_CNDTN           => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_CNDTN,
2668                                          X_SS_APPLICATION_ID            => Rec_IGS_AD_PS_APPL_Inst.SS_APPLICATION_ID,
2669                                          X_SS_PWD                       => Rec_IGS_AD_PS_APPL_Inst.SS_PWD,
2670                                          X_AUTHORIZED_DT                => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZED_DT,
2671                                          X_AUTHORIZING_PERS_ID          => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZING_PERS_ID,
2672                                          X_IDX_CALC_DATE                => Rec_IGS_AD_PS_APPL_Inst.IDX_CALC_DATE,
2673                                          X_ENTRY_STATUS                 => Rec_IGS_AD_PS_APPL_Inst.ENTRY_STATUS,
2674                                          X_ENTRY_LEVEL                  => Rec_IGS_AD_PS_APPL_Inst.ENTRY_LEVEL,
2675                                          X_SCH_APL_TO_ID                => Rec_IGS_AD_PS_APPL_Inst.SCH_APL_TO_ID,
2676                                          X_MODE                         => lv_mode, -- enable security for Admin
2677                                          X_Attribute21                  => Rec_IGS_AD_PS_APPL_Inst.Attribute21,
2678                                          X_Attribute22                  => Rec_IGS_AD_PS_APPL_Inst.Attribute22,
2679                                          X_Attribute23                  => Rec_IGS_AD_PS_APPL_Inst.Attribute23,
2680                                          X_Attribute24                  => Rec_IGS_AD_PS_APPL_Inst.Attribute24,
2681                                          X_Attribute25                  => Rec_IGS_AD_PS_APPL_Inst.Attribute25,
2682                                          X_Attribute26                  => Rec_IGS_AD_PS_APPL_Inst.Attribute26,
2683                                          X_Attribute27                  => Rec_IGS_AD_PS_APPL_Inst.Attribute27,
2684                                          X_Attribute28                  => Rec_IGS_AD_PS_APPL_Inst.Attribute28,
2685                                          X_Attribute29                  => Rec_IGS_AD_PS_APPL_Inst.Attribute29,
2686                                          X_Attribute30                  => Rec_IGS_AD_PS_APPL_Inst.Attribute30,
2687                                          X_Attribute31                  => Rec_IGS_AD_PS_APPL_Inst.Attribute31,
2688                                          X_Attribute32                  => Rec_IGS_AD_PS_APPL_Inst.Attribute32,
2689                                          X_Attribute33                  => Rec_IGS_AD_PS_APPL_Inst.Attribute33,
2690                                          X_Attribute34                  => Rec_IGS_AD_PS_APPL_Inst.Attribute34,
2691                                          X_Attribute35                  => Rec_IGS_AD_PS_APPL_Inst.Attribute35,
2692                                          X_Attribute36                  => Rec_IGS_AD_PS_APPL_Inst.Attribute36,
2693                                          X_Attribute37                  => Rec_IGS_AD_PS_APPL_Inst.Attribute37,
2694                                          X_Attribute38                  => Rec_IGS_AD_PS_APPL_Inst.Attribute38,
2695                                          X_Attribute39                  => Rec_IGS_AD_PS_APPL_Inst.Attribute39,
2696                                          X_Attribute40                  => Rec_IGS_AD_PS_APPL_Inst.Attribute40,
2697                                          X_FUT_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CAL_TYPE,
2698                                          X_FUT_ACAD_CI_SEQUENCE_NUMBER  => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CI_SEQUENCE_NUMBER,
2699                                          X_FUT_ADM_CAL_TYPE             => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CAL_TYPE,
2700                                          X_FUT_ADM_CI_SEQUENCE_NUMBER   => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CI_SEQUENCE_NUMBER,
2701                                          X_PREV_TERM_ADM_APPL_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_ADM_APPL_NUMBER,
2702                                          X_PREV_TERM_SEQUENCE_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_SEQUENCE_NUMBER,
2703                                          X_FUT_TERM_ADM_APPL_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_ADM_APPL_NUMBER,
2704                                          X_FUT_TERM_SEQUENCE_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_SEQUENCE_NUMBER,
2705                                          X_DEF_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CAL_TYPE, --Bug 2395510
2706                                          X_DEF_ACAD_CI_SEQUENCE_NUM     => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CI_SEQUENCE_NUM, --Bug 2395510
2707                                          X_DEF_PREV_TERM_ADM_APPL_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_TERM_ADM_APPL_NUM, --Bug 2395510
2708                                          X_DEF_PREV_APPL_SEQUENCE_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_APPL_SEQUENCE_NUM, --Bug 2395510
2709                                          X_DEF_TERM_ADM_APPL_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_TERM_ADM_APPL_NUM, --Bug 2395510
2710                                          X_DEF_APPL_SEQUENCE_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_APPL_SEQUENCE_NUM, --Bug 2395510
2711                                          X_APPL_INST_STATUS             => Rec_IGS_AD_PS_APPL_Inst.appl_inst_status,
2712                                          x_ais_reason                   => Rec_IGS_AD_PS_APPL_Inst.ais_reason,
2713                                          x_decline_ofr_reason           => Rec_IGS_AD_PS_APPL_Inst.decline_ofr_reason
2714                                          );
2715 
2716       --                COMMIT;  --tray Bug 2405076 , not needed as the posted data is fine to work with , no need of commit
2717     END IF;
2718 
2719     IF c_upd_acai_eqdo%ISOPEN THEN
2720        CLOSE c_upd_acai_eqdo;
2721     END IF;
2722     x_return_status := 'S';
2723     x_message_data := NULL;
2724   EXCEPTION
2725     WHEN OTHERS THEN
2726        l_sc_msg_count := IGS_GE_MSG_STACK.COUNT_MSG;
2727        WHILE l_sc_msg_count <> 0 loop
2728           igs_ge_msg_stack.get(l_sc_msg_count, 'T', l_sc_encoded_text, l_sc_msg_index);
2729           fnd_message.parse_encoded(l_sc_encoded_text, l_sc_app_short_name, l_sc_message_name);
2730           IF l_sc_message_name = 'IGS_SC_POLICY_EXCEPTION' OR l_sc_message_name = 'IGS_SC_POLICY_UPD_DEL_EXCEP' THEN
2731                 x_return_status := 'E';
2732 		x_message_data := 'IGS_SC_POLICY_EXCEPTION';
2733 		RETURN;
2734            END IF;
2735            l_sc_msg_count := l_sc_msg_count - 1;
2736         END LOOP;
2737 
2738        IF FND_MSG_PUB.Count_Msg < 1 THEN
2739 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2740 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Update_Appl_Eqdo_Inst -'||SQLERRM);
2741 	  IGS_GE_MSG_STACK.ADD;
2742           App_Exception.Raise_Exception;
2743        END IF;
2744         x_return_status := 'E';
2745         x_message_data  := 'IGS_GE_UNHANDLED_EXP';
2746 
2747   END Update_Appl_Eqdo_Inst;
2748 
2749   PROCEDURE Update_Appl_Ofr_Inst(p_person_id             IN NUMBER,
2750                                  p_admission_appl_number IN NUMBER,
2751                                  p_nominated_course_cd   IN VARCHAR2,
2752                                  p_sequence_number       IN NUMBER,
2753                                  x_return_status         OUT NOCOPY VARCHAR2,
2754                                  x_message_data          OUT NOCOPY VARCHAR2) IS
2755 
2756     CURSOR c_upd_acai_outcm(cp_person_id IGS_AD_PS_APPL_INST.person_id%TYPE,
2757               cp_admission_appl_number IGS_AD_PS_APPL_INST.admission_appl_number%TYPE,
2758               cp_nominated_course_cd IGS_AD_PS_APPL_INST.nominated_course_cd%TYPE,
2759               cp_sequence_number IGS_AD_PS_APPL_INST.sequence_number%TYPE) IS
2760       SELECT ROWID, acai.*
2761         FROM IGS_AD_PS_APPL_INST acai
2762        WHERE acai.person_id = cp_person_id
2763          AND acai.admission_appl_number = cp_admission_appl_number
2764          AND acai.nominated_course_cd = cp_nominated_course_cd
2765          AND acai.sequence_number = cp_sequence_number
2766          FOR UPDATE OF acai.adm_outcome_status NOWAIT;
2767 
2768     Rec_IGS_AD_PS_APPL_Inst c_upd_acai_outcm%ROWTYPE;
2769 
2770     l_offer_adm_outcome_status IGS_AD_PS_APPL_INST_ALL.adm_outcome_status%TYPE;
2771     l_application_status       IGS_AD_PS_APPL_INST_ALL.adm_doc_status%TYPE;
2772 
2773     l_offer_resp_status IGS_AD_PS_APPL_INST_ALL.adm_offer_resp_status%TYPE;
2774     l_entry_qual_status IGS_AD_PS_APPL_INST_ALL.adm_entry_qual_status%TYPE;
2775 
2776     lv_mode VARCHAR2(1) DEFAULT 'R';
2777 
2778     l_sc_encoded_text   VARCHAR2(4000);
2779     l_sc_msg_count NUMBER;
2780     l_sc_msg_index NUMBER;
2781     l_sc_app_short_name VARCHAR2(50);
2782     l_sc_message_name   VARCHAR2(50);
2783   BEGIN
2784 
2785     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
2786     THEN
2787       lv_mode := 'S';
2788     END IF;
2789 
2790     l_offer_adm_outcome_status := IGS_AD_GEN_009.ADMP_GET_SYS_AOS('OFFER');
2791     l_offer_resp_status        := IGS_AD_GEN_009.ADMP_GET_SYS_AORS('PENDING');
2792 
2793     OPEN c_upd_acai_outcm(p_person_id,
2794                           p_admission_appl_number,
2795                           p_nominated_course_cd,
2796                           p_sequence_number);
2797 
2798     FETCH c_upd_acai_outcm
2799       INTO Rec_IGS_AD_PS_APPL_Inst;
2800 
2801     --Commented for Bug Fix 2395667 Moved the code after TBH call :tray
2802     --          CLOSE c_upd_acai_outcm;
2803 
2804     IF (c_upd_acai_outcm%FOUND) THEN
2805 
2806       IGS_AD_PS_APPL_Inst_Pkg.UPDATE_ROW(X_ROWID                        => Rec_IGS_AD_PS_APPL_Inst.ROWID,
2807                                          X_PERSON_ID                    => Rec_IGS_AD_PS_APPL_Inst.PERSON_ID,
2808                                          X_ADMISSION_APPL_NUMBER        => Rec_IGS_AD_PS_APPL_Inst.ADMISSION_APPL_NUMBER,
2809                                          X_NOMINATED_COURSE_CD          => Rec_IGS_AD_PS_APPL_Inst.NOMINATED_COURSE_CD,
2810                                          X_SEQUENCE_NUMBER              => Rec_IGS_AD_PS_APPL_Inst.SEQUENCE_NUMBER,
2811                                          X_PREDICTED_GPA                => Rec_IGS_AD_PS_APPL_Inst.PREDICTED_GPA,
2812                                          X_ACADEMIC_INDEX               => Rec_IGS_AD_PS_APPL_Inst.ACADEMIC_INDEX,
2813                                          X_Adm_Cal_Type                 => Rec_IGS_AD_PS_APPL_Inst.ADM_CAL_TYPE,
2814                                          X_APP_FILE_LOCATION            => Rec_IGS_AD_PS_APPL_Inst.APP_FILE_LOCATION,
2815                                          X_Adm_Ci_Sequence_Number       => Rec_IGS_AD_PS_APPL_Inst.ADM_CI_SEQUENCE_NUMBER,
2816                                          X_COURSE_CD                    => Rec_IGS_AD_PS_APPL_Inst.COURSE_CD,
2817                                          X_APP_SOURCE_ID                => Rec_IGS_AD_PS_APPL_Inst.APP_SOURCE_ID,
2818                                          X_CRV_VERSION_NUMBER           => Rec_IGS_AD_PS_APPL_Inst.CRV_VERSION_NUMBER,
2819                                          X_Waitlist_Rank                => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Rank,
2820                                          X_Waitlist_Status              => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Status,
2821                                          X_LOCATION_CD                  => Rec_IGS_AD_PS_APPL_Inst.LOCATION_CD,
2822                                          X_Attent_Other_Inst_Cd         => Rec_IGS_AD_PS_APPL_Inst.Attent_Other_Inst_Cd,
2823                                          X_ATTENDANCE_MODE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_MODE,
2824                                          X_Edu_Goal_Prior_Enroll_Id     => Rec_IGS_AD_PS_APPL_Inst.Edu_Goal_Prior_Enroll_Id,
2825                                          X_ATTENDANCE_TYPE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_TYPE,
2826                                          X_Decision_Make_Id             => Rec_IGS_AD_PS_APPL_Inst.Decision_Make_Id,
2827                                          X_UNIT_SET_CD                  => Rec_IGS_AD_PS_APPL_Inst.UNIT_SET_CD,
2828                                          X_Decision_Date                => Rec_IGS_AD_PS_APPL_Inst.Decision_Date,
2829                                          X_Attribute_Category           => Rec_IGS_AD_PS_APPL_Inst.Attribute_Category,
2830                                          X_Attribute1                   => Rec_IGS_AD_PS_APPL_Inst.Attribute1,
2831                                          X_Attribute2                   => Rec_IGS_AD_PS_APPL_Inst.Attribute2,
2832                                          X_Attribute3                   => Rec_IGS_AD_PS_APPL_Inst.Attribute3,
2833                                          X_Attribute4                   => Rec_IGS_AD_PS_APPL_Inst.Attribute4,
2834                                          X_Attribute5                   => Rec_IGS_AD_PS_APPL_Inst.Attribute5,
2835                                          X_Attribute6                   => Rec_IGS_AD_PS_APPL_Inst.Attribute6,
2836                                          X_Attribute7                   => Rec_IGS_AD_PS_APPL_Inst.Attribute7,
2837                                          X_Attribute8                   => Rec_IGS_AD_PS_APPL_Inst.Attribute8,
2838                                          X_Attribute9                   => Rec_IGS_AD_PS_APPL_Inst.Attribute9,
2839                                          X_Attribute10                  => Rec_IGS_AD_PS_APPL_Inst.Attribute10,
2840                                          X_Attribute11                  => Rec_IGS_AD_PS_APPL_Inst.Attribute11,
2841                                          X_Attribute12                  => Rec_IGS_AD_PS_APPL_Inst.Attribute12,
2842                                          X_Attribute13                  => Rec_IGS_AD_PS_APPL_Inst.Attribute13,
2843                                          X_Attribute14                  => Rec_IGS_AD_PS_APPL_Inst.Attribute14,
2844                                          X_Attribute15                  => Rec_IGS_AD_PS_APPL_Inst.Attribute15,
2845                                          X_Attribute16                  => Rec_IGS_AD_PS_APPL_Inst.Attribute16,
2846                                          X_Attribute17                  => Rec_IGS_AD_PS_APPL_Inst.Attribute17,
2847                                          X_Attribute18                  => Rec_IGS_AD_PS_APPL_Inst.Attribute18,
2848                                          X_Attribute19                  => Rec_IGS_AD_PS_APPL_Inst.Attribute19,
2849                                          X_Attribute20                  => Rec_IGS_AD_PS_APPL_Inst.Attribute20,
2850                                          X_Decision_Reason_Id           => Rec_IGS_AD_PS_APPL_Inst.Decision_Reason_Id,
2851                                          X_US_VERSION_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.US_VERSION_NUMBER,
2852                                          X_Decision_Notes               => Rec_IGS_AD_PS_APPL_Inst.Decision_Notes,
2853                                          X_Pending_Reason_Id            => Rec_IGS_AD_PS_APPL_Inst.Pending_Reason_Id,
2854                                          X_PREFERENCE_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.PREFERENCE_NUMBER,
2855                                          X_ADM_DOC_STATUS               => Rec_IGS_AD_PS_APPL_Inst.ADM_DOC_STATUS,
2856                                          X_ADM_ENTRY_QUAL_STATUS        => Rec_IGS_AD_PS_APPL_Inst.ADM_ENTRY_QUAL_STATUS,
2857                                          X_DEFICIENCY_IN_PREP           => Rec_IGS_AD_PS_APPL_Inst.DEFICIENCY_IN_PREP,
2858                                          X_LATE_ADM_FEE_STATUS          => Rec_IGS_AD_PS_APPL_Inst.LATE_ADM_FEE_STATUS,
2859                                          X_Spl_Consider_Comments        => Rec_IGS_AD_PS_APPL_Inst.Spl_Consider_Comments,
2860                                          X_Apply_For_Finaid             => Rec_IGS_AD_PS_APPL_Inst.Apply_For_Finaid,
2861                                          X_Finaid_Apply_Date            => Rec_IGS_AD_PS_APPL_Inst.Finaid_Apply_Date,
2862                                          X_ADM_OUTCOME_STATUS           => l_offer_adm_outcome_status,
2863                                          X_ADM_OTCM_STAT_AUTH_PER_ID    => Rec_IGS_AD_PS_APPL_Inst.ADM_OTCM_STATUS_AUTH_PERSON_ID,
2864                                          X_ADM_OUTCOME_STATUS_AUTH_DT   => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_AUTH_DT,
2865                                          X_ADM_OUTCOME_STATUS_REASON    => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_REASON,
2866                                          X_OFFER_DT                     => SYSDATE,
2867                                          X_Offer_Response_Dt            => SYSDATE,
2868                                          X_PRPSD_COMMENCEMENT_DT        => Rec_IGS_AD_PS_APPL_Inst.Prpsd_Commencement_Dt,
2869                                          X_ADM_CNDTNL_OFFER_STATUS      => Rec_IGS_AD_PS_APPL_Inst.ADM_CNDTNL_OFFER_STATUS,
2870                                          X_CNDTNL_OFFER_SATISFIED_DT    => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_SATISFIED_DT,
2871                                          X_CNDNL_OFR_MUST_BE_STSFD_IND  => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_MUST_BE_STSFD_IND,
2872                                          X_Adm_Offer_Resp_Status        => l_offer_resp_status,
2873                                          X_Actual_Response_Dt           => Rec_IGS_AD_PS_APPL_Inst.ACTUAL_RESPONSE_DT,
2874                                          X_Adm_Offer_Dfrmnt_Status      => Rec_IGS_AD_PS_APPL_Inst.ADM_OFFER_DFRMNT_STATUS,
2875                                          X_Deferred_Adm_Cal_Type        => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CAL_TYPE,
2876                                          X_Deferred_Adm_Ci_Sequence_Num => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CI_SEQUENCE_NUM,
2877                                          X_Deferred_Tracking_Id         => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_TRACKING_ID,
2878                                          X_ASS_RANK                     => Rec_IGS_AD_PS_APPL_Inst.ASS_RANK,
2879                                          X_SECONDARY_ASS_RANK           => Rec_IGS_AD_PS_APPL_Inst.SECONDARY_ASS_RANK,
2880                                          X_INTR_ACCEPT_ADVICE_NUM       => Rec_IGS_AD_PS_APPL_Inst.INTRNTNL_ACCEPTANCE_ADVICE_NUM,
2881                                          X_ASS_TRACKING_ID              => Rec_IGS_AD_PS_APPL_Inst.ASS_TRACKING_ID,
2882                                          X_FEE_CAT                      => Rec_IGS_AD_PS_APPL_Inst.FEE_CAT,
2883                                          X_HECS_PAYMENT_OPTION          => Rec_IGS_AD_PS_APPL_Inst.HECS_PAYMENT_OPTION,
2884                                          X_Expected_Completion_Yr       => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_YR,
2885                                          X_Expected_Completion_Perd     => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_PERD,
2886                                          X_CORRESPONDENCE_CAT           => Rec_IGS_AD_PS_APPL_Inst.CORRESPONDENCE_CAT,
2887                                          X_ENROLMENT_CAT                => Rec_IGS_AD_PS_APPL_Inst.ENROLMENT_CAT,
2888                                          X_FUNDING_SOURCE               => Rec_IGS_AD_PS_APPL_Inst.FUNDING_SOURCE,
2889                                          X_APPLICANT_ACPTNCE_CNDTN      => Rec_IGS_AD_PS_APPL_Inst.APPLICANT_ACPTNCE_CNDTN,
2890                                          X_CNDTNL_OFFER_CNDTN           => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_CNDTN,
2891                                          X_SS_APPLICATION_ID            => Rec_IGS_AD_PS_APPL_Inst.SS_APPLICATION_ID,
2892                                          X_SS_PWD                       => Rec_IGS_AD_PS_APPL_Inst.SS_PWD,
2893                                          X_AUTHORIZED_DT                => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZED_DT,
2894                                          X_AUTHORIZING_PERS_ID          => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZING_PERS_ID,
2895                                          X_IDX_CALC_DATE                => Rec_IGS_AD_PS_APPL_Inst.IDX_CALC_DATE,
2896                                          X_ENTRY_STATUS                 => Rec_IGS_AD_PS_APPL_Inst.ENTRY_STATUS,
2897                                          X_ENTRY_LEVEL                  => Rec_IGS_AD_PS_APPL_Inst.ENTRY_LEVEL,
2898                                          X_SCH_APL_TO_ID                => Rec_IGS_AD_PS_APPL_Inst.SCH_APL_TO_ID,
2899                                          X_MODE                         => lv_mode, -- enable security for Admin
2900                                          X_Attribute21                  => Rec_IGS_AD_PS_APPL_Inst.Attribute21,
2901                                          X_Attribute22                  => Rec_IGS_AD_PS_APPL_Inst.Attribute22,
2902                                          X_Attribute23                  => Rec_IGS_AD_PS_APPL_Inst.Attribute23,
2903                                          X_Attribute24                  => Rec_IGS_AD_PS_APPL_Inst.Attribute24,
2904                                          X_Attribute25                  => Rec_IGS_AD_PS_APPL_Inst.Attribute25,
2905                                          X_Attribute26                  => Rec_IGS_AD_PS_APPL_Inst.Attribute26,
2906                                          X_Attribute27                  => Rec_IGS_AD_PS_APPL_Inst.Attribute27,
2907                                          X_Attribute28                  => Rec_IGS_AD_PS_APPL_Inst.Attribute28,
2908                                          X_Attribute29                  => Rec_IGS_AD_PS_APPL_Inst.Attribute29,
2909                                          X_Attribute30                  => Rec_IGS_AD_PS_APPL_Inst.Attribute30,
2910                                          X_Attribute31                  => Rec_IGS_AD_PS_APPL_Inst.Attribute31,
2911                                          X_Attribute32                  => Rec_IGS_AD_PS_APPL_Inst.Attribute32,
2912                                          X_Attribute33                  => Rec_IGS_AD_PS_APPL_Inst.Attribute33,
2913                                          X_Attribute34                  => Rec_IGS_AD_PS_APPL_Inst.Attribute34,
2914                                          X_Attribute35                  => Rec_IGS_AD_PS_APPL_Inst.Attribute35,
2915                                          X_Attribute36                  => Rec_IGS_AD_PS_APPL_Inst.Attribute36,
2916                                          X_Attribute37                  => Rec_IGS_AD_PS_APPL_Inst.Attribute37,
2917                                          X_Attribute38                  => Rec_IGS_AD_PS_APPL_Inst.Attribute38,
2918                                          X_Attribute39                  => Rec_IGS_AD_PS_APPL_Inst.Attribute39,
2919                                          X_Attribute40                  => Rec_IGS_AD_PS_APPL_Inst.Attribute40,
2920                                          X_FUT_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CAL_TYPE,
2921                                          X_FUT_ACAD_CI_SEQUENCE_NUMBER  => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CI_SEQUENCE_NUMBER,
2922                                          X_FUT_ADM_CAL_TYPE             => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CAL_TYPE,
2923                                          X_FUT_ADM_CI_SEQUENCE_NUMBER   => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CI_SEQUENCE_NUMBER,
2924                                          X_PREV_TERM_ADM_APPL_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_ADM_APPL_NUMBER,
2925                                          X_PREV_TERM_SEQUENCE_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_SEQUENCE_NUMBER,
2926                                          X_FUT_TERM_ADM_APPL_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_ADM_APPL_NUMBER,
2927                                          X_FUT_TERM_SEQUENCE_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_SEQUENCE_NUMBER,
2928                                          X_DEF_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CAL_TYPE, --Bug 2395510
2929                                          X_DEF_ACAD_CI_SEQUENCE_NUM     => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CI_SEQUENCE_NUM, --Bug 2395510
2930                                          X_DEF_PREV_TERM_ADM_APPL_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_TERM_ADM_APPL_NUM, --Bug 2395510
2931                                          X_DEF_PREV_APPL_SEQUENCE_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_APPL_SEQUENCE_NUM, --Bug 2395510
2932                                          X_DEF_TERM_ADM_APPL_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_TERM_ADM_APPL_NUM, --Bug 2395510
2933                                          X_DEF_APPL_SEQUENCE_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_APPL_SEQUENCE_NUM, --Bug 2395510
2934                                          X_APPL_INST_STATUS             => Rec_IGS_AD_PS_APPL_Inst.appl_inst_status,
2935                                          x_ais_reason                   => Rec_IGS_AD_PS_APPL_Inst.ais_reason,
2936                                          x_decline_ofr_reason           => Rec_IGS_AD_PS_APPL_Inst.decline_ofr_reason
2937                                          );
2938 
2939       --COMMIT;
2940     END IF;
2941 
2942     IF c_upd_acai_outcm%ISOPEN THEN
2943        CLOSE c_upd_acai_outcm;
2944     END IF;
2945     x_return_status := 'S';
2946     x_message_data := NULL;
2947   EXCEPTION
2948     WHEN OTHERS THEN
2949        l_sc_msg_count := IGS_GE_MSG_STACK.COUNT_MSG;
2950        WHILE l_sc_msg_count <> 0 loop
2951           igs_ge_msg_stack.get(l_sc_msg_count, 'T', l_sc_encoded_text, l_sc_msg_index);
2952           fnd_message.parse_encoded(l_sc_encoded_text, l_sc_app_short_name, l_sc_message_name);
2953           IF l_sc_message_name = 'IGS_SC_POLICY_EXCEPTION' OR l_sc_message_name = 'IGS_SC_POLICY_UPD_DEL_EXCEP' THEN
2954                 x_return_status := 'E';
2955 		x_message_data := 'IGS_SC_POLICY_EXCEPTION';
2956 		RETURN;
2957            END IF;
2958            l_sc_msg_count := l_sc_msg_count - 1;
2959         END LOOP;
2960 
2961         IF FND_MSG_PUB.Count_Msg < 1 THEN
2962 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
2963 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.Update_Appl_Ofr_Inst -'||SQLERRM);
2964 	  IGS_GE_MSG_STACK.ADD;
2965 	  App_Exception.Raise_Exception;
2966         END IF;
2967         x_return_status := 'E';
2968         x_message_data  := 'IGS_GE_UNHANDLED_EXP';
2969 
2970   END Update_Appl_Ofr_Inst;
2971 
2972   PROCEDURE Update_Appl_Ofres_Inst(p_person_id             IN NUMBER,
2973                                    p_admission_appl_number IN NUMBER,
2974                                    p_nominated_course_cd   IN VARCHAR2,
2975                                    p_sequence_number       IN NUMBER,
2976                                    x_return_status         OUT NOCOPY VARCHAR2,
2977                                    x_message_data          OUT NOCOPY VARCHAR2) IS
2978 
2979     CURSOR c_upd_acai_resp(cp_person_id IGS_AD_PS_APPL_INST.person_id%TYPE,
2980                 cp_admission_appl_number IGS_AD_PS_APPL_INST.admission_appl_number%TYPE,
2981                 cp_nominated_course_cd IGS_AD_PS_APPL_INST.nominated_course_cd%TYPE,
2982                 cp_sequence_number IGS_AD_PS_APPL_INST.sequence_number%TYPE) IS
2983       SELECT ROWID, acai.*
2984         FROM IGS_AD_PS_APPL_INST acai
2985        WHERE acai.person_id = cp_person_id
2986          AND acai.admission_appl_number = cp_admission_appl_number
2987          AND acai.nominated_course_cd = cp_nominated_course_cd
2988          AND acai.sequence_number = cp_sequence_number
2989          FOR UPDATE OF acai.ADM_OFFER_RESP_STATUS NOWAIT;
2990 
2991     Rec_IGS_AD_PS_APPL_Inst c_upd_acai_resp%ROWTYPE;
2992 
2993     l_offer_resp_status IGS_AD_PS_APPL_INST_ALL.adm_offer_resp_status%TYPE;
2994 
2995    lv_mode VARCHAR2(1) DEFAULT 'R';
2996   BEGIN
2997 
2998     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
2999     THEN
3000       lv_mode := 'S';
3001     END IF;
3002 
3003     l_offer_resp_status := IGS_AD_GEN_009.ADMP_GET_SYS_AORS('ACCEPTED');
3004 
3005     OPEN c_upd_acai_resp(p_person_id,
3006                          p_admission_appl_number,
3007                          p_nominated_course_cd,
3008                          p_sequence_number);
3009 
3010     FETCH c_upd_acai_resp
3011       INTO Rec_IGS_AD_PS_APPL_Inst;
3012 
3013     --Commented for Bug Fix 2395667, Moved the code after TBH call :tray
3014     --         CLOSE c_upd_acai_resp;
3015 
3016     IF (c_upd_acai_resp%FOUND) THEN
3017 
3018       IGS_AD_PS_APPL_Inst_Pkg.UPDATE_ROW(X_ROWID                        => Rec_IGS_AD_PS_APPL_Inst.ROWID,
3019                                          X_PERSON_ID                    => Rec_IGS_AD_PS_APPL_Inst.PERSON_ID,
3020                                          X_ADMISSION_APPL_NUMBER        => Rec_IGS_AD_PS_APPL_Inst.ADMISSION_APPL_NUMBER,
3021                                          X_NOMINATED_COURSE_CD          => Rec_IGS_AD_PS_APPL_Inst.NOMINATED_COURSE_CD,
3022                                          X_SEQUENCE_NUMBER              => Rec_IGS_AD_PS_APPL_Inst.SEQUENCE_NUMBER,
3023                                          X_PREDICTED_GPA                => Rec_IGS_AD_PS_APPL_Inst.PREDICTED_GPA,
3024                                          X_ACADEMIC_INDEX               => Rec_IGS_AD_PS_APPL_Inst.ACADEMIC_INDEX,
3025                                          X_Adm_Cal_Type                 => Rec_IGS_AD_PS_APPL_Inst.ADM_CAL_TYPE,
3026                                          X_APP_FILE_LOCATION            => Rec_IGS_AD_PS_APPL_Inst.APP_FILE_LOCATION,
3027                                          X_Adm_Ci_Sequence_Number       => Rec_IGS_AD_PS_APPL_Inst.ADM_CI_SEQUENCE_NUMBER,
3028                                          X_COURSE_CD                    => Rec_IGS_AD_PS_APPL_Inst.COURSE_CD,
3029                                          X_APP_SOURCE_ID                => Rec_IGS_AD_PS_APPL_Inst.APP_SOURCE_ID,
3030                                          X_CRV_VERSION_NUMBER           => Rec_IGS_AD_PS_APPL_Inst.CRV_VERSION_NUMBER,
3031                                          X_Waitlist_Rank                => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Rank,
3032                                          X_Waitlist_Status              => Rec_IGS_AD_PS_APPL_Inst.Waitlist_Status,
3033                                          X_LOCATION_CD                  => Rec_IGS_AD_PS_APPL_Inst.LOCATION_CD,
3034                                          X_Attent_Other_Inst_Cd         => Rec_IGS_AD_PS_APPL_Inst.Attent_Other_Inst_Cd,
3035                                          X_ATTENDANCE_MODE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_MODE,
3036                                          X_Edu_Goal_Prior_Enroll_Id     => Rec_IGS_AD_PS_APPL_Inst.Edu_Goal_Prior_Enroll_Id,
3037                                          X_ATTENDANCE_TYPE              => Rec_IGS_AD_PS_APPL_Inst.ATTENDANCE_TYPE,
3038                                          X_Decision_Make_Id             => Rec_IGS_AD_PS_APPL_Inst.Decision_Make_Id,
3039                                          X_UNIT_SET_CD                  => Rec_IGS_AD_PS_APPL_Inst.UNIT_SET_CD,
3040                                          X_Decision_Date                => Rec_IGS_AD_PS_APPL_Inst.Decision_Date,
3041                                          X_Attribute_Category           => Rec_IGS_AD_PS_APPL_Inst.Attribute_Category,
3042                                          X_Attribute1                   => Rec_IGS_AD_PS_APPL_Inst.Attribute1,
3043                                          X_Attribute2                   => Rec_IGS_AD_PS_APPL_Inst.Attribute2,
3044                                          X_Attribute3                   => Rec_IGS_AD_PS_APPL_Inst.Attribute3,
3045                                          X_Attribute4                   => Rec_IGS_AD_PS_APPL_Inst.Attribute4,
3046                                          X_Attribute5                   => Rec_IGS_AD_PS_APPL_Inst.Attribute5,
3047                                          X_Attribute6                   => Rec_IGS_AD_PS_APPL_Inst.Attribute6,
3048                                          X_Attribute7                   => Rec_IGS_AD_PS_APPL_Inst.Attribute7,
3049                                          X_Attribute8                   => Rec_IGS_AD_PS_APPL_Inst.Attribute8,
3050                                          X_Attribute9                   => Rec_IGS_AD_PS_APPL_Inst.Attribute9,
3051                                          X_Attribute10                  => Rec_IGS_AD_PS_APPL_Inst.Attribute10,
3052                                          X_Attribute11                  => Rec_IGS_AD_PS_APPL_Inst.Attribute11,
3053                                          X_Attribute12                  => Rec_IGS_AD_PS_APPL_Inst.Attribute12,
3054                                          X_Attribute13                  => Rec_IGS_AD_PS_APPL_Inst.Attribute13,
3055                                          X_Attribute14                  => Rec_IGS_AD_PS_APPL_Inst.Attribute14,
3056                                          X_Attribute15                  => Rec_IGS_AD_PS_APPL_Inst.Attribute15,
3057                                          X_Attribute16                  => Rec_IGS_AD_PS_APPL_Inst.Attribute16,
3058                                          X_Attribute17                  => Rec_IGS_AD_PS_APPL_Inst.Attribute17,
3059                                          X_Attribute18                  => Rec_IGS_AD_PS_APPL_Inst.Attribute18,
3060                                          X_Attribute19                  => Rec_IGS_AD_PS_APPL_Inst.Attribute19,
3061                                          X_Attribute20                  => Rec_IGS_AD_PS_APPL_Inst.Attribute20,
3062                                          X_Decision_Reason_Id           => Rec_IGS_AD_PS_APPL_Inst.Decision_Reason_Id,
3063                                          X_US_VERSION_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.US_VERSION_NUMBER,
3064                                          X_Decision_Notes               => Rec_IGS_AD_PS_APPL_Inst.Decision_Notes,
3065                                          X_Pending_Reason_Id            => Rec_IGS_AD_PS_APPL_Inst.Pending_Reason_Id,
3066                                          X_PREFERENCE_NUMBER            => Rec_IGS_AD_PS_APPL_Inst.PREFERENCE_NUMBER,
3067                                          X_ADM_DOC_STATUS               => Rec_IGS_AD_PS_APPL_Inst.ADM_DOC_STATUS,
3068                                          X_ADM_ENTRY_QUAL_STATUS        => Rec_IGS_AD_PS_APPL_Inst.ADM_ENTRY_QUAL_STATUS,
3069                                          X_DEFICIENCY_IN_PREP           => Rec_IGS_AD_PS_APPL_Inst.DEFICIENCY_IN_PREP,
3070                                          X_LATE_ADM_FEE_STATUS          => Rec_IGS_AD_PS_APPL_Inst.LATE_ADM_FEE_STATUS,
3071                                          X_Spl_Consider_Comments        => Rec_IGS_AD_PS_APPL_Inst.Spl_Consider_Comments,
3072                                          X_Apply_For_Finaid             => Rec_IGS_AD_PS_APPL_Inst.Apply_For_Finaid,
3073                                          X_Finaid_Apply_Date            => Rec_IGS_AD_PS_APPL_Inst.Finaid_Apply_Date,
3074                                          X_ADM_OUTCOME_STATUS           => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS,
3075                                          X_ADM_OTCM_STAT_AUTH_PER_ID    => Rec_IGS_AD_PS_APPL_Inst.ADM_OTCM_STATUS_AUTH_PERSON_ID,
3076                                          X_ADM_OUTCOME_STATUS_AUTH_DT   => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_AUTH_DT,
3077                                          X_ADM_OUTCOME_STATUS_REASON    => Rec_IGS_AD_PS_APPL_Inst.ADM_OUTCOME_STATUS_REASON,
3078                                          X_OFFER_DT                     => Rec_IGS_AD_PS_APPL_Inst.OFFER_DT,
3079                                          X_Offer_Response_Dt            => Rec_IGS_AD_PS_APPL_Inst.OFFER_RESPONSE_DT,
3080                                          X_PRPSD_COMMENCEMENT_DT        => Rec_IGS_AD_PS_APPL_Inst.Prpsd_Commencement_Dt,
3081                                          X_ADM_CNDTNL_OFFER_STATUS      => Rec_IGS_AD_PS_APPL_Inst.ADM_CNDTNL_OFFER_STATUS,
3082                                          X_CNDTNL_OFFER_SATISFIED_DT    => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_SATISFIED_DT,
3083                                          X_CNDNL_OFR_MUST_BE_STSFD_IND  => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_MUST_BE_STSFD_IND,
3084                                          X_Adm_Offer_Resp_Status        => l_offer_resp_status,
3085                                          X_Actual_Response_Dt           => SYSDATE,
3086                                          X_Adm_Offer_Dfrmnt_Status      => Rec_IGS_AD_PS_APPL_Inst.ADM_OFFER_DFRMNT_STATUS,
3087                                          X_Deferred_Adm_Cal_Type        => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CAL_TYPE,
3088                                          X_Deferred_Adm_Ci_Sequence_Num => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_ADM_CI_SEQUENCE_NUM,
3089                                          X_Deferred_Tracking_Id         => Rec_IGS_AD_PS_APPL_Inst.DEFERRED_TRACKING_ID,
3090                                          X_ASS_RANK                     => Rec_IGS_AD_PS_APPL_Inst.ASS_RANK,
3091                                          X_SECONDARY_ASS_RANK           => Rec_IGS_AD_PS_APPL_Inst.SECONDARY_ASS_RANK,
3092                                          X_INTR_ACCEPT_ADVICE_NUM       => Rec_IGS_AD_PS_APPL_Inst.INTRNTNL_ACCEPTANCE_ADVICE_NUM,
3093                                          X_ASS_TRACKING_ID              => Rec_IGS_AD_PS_APPL_Inst.ASS_TRACKING_ID,
3094                                          X_FEE_CAT                      => Rec_IGS_AD_PS_APPL_Inst.FEE_CAT,
3095                                          X_HECS_PAYMENT_OPTION          => Rec_IGS_AD_PS_APPL_Inst.HECS_PAYMENT_OPTION,
3096                                          X_Expected_Completion_Yr       => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_YR,
3097                                          X_Expected_Completion_Perd     => Rec_IGS_AD_PS_APPL_Inst.EXPECTED_COMPLETION_PERD,
3098                                          X_CORRESPONDENCE_CAT           => Rec_IGS_AD_PS_APPL_Inst.CORRESPONDENCE_CAT,
3099                                          X_ENROLMENT_CAT                => Rec_IGS_AD_PS_APPL_Inst.ENROLMENT_CAT,
3100                                          X_FUNDING_SOURCE               => Rec_IGS_AD_PS_APPL_Inst.FUNDING_SOURCE,
3101                                          X_APPLICANT_ACPTNCE_CNDTN      => Rec_IGS_AD_PS_APPL_Inst.APPLICANT_ACPTNCE_CNDTN,
3102                                          X_CNDTNL_OFFER_CNDTN           => Rec_IGS_AD_PS_APPL_Inst.CNDTNL_OFFER_CNDTN,
3103                                          X_SS_APPLICATION_ID            => Rec_IGS_AD_PS_APPL_Inst.SS_APPLICATION_ID,
3104                                          X_SS_PWD                       => Rec_IGS_AD_PS_APPL_Inst.SS_PWD,
3105                                          X_AUTHORIZED_DT                => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZED_DT,
3106                                          X_AUTHORIZING_PERS_ID          => Rec_IGS_AD_PS_APPL_Inst.AUTHORIZING_PERS_ID,
3107                                          X_IDX_CALC_DATE                => Rec_IGS_AD_PS_APPL_Inst.IDX_CALC_DATE,
3108                                          X_ENTRY_STATUS                 => Rec_IGS_AD_PS_APPL_Inst.ENTRY_STATUS,
3109                                          X_ENTRY_LEVEL                  => Rec_IGS_AD_PS_APPL_Inst.ENTRY_LEVEL,
3110                                          X_SCH_APL_TO_ID                => Rec_IGS_AD_PS_APPL_Inst.SCH_APL_TO_ID,
3111                                          X_MODE                         => lv_mode, -- enable security for Admin
3112                                          X_Attribute21                  => Rec_IGS_AD_PS_APPL_Inst.Attribute21,
3113                                          X_Attribute22                  => Rec_IGS_AD_PS_APPL_Inst.Attribute22,
3114                                          X_Attribute23                  => Rec_IGS_AD_PS_APPL_Inst.Attribute23,
3115                                          X_Attribute24                  => Rec_IGS_AD_PS_APPL_Inst.Attribute24,
3116                                          X_Attribute25                  => Rec_IGS_AD_PS_APPL_Inst.Attribute25,
3117                                          X_Attribute26                  => Rec_IGS_AD_PS_APPL_Inst.Attribute26,
3118                                          X_Attribute27                  => Rec_IGS_AD_PS_APPL_Inst.Attribute27,
3119                                          X_Attribute28                  => Rec_IGS_AD_PS_APPL_Inst.Attribute28,
3120                                          X_Attribute29                  => Rec_IGS_AD_PS_APPL_Inst.Attribute29,
3121                                          X_Attribute30                  => Rec_IGS_AD_PS_APPL_Inst.Attribute30,
3122                                          X_Attribute31                  => Rec_IGS_AD_PS_APPL_Inst.Attribute31,
3123                                          X_Attribute32                  => Rec_IGS_AD_PS_APPL_Inst.Attribute32,
3124                                          X_Attribute33                  => Rec_IGS_AD_PS_APPL_Inst.Attribute33,
3125                                          X_Attribute34                  => Rec_IGS_AD_PS_APPL_Inst.Attribute34,
3126                                          X_Attribute35                  => Rec_IGS_AD_PS_APPL_Inst.Attribute35,
3127                                          X_Attribute36                  => Rec_IGS_AD_PS_APPL_Inst.Attribute36,
3128                                          X_Attribute37                  => Rec_IGS_AD_PS_APPL_Inst.Attribute37,
3129                                          X_Attribute38                  => Rec_IGS_AD_PS_APPL_Inst.Attribute38,
3130                                          X_Attribute39                  => Rec_IGS_AD_PS_APPL_Inst.Attribute39,
3131                                          X_Attribute40                  => Rec_IGS_AD_PS_APPL_Inst.Attribute40,
3132                                          X_FUT_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CAL_TYPE,
3133                                          X_FUT_ACAD_CI_SEQUENCE_NUMBER  => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ACAD_CI_SEQUENCE_NUMBER,
3134                                          X_FUT_ADM_CAL_TYPE             => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CAL_TYPE,
3135                                          X_FUT_ADM_CI_SEQUENCE_NUMBER   => Rec_IGS_AD_PS_APPL_Inst.FUTURE_ADM_CI_SEQUENCE_NUMBER,
3136                                          X_PREV_TERM_ADM_APPL_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_ADM_APPL_NUMBER,
3137                                          X_PREV_TERM_SEQUENCE_NUMBER    => Rec_IGS_AD_PS_APPL_Inst.PREVIOUS_TERM_SEQUENCE_NUMBER,
3138                                          X_FUT_TERM_ADM_APPL_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_ADM_APPL_NUMBER,
3139                                          X_FUT_TERM_SEQUENCE_NUMBER     => Rec_IGS_AD_PS_APPL_Inst.FUTURE_TERM_SEQUENCE_NUMBER,
3140                                          X_DEF_ACAD_CAL_TYPE            => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CAL_TYPE, --Bug 2395510
3141                                          X_DEF_ACAD_CI_SEQUENCE_NUM     => Rec_IGS_AD_PS_APPL_Inst.DEF_ACAD_CI_SEQUENCE_NUM, --Bug 2395510
3142                                          X_DEF_PREV_TERM_ADM_APPL_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_TERM_ADM_APPL_NUM, --Bug 2395510
3143                                          X_DEF_PREV_APPL_SEQUENCE_NUM   => Rec_IGS_AD_PS_APPL_Inst.DEF_PREV_APPL_SEQUENCE_NUM, --Bug 2395510
3144                                          X_DEF_TERM_ADM_APPL_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_TERM_ADM_APPL_NUM, --Bug 2395510
3145                                          X_DEF_APPL_SEQUENCE_NUM        => Rec_IGS_AD_PS_APPL_Inst.DEF_APPL_SEQUENCE_NUM, --Bug 2395510
3146                                          X_APPL_INST_STATUS             => Rec_IGS_AD_PS_APPL_Inst.appl_inst_status,
3147                                          X_AIS_REASON                   => Rec_IGS_AD_PS_APPL_Inst.ais_reason,
3148                                          X_DECLINE_OFR_REASON           => Rec_IGS_AD_PS_APPL_Inst.decline_ofr_reason
3149 
3150                                          );
3151 
3152       --  COMMIT;
3153     END IF;
3154     CLOSE c_upd_acai_resp;
3155     x_return_status := 'S';
3156 
3157   EXCEPTION
3158     WHEN others THEN
3159       x_return_status := 'E';
3160       x_message_data  := 'IGS_AD_OFFER_RESP_FAILED';
3161   END Update_Appl_ofres_Inst;
3162 
3163   PROCEDURE insert_appl_section_stat(x_message_name    OUT NOCOPY VARCHAR2,
3164                                      x_return_status   OUT NOCOPY VARCHAR2,
3165                                      p_person_id       IN NUMBER,
3166                                      p_adm_appl_number IN NUMBER,
3167                                      p_login_id        IN NUMBER) AS
3168     /*****************************************************************************************
3169     Created By: [email protected]
3170     Date Created : 16-APR-2002
3171     Purpose: 1. Inserts record from Self Service Admissions form (New Application Screen).
3172              2. These Records are to be used in review and submit applications page as checklist items.
3173     Known limitations,enhancements,remarks:
3174     Change History
3175     Who        When          What
3176     stammine   10-June-05    Modified the Cursor of Checklist values.
3177     *****************************************************************************************/
3178 
3179     CURSOR c_chklist(cp_ApplNum igs_ss_Adm_appl_stg.SS_ADM_APPL_ID%TYPE, cp_person_id igs_ss_Adm_appl_stg.PERSON_ID%TYPE) IS
3180       SELECT pgs.page_name section
3181         FROM igs_ad_ss_appl_pgs pgs
3182        WHERE pgs.admission_application_type =
3183              (SELECT admission_application_type
3184                 FROM igs_ss_adm_appl_stg
3185                WHERE ss_adm_appl_id = cp_ApplNum)
3186          AND pgs.include_ind = 'Y'
3187          AND NOT EXISTS ( SELECT 'x'
3188         FROM igs_ss_ad_sec_stat
3189        WHERE person_id = cp_person_id
3190          AND ss_adm_appl_id = cp_ApplNum
3191          AND section = pgs.page_name);
3192 
3193   BEGIN
3194     FOR c_chklist_values_rec IN c_chklist(p_adm_appl_number, p_person_id) LOOP
3195       INSERT INTO IGS_SS_AD_SEC_STAT
3196         (SS_ADM_APPL_ID,
3197          PERSON_ID,
3198          SECTION,
3199          COMPLETION_STATUS,
3200          LAST_UPDATED_BY,
3201          LAST_UPDATE_DATE,
3202          CREATION_DATE,
3203          CREATED_BY,
3204          LAST_UPDATE_LOGIN)
3205       VALUES
3206         (P_ADM_APPL_NUMBER,
3207          P_PERSON_ID,
3208          c_chklist_values_rec.section,
3209          'NOTSTARTED',
3210          P_LOGIN_ID,
3211          SYSDATE,
3212          SYSDATE,
3213          P_LOGIN_ID,
3214          P_LOGIN_ID);
3215     END LOOP;
3216 
3217   EXCEPTION
3218     WHEN OTHERS THEN
3219        IF FND_MSG_PUB.Count_Msg < 1 THEN
3220 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3221 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_appl_section_stat -'||SQLERRM);
3222 	  IGS_GE_MSG_STACK.ADD;
3223        END IF;
3224         x_return_status := 'E';
3225         x_message_name  := 'IGS_GE_UNHANDLED_EXP';
3226       App_Exception.Raise_Exception;
3227 
3228   END insert_appl_section_stat;
3229 
3230   -- Procedure added by tray
3231   -- Validates program instance in SS Appl
3232   PROCEDURE validate_prog_inst(p_course_cd                IN VARCHAR2,
3233                                p_crv_version_number       IN NUMBER,
3234                                p_location_cd              IN VARCHAR2,
3235                                p_attendance_mode          IN VARCHAR2,
3236                                p_attendance_type          IN VARCHAR2,
3237                                p_acad_cal_type            IN VARCHAR2,
3238                                p_acad_ci_sequence_number  IN NUMBER,
3239                                p_adm_cal_type             IN VARCHAR2,
3240                                p_adm_ci_sequence_number   IN NUMBER,
3241                                p_admission_cat            IN VARCHAR2,
3242                                p_s_admission_process_type IN VARCHAR2,
3243                                p_message_name             OUT NOCOPY VARCHAR2,
3244                                p_return_type              OUT NOCOPY VARCHAR2) IS
3245     CURSOR c_apcs IS
3246       SELECT s_admission_step_type, step_type_restriction_num
3247         FROM igs_ad_prcs_cat_step
3248        WHERE admission_cat = p_admission_cat
3249          AND s_admission_process_type = p_s_admission_process_type
3250          AND step_group_type <> 'TRACK';
3251 
3252     l_late_ind          VARCHAR2(1);
3253     v_apcs_late_app_ind VARCHAR2(127);
3254     lreader             BOOLEAN;
3255   BEGIN
3256     v_apcs_late_app_ind := 'N';
3257 
3258     FOR v_apcs_rec IN c_apcs LOOP
3259       IF (v_apcs_rec.s_admission_step_type = 'LATE-APP') THEN
3260         v_apcs_late_app_ind := 'Y';
3261       END IF;
3262     END LOOP;
3263 
3264     -------------------------------------------------------------------------------------
3265 
3266     -- Validate program offering patterns
3267 
3268     --------------------------------------------------------------------------------------
3269 
3270     lreader := igs_ad_val_acai.admp_val_acai_cop(p_course_cd,
3271                                                  p_crv_version_number,
3272                                                  p_location_cd,
3273                                                  p_attendance_mode,
3274                                                  p_attendance_type,
3275                                                  p_acad_cal_type,
3276                                                  p_acad_ci_sequence_number,
3277                                                  p_adm_cal_type,
3278                                                  p_adm_ci_sequence_number,
3279                                                  p_admission_cat,
3280                                                  p_s_admission_process_type,
3281                                                  'N',
3282                                                  TRUNC(SYSDATE),
3283                                                  v_apcs_late_app_ind,
3284                                                  'N',
3285                                                  p_message_name,
3286                                                  p_return_type,
3287                                                  l_late_ind);
3288   END validate_prog_inst;
3289 
3290   -- Bug # 2389273 [ APPLICATION  FEE SAVED IN SS IS NOT SAVED TO FORMS ]
3291   PROCEDURE insert_application_fee(p_person_id       IN igs_ad_app_req.person_id%TYPE,
3292                                    p_adm_appl_id     IN igs_ss_app_req_stg.ss_adm_appl_id%TYPE,
3293                                    p_adm_appl_number IN igs_ad_app_req.admission_appl_number%TYPE) AS
3294     /*----------------------------------------------------------------------------
3295     ||  Created By :
3296     ||  Created On :
3297     ||  Purpose :
3298     ||  Known limitations, enhancements or remarks :
3299     ||  Change History :
3300     ||  Who             When            What
3301     ||  (reverse chronological order - newest change first)
3302     ||  pathipat        17-Jun-2003     Enh 2831587 - FI210 Credit Card Fund Transfer build
3303     ||                                  Added 3 new params in call to igs_ad_app_req_pkg.insert_row
3304     ||vvutukur   26-Nov-2002   Enh#2584986.Added 11 new parameters to the call to igs_ad_app_req_pkg.insert_row
3305     ||                         (attributing to credit card details,Accounting information and the GL_DATE)
3306     ||                         as part of GL Interface Build and passed NULL to all of them.
3307     ----------------------------------------------------------------------------*/
3308 
3309     l_rowid      VARCHAR2(25);
3310     l_app_req_id igs_ad_app_req.app_req_id%TYPE;
3311 
3312     CURSOR c_appl_fee IS
3313       SELECT ss_app_req_id,
3314              applicant_fee_type,
3315              applicant_fee_status,
3316              fee_date,
3317              fee_payment_method,
3318              fee_amount,
3319              reference_num
3320         FROM IGS_SS_APP_REQ_STG
3321        WHERE person_id = p_person_id
3322          AND ss_adm_appl_id = p_adm_appl_id;
3323    lv_mode VARCHAR2(1) DEFAULT 'R';
3324   BEGIN
3325 
3326     IF NVL(IGS_AD_SS_GEN_001.g_admin_security_on,'N') = 'Y'
3327     THEN
3328       lv_mode := 'S';
3329     END IF;
3330     logHeader('insert_application_fee', 'S');
3331     FOR c_appl_fee_rec IN c_appl_fee LOOP
3332       IF c_appl_fee_rec.ss_app_req_id IS NOT NULL THEN
3333         logDetail('Before call to IGS_AD_APP_REQ_PKG.insert_row', 'S');
3334         igs_ad_app_req_pkg.insert_row(x_rowid                       => l_rowid,
3335                                       x_app_req_id                  => l_app_req_id,
3336                                       x_person_id                   => p_person_id,
3337                                       x_admission_appl_number       => p_adm_appl_number,
3338                                       x_applicant_fee_type          => c_appl_fee_rec.applicant_fee_type,
3339                                       x_applicant_fee_status        => c_appl_fee_rec.applicant_fee_status,
3340                                       x_fee_date                    => c_appl_fee_rec.FEE_DATE,
3341                                       X_FEE_PAYMENT_METHOD          => c_appl_fee_rec.FEE_PAYMENT_METHOD,
3342                                       X_FEE_AMOUNT                  => c_appl_fee_rec.FEE_AMOUNT,
3343                                       X_REFERENCE_NUM               => c_appl_fee_rec.REFERENCE_NUM,
3344                                       x_mode                        => lv_mode, -- enable security for Admin
3345                                       x_credit_card_code            => NULL,
3346                                       x_credit_card_holder_name     => NULL,
3347                                       x_credit_card_number          => NULL,
3348                                       x_credit_card_expiration_date => NULL,
3349                                       x_rev_gl_ccid                 => NULL,
3350                                       x_cash_gl_ccid                => NULL,
3351                                       x_rev_account_cd              => NULL,
3352                                       x_cash_account_cd             => NULL,
3353                                       x_gl_date                     => NULL,
3354                                       x_gl_posted_date              => NULL,
3355                                       x_posting_control_id          => NULL,
3356                                       x_credit_card_tangible_cd     => NULL,
3357                                       x_credit_card_payee_cd        => NULL,
3358                                       x_credit_card_status_code     => NULL);
3359 
3360       END IF;
3361     END LOOP;
3362   EXCEPTION
3363     WHEN OTHERS THEN
3364       logDetail('Inside insert_application_fee' ||
3365                 'Exception from IGS_AD_APP_REQ_PKG.insert_row ' || SQLERRM ||
3366                 'person_id : ' || IGS_GE_NUMBER.TO_CANN(p_person_id),
3367                 'S');
3368       IF FND_MSG_PUB.Count_Msg < 1 THEN
3369 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
3370 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.insert_application_fee -'||SQLERRM);
3371 	  IGS_GE_MSG_STACK.ADD;
3372        END IF;
3373        App_Exception.Raise_Exception;
3374 
3375   END insert_application_fee;
3376 
3377   /*
3378   --------------------------------------------------------------------------------------------------
3379   --Function to get the major first choice and second choice to be displayed in the printable page
3380   -- Sent by Nagaraju from HQ to be added to the API
3381   --------------------------------------------------------------------------------------------------
3382   */
3383   FUNCTION get_major(p_person_id             IN igs_ad_ps_appl_inst.person_id%TYPE,
3384                      p_admission_appl_number IN igs_ad_ps_appl_inst.admission_appl_number%TYPE,
3385                      p_nominated_course_cd   IN igs_ad_ps_appl_inst.nominated_course_cd%TYPE,
3386                      p_sequence_number       IN igs_ad_ps_appl_inst.sequence_number%TYPE,
3387                      p_rank                  IN igs_ad_unit_sets.rank%TYPE)
3388     RETURN VARCHAR2 IS
3389     CURSOR cur_adm_unit_sets(p_person_id igs_ad_ps_appl_inst.person_id%TYPE,
3390                 p_admission_appl_number igs_ad_ps_appl_inst.admission_appl_number%TYPE,
3391                 p_nominated_course_cd igs_ad_ps_appl_inst.nominated_course_cd%TYPE,
3392                 p_sequence_number igs_ad_ps_appl_inst.sequence_number%TYPE, p_rank igs_ad_unit_sets.rank%TYPE) IS
3393       SELECT u.title
3394         FROM igs_ad_unit_sets us, igs_en_unit_set u
3395        WHERE us.person_id = p_person_id
3396          AND us.admission_appl_number = p_admission_appl_number
3397          AND us.nominated_course_cd = p_nominated_course_cd
3398          AND us.sequence_number = p_sequence_number
3399          AND us.rank = p_rank
3400          AND us.unit_set_cd = u.unit_set_cd
3401          AND us.version_number = u.version_number;
3402 
3403     l_title igs_en_unit_set.title%TYPE;
3404 
3405   BEGIN
3406 
3407     OPEN cur_adm_unit_sets(p_person_id,
3408                            p_admission_appl_number,
3409                            p_nominated_course_cd,
3410                            p_sequence_number,
3411                            p_rank);
3412     FETCH cur_adm_unit_sets
3413       INTO l_title;
3414     CLOSE cur_adm_unit_sets;
3415     RETURN(l_title);
3416   END get_major;
3417 
3418   FUNCTION DATESTR(P_START_DATE DATE, P_END_DATE DATE, P_COMP_DATE DATE)
3419     RETURN VARCHAR2 IS
3420     P_FINAL_STRING VARCHAR2(2000);
3421   BEGIN
3422 
3423     IF P_START_DATE IS NOT NULL AND P_END_DATE IS NOT NULL THEN
3424       P_FINAL_STRING := IGS_GE_DATE.IGSCHAR(P_START_DATE) || ' - ' ||
3425                         IGS_GE_DATE.IGSCHAR(P_END_DATE);
3426     END IF;
3427 
3428     IF P_START_DATE IS NULL AND P_END_DATE IS NULL THEN
3429       IF P_COMP_DATE IS NULL THEN
3430         P_FINAL_STRING := ' - ';
3431       ELSE
3432         P_FINAL_STRING := ' - ' || IGS_GE_DATE.IGSCHAR(P_COMP_DATE);
3433       END IF;
3434     END IF;
3435 
3436     IF P_START_DATE IS NULL AND P_END_DATE IS NOT NULL THEN
3437       P_FINAL_STRING := ' - ' || IGS_GE_DATE.IGSCHAR(P_END_DATE);
3438     END IF;
3439 
3440     IF P_START_DATE IS NOT NULL AND P_END_DATE IS NULL THEN
3441       IF P_COMP_DATE IS NULL THEN
3442         P_FINAL_STRING := IGS_GE_DATE.IGSCHAR(P_START_DATE) || ' - ';
3443       ELSE
3444         P_FINAL_STRING := IGS_GE_DATE.IGSCHAR(P_START_DATE) || ' - ' ||
3445                           IGS_GE_DATE.IGSCHAR(P_COMP_DATE);
3446       END IF;
3447     END IF;
3448 
3449     RETURN P_FINAL_STRING;
3450 
3451   END DATESTR;
3452 
3453   FUNCTION getAltid(x_party_id number) RETURN VARCHAR2 IS
3454     /*----------------------------------------------------------------------------
3455     ||  Created By : stammine
3456     ||  Created On : 01-Oct-2004
3457     ||  Purpose :  Procedure specially designed to get the Concatenated list of Alternate Ids
3458     ||             in the FindPerson Page
3459     ||  Known limitations, enhancements or remarks :
3460     ||  Change History :
3461     ||  Who             When            What
3462     ||  (reverse chronological order - newest change first)
3463         askapoor        31-JAN-05      Modified Cursor c_altpid definition to include validation
3464                                        Sysdate between start_dt and end_dt
3465 
3466     ----------------------------------------------------------------------------*/
3467 
3468     l_altid VARCHAR2(1000);
3469 
3470     CURSOR c_altpid(cp_pe_person_id number) is
3471       SELECT api_person_id, person_id_type
3472         FROM igs_pe_alt_pers_id api
3473        WHERE api.pe_person_id = cp_pe_person_id
3474          AND Sysdate between api.start_dt and nvl(api.end_dt, sysdate);
3475 
3476   BEGIN
3477 
3478     l_altid := NULL;
3479 
3480     FOR cv_caltpid in c_altpid(x_party_id) LOOP
3481       IF l_altid IS NOT NULL THEN
3482         l_altid := l_altid || '<BR>' || cv_caltpid.person_id_type || ' : ' ||
3483                    cv_caltpid.api_person_id;
3484       ELSE
3485         l_altid := cv_caltpid.person_id_type || ' : ' ||
3486                    cv_caltpid.api_person_id;
3487       END IF;
3488     END LOOP;
3489 
3490     RETURN l_altid;
3491   END getAltid;
3492 
3493   FUNCTION getApplid(x_party_id number) RETURN VARCHAR2 IS
3494     /*----------------------------------------------------------------------------
3495     ||  Created By : stammine
3496     ||  Created On : 01-Oct-2004
3497     ||  Purpose :  Procedure specially designed to get the Concatenated list of Application Ids
3498     ||             in the FindPerson Page
3499     ||  Known limitations, enhancements or remarks :
3500     ||  Change History :
3501     ||  Who             When            What
3502     ||  (reverse chronological order - newest change first)
3503     ----------------------------------------------------------------------------*/
3504 
3505     l_applid VARCHAR2(1000);
3506 
3507     CURSOR c_applid(cp_person_id number) IS
3508       SELECT application_id
3509         FROM igs_ad_appl a
3510        WHERE a.person_id = cp_person_id;
3511 
3512   BEGIN
3513     l_applid := NULL;
3514 
3515     FOR cv_applid in c_applid(x_party_id) LOOP
3516       IF l_applid IS NOT NULL THEN
3517         l_applid := l_applid || '<BR>' || cv_applid.application_id;
3518       ELSE
3519         l_applid := cv_applid.application_id;
3520       END IF;
3521     END LOOP;
3522     RETURN l_applid;
3523   END getApplid;
3524 
3525 
3526   /* Added by stammine IGS.M */
3527   -- Local Procedure
3528   -- Concats the list of Incomplete Required Components and Incomplete Optional Components
3529   PROCEDURE concat_req_comps(p_req_flag  IN VARCHAR2,
3530                              p_req_comps IN OUT NOCOPY VARCHAR2,
3531                              p_opt_comps IN OUT NOCOPY VARCHAR2,
3532                              p_comp_desc IN VARCHAR2) AS
3533   BEGIN
3534     IF p_req_flag = 'Y' THEN
3535       IF p_req_comps IS NULL THEN
3536         p_req_comps := p_comp_desc;
3537       ELSE
3538         p_req_comps := p_req_comps || ', ' || p_comp_desc;
3539       END IF;
3540     ELSE
3541       IF p_opt_comps IS NULL THEN
3542         p_opt_comps := p_comp_desc;
3543       ELSE
3544         p_opt_comps := p_opt_comps || ', ' || p_comp_desc;
3545       END IF;
3546     END IF;
3547   END concat_req_comps;
3548 
3549   /* Added procedure which will update the checklist w.r.t Application type configuration. */
3550 
3551   PROCEDURE update_appl_section_stat(p_person_id       IN NUMBER,
3552                                      p_adm_appl_number IN NUMBER,
3553                                      p_page_Name       IN VARCHAR2,
3554                                      p_Appl_Type       IN VARCHAR2,
3555                                      x_message_name    OUT NOCOPY VARCHAR2,
3556                                      x_return_status   OUT NOCOPY VARCHAR2,
3557                                      x_mand_incomplete OUT NOCOPY VARCHAR2) AS
3558     /*****************************************************************************************
3559     Created By: stammine
3560     Date Created : 10-Jun-2005
3561     Purpose: Procedure to update the Checklist Status as per application Type configuration for an Application
3562     Known limitations,enhancements,remarks:
3563     Change History
3564     Who        When          What
3565     *****************************************************************************************/
3566 
3567     -- Cursor for Each Component to check for existance of the respective record
3568     --Personal Details { Basic Information - BASIC_INFO, Address- ADDRESS, Phone- PHONE, Email- EMAIL, Identification- ALT_ID
3569     --Address Details  { Other Names- OTHER_NAMES, Biographic- BIOGRAPHIC, Special Needs- SPECIAL_NEEDS,Privacy- PRIVACY
3570     --Further Details  { Relationships- RELATIONSHIPS, Felony- FELONY, Housing Status- HOUSING_STATUS, Health- HEALTH_INFO}
3571 
3572     -- Residency and Citizenship {Country of Residence- COUNTRY_RESIDENCE, Citizenship- CITIZENSHIP,Language- LANGUAGE, Domicile- DOMICILE}
3573 
3574     -- International Details {Country of Citizenship- COUNTRY_CITIZENSHIP, Visa- VISA, Passport- PASSPORT, Financial Verification- FIN_VER}
3575 
3576     -- Application Details  {Program Preferences- PROGRAM_PREF, Program Preference Details- PROG_PREF_DTLS,
3577     --                       Desired Majors/Minors- DESIRED_UNITS, Educational Goals- EDUC_GOALS, Financial Aid- FIN_AID}
3578 
3579     -- Education {High School- SECONDARY, College/University- POST_SECONDARY, Admission Test Results- ADM_TEST_RESULTS,
3580     --             Qualification Details- QUALIFICATION, Academic Honors- ACAD_HONORS}
3581 
3582     -- Supporting Information {Personal Statements- PERSONAL_STMTS, Supporting Information- SUPPORTING_INFO,
3583     --     Other Institutions Applied- OTHER_INST, Academic Interest- ACAD_INTEREST, Special Talents- SPECIAL_TALENTS,
3584     --     Extracurricular Activities- EXTRACUR_ACTIVITIES, Employment History- EMPLOYMENT_HIST}
3585 
3586     -- Basic Information - BASIC_INFO
3587     -- No validation
3588 
3589     -- Address - ADDRESS
3590     CURSOR c_addr(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3591       SELECT 'x'
3592         FROM IGS_PE_ADDR_V addr, IGS_PE_PARTYSITEUSE_V use
3593        WHERE addr.PERSON_ID = cp_person_id
3594          AND addr.STATUS = 'A'
3595                  AND addr.party_site_id = use.party_site_id
3596                  AND use.site_use_type IN
3597                  (SELECT SS_Lookup_code
3598                 FROM igs_ad_ss_lookups
3599                WHERE ss_lookup_type = 'SITE_USE_CODE'
3600                  AND admission_application_type = cp_ApplType
3601                  AND Closed_flag <>  'Y');
3602 
3603     -- Phone - PHONE
3604     CURSOR c_phone(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3605       SELECT 'x'
3606         FROM hz_contact_points
3607        WHERE CONTACT_POINT_TYPE = 'PHONE'
3608          AND OWNER_TABLE_NAME = 'HZ_PARTIES'
3609          AND STATUS = 'A'
3610          AND PHONE_LINE_TYPE IN
3611              (SELECT SS_Lookup_code
3612                 FROM igs_ad_ss_lookups
3613                WHERE ss_lookup_type = 'PHONE_LINE_TYPE'
3614                  AND admission_application_type = cp_ApplType
3615                  AND Closed_flag <>  'Y')
3616          AND OWNER_TABLE_ID = cp_person_id;
3617 
3618     -- Email- EMAIL
3619     CURSOR c_email(cp_person_id igs_ad_appl.person_id%TYPE) IS
3620       SELECT 'x'
3621         FROM hz_contact_points
3622        WHERE CONTACT_POINT_TYPE = 'EMAIL'
3623          AND OWNER_TABLE_NAME = 'HZ_PARTIES'
3624          AND STATUS = 'A'
3625          AND OWNER_TABLE_ID = cp_person_id;
3626 
3627     -- Identification- ALT_ID
3628     CURSOR c_altId(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3629       SELECT 'x'
3630         FROM IGS_PE_ALT_PERS_ID
3631        WHERE PE_PERSON_ID = cp_person_id
3632          AND PERSON_ID_TYPE IN
3633              (SELECT SS_Lookup_code
3634                 FROM igs_ad_ss_lookups
3635                WHERE ss_lookup_type = 'PERSON_ID_TYPE'
3636                  AND admission_application_type = cp_ApplType
3637                  AND Closed_flag <>  'Y')
3638         AND (END_DT IS NULL OR START_DT <> END_DT);
3639 
3640     -- Other Names- OTHER_NAMES
3641     CURSOR c_other_Names(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3642       SELECT 'x'
3643         FROM IGS_PE_PERSON_ALIAS_V pon
3644        WHERE pon.PERSON_ID = cp_person_id
3645          AND ALIAS_TYPE IN
3646              (SELECT SS_Lookup_code
3647                 FROM igs_ad_ss_lookups
3648                WHERE ss_lookup_type = 'PE_ALIAS_TYPE'
3649                  AND admission_application_type = cp_ApplType
3650                  AND Closed_flag <>  'Y');
3651   -- Ask PM for Date Check
3652 
3653     -- Biographic- BIOGRAPHIC
3654     -- check only in IGS_PE_RACE
3655    CURSOR c_race (cp_person_id igs_ad_appl.person_id%TYPE) IS
3656       SELECT 'x'
3657         FROM IGS_PE_RACE race
3658        WHERE race.PERSON_ID = cp_person_id;
3659 
3660     -- Special Needs- SPECIAL_NEEDS
3661     CURSOR c_spl_Needs(cp_person_id igs_ad_appl.person_id%TYPE) IS
3662       SELECT 'x' FROM IGS_PE_PERS_DISABLTY WHERE person_id = cp_person_id
3663          AND SYSDATE <= NVL(END_DATE,SYSDATE);
3664 
3665     -- Privacy- PRIVACY
3666     CURSOR c_privacy(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3667       SELECT 'x'
3668         FROM IGS_PE_PRIV_LEVEL priv
3669        WHERE PERSON_ID = cp_person_id
3670          AND to_char(DATA_GROUP_ID) IN
3671              (SELECT SS_Lookup_code
3672                 FROM igs_ad_ss_lookups
3673                WHERE ss_lookup_type = 'PRIVACY_PREF_DATA_GROUP'
3674                  AND admission_application_type = cp_ApplType
3675                  AND Closed_flag <>  'Y');
3676 
3677     -- Relationships- RELATIONSHIPS
3678     CURSOR c_relations(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3679       SELECT 'x'
3680         FROM IGS_PE_HZ_REL_V rel
3681        WHERE rel.SUBJECT_ID = cp_person_id
3682          AND rel.SUBJECT_TYPE = 'PERSON'
3683          AND rel.OBJECT_TYPE = 'PERSON'
3684          AND rel.STATUS = 'A'
3685          AND SYSDATE BETWEEN rel.START_DATE AND NVL(rel.END_DATE, SYSDATE)
3686          AND  RELATIONSHIP_CODE IN
3687              (SELECT SS_Lookup_code
3688                 FROM igs_ad_ss_lookups
3689                WHERE ss_lookup_type = 'PARTY_RELATIONS_TYPE'
3690                  AND admission_application_type = cp_ApplType
3691                  AND Closed_flag <>  'Y');
3692 
3693     -- Felony- FELONY
3694     CURSOR c_felony(cp_person_id igs_ad_appl.person_id%TYPE) IS
3695       SELECT FELONY_CONVICTED_FLAG
3696         FROM IGS_PE_HZ_PARTIES
3697        WHERE PARTY_ID = cp_person_id;
3698 
3699     -- Housing Status- HOUSING_STATUS
3700     CURSOR c_housing(cp_person_id igs_ad_appl.person_id%TYPE) IS
3701       SELECT 'x'
3702         FROM IGS_PE_TEACH_PERIODS_ALL
3703        WHERE person_id = cp_person_id;
3704 
3705     -- Health- HEALTH_INFO
3706     -- Health Insurance
3707     CURSOR c_health_insu(cp_person_id igs_ad_appl.person_id%TYPE) IS
3708       SELECT 'x' FROM IGS_PE_HLTH_INS_ALL
3709       WHERE person_id = cp_person_id
3710       AND SYSDATE BETWEEN START_DATE AND NVL(END_DATE,SYSDATE);
3711 
3712      -- Immunization
3713     CURSOR c_health_immu(cp_person_id igs_ad_appl.person_id%TYPE) IS
3714       SELECT 'x' FROM IGS_PE_IMMU_DTLS WHERE person_id = cp_person_id
3715       AND SYSDATE BETWEEN START_DATE AND NVL(END_DATE,SYSDATE);
3716 
3717     -- Applicant Citizenship- CITIZENSHIP
3718     -- None Dynamic Behaviour
3719 
3720     -- Country of Residence- COUNTRY_RESIDENCE
3721     CURSOR c_residence(cp_person_id igs_ad_appl.person_id%TYPE) IS
3722       SELECT 'x'
3723         FROM IGS_PE_EIT T
3724        WHERE T.INFORMATION_TYPE = 'PE_STAT_RES_COUNTRY'
3725          AND Person_id = cp_person_id;
3726 
3727     -- Language- LANGUAGE
3728     CURSOR c_lang(cp_person_id igs_ad_appl.person_id%TYPE) IS
3729       SELECT 'x'
3730         FROM HZ_PERSON_LANGUAGE lang
3731        WHERE PARTY_ID = cp_person_id
3732          AND STATUS = 'A';
3733 
3734     -- Domicile- DOMICILE
3735     -- State of Residence
3736     CURSOR c_sor(cp_person_id igs_ad_appl.person_id%TYPE) IS
3737       SELECT 'x'
3738         FROM IGS_PE_EIT
3739        WHERE INFORMATION_TYPE = 'PE_STAT_RES_STATE'
3740          AND Person_id = cp_person_id;
3741 
3742     -- Voter Info
3743     CURSOR c_vinfo(cp_person_id igs_ad_appl.person_id%TYPE) IS
3744       SELECT 'x' FROM IGS_PE_VOTE_INFO_ALL WHERE Person_id = cp_person_id;
3745 
3746     -- Income Tax
3747     CURSOR c_itax(cp_person_id igs_ad_appl.person_id%TYPE) IS
3748       SELECT 'x' FROM IGS_PE_INCOME_TAX_ALL WHERE Person_id = cp_person_id;
3749 
3750     -- Military Service
3751     CURSOR c_military(cp_person_id igs_ad_appl.person_id%TYPE) IS
3752       SELECT 'x' FROM IGS_PE_MIL_SERVICES_ALL WHERE Person_id = cp_person_id;
3753 
3754     -- Country of Citizenship- COUNTRY_CITIZENSHIP
3755     CURSOR c_citizenship(cp_person_id igs_ad_appl.person_id%TYPE) IS
3756       SELECT 'x'
3757         FROM HZ_CITIZENSHIP cz
3758        WHERE cz.PARTY_ID = cp_person_id
3759          AND cz.STATUS = 'A';
3760 
3761     -- Visa- VISA
3762     CURSOR c_visa(cp_person_id igs_ad_appl.person_id%TYPE) IS
3763       SELECT 'x'
3764         FROM IGS_PE_VISIT_HISTRY_V visa
3765        WHERE visa.PERSON_ID = cp_person_id;
3766 
3767     -- Passport- PASSPORT
3768     CURSOR c_passport(cp_person_id igs_ad_appl.person_id%TYPE) IS
3769       SELECT 'x'
3770         FROM IGS_PE_PASSPORT pport
3771        WHERE pport.PERSON_ID = cp_person_id;
3772 
3773     -- Financial Verification- FIN_VER
3774     -- None
3775 
3776     -- Program Preferences- PROGRAM_PREF
3777     CURSOR c_prog_pref(cp_adm_appl_number IGS_SS_APP_PGM_STG.ss_adm_appl_id%TYPE) IS
3778       SELECT SS_ADMAPPL_PGM_ID, ATTENDANCE_TYPE,
3779              ATTENDANCE_MODE,
3780              NOMINATED_COURSE_CD
3781         FROM IGS_SS_APP_PGM_STG
3782        WHERE ss_adm_appl_id = cp_adm_appl_number;
3783 
3784     -- Program Preference Details- PROG_PREF_DTLS
3785     CURSOR c_prog_dtls(cp_adm_appl_number IGS_SS_APP_PGM_STG.ss_adm_appl_id%TYPE) IS
3786       SELECT SS_ADMAPPL_PGM_ID,
3787              ENTRY_STATUS,
3788              ENTRY_LEVEL,
3789              FINAL_UNIT_SET_CD,
3790              NOMINATED_COURSE_CD,
3791              SCH_APL_TO_ID
3792         FROM IGS_SS_APP_PGM_STG
3793        WHERE ss_adm_appl_id = cp_adm_appl_number;
3794 
3795     -- Desired Majors/Minors- DESIRED_UNITS
3796     CURSOR c_dunits(cp_ss_admappl_pgm igs_ss_ad_unitse_stg.ss_admappl_pgm_id%TYPE) IS
3797       SELECT 'x'
3798         FROM IGS_SS_AD_UNITSE_STG
3799        WHERE ss_admappl_pgm_id = cp_ss_admappl_pgm;
3800 
3801     -- Educational Goals- EDUC_GOALS
3802     CURSOR c_educ_goals(cp_ss_admappl_pgm igs_ss_ad_unitse_stg.ss_admappl_pgm_id%TYPE) IS
3803       SELECT 'x'
3804         FROM IGS_SS_AD_EDUGOA_STG
3805        WHERE ss_admappl_pgm_id = cp_ss_admappl_pgm;
3806 
3807     -- Financial Aid- FIN_AID
3808     CURSOR c_fin_aid(cp_adm_appl_number IGS_SS_APP_PGM_STG.ss_adm_appl_id%TYPE) IS
3809       SELECT APPLY_FOR_FINAID, FINAID_APPLY_DATE
3810         FROM IGS_SS_APP_PGM_STG
3811        WHERE ss_adm_appl_id = cp_adm_appl_number;
3812 
3813     -- High School- SECONDARY
3814     CURSOR c_sec(cp_person_id igs_ad_appl.person_id%TYPE) IS
3815       SELECT 'x'
3816         FROM HZ_EDUCATION HE
3817        WHERE HE.PARTY_ID = cp_person_id
3818          AND HE.STATUS = 'A'
3819          AND EXISTS (SELECT 'X'
3820 		     FROM IGS_OR_ORG_INST_TYPE_ALL
3821 		     WHERE INSTITUTION_TYPE = DECODE (HE.SCHOOL_PARTY_ID, NULL, NULL,
3822 		     (SELECT OI_INSTITUTION_TYPE
3823 		      FROM IGS_PE_HZ_PARTIES
3824 		      WHERE HE.SCHOOL_PARTY_ID = PARTY_ID
3825 			    AND INST_ORG_IND = 'I'
3826 		     )
3827 		    )
3828 	AND SYSTEM_INST_TYPE = 'SECONDARY');
3829 
3830     -- College/University- POST_SECONDARY
3831     CURSOR c_post_sec(cp_person_id igs_ad_appl.person_id%TYPE) IS
3832       SELECT 'x'
3833         FROM HZ_EDUCATION HE
3834        WHERE HE.PARTY_ID = cp_person_id
3835          AND HE.STATUS = 'A'
3836          AND EXISTS (SELECT 'X'
3837 			FROM IGS_OR_ORG_INST_TYPE_ALL
3838 			WHERE INSTITUTION_TYPE = DECODE (HE.SCHOOL_PARTY_ID, NULL, NULL, (SELECT OI_INSTITUTION_TYPE
3839 			FROM IGS_PE_HZ_PARTIES
3840 			WHERE HE.SCHOOL_PARTY_ID = PARTY_ID
3841 			AND INST_ORG_IND = 'I') )
3842 			AND SYSTEM_INST_TYPE IN ('POST-SECONDARY', 'OTHER')
3843 		    );
3844 
3845     -- Local College/University
3846     CURSOR c_local_post_sec(cp_person_id igs_ad_appl.person_id%TYPE) IS
3847       SELECT 'x'
3848        FROM igs_en_stdnt_ps_att_all psattmpt
3849       WHERE psattmpt.person_id = cp_person_id
3850         AND psattmpt.course_attempt_status <> 'UNCONFIRM'
3851         AND((NVL(fnd_profile.VALUE('CAREER_MODEL_ENABLED'), 'N') = 'N')
3852 	     OR(fnd_profile.VALUE('CAREER_MODEL_ENABLED') = 'Y' AND psattmpt.primary_program_type = 'PRIMARY'));
3853 
3854 
3855     -- Admission Test Results- ADM_TEST_RESULTS
3856     CURSOR c_test_rslts(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3857       SELECT 'x'
3858         FROM IGS_AD_TEST_RESULTS
3859        WHERE PERSON_ID = cp_person_id
3860          AND ADMISSION_TEST_TYPE IN
3861              (SELECT SS_Lookup_code
3862                 FROM igs_ad_ss_lookups
3863                WHERE ss_lookup_type = 'ADMISSION_TEST_TYPE'
3864                  AND admission_application_type = cp_ApplType
3865                  AND Closed_flag <>  'Y');
3866 
3867     -- Qualification Details- QUALIFICATION
3868     CURSOR c_qual(cp_person_id igs_ad_appl.person_id%TYPE) IS
3869       SELECT 'x' FROM IGS_UC_QUAL_DETS WHERE person_id = cp_person_id;
3870 
3871     -- Academic Honors- ACAD_HONORS
3872     CURSOR c_acad_hon(cp_person_id igs_ad_appl.person_id%TYPE) IS
3873       SELECT 'x' FROM IGS_PE_ACAD_HONORS WHERE person_id = cp_person_id;
3874 
3875     -- Personal Statements- PERSONAL_STMTS
3876     -- Cursors c_perstat and c_perstat_group added by abhiskum
3877     CURSOR c_perstat(cp_person_id igs_ad_appl.person_id%TYPE,
3878                          cp_adm_appl_number IGS_SS_APP_PGM_STG.ss_adm_appl_id%TYPE,
3879                          cp_group_number IGS_AD_APTYP_PESTAT.group_number%TYPE) IS
3880         SELECT stg.persl_stat_type statement,
3881            DECODE(NVL(mandatory,'N'),'N','No','Yes') required,
3882            group_number,
3883            stg.SS_PERSTAT_ID SS_PERSTAT_ID,
3884            stg.attach_exists
3885         FROM  IGS_SS_APPL_PERSTAT stg,
3886              IGS_AD_APTYP_PESTAT  aptypperstat
3887         WHERE   stg.persl_Stat_type = aptypperstat.persl_Stat_type
3888         AND stg.admission_application_type = aptypperstat.admission_application_type
3889         AND stg.ss_Adm_appl_id = cp_adm_appl_number
3890         AND stg.PERSON_ID = cp_person_id
3891         AND group_number = cp_group_number ;
3892 
3893     CURSOR c_perstat_group(cp_person_id igs_ad_appl.person_id%TYPE,
3894                                cp_adm_appl_number IGS_SS_APP_PGM_STG.ss_adm_appl_id%TYPE,
3895                                cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3896         SELECT
3897            group_name  statement,
3898            DECODE(NVL(group_required_flag,'N'),'N','No','Yes') required,
3899            group_number ,
3900            0 SS_PERSTAT_ID,
3901            null attach_exists,
3902            group_min
3903         FROM IGS_AD_PESTAT_GROUP
3904         WHERE group_number IN
3905           (SELECT distinct group_number FROM IGS_SS_APPL_PERSTAT stg, IGS_AD_APTYP_PESTAT setup
3906           WHERE setup.persl_Stat_type = stg.persl_Stat_type
3907           AND setup.admission_application_type = stg.admission_application_type
3908           AND stg.ss_Adm_appl_id = cp_adm_appl_number AND stg.PERSON_ID = cp_person_id )
3909         AND admission_application_type  = cp_ApplType
3910         AND NVL(GROUP_REQUIRED_FLAG,'N') = 'Y'
3911         UNION ALL
3912         SELECT
3913            stg.persl_stat_type statement,
3914            DECODE(NVL(mandatory,'N'),'N','No','Yes') required,
3915            -1 group_number,
3916            stg.SS_PERSTAT_ID SS_PERSTAT_ID,
3917            stg.attach_exists,
3918            0 group_min
3919         FROM  IGS_SS_APPL_PERSTAT stg,
3920              IGS_AD_APTYP_PESTAT  aptypperstat
3921         WHERE   stg.persl_Stat_type = aptypperstat.persl_Stat_type
3922         AND stg.admission_application_type = aptypperstat.admission_application_type
3923         AND group_number IS NULL
3924         AND stg.ss_Adm_appl_id = cp_adm_appl_number
3925         AND stg.PERSON_ID = cp_person_id ;
3926 
3927     -- Supporting Information- SUPPORTING_INFO
3928     CURSOR c_supp_info(cp_person_id igs_ad_appl.person_id%TYPE, cp_ApplType igs_ad_appl.APPLICATION_TYPE%TYPE) IS
3929       SELECT 'x'
3930         FROM IGS_PE_CREDENTIALS
3931        WHERE person_id = cp_person_id
3932          AND to_char(CREDENTIAL_TYPE_ID) IN
3933              (SELECT SS_Lookup_code
3934                 FROM igs_ad_ss_lookups
3935                WHERE ss_lookup_type = 'CREDENTIAL_TYPE'
3936                  AND admission_application_type = cp_ApplType
3937                  AND Closed_flag <>  'Y');
3938 
3939     -- Other Institutions Applied- OTHER_INST
3940     CURSOR c_oth_inst(cp_Appl_Num IGS_SS_AD_OTHINS_STG.SS_ADM_APPL_ID%TYPE) IS
3941       SELECT 'x'
3942         FROM IGS_SS_AD_OTHINS_STG
3943        WHERE SS_ADM_APPL_ID = cp_Appl_Num;
3944 
3945     -- Academic Interest- ACAD_INTEREST
3946     CURSOR c_acad_int(cp_Appl_Num IGS_SS_AD_ACADIN_STG.SS_ADM_APPL_ID%TYPE) IS
3947       SELECT 'x'
3948         FROM IGS_SS_AD_ACADIN_STG
3949        WHERE SS_ADM_APPL_ID = cp_Appl_Num;
3950 
3951     -- Special Talents- SPECIAL_TALENTS
3952     CURSOR c_spl_tal(cp_Appl_Num IGS_SS_AD_SPLTAL_STG.SS_ADM_APPL_ID%TYPE) IS
3953       SELECT 'x'
3954         FROM IGS_SS_AD_SPLTAL_STG
3955        WHERE SS_ADM_APPL_ID = cp_Appl_Num;
3956 
3957     -- Extracurricular Activities- EXTRACUR_ACTIVITIES
3958     CURSOR c_ext_curr(cp_person_id igs_ad_appl.person_id%TYPE) IS
3959     SELECT 'x'
3960 	FROM HZ_PERSON_INTEREST PI, IGS_AD_HZ_EXTRACURR_ACT HEA
3961 	WHERE PI.PERSON_INTEREST_ID = HEA.PERSON_INTEREST_ID
3962 	AND PI.PARTY_ID = cp_person_id;
3963 
3964     -- Employment History- EMPLOYMENT_HIST
3965     CURSOR c_emp_hist(cp_person_id igs_ad_appl.person_id%TYPE) IS
3966       SELECT 'x' FROM HZ_EMPLOYMENT_HISTORY WHERE party_id = cp_person_id;
3967 
3968     -- Cursor for selecting components for a given page.
3969     CURSOR c_pgcomps(cp_Appl_Type IGS_AD_SS_APPL_COMPS.Admission_application_type%TYPE, cp_page_Name IGS_AD_SS_APPL_COMPS.page_name%TYPE) IS
3970       SELECT Admission_application_type ApplType,
3971              page_name PageName,
3972              component_code Component,
3973              comp_disp_name ComponentDesc,
3974              required_flag
3975         FROM IGS_AD_SS_APPL_COMPS
3976        WHERE Admission_application_type = cp_Appl_Type
3977          AND page_name = cp_page_Name
3978          AND include_flag = 'Y';
3979 
3980     -- Cursor to check whether AppType has required components for a given page.
3981     CURSOR c_req_comps_exist(cp_Appl_Type IGS_AD_SS_APPL_COMPS.Admission_application_type%TYPE, cp_page_Name IGS_AD_SS_APPL_COMPS.page_name%TYPE) IS
3982       SELECT 'x'
3983         FROM IGS_AD_SS_APPL_COMPS
3984        WHERE Admission_application_type = cp_Appl_Type
3985          AND page_name = cp_page_Name
3986          AND include_flag = 'Y'
3987          AND required_flag = 'Y';
3988 
3989 
3990     lv_temp_rec       VARCHAR2(10);
3991     c_felony_rec      c_felony%ROWTYPE;
3992     c_prog_pref_rec   c_prog_pref%ROWTYPE;
3993     c_prog_dtls_rec   c_prog_dtls%ROWTYPE;
3994 
3995     c_fin_aid_rec     c_fin_aid%ROWTYPE;
3996 
3997     -- l_perstat_group_rec,l_perstat_rec,l_flag and l_perstat_count added by abhiskum
3998     -- for Personal Statements Validation
3999     l_perstat_group_rec c_perstat_group%ROWTYPE := NULL;
4000     l_perstat_rec c_perstat%ROWTYPE := NULL;
4001     l_flag VARCHAR2(1) := 'Y';
4002     l_perstat_count NUMBER;
4003 
4004     c_pgcomps_rec         c_pgcomps%ROWTYPE;
4005     c_req_comps_exist_rec c_req_comps_exist%ROWTYPE;
4006     l_comp_status         VARCHAR2(30);
4007     l_req_comps           VARCHAR2(2000);
4008     l_opt_comps           VARCHAR2(2000);
4009     finaidrecordfound  VARCHAR2(1);
4010     progpreffound      VARCHAR2(1);
4011 
4012     l_prog_label  VARCHAR2(100);
4013     l_label  VARCHAR2(500);
4014     l_debug_str VARCHAR2(4000);
4015 
4016 
4017   BEGIN
4018 
4019     l_prog_label := 'igs.plsql.igs_ad_ss_gen_001.update_appl_section_stat';
4020     l_label      := 'igs.plsql.igs_ad_ss_gen_001.update_appl_section_stat.start';
4021 
4022 
4023     -- Status Flag = Optional
4024     -- String Required_componets =  Null
4025     -- Open the cursor for the Included components list
4026     -- Loop thru the cursor and Concatenate the component_display name to Require_Componnents if the component doesn't have the record
4027     -- If the Required_components string is not null then Update the Checklist record with In-Progress Status and return the Required_Components String.
4028     -- If the Required_components string is null then Update the Checklist record with Completed Status and return Null.
4029     -- If there are no requied components in the given page Update the Checklist record with Optional Status and return Null.
4030 
4031     l_req_comps     := null;
4032     l_opt_comps     := null;
4033     x_return_status := 'S';
4034 
4035 
4036      FOR pgComps IN c_pgcomps(p_Appl_Type, p_page_Name)
4037      LOOP
4038       IF pgComps.Component = 'ADDRESS' THEN
4039              OPEN c_addr(p_person_id, p_Appl_Type);
4040              FETCH c_addr INTO lv_temp_rec;
4041              IF c_addr%NOTFOUND THEN
4042                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4043              END IF;
4044              IF c_addr%ISOPEN THEN
4045                 CLOSE c_addr;
4046              END IF;
4047 
4048        ELSIF pgComps.Component = 'PHONE' THEN
4049              OPEN c_phone(p_person_id, p_Appl_Type);
4050              FETCH c_phone INTO lv_temp_rec;
4051              IF c_phone%NOTFOUND THEN
4052                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4053              END IF;
4054              IF c_phone%ISOPEN THEN
4055                 CLOSE c_phone;
4056              END IF;
4057 
4058        ELSIF pgComps.Component = 'EMAIL' THEN
4059              OPEN c_email(p_person_id);
4060              FETCH c_email INTO lv_temp_rec;
4061              IF c_email%NOTFOUND THEN
4062                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4063              END IF;
4064              IF c_email%ISOPEN THEN
4065                 CLOSE c_email;
4066              END IF;
4067 
4068        ELSIF pgComps.Component = 'ALT_ID' THEN
4069              OPEN c_altId(p_person_id, p_Appl_Type);
4070              FETCH c_altId INTO lv_temp_rec;
4071              IF c_altId%NOTFOUND THEN
4072                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4073              END IF;
4074              IF c_altId%ISOPEN THEN
4075                 CLOSE c_altId;
4076              END IF;
4077 
4078        ELSIF pgComps.Component = 'OTHER_NAMES' THEN
4079              OPEN c_other_Names(p_person_id, p_Appl_Type);
4080              FETCH c_other_Names INTO lv_temp_rec;
4081              IF c_other_Names%NOTFOUND THEN
4082                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4083              END IF;
4084              IF c_other_Names%ISOPEN THEN
4085                 CLOSE c_other_Names;
4086              END IF;
4087 
4088        ELSIF pgComps.Component = 'BIOGRAPHIC' THEN
4089              OPEN c_race(p_person_id);
4090              FETCH c_race INTO lv_temp_rec;
4091              IF c_race%NOTFOUND THEN
4092                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4093              END IF;
4094              IF c_race%ISOPEN THEN
4095                 CLOSE c_race;
4096              END IF;
4097 
4098        ELSIF pgComps.Component = 'SPECIAL_NEEDS' THEN
4099              OPEN c_spl_Needs(p_person_id);
4100              FETCH c_spl_Needs INTO lv_temp_rec;
4101              IF c_spl_Needs%NOTFOUND THEN
4102                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4103              END IF;
4104              IF c_spl_Needs%ISOPEN THEN
4105                 CLOSE c_spl_Needs;
4106              END IF;
4107 
4108        ELSIF pgComps.Component = 'PRIVACY' THEN
4109              OPEN c_privacy(p_person_id, p_Appl_Type);
4110              FETCH c_privacy INTO lv_temp_rec;
4111              IF c_privacy%NOTFOUND THEN
4112                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4113              END IF;
4114              IF c_privacy%ISOPEN THEN
4115                 CLOSE c_privacy;
4116              END IF;
4117 
4118        ELSIF pgComps.Component = 'RELATIONSHIPS' THEN
4119              OPEN c_relations(p_person_id, p_Appl_Type);
4120              FETCH c_relations INTO lv_temp_rec;
4121              IF c_relations%NOTFOUND THEN
4122                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4123              END IF;
4124              IF c_relations%ISOPEN THEN
4125                 CLOSE c_relations;
4126              END IF;
4127 
4128        ELSIF pgComps.Component = 'FELONY' THEN
4129              OPEN c_felony(p_person_id);
4130              FETCH c_felony INTO c_felony_rec;
4131              IF c_felony%NOTFOUND THEN
4132                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4133              ELSIF c_felony_rec.FELONY_CONVICTED_FLAG IS NULL THEN
4134                 concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4135              END IF;
4136              IF c_felony%ISOPEN THEN
4137                 CLOSE c_felony;
4138              END IF;
4139 
4140        ELSIF pgComps.Component = 'HOUSING_STATUS' THEN
4141              OPEN c_housing(p_person_id);
4142              FETCH c_housing INTO lv_temp_rec;
4143              IF c_housing%NOTFOUND THEN
4144                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4145              END IF;
4146              IF c_housing%ISOPEN THEN
4147                 CLOSE c_housing;
4148              END IF;
4149 
4150        ELSIF pgComps.Component = 'HEALTH_INSU' THEN
4151              OPEN c_health_insu(p_person_id);
4152              FETCH c_health_insu INTO lv_temp_rec;
4153              IF c_health_insu%NOTFOUND THEN
4154                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4155              END IF;
4156              IF c_health_insu%ISOPEN THEN
4157                 CLOSE c_health_insu;
4158              END IF;
4159 
4160        ELSIF pgComps.Component = 'HEALTH_IMMU' THEN
4161              OPEN c_health_immu(p_person_id);
4162              FETCH c_health_immu INTO lv_temp_rec;
4163              IF c_health_immu%NOTFOUND THEN
4164                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4165              END IF;
4166              IF c_health_immu%ISOPEN THEN
4167                 CLOSE c_health_immu;
4168              END IF;
4169 
4170        ELSIF pgComps.Component = 'COUNTRY_RESIDENCE' THEN
4171              OPEN c_residence(p_person_id);
4172              FETCH c_residence INTO lv_temp_rec;
4173              IF c_residence%NOTFOUND THEN
4174                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4175              END IF;
4176              IF c_residence%ISOPEN THEN
4177                 CLOSE c_residence;
4178              END IF;
4179 
4180        ELSIF pgComps.Component = 'LANGUAGE' THEN
4181              OPEN c_lang(p_person_id);
4182              FETCH c_lang INTO lv_temp_rec;
4183              IF c_lang%NOTFOUND THEN
4184                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4185              END IF;
4186              IF c_lang%ISOPEN THEN
4187                 CLOSE c_lang;
4188              END IF;
4189 
4190        ELSIF pgComps.Component = 'STATE_RESI' THEN
4191              OPEN c_sor(p_person_id);
4192              FETCH c_sor INTO lv_temp_rec;
4193              IF c_sor%NOTFOUND THEN
4194                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4195              END IF;
4196              IF c_sor%ISOPEN THEN
4197                 CLOSE c_sor;
4198              END IF;
4199 
4200        ELSIF pgComps.Component = 'VOTER_INFO' THEN
4201              OPEN c_vinfo(p_person_id);
4202              FETCH c_vinfo INTO lv_temp_rec;
4203              IF c_vinfo%NOTFOUND THEN
4204                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4205              END IF;
4206              IF c_vinfo%ISOPEN THEN
4207                 CLOSE c_vinfo;
4208              END IF;
4209 
4210        ELSIF pgComps.Component = 'INCOME_TAX' THEN
4211              OPEN c_itax(p_person_id);
4212              FETCH c_itax INTO lv_temp_rec;
4213              IF c_itax%NOTFOUND THEN
4214                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4215              END IF;
4216              IF c_itax%ISOPEN THEN
4217                 CLOSE c_itax;
4218              END IF;
4219 
4220       /* ELSIF pgComps.Component = 'MILITARY' THEN
4221              OPEN c_military(p_person_id);
4222              FETCH c_military INTO lv_temp_rec;
4223              IF c_military%NOTFOUND THEN
4224                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4225              END IF;
4226              IF c_military%ISOPEN THEN
4227                 CLOSE c_military;
4228              END IF; */
4229 
4230        ELSIF pgComps.Component IN  ('COUNTRY_CITIZENSHIP','CITIZENSHIP') THEN
4231              OPEN c_citizenship(p_person_id);
4232              FETCH c_citizenship INTO lv_temp_rec;
4233              IF c_citizenship%NOTFOUND THEN
4234                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4235              END IF;
4236              IF c_citizenship%ISOPEN THEN
4237                 CLOSE c_citizenship;
4238              END IF;
4239 
4240        ELSIF pgComps.Component = 'VISA' THEN
4241              OPEN c_visa(p_person_id);
4242              FETCH c_visa INTO lv_temp_rec;
4243              IF c_visa%NOTFOUND THEN
4244                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4245              END IF;
4246              IF c_visa%ISOPEN THEN
4247                 CLOSE c_visa;
4248              END IF;
4249 
4250        ELSIF pgComps.Component = 'PASSPORT' THEN
4251              OPEN c_passport(p_person_id);
4252              FETCH c_passport INTO lv_temp_rec;
4253              IF c_passport%NOTFOUND THEN
4254                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4255              END IF;
4256              IF c_passport%ISOPEN THEN
4257                 CLOSE c_passport;
4258              END IF;
4259 
4260        -- ELSIF pgComps.Component = 'FIN_VER' THEN
4261        -- None
4262 
4263        ELSIF pgComps.Component = 'PROGRAM_PREF' THEN
4264              OPEN c_prog_pref(p_adm_appl_number);
4265              FETCH c_prog_pref INTO c_prog_pref_rec;
4266              IF c_prog_pref%NOTFOUND THEN
4267                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4268              END IF;
4269              IF c_prog_pref%ISOPEN THEN
4270                 CLOSE c_prog_pref;
4271              END IF;
4272 
4273     /*   ELSIF pgComps.Component = 'PROG_PREF_DTLS' THEN
4274              OPEN c_prog_dtls(p_adm_appl_number);
4275              FETCH c_prog_dtls INTO c_prog_dtls_rec;
4276              IF c_prog_dtls%NOTFOUND THEN
4277                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4278              END IF;
4279              IF c_prog_dtls%ISOPEN THEN
4280                 CLOSE c_prog_dtls;
4281              END IF;
4282       */
4283 
4284        ELSIF pgComps.Component = 'DESIRED_UNITS' THEN
4285              progpreffound := 'N' ;
4286              FOR c_prog_pref_rec_desus IN c_prog_pref(p_adm_appl_number) LOOP
4287                progpreffound := 'Y';
4288                OPEN c_dunits(c_prog_pref_rec_desus.ss_admappl_pgm_id);
4289                FETCH c_dunits INTO lv_temp_rec;
4290                  IF c_dunits%NOTFOUND THEN
4291                    concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4292                    CLOSE c_dunits;
4293                    EXIT;
4294                  END IF;
4295                IF c_dunits%ISOPEN THEN
4296                  CLOSE c_dunits;
4297                END IF;
4298                IF progpreffound = 'N' THEN
4299                    concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4300                END IF;
4301              END LOOP;
4302 
4303 
4304 
4305        ELSIF pgComps.Component = 'EDUC_GOALS' THEN
4306              progpreffound := 'N' ;
4307              FOR c_prog_pref_rec_deedu IN c_prog_pref(p_adm_appl_number) LOOP
4308                progpreffound := 'Y';
4309                OPEN c_educ_goals(c_prog_pref_rec_deedu.ss_admappl_pgm_id);
4310                FETCH c_educ_goals INTO lv_temp_rec;
4311                  IF c_educ_goals%NOTFOUND THEN
4312                    concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4313                    CLOSE c_educ_goals;
4314                    EXIT;
4315                  END IF;
4316                IF c_educ_goals%ISOPEN THEN
4317                  CLOSE c_educ_goals;
4318                END IF;
4319                IF progpreffound = 'N' THEN
4320                    concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4321                END IF;
4322              END LOOP;
4323 
4324        ELSIF pgComps.Component = 'FIN_AID' THEN
4325              finaidrecordfound := 'N';
4326              FOR c_fin_aid_rec IN c_fin_aid(p_adm_appl_number) LOOP
4327                finaidrecordfound := 'Y';
4328                 IF c_fin_aid_rec.apply_for_finaid IS NULL THEN
4329                   finaidrecordfound := 'N';
4330                   EXIT;
4331                 END IF;
4332              END LOOP;
4333 
4334              IF finaidrecordfound ='N' THEN
4335                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4336              END IF;
4337 
4338 
4339        ELSIF pgComps.Component = 'SECONDARY' THEN
4340              OPEN c_sec(p_person_id);
4341              FETCH c_sec INTO lv_temp_rec;
4342              IF c_sec%NOTFOUND THEN
4343                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4344              END IF;
4345              IF c_sec%ISOPEN THEN
4346                 CLOSE c_sec;
4347              END IF;
4348 
4349        ELSIF pgComps.Component = 'POST_SECONDARY' THEN
4350              OPEN c_post_sec(p_person_id);
4351              FETCH c_post_sec INTO lv_temp_rec;
4352              IF c_post_sec%NOTFOUND THEN
4353 	        -- Check for program attempt in local institution.
4354 	        OPEN c_local_post_sec(p_person_id);
4355                 FETCH c_local_post_sec INTO lv_temp_rec;
4356                 IF c_local_post_sec%NOTFOUND THEN
4357                     concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4358                 END IF;
4359                 IF c_local_post_sec%ISOPEN THEN
4360                    CLOSE c_local_post_sec;
4361                 END IF;
4362              END IF;
4363              IF c_post_sec%ISOPEN THEN
4364                 CLOSE c_post_sec;
4365              END IF;
4366 
4367        ELSIF pgComps.Component = 'ADM_TEST_RESULTS' THEN
4368              OPEN c_test_rslts(p_person_id, p_Appl_Type);
4369              FETCH c_test_rslts INTO lv_temp_rec;
4370              IF c_test_rslts%NOTFOUND THEN
4371                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4372              END IF;
4373              IF c_test_rslts%ISOPEN THEN
4374                 CLOSE c_test_rslts;
4375              END IF;
4376 
4377        ELSIF pgComps.Component = 'QUALIFICATION' THEN
4378              OPEN c_qual(p_person_id);
4379              FETCH c_qual INTO lv_temp_rec;
4380              IF c_qual%NOTFOUND THEN
4381                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4382              END IF;
4383              IF c_qual%ISOPEN THEN
4384                 CLOSE c_qual;
4385              END IF;
4386 
4387        ELSIF pgComps.Component = 'ACAD_HONORS' THEN
4388              OPEN c_acad_hon(p_person_id);
4389              FETCH c_acad_hon INTO lv_temp_rec;
4390              IF c_acad_hon%NOTFOUND THEN
4391                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4392              END IF;
4393              IF c_acad_hon%ISOPEN THEN
4394                 CLOSE c_acad_hon;
4395              END IF;
4396 
4397       ELSIF pgComps.Component = 'PERSONAL_STMTS' THEN
4398                 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4399                     l_debug_str := ' Validating Personal Statements Component';
4400                      fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4401                 END IF;
4402 
4403                 OPEN c_perstat_group(p_person_id,p_adm_appl_number,p_Appl_Type);
4404                 LOOP
4405                       IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4406                          l_debug_str := 'In c_perstat_group with p_person_id ->' || p_person_id || ',  p_adm_appl_number -> ' ||
4407                          p_adm_appl_number || ',   p_Appl_Type   -> ' || p_Appl_Type;
4408                          fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4409                       END IF;
4410 
4411                       FETCH c_perstat_group INTO l_perstat_group_rec;
4412                       EXIT WHEN c_perstat_group%NOTFOUND;
4413                       IF l_perstat_group_rec.group_number = -1 THEN
4414 
4415                         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4416                            l_debug_str := ' Personal Satement is not associated to Group with ss perstat id -> ' || l_perstat_group_rec.SS_PERSTAT_ID;
4417                            fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4418                         END IF;
4419 
4420                         IF (l_perstat_group_rec.required = 'Yes' AND l_perstat_group_rec.attach_exists = 'N') THEN
4421                                 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4422                                    l_debug_str := ' Personal Satement is Required but not provided -> ' ;
4423                                    fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4424                                 END IF;
4425                                 l_flag := 'N';
4426                         END IF;
4427                       ELSE
4428                         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4429                            l_debug_str := ' Personal Satement Group ->   ' || l_perstat_group_rec.group_number;
4430                            fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4431                         END IF;
4432 
4433                         l_perstat_count := 0;
4434                         OPEN c_perstat(p_person_id,p_adm_appl_number,l_perstat_group_rec.group_number);
4435                         LOOP
4436 
4437                                 FETCH c_perstat INTO l_perstat_rec;
4438                                 EXIT WHEN c_perstat%NOTFOUND;
4439 
4440                                 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4441                                    l_debug_str := ' Personal Satements ID ->   ' || l_perstat_rec.SS_PERSTAT_ID ||
4442                                    'Presnt Count of statments for this group' ||  l_perstat_count;
4443                                    fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4444                                 END IF;
4445 
4446                                 IF (l_perstat_rec.attach_exists = 'Y') THEN
4447                                         l_perstat_count := l_perstat_count + 1;
4448                                 ELSE
4449                                         IF l_perstat_rec.required = 'Yes'THEN
4450                                                 l_flag := 'N';
4451                                         END IF;
4452                                 END IF;
4453                         END LOOP;
4454                         CLOSE c_perstat;
4455 
4456                         IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4457                            l_debug_str := ' Personal Satements count for  Group ->   ' || l_perstat_group_rec.group_number ||'  is  ' || l_perstat_count;
4458                            fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,null);
4459                         END IF;
4460 
4461                         IF l_perstat_count < l_perstat_group_rec.group_min  THEN
4462                                 l_flag := 'N';
4463                         END IF;
4464                       END IF;
4465                 END LOOP;
4466                 CLOSE c_perstat_group;
4467 
4468                 IF l_flag = 'N' THEN
4469                     concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4470                 END IF;
4471 
4472        ELSIF pgComps.Component = 'SUPPORTING_INFO' THEN
4473              OPEN c_supp_info(p_person_id, p_Appl_Type);
4474              FETCH c_supp_info INTO lv_temp_rec;
4475              IF c_supp_info%NOTFOUND THEN
4476                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4477              END IF;
4478              IF c_supp_info%ISOPEN THEN
4479                 CLOSE c_supp_info;
4480              END IF;
4481 
4482        ELSIF pgComps.Component = 'OTHER_INST' THEN
4483              OPEN c_oth_inst(p_adm_appl_number);
4484              FETCH c_oth_inst INTO lv_temp_rec;
4485              IF c_oth_inst%NOTFOUND THEN
4486                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4487              END IF;
4488              IF c_oth_inst%ISOPEN THEN
4489                 CLOSE c_oth_inst;
4490              END IF;
4491 
4492        ELSIF pgComps.Component = 'ACAD_INTEREST' THEN
4493              OPEN c_acad_int(p_adm_appl_number);
4494              FETCH c_acad_int INTO lv_temp_rec;
4495              IF c_acad_int%NOTFOUND THEN
4496                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4497              END IF;
4498              IF c_acad_int%ISOPEN THEN
4499                 CLOSE c_acad_int;
4500              END IF;
4501 
4502        ELSIF pgComps.Component = 'SPECIAL_TALENTS' THEN
4503              OPEN c_spl_tal(p_adm_appl_number);
4504              FETCH c_spl_tal INTO lv_temp_rec;
4505              IF c_spl_tal%NOTFOUND THEN
4506                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4507              END IF;
4508              IF c_spl_tal%ISOPEN THEN
4509                 CLOSE c_spl_tal;
4510              END IF;
4511 
4512        ELSIF pgComps.Component = 'EXTRACUR_ACTIVITIES' THEN
4513              OPEN c_ext_curr(p_person_id);
4514              FETCH c_ext_curr INTO lv_temp_rec;
4515              IF c_ext_curr%NOTFOUND THEN
4516                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4517              END IF;
4518              IF c_ext_curr%ISOPEN THEN
4519                 CLOSE c_ext_curr;
4520              END IF;
4521 
4522        ELSIF pgComps.Component = 'EMPLOYMENT_HIST' THEN
4523              OPEN c_emp_hist(p_person_id);
4524              FETCH c_emp_hist INTO lv_temp_rec;
4525              IF c_emp_hist%NOTFOUND THEN
4526                concat_req_comps(pgComps.required_flag, l_req_comps, l_opt_comps, pgComps.ComponentDesc);
4527              END IF;
4528              IF c_emp_hist%ISOPEN THEN
4529                 CLOSE c_emp_hist;
4530              END IF;
4531 
4532        END IF;
4533      END LOOP;
4534 
4535      IF l_req_comps IS NOT NULL THEN
4536        l_comp_status:='INPROGRESS';
4537      ELSIF l_opt_comps IS NULL THEN
4538        l_comp_status:='COMPLETE';
4539      ELSE
4540         OPEN c_req_comps_exist(p_Appl_Type, p_page_Name);
4541         FETCH c_req_comps_exist INTO c_req_comps_exist_rec;
4542         IF c_req_comps_exist%NOTFOUND THEN
4543            l_comp_status:='OPTIONAL';
4544         ELSE
4545            l_comp_status:='COMPLETE';
4546         END IF;
4547      END IF;
4548 
4549       UPDATE  IGS_SS_AD_SEC_STAT
4550         SET COMPLETION_STATUS = l_comp_status
4551       WHERE  SS_ADM_APPL_ID = p_adm_appl_number
4552        AND PERSON_ID = p_person_id
4553        AND  SECTION = p_page_Name;
4554 
4555        x_mand_incomplete := l_req_comps;
4556 
4557      EXCEPTION
4558      WHEN OTHERS THEN
4559       IF c_perstat_group%ISOPEN THEN
4560         CLOSE c_perstat_group;
4561       END IF;
4562       IF c_perstat%ISOPEN THEN
4563         CLOSE c_perstat;
4564       END IF;
4565       logDetail( 'Exception from update of Application Status, '  || SQLERRM,'S');
4566       x_return_status:='E';
4567       x_message_name := 'IGS_GE_UNHANDLED_EXP';
4568 
4569       IF FND_MSG_PUB.Count_Msg < 1 THEN
4570 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
4571 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.update_appl_section_stat -'||SQLERRM);
4572 	  IGS_GE_MSG_STACK.ADD;
4573        END IF;
4574   END update_appl_section_stat;
4575 
4576 
4577   /* Procedure which will Sync the checklist w.r.t Application type configuration. */
4578   PROCEDURE sync_appl_section_stat(p_person_id       IN NUMBER,
4579                                    p_adm_appl_number IN NUMBER,
4580                                    p_Appl_Type       IN VARCHAR2,
4581                                    p_login_id        IN NUMBER,
4582                                    x_message_name    OUT NOCOPY VARCHAR2,
4583                                    x_return_status   OUT NOCOPY VARCHAR2,
4584                                    x_max_Sections    OUT NOCOPY NUMBER) AS
4585 /*****************************************************************************************
4586  Created By: stammine
4587  Date Created : 10-Jun-2005
4588  Purpose: 1. Inserts records from Self Service Admissions Application Type Configuration
4589              if any discrepancy exists with existing Status data and setup.
4590           2. Update the COMPLETION_STATUS with COMPLETE if COMPLETION_STATUS = ERROR.
4591           3. Returns the No. of Pages/Sections included for the Application Type.
4592        This is used to set the sMaxSection Session Variable - Used throughout the Application Create/Update flow.
4593  Known limitations,enhancements,remarks:
4594  Change History
4595  Who        When          What
4596 *****************************************************************************************/
4597     CURSOR c_NoPgs(cp_ApplType igs_ss_Adm_appl_stg.ADMISSION_APPLICATION_TYPE%TYPE) IS
4598       SELECT count(*)
4599         FROM igs_ad_ss_appl_pgs
4600        WHERE admission_application_type = cp_ApplType
4601          AND include_ind = 'Y';
4602 
4603   BEGIN
4604 
4605     -- Inserts records from Self Service Admissions Application Type Configuration
4606     -- if any discrepancy exists with existing Status data and setup.
4607     insert_appl_section_stat(x_message_name,
4608                              x_return_status,
4609                              p_person_id,
4610                              p_adm_appl_number,
4611                              p_login_id);
4612 
4613     -- Update the COMPLETION_STATUS with COMPLETE if COMPLETION_STATUS = ERROR for person in Context.
4614     UPDATE IGS_SS_AD_SEC_STAT
4615        SET COMPLETION_STATUS = 'COMPLETE'
4616      WHERE SS_ADM_APPL_ID = p_adm_appl_number
4617        AND PERSON_ID = p_person_id
4618        AND COMPLETION_STATUS = 'ERROR';
4619 
4620     -- Returns the No. of Pages/Sections included for the Application Type.
4621     -- This is used to set the sMaxSection Session Variable - Used throughout the Application Create/Update flow.
4622     OPEN c_NoPgs(p_Appl_Type);
4623     FETCH c_NoPgs
4624       INTO x_max_Sections;
4625     IF c_NoPgs%ISOPEN THEN
4626       CLOSE c_NoPgs;
4627     END IF;
4628 
4629   EXCEPTION
4630     WHEN OTHERS THEN
4631       x_return_status := 'E';
4632       x_message_name  := 'IGS_GE_UNHANDLED_EXP';
4633       x_max_Sections  := 0;
4634       logDetail('Exception from sync_appl_section_stat: ' || SQLERRM, 'S');
4635       IF FND_MSG_PUB.Count_Msg < 1 THEN
4636 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
4637 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.sync_appl_section_stat -'||SQLERRM);
4638 	  IGS_GE_MSG_STACK.ADD;
4639        END IF;
4640       IF c_NoPgs%ISOPEN THEN
4641         CLOSE c_NoPgs;
4642       END IF;
4643   END sync_appl_section_stat;
4644 
4645 
4646 PROCEDURE auto_assign_pgs_comps_terms(
4647   x_message_name       OUT NOCOPY VARCHAR2,
4648   x_return_status      OUT NOCOPY VARCHAR2,
4649   p_appl_type          IN VARCHAR2,
4650   p_admission_cat      IN VARCHAR2 ,
4651   p_s_admission_process_type IN VARCHAR2
4652   )
4653 AS
4654 /*****************************************************************************************
4655  Created By: stammine
4656  Date Created : 10-Jun-2005
4657  Purpose:  procedure which will create the records in following areas when Application Type is created
4658             Application Type pages
4659             Application Type page Components
4660             Terms and Conditions.
4661            Invoked when New application type is created.
4662  Known limitations,enhancements,remarks:
4663  Change History
4664  Who        When          What
4665 *****************************************************************************************/
4666 /* List of Cursors --
4667   -- Cursor To retrieve the SS Pages from Application Type Configuration Setup table.
4668   -- Cursor to retrieve the SS page Components from Application Type Configuration Setup table
4669 */
4670 
4671 CURSOR cpcs (cp_admission_cat                IGS_AD_PRCS_CAT_STEP.admission_Cat%TYPE,
4672              cp_s_admission_process_type     IGS_AD_PRCS_CAT_STEP.s_admission_process_type%TYPE,
4673              cp_page_code                    IGS_AD_SS_APPL_CONF.page_code%TYPE,
4674              cp_comp_code                    IGS_AD_SS_APPL_CONF.component_code%TYPE) IS
4675               SELECT mandatory_step_ind  --, s_admission_step_type --, step_group_type
4676               FROM IGS_AD_PRCS_CAT_STEP
4677               WHERE admission_Cat = cp_admission_cat
4678               AND  s_admission_process_type = cp_s_admission_process_type
4679               AND s_admission_step_type = (SELECT apc_step FROM igs_ad_ss_appl_conf
4680                   WHERE page_code =  cp_page_code
4681                   AND component_code = cp_comp_code);
4682 
4683 CURSOR cpgs IS
4684 SELECT
4685   DISTINCT conf.page_code,
4686   lkv.meaning   page_desc
4687 FROM igs_ad_ss_appl_conf conf,
4688      igs_lookup_values lkv
4689 WHERE
4690   lkv.lookup_type = 'SS_APPL_SELFSERVICE_PAGES'
4691   AND  lkv.lookup_code = conf.page_code
4692   AND  lkv.ENABLED_FLAG = 'Y'
4693   AND  SYSDATE BETWEEN NVL(START_DATE_ACTIVE,SYSDATE) AND NVL(END_DATE_ACTIVE,SYSDATE) ;
4694 
4695 CURSOR cpcomps (cp_page_code  IGS_AD_SS_APPL_CONF.page_code%TYPE)
4696 IS
4697 SELECT conf.page_code, conf.component_code,
4698 lkv.meaning component_desc,
4699 conf.include_flag, conf.apc_step
4700 FROM IGS_AD_SS_APPL_CONF conf,
4701 igs_lookup_values lkv
4702 WHERE
4703   lkv.lookup_type = 'IGS_AD_SS_PG_COMPS'
4704   AND  lkv.lookup_code = conf.component_code
4705   AND  conf.page_code = cp_page_code
4706   AND  lkv.ENABLED_FLAG = 'Y'
4707   AND  SYSDATE BETWEEN NVL(START_DATE_ACTIVE,SYSDATE) AND NVL(END_DATE_ACTIVE,SYSDATE);
4708 
4709 CURSOR c_app_pgs (cp_appl_type  igs_ad_ss_appl_pgs.admission_application_type%TYPE)
4710 IS
4711 SELECT page_name FROM igs_ad_ss_appl_pgs WHERE
4712 admission_application_type = cp_appl_type;
4713 
4714 lv_order             igs_ad_ss_appl_pgs.disp_order%type;
4715 lv_rowid             VARCHAR2(25);
4716 lv_mand_ind          VARCHAR2(1);
4717 lv_cond_disp_name   igs_ad_ss_terms.COND_DISP_NAME%type;
4718 lv_cond_disp_txt    igs_ad_ss_terms.COND_DISP_TEXT%type;
4719 lv_incl_flag        igs_ad_ss_terms.INCLUDE_FLAG%type;
4720 lv_req_flag         igs_ad_ss_appl_comps.required_flag%type;
4721 lv_appl_type        igs_ad_ss_appl_typ.admission_application_type%TYPE;
4722 
4723 BEGIN
4724 
4725 lv_rowid := '';
4726 lv_order := 0;
4727 lv_mand_ind := 'N';
4728 lv_cond_disp_name := NULL;
4729 lv_cond_disp_txt  := NULL;
4730 lv_incl_flag := 'N';
4731 
4732 FOR cpgs_rec IN  cpgs
4733 LOOP
4734  IF cpgs_rec.page_code='PERSONAL_INFO' THEN
4735    lv_order := 2;
4736  ELSIF cpgs_rec.page_code='ADDRESS_INFO' THEN
4737    lv_order := 4;
4738  ELSIF cpgs_rec.page_code='FURTHER_INFO' THEN
4739    lv_order := 6;
4740  ELSIF cpgs_rec.page_code='RESIDENCY_INFO' THEN
4741    lv_order := 8;
4742  ELSIF cpgs_rec.page_code='INTL_INFO' THEN
4743    lv_order := 10;
4744  ELSIF cpgs_rec.page_code='APPLICATION_INFO' THEN
4745    lv_order := 12;
4746  ELSIF cpgs_rec.page_code='EDUCATIONAL_INFO' THEN
4747    lv_order := 14;
4748  ELSIF cpgs_rec.page_code='PERSONAL_STATEMENTS' THEN
4749    lv_order := 16;
4750  END IF;
4751      lv_appl_type := p_appl_type;
4752      -- dbms_output.put_line('Satya - Before Inserting Page : '||cpgs_rec.page_code);
4753      igs_ad_ss_appl_pgs_pkg.add_row (
4754       x_mode                              => 'R',
4755       x_rowid                             => lv_rowid,
4756       x_admission_application_type        => lv_appl_type,
4757       x_page_name                         => cpgs_rec.page_code,
4758       x_include_ind                       => 'Y',
4759       x_required_ind                      => NULL,
4760       x_disp_order                        => lv_order,
4761       x_page_disp_name                    => cpgs_rec.page_desc
4762     );
4763     -- dbms_output.put_line('Satya - After Inserting Page : '||cpgs_rec.page_code);
4764 END LOOP;
4765 
4766 lv_rowid := '';
4767 
4768 FOR cpgs_rec IN c_app_pgs(p_appl_type)
4769 LOOP
4770  FOR cpcomps_rec IN cpcomps(cpgs_rec.page_name)
4771  LOOP
4772 
4773      IF cpcomps_rec.component_code IN ('BASIC_INFO','PROGRAM_PREF') THEN
4774        lv_req_flag := 'Y';
4775      ELSIF cpcomps_rec.include_flag <> 'Y' THEN
4776           lv_req_flag := 'N';
4777      ELSE
4778         OPEN cpcs(p_admission_cat, p_s_admission_process_type, cpcomps_rec.page_code, cpcomps_rec.component_code);
4779         FETCH cpcs INTO lv_mand_ind;
4780 
4781         IF cpcs%NOTFOUND OR cpcomps_rec.component_code IN ('FIN_VER','MILITARY') THEN
4782           lv_req_flag := 'N';
4783         ELSE
4784           lv_req_flag := lv_mand_ind;
4785         END IF;
4786 
4787         IF cpcs%ISOPEN THEN
4788            CLOSE cpcs;
4789         END IF;
4790      END IF;
4791      lv_appl_type := p_appl_type;
4792 
4793      -- dbms_output.put_line('Satya - Before Inserting component : '||cpcomps_rec.component_code);
4794      igs_ad_ss_appl_comps_pkg.add_row (
4795         x_mode                            => 'R',
4796         x_rowid                           => lv_rowid,
4797         x_admission_application_type      => lv_appl_type,
4798         x_page_name                       => cpcomps_rec.page_code,
4799         x_component_code                  => cpcomps_rec.component_code,
4800         x_comp_disp_name                  => cpcomps_rec.component_desc,
4801         x_include_flag                    => cpcomps_rec.include_flag,
4802         x_required_flag                   => lv_req_flag
4803         );
4804 
4805      -- dbms_output.put_line('Satya - After Inserting component : '||cpcomps_rec.component_code);
4806    END LOOP; -- Components
4807  END LOOP; -- Pages
4808 
4809 -- Check if the Terms and Conditions exist in the table... If exists Donont modify.
4810 -- Inserting Terms and Conditions
4811 lv_rowid := '';
4812     FOR i IN 1 .. 10
4813     LOOP
4814       IF i = 1 then
4815        lv_cond_disp_name := FND_MESSAGE.GET_STRING('IGS','IGS_AD_SS_PRIVACY_STMT_HDR'); --'Privacy Statement'
4816 --       lv_cond_disp_txt := FND_MESSAGE.GET_STRING('IGS','IGS_SS_PRIVACY_STMT');
4817        lv_incl_flag := 'Y';
4818       ELSIF i = 2 then
4819        lv_cond_disp_name := FND_MESSAGE.GET_STRING('IGS','IGS_AD_SS_VERIFY_STMT_HDR'); --'Verification Statement';
4820 --       lv_cond_disp_txt := FND_MESSAGE.GET_STRING('IGS','IGS_SS_VERIFICATION_STMT');
4821        lv_incl_flag := 'Y';
4822      ELSE
4823       FND_MESSAGE.SET_NAME('IGS','IGS_AD_SS_COND_HDR');
4824       FND_MESSAGE.SET_TOKEN('COND_ID',i);
4825       lv_cond_disp_name := FND_MESSAGE.GET;
4826       lv_incl_flag := 'N';
4827      END IF;
4828       lv_appl_type := p_appl_type;
4829       lv_cond_disp_txt := NULL;
4830 
4831      -- dbms_output.put_line('Satya - Before Inserting Term  : '||lv_cond_disp_name);
4832       igs_ad_ss_terms_pkg.add_row(
4833         x_mode                            => 'R',
4834         x_rowid                           => lv_rowid,
4835         x_admission_application_type      => lv_appl_type,
4836         x_cond_id                         => i,
4837         x_cond_disp_name                  => lv_cond_disp_name,
4838         x_cond_disp_text                  => lv_cond_disp_txt,
4839         x_include_flag                    => lv_incl_flag
4840        );
4841      -- dbms_output.put_line('Satya - After Inserting Term  : '||lv_cond_disp_name);
4842 
4843     END LOOP;
4844 
4845      x_message_name   := 'S';
4846      x_return_status  := NULL;
4847 
4848 EXCEPTION
4849 WHEN OTHERS THEN
4850  x_return_status := 'E';
4851  x_message_name := 'IGS_GE_UNHANDLED_EXP';
4852  IF FND_MSG_PUB.Count_Msg < 1 THEN
4853     Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
4854     Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.auto_assign_pgs_comps_terms -'||SQLERRM);
4855     IGS_GE_MSG_STACK.ADD;
4856  END IF;
4857 END auto_assign_pgs_comps_terms;
4858 
4859 
4860 /* Local function to check if component is included in an Application Type for a Page */
4861 FUNCTION isPgCompIncluded
4862 (
4863 p_Appl_type    IGS_AD_SS_APPL_COMPS.Admission_application_type%TYPE,
4864 p_page_code    IGS_AD_SS_APPL_COMPS.Page_name%TYPE,
4865 p_comp_code    IGS_AD_SS_APPL_COMPS.component_code%TYPE
4866 ) RETURN BOOLEAN IS
4867 
4868 CURSOR  sspc (cp_p_Appl_type     IGS_AD_SS_APPL_COMPS.Admission_application_type%TYPE,
4869               cp_page_code       IGS_AD_SS_APPL_COMPS.Page_name%TYPE,
4870               cp_comp_code       IGS_AD_SS_APPL_COMPS.component_code%TYPE             ) IS
4871              SELECT 'x'
4872              FROM IGS_AD_SS_APPL_COMPS
4873              WHERE Admission_application_type = cp_p_Appl_type
4874              AND Page_name = cp_page_code
4875              AND component_code = cp_comp_code
4876              AND Include_flag = 'Y';
4877 
4878  l_inc      VARCHAR2(1);
4879 BEGIN
4880 
4881     OPEN sspc(p_Appl_type,p_page_code,p_comp_code);
4882     FETCH sspc INTO l_inc;
4883     IF (sspc%FOUND) THEN
4884       CLOSE sspc;
4885       RETURN(TRUE);
4886     ELSE
4887       CLOSE sspc;
4888       RETURN(FALSE);
4889     END IF;
4890 END isPgCompIncluded;
4891 
4892 
4893 PROCEDURE update_assign_pgs_comps( x_message_name             OUT NOCOPY VARCHAR2,
4894                                    x_return_status            OUT NOCOPY VARCHAR2,
4895                                    p_appl_type                IN VARCHAR2 DEFAULT NULL,
4896                                    p_admission_cat            IN VARCHAR2,
4897                                    p_s_admission_process_type IN VARCHAR2
4898                                    ) AS
4899 /*****************************************************************************************
4900  Created By: stammine
4901  Date Created : 10-Jun-2005
4902  Purpose:  procedure which will update the records in following areas when Application Category
4903            is Changed for an Application Type:
4904             Application Type pages
4905             Application Type page Components
4906             Terms and Conditions.
4907            Invoked when existing application type is updated.
4908  Known limitations,enhancements,remarks:
4909  Change History
4910  Who        When          What
4911 *****************************************************************************************/
4912 
4913   CURSOR cpcs(cp_admission_cat IGS_AD_PRCS_CAT_STEP_ALL.admission_Cat%TYPE,
4914               cp_s_admission_process_type IGS_AD_PRCS_CAT_STEP_ALL.s_admission_process_type%TYPE,
4915               cp_page_code IGS_AD_SS_APPL_CONF.page_code%TYPE,
4916               cp_comp_code IGS_AD_SS_APPL_CONF.component_code%TYPE) IS
4917     SELECT mandatory_step_ind, s_admission_step_type, step_group_type
4918       FROM IGS_AD_PRCS_CAT_STEP_ALL
4919      WHERE admission_Cat = cp_admission_cat
4920        AND s_admission_process_type = cp_s_admission_process_type
4921        AND s_admission_step_type =
4922            (SELECT apc_step
4923               FROM IGS_AD_SS_APPL_CONF
4924              WHERE page_code = cp_page_code
4925                AND component_code = cp_comp_code
4926                AND apc_step IS NOT NULL);
4927 
4928   CURSOR sspg_upd(cp_Admission_application_type IGS_AD_SS_APPL_PGS.Admission_application_type%TYPE) IS
4929     SELECT Admission_application_type, Page_name, Include_Ind
4930       FROM IGS_AD_SS_APPL_PGS
4931      WHERE Admission_application_type = cp_Admission_application_type;
4932 
4933   CURSOR sspc_upd(cp_Admission_application_type IGS_AD_SS_APPL_COMPS.Admission_application_type%TYPE, cp_page_code IGS_AD_SS_APPL_COMPS.Page_name%TYPE) IS
4934     SELECT Admission_application_type, Page_name,component_code, Include_flag, Required_flag
4935       FROM IGS_AD_SS_APPL_COMPS
4936      WHERE Admission_application_type = cp_Admission_application_type
4937        AND Page_name = cp_page_code;
4938 
4939   TYPE appl_type IS TABLE OF IGS_AD_SS_APPL_TYP.admission_application_type%TYPE  INDEX BY BINARY_INTEGER;
4940   appl_type_table  appl_type;
4941 
4942   TYPE ApplCurType IS REF CURSOR;
4943   ssat_cv   ApplCurType;
4944 
4945   lv_mand_ind      IGS_AD_PRCS_CAT_STEP_ALL.mandatory_step_ind%TYPE;
4946   lv_step          IGS_AD_PRCS_CAT_STEP_ALL.s_admission_step_type%TYPE;
4947   lv_step_grp      IGS_AD_PRCS_CAT_STEP_ALL.step_group_type%TYPE;
4948   lv_include_flag  IGS_AD_SS_APPL_COMPS.include_flag%TYPE;
4949   lv_required_flag IGS_AD_SS_APPL_COMPS.required_flag%TYPE;
4950   appl_type_count  NUMBER;
4951 
4952 BEGIN
4953 
4954   appl_type_count := 0;
4955 
4956   IF p_appl_type IS NOT NULL THEN
4957      OPEN ssat_cv FOR
4958       SELECT admission_application_type
4959        FROM IGS_AD_SS_APPL_TYP
4960       WHERE
4961            admission_application_type = p_appl_type
4962        AND admission_cat = p_admission_cat
4963        AND s_admission_process_type = p_s_admission_process_type;
4964    ELSE
4965      OPEN ssat_cv FOR
4966       SELECT admission_application_type
4967        FROM IGS_AD_SS_APPL_TYP
4968       WHERE
4969        admission_cat = p_admission_cat
4970        AND s_admission_process_type = p_s_admission_process_type;
4971    END IF;
4972 
4973   FETCH ssat_cv BULK COLLECT INTO appl_type_table;
4974   IF ssat_cv%ISOPEN THEN
4975     CLOSE ssat_cv;
4976   END IF;
4977 
4978   appl_type_count := appl_type_table.COUNT;
4979 
4980   FOR i IN 1 .. appl_type_count    -- Application Type
4981    LOOP
4982     FOR appl_pgs_rec IN sspg_upd(appl_type_table(i)) -- page (Application Type)
4983      LOOP
4984 
4985       FOR appl_pg_comps_rec IN sspc_upd(appl_pgs_rec.Admission_application_type,
4986                                     appl_pgs_rec.Page_name) --each component (Application Type, page)
4987        LOOP
4988 
4989         IF appl_pg_comps_rec.component_code IN
4990            ('BASIC_INFO', 'PROGRAM_PREF') AND
4991            (appl_pg_comps_rec.include_flag <> 'Y' OR
4992            appl_pg_comps_rec.required_flag <> 'Y') THEN
4993 
4994       --   Upadate the compoents table with Required_ind = Y and Include_ind = Y for the page=component.page_name
4995       --    and component =component.comp_name
4996 
4997           UPDATE igs_ad_ss_appl_comps
4998              SET include_flag = 'Y' , required_flag = 'Y'
4999            WHERE Admission_application_type =
5000                  appl_pg_comps_rec.Admission_application_type
5001              AND page_name = appl_pg_comps_rec.page_name
5002              AND component_code = appl_pg_comps_rec.component_code;
5003         ELSE
5004           OPEN cpcs(p_admission_cat,
5005                     p_s_admission_process_type,
5006                     appl_pg_comps_rec.page_name,
5007                     appl_pg_comps_rec.component_code);
5008           FETCH cpcs
5009             INTO lv_mand_ind, lv_step, lv_step_grp;
5010           IF cpcs%FOUND THEN
5011             CLOSE cpcs;
5012             IF lv_step IN ('PER-ALTERNATE', 'PER-ALIASES', 'PER-SPLNEEDS') THEN
5013               IF appl_pg_comps_rec.page_name IN
5014                  ('PERSONAL_INFO', 'FURTHER_INFO') AND
5015                  appl_pg_comps_rec.Include_flag = 'Y' THEN
5016                 IF appl_pg_comps_rec.Required_flag <> 'Y' THEN
5017                   --   Upadate the compoents table with Required_ind = Y for the page=component.page_name
5018                   --    and component =component.comp_name
5019                   UPDATE igs_ad_ss_appl_comps
5020                      SET required_flag = 'Y'
5021                    WHERE Admission_application_type =
5022                          appl_pg_comps_rec.Admission_application_type
5023                      AND page_name = appl_pg_comps_rec.page_name
5024                      AND component_code = appl_pg_comps_rec.component_code;
5025 
5026                 END IF;
5027 
5028               ELSIF (appl_pg_comps_rec.page_name = 'PERSONAL_INFO'  AND
5029                      NOT isPgCompIncluded(appl_pg_comps_rec.Admission_application_type,'FURTHER_INFO',appl_pg_comps_rec.component_code))
5030                      THEN
5031                         UPDATE igs_ad_ss_appl_comps
5032                         SET include_flag = 'Y' , required_flag = 'Y'
5033                         WHERE Admission_application_type =
5034                               appl_pg_comps_rec.Admission_application_type
5035                         AND page_name = appl_pg_comps_rec.page_name
5036                         AND component_code = appl_pg_comps_rec.component_code;
5037 
5038                 END IF;
5039             ELSIF lv_step = 'PER-ADDR' AND
5040                   appl_pg_comps_rec.component_code = 'ADDRESS' THEN
5041               IF appl_pg_comps_rec.page_name IN
5042                  ('PERSONAL_INFO', 'ADDRESS_INFO') AND
5043                  appl_pg_comps_rec.Include_flag = 'Y' THEN
5044                 IF appl_pg_comps_rec.Required_flag <> 'Y' THEN
5045 
5046                  -- Upadate the compoents table with Required_ind = Y for the page=component.page_name
5047                  --  and component =component.comp_name and application_type = component.application_type
5048 
5049                    UPDATE igs_ad_ss_appl_comps
5050                      SET required_flag = 'Y'
5051                    WHERE Admission_application_type =
5052                          appl_pg_comps_rec.Admission_application_type
5053                      AND page_name = appl_pg_comps_rec.page_name
5054                      AND component_code = appl_pg_comps_rec.component_code;
5055 
5056                 END IF;
5057               ELSIF (appl_pg_comps_rec.page_name = 'ADDRESS_INFO' AND
5058                      NOT isPgCompIncluded(appl_pg_comps_rec.Admission_application_type,'PERSONAL_INFO',appl_pg_comps_rec.component_code)) THEN
5059 
5060                         UPDATE igs_ad_ss_appl_comps
5061                         SET include_flag = 'Y' , required_flag = 'Y'
5062                         WHERE Admission_application_type =
5063                               appl_pg_comps_rec.Admission_application_type
5064                         AND page_name = appl_pg_comps_rec.page_name
5065                         AND component_code = appl_pg_comps_rec.component_code;
5066               END IF;
5067 
5068             ELSIF lv_mand_ind = 'Y' THEN
5069               IF appl_pg_comps_rec.include_flag <> 'Y' OR
5070                  appl_pg_comps_rec.required_flag <> 'Y' THEN
5071 
5072                    IF appl_pg_comps_rec.component_code IN ('MILITARY','FIN_VER') THEN
5073                       UPDATE igs_ad_ss_appl_comps
5074                       SET include_flag = 'Y' , required_flag = 'N'
5075                       WHERE Admission_application_type = appl_pg_comps_rec.Admission_application_type
5076                        AND page_name = appl_pg_comps_rec.page_name
5077                        AND component_code = appl_pg_comps_rec.component_code;
5078                    ELSE
5079                       UPDATE igs_ad_ss_appl_comps
5080                       SET include_flag = 'Y' , required_flag = 'Y'
5081                       WHERE Admission_application_type = appl_pg_comps_rec.Admission_application_type
5082                        AND page_name = appl_pg_comps_rec.page_name
5083                        AND component_code = appl_pg_comps_rec.component_code;
5084                    END IF;
5085               END IF;
5086             END IF;
5087           END IF;
5088         END IF;
5089 
5090          IF cpcs%ISOPEN THEN
5091            CLOSE cpcs;
5092          END IF;
5093         END LOOP; -- Components
5094       END LOOP; -- Pages
5095     END LOOP; -- Application Types
5096 
5097 
5098     -- Include the page if the component for the page is included.
5099     -- Update the pages table IGS_AD_SS_APPL_PGS set Include_ind = Y where application_type = page.application_type
5100     -- and page_name = page.page_name;
5101     FORALL i IN 1 .. appl_type_count
5102     UPDATE IGS_AD_SS_APPL_PGS pgs SET Include_ind = 'Y' WHERE
5103            pgs.ADMISSION_APPLICATION_TYPE = appl_type_table(i) AND
5104            EXISTS (SELECT 'x' FROM IGS_AD_SS_APPL_COMPS comps WHERE
5105             comps.ADMISSION_APPLICATION_TYPE = appl_type_table(i)
5106             AND comps.Page_name = pgs.page_name
5107             AND comps.Include_flag = 'Y');
5108 
5109         x_return_status := 'S';
5110         x_message_name  := NULL;
5111 
5112     EXCEPTION
5113      WHEN OTHERS THEN
5114         x_return_status := 'E';
5115         x_message_name  := SQLERRM;
5116 
5117 END update_assign_pgs_comps;
5118 
5119 PROCEDURE validate_prog_pref  (p_ss_adm_appl_id           IN NUMBER ,
5120                                p_course_cd                IN VARCHAR2,
5121                                p_crv_version_number       IN NUMBER,
5122                                p_location_cd              IN VARCHAR2,
5123                                p_attendance_mode          IN VARCHAR2,
5124                                p_attendance_type          IN VARCHAR2,
5125                                p_final_unit_set_cd        IN VARCHAR2,
5126                                p_us_version_number       IN NUMBER,
5127                                p_message_name             OUT NOCOPY VARCHAR2,
5128                                p_return_type              OUT NOCOPY VARCHAR2) IS
5129     /*----------------------------------------------------------------------------
5130     ||  Created By : pbondugu
5131     ||  Created On : 9-Aug-2005
5132     ||  Purpose :  For validating program preference record
5133     ||  Known limitations, enhancements or remarks :
5134     ||  Change History :
5135     ||  Who             When            What
5136     ----------------------------------------------------------------------------*/
5137 
5138   CURSOR c_appl_Stg(cp_ss_adm_appl_id NUMBER) IS
5139   SELECT person_id, acad_cal_type, acad_cal_seq_number, adm_cal_type,
5140          adm_cal_seq_number , admission_cat, s_adm_process_type
5141   FROM igs_ss_adm_appl_stg
5142   WHERE ss_adm_appl_id = cp_ss_adm_appl_id;
5143 
5144   CURSOR c_apcs (cp_step_type VARCHAR2, cp_admission_cat VARCHAR2, cp_s_admission_process_type VARCHAR2) IS
5145   SELECT s_admission_step_type, step_type_restriction_num
5146   FROM igs_ad_prcs_cat_step
5147   WHERE admission_cat = cp_admission_cat
5148   AND s_admission_process_type = cp_s_admission_process_type
5149   AND s_admission_step_type = cp_step_type
5150   AND step_group_type <> 'TRACK';
5151 
5152 
5153   CURSOR c_acaiv (
5154                 cp_person_id                    IGS_AD_PS_APPL_INST.person_id%TYPE,
5155                 cp_course_cd                    IGS_AD_PS_APPL_INST.course_cd%TYPE,
5156                 cp_location_cd                  IGS_AD_PS_APPL_INST.location_cd%TYPE,
5157                 cp_attendance_mode              IGS_AD_PS_APPL_INST.attendance_mode%TYPE,
5158                 cp_attendance_type              IGS_AD_PS_APPL_INST.attendance_type%TYPE,
5159                 cp_unit_set_cd                  IGS_AD_PS_APPL_INST.unit_set_cd%TYPE,
5160                 cp_us_version_number            IGS_AD_PS_APPL_INST.us_version_number%TYPE,
5161                 cp_adm_cal_type                 IGS_AD_APPL.adm_cal_type%TYPE,
5162                 cp_adm_ci_sequence_number       IGS_AD_APPL.adm_ci_sequence_number%TYPE) IS
5163         SELECT  'x'
5164         FROM    IGS_AD_APPL aav, IGS_AD_PS_APPL_INST acaiv
5165         WHERE    aav.person_id = acaiv.person_id AND
5166                 aav.admission_appl_number = acaiv.admission_appl_number AND
5167                 acaiv.person_id                 = cp_person_id AND
5168                 acaiv.course_cd                 = cp_course_cd AND
5169                 NVL(acaiv.location_cd,'NULL')   = NVL(cp_location_cd,'NULL') AND
5170                 NVL(acaiv.attendance_mode,'NULL') = NVL(cp_attendance_mode,'NULL') AND
5171                 NVL(acaiv.attendance_type,'NULL') = NVL(cp_attendance_type,'NULL') AND
5172                 NVL(acaiv.unit_set_cd, 'NULL')  = NVL(cp_unit_set_cd, 'NULL') AND
5173                 NVL(acaiv.us_version_number,0)  = NVL(cp_us_version_number,0) AND
5174                 NVL(acaiv.adm_cal_type, aav.adm_cal_type) = cp_adm_cal_type AND
5175                 NVL(acaiv.adm_ci_sequence_number, aav.adm_ci_sequence_number)
5176                     = cp_adm_ci_sequence_number AND
5177                 -- Check for CANCELLED added for bug 2678766
5178                 NVL(IGS_AD_GEN_008.ADMP_GET_SAOS(acaiv.adm_outcome_status),'x') <> 'CANCELLED';
5179 
5180 
5181   apcs_rec c_apcs%ROWTYPE;
5182 
5183   appl_Stg_rec c_appl_Stg%ROWTYPE;
5184   l_unit_set_appl VARCHAR2(1);
5185   lSuccess boolean;
5186 
5187   BEGIN
5188        OPEN c_appl_Stg(p_ss_adm_appl_id);
5189        FETCH c_appl_Stg INTO appl_Stg_rec;
5190        IF c_appl_Stg%NOTFOUND THEN
5191           CLOSE c_appl_Stg;
5192           p_return_type := 'E';
5193           p_message_name := 'IGS_AD_APPL_NOT_FOUND';
5194 
5195           RETURN;
5196        END IF;
5197 
5198         -- Validate for a matching admission course application instance for the
5199         -- IGS_PE_PERSON in the same admission period.
5200         FOR v_acaiv_rec IN c_acaiv(
5201                 appl_Stg_rec.person_id,
5202                 p_course_cd,
5203                 p_location_cd,
5204                 p_attendance_mode,
5205                 p_attendance_type,
5206                 p_final_unit_set_cd,
5207                 p_us_version_number,
5208                 appl_Stg_rec.adm_cal_type,
5209                 appl_Stg_rec.adm_cal_seq_number) LOOP
5210                 p_message_name := 'IGS_AD_ANOTHER_ADMAPPL_EXISTS';
5211                 p_return_type := 'E';
5212                 RETURN;
5213         END LOOP;
5214 
5215 
5216           -- Late Application Validation is done here
5217           validate_prog_inst(p_course_cd                => p_course_cd,
5218                              p_crv_version_number       => p_crv_version_number,
5219                              p_location_cd              => p_location_cd,
5220                              p_attendance_mode          => p_attendance_mode,
5221                              p_attendance_type          => p_attendance_type,
5222                              p_acad_cal_type            => appl_Stg_rec.acad_cal_type,
5223                              p_acad_ci_sequence_number  => appl_Stg_rec.acad_cal_seq_number,
5224                              p_adm_cal_type             => appl_Stg_rec.adm_cal_type,
5225                              p_adm_ci_sequence_number   => appl_Stg_rec.adm_cal_seq_number,
5226                              p_admission_cat            => appl_Stg_rec.admission_cat,
5227                              p_s_admission_process_type => appl_Stg_rec.s_adm_process_type,
5228                              p_message_name             => p_message_name,
5229                              p_return_type              => p_return_type);
5230            IF  p_return_type = 'E' THEN
5231                  IF c_appl_Stg%ISOPEN THEN
5232                     CLOSE c_appl_Stg;
5233                  END IF;
5234               RETURN;
5235            END IF;
5236 
5237 
5238   lSuccess := igs_ad_val_acai.admp_val_aca_sca(
5239                   p_person_id                      => appl_Stg_rec.person_id,
5240                   p_course_cd                      => p_course_cd,
5241                   p_appl_dt                        => TRUNC(SYSDATE),
5242                   p_admission_cat                  => appl_Stg_rec.admission_cat,
5243                   p_s_admission_process_type       => appl_Stg_rec.s_adm_process_type,
5244                   p_fee_cat                        => NULL,
5245                   p_correspondence_cat             => NULL,
5246                   p_enrolment_cat                  => NULL,
5247                   p_offer_ind                      => 'N',
5248                   p_message_name                   => p_message_name,
5249                   p_return_type                    => p_return_type);
5250 
5251            IF  p_return_type = 'E' THEN
5252                  IF c_appl_Stg%ISOPEN THEN
5253                     CLOSE c_appl_Stg;
5254                  END IF;
5255               RETURN;
5256            END IF;
5257 
5258     OPEN c_apcs('UNIT-SET', appl_Stg_rec.admission_cat, appl_Stg_rec.s_adm_process_type);
5259     FETCH c_apcs INTO apcs_rec;
5260     CLOSE c_apcs;
5261 
5262     IF apcs_rec.s_admission_step_type IS NULL  THEN
5263        l_unit_set_appl := 'N';
5264     ELSE
5265        l_unit_set_appl := 'Y';
5266     END IF;
5267 
5268 lSuccess := igs_ad_val_acai.admp_val_acai_us(
5269                   p_unit_set_cd                    => p_final_unit_set_cd,
5270                   p_us_version_number              => p_us_version_number,
5271                   p_course_cd                      => p_course_cd,
5272                   p_crv_version_number             => p_crv_version_number,
5273                   p_acad_cal_type                  => appl_Stg_rec.acad_cal_type,
5274                   p_location_cd                    => p_location_cd,
5275                   p_attendance_mode                => p_attendance_mode,
5276                   p_attendance_type                => p_attendance_type,
5277                   p_admission_cat                  => appl_Stg_rec.admission_cat,
5278                   p_offer_ind                      => 'N',
5279                   p_unit_set_appl                  => l_unit_set_appl,
5280                   p_message_name                   => p_message_name,
5281                   p_return_type                    => p_return_type);
5282 
5283            IF  p_return_type = 'E' THEN
5284                  p_message_name := 'IGS_AD_SS_INV_FINAL_US';
5285                  IF c_appl_Stg%ISOPEN THEN
5286                     CLOSE c_appl_Stg;
5287                  END IF;
5288                  RETURN;
5289            END IF;
5290 
5291           IF c_appl_Stg%ISOPEN THEN
5292             CLOSE c_appl_Stg;
5293           END IF;
5294   END  validate_prog_pref;
5295 
5296 
5297   PROCEDURE validate_unit_Set (p_ss_adm_appl_id           IN NUMBER ,
5298                                p_course_cd                    VARCHAR2,
5299                                p_crv_version_number           NUMBER,
5300                                p_location_cd                  VARCHAR2,
5301                                p_attendance_mode              VARCHAR2,
5302                                p_attendance_type              VARCHAR2,
5303                                p_unit_set_cd                  VARCHAR2,
5304                                p_us_version_number            NUMBER ,
5305                                p_message_name                 OUT NOCOPY VARCHAR2,
5306                                p_return_type                  OUT NOCOPY VARCHAR2) IS
5307 
5308 
5309   CURSOR c_appl_Stg(cp_ss_adm_appl_id NUMBER) IS
5310   SELECT person_id, acad_cal_type, acad_cal_seq_number, adm_cal_type,
5311          adm_cal_seq_number , admission_cat, s_adm_process_type
5312   FROM igs_ss_adm_appl_stg
5313   WHERE ss_adm_appl_id = cp_ss_adm_appl_id;
5314 
5315   CURSOR c_apcs (cp_step_type VARCHAR2, cp_admission_cat VARCHAR2, cp_s_admission_process_type VARCHAR2) IS
5316   SELECT s_admission_step_type, step_type_restriction_num
5317   FROM igs_ad_prcs_cat_step
5318   WHERE admission_cat = cp_admission_cat
5319   AND s_admission_process_type = cp_s_admission_process_type
5320   AND s_admission_step_type = cp_step_type
5321   AND step_group_type <> 'TRACK';
5322 
5323 
5324   apcs_rec c_apcs%ROWTYPE;
5325 
5326   appl_Stg_rec c_appl_Stg%ROWTYPE;
5327   l_unit_set_appl VARCHAR2(1);
5328   lSuccess boolean;
5329 
5330 
5331   BEGIN
5332 
5333        OPEN c_appl_Stg(p_ss_adm_appl_id);
5334        FETCH c_appl_Stg INTO appl_Stg_rec;
5335        IF c_appl_Stg%NOTFOUND THEN
5336           CLOSE c_appl_Stg;
5337           p_return_type := 'E';
5338           p_message_name := 'IGS_AD_APPL_NOT_FOUND';
5339           RETURN;
5340        END IF;
5341 
5342        lSuccess := igs_ad_val_acai.admp_val_acai_us(
5343                   p_unit_set_cd                    => p_unit_set_cd,
5344                   p_us_version_number              => p_us_version_number,
5345                   p_course_cd                      => p_course_cd,
5346                   p_crv_version_number             => p_crv_version_number,
5347                   p_acad_cal_type                  => appl_Stg_rec.acad_cal_type,
5348                   p_location_cd                    => p_location_cd,
5349                   p_attendance_mode                => p_attendance_mode,
5350                   p_attendance_type                => p_attendance_type,
5351                   p_admission_cat                  => appl_Stg_rec.admission_cat,
5352                   p_offer_ind                      => 'N',
5353                   p_unit_set_appl                  => l_unit_set_appl,
5354                   p_message_name                   => p_message_name,
5355                   p_return_type                    => p_return_type);
5356 
5357            IF  p_return_type = 'E' THEN
5358                  IF c_appl_Stg%ISOPEN THEN
5359                     CLOSE c_appl_Stg;
5360                  END IF;
5361                  RETURN;
5362            END IF;
5363 
5364           IF c_appl_Stg%ISOPEN THEN
5365             CLOSE c_appl_Stg;
5366           END IF;
5367 
5368   END validate_unit_Set;
5369 
5370 PROCEDURE DELETE_PERSTMT_ATTACHMENT(p_document_id IN NUMBER,
5371                                     p_ss_perstat_id IN NUMBER,
5372                                        x_return_status OUT NOCOPY VARCHAR2
5373                                       ) AS
5374 -- This method will be used to delete the Personal Statement Attachment record
5375 -- from the tables FND_ATTCHED_DOCUMENTS, FND_DOCUMENTS and FND_LOBS.
5376 BEGIN
5377     x_return_status := 'S';
5378     FND_DOCUMENTS_PKG.DELETE_ROW (
5379                             x_document_id     => p_document_id,
5380                             x_datatype_id     => 6,
5381                             delete_ref_Flag   => 'Y'
5382     );
5383     Update IGS_SS_APPL_PERSTAT SET  attach_exists ='N' WHERE SS_PERSTAT_ID = p_ss_perstat_id;
5384 EXCEPTION
5385         WHEN OTHERS THEN
5386            x_return_status := 'E';
5387 
5388 END DELETE_PERSTMT_ATTACHMENT;
5389 
5390 
5391 PROCEDURE ADD_PERSTMT_ATTACHMENT(p_person_id IN NUMBER,
5392                                     P_SS_PERSTAT_ID IN NUMBER,
5393                                     p_file_name IN VARCHAR2,
5394                                     p_file_content_type IN VARCHAR2,
5395                                     p_file_format IN VARCHAR2,
5396                                     p_file_id OUT NOCOPY NUMBER,
5397                                     x_return_status OUT NOCOPY VARCHAR2
5398                                     )AS
5399 
5400         CURSOR cat_cur(cp_name VARCHAR2) IS
5401         SELECT category_id
5402         FROM fnd_document_categories_tl
5403         WHERE name = cp_name;
5404 
5405         l_fileid FND_LOBS.FILE_ID%TYPE;
5406         l_category_id FND_DOCUMENT_CATEGORIES_TL.category_id%TYPE;
5407 BEGIN
5408         x_return_status := 'S';
5409 
5410 
5411         -- Insert data in the FND_LOBS table without the FILE_DATA.
5412         -- FILE_DATA would be updated from the Controller of the calling page since
5413         -- there is issue of passing BLOB data type to PL/SQL from OA Framework.
5414         SELECT FND_LOBS_S.NEXTVAL INTO l_fileid FROM dual;
5415 
5416         INSERT INTO FND_LOBS(
5417                           FILE_ID,
5418                           FILE_NAME,
5419                           FILE_CONTENT_TYPE,
5420                           UPLOAD_DATE,
5421                           EXPIRATION_DATE,
5422                           PROGRAM_NAME,
5423                           PROGRAM_TAG,
5424                           LANGUAGE,
5425                           ORACLE_CHARSET,
5426                           FILE_FORMAT) VALUES
5427                           (
5428                           l_fileid,
5429                           p_file_name,
5430                           p_file_content_type,
5431                           SYSDATE,
5432                           NULL,
5433                           NULL,
5434                           NULL,
5435                           USERENV('LANG'),
5436                           NULL,
5437                           p_file_format
5438         );
5439 
5440         p_file_id := l_fileid;
5441 
5442         OPEN cat_cur('CUSTOM1475');
5443         FETCH cat_cur INTO l_category_id;
5444         CLOSE cat_cur;
5445 
5446         FND_WEBATTCH.Add_Attachment (
5447                                 seq_num                 => '1',
5448                                 category_id             => l_category_id,
5449                                 document_description    => NULL,
5450                                 datatype_id             => 6,
5451                                 text                    => NULL,
5452                                 file_name               => p_file_name,
5453                                 url                     => NULL,
5454                                 function_name           => NULL,
5455                                 entity_name             => 'IGS_SS_APPL_PERSTAT',
5456                                 pk1_value               => P_SS_PERSTAT_ID,
5457                                 pk2_value               => NULL,
5458                                 pk3_value               => NULL,
5459                                 pk4_value               => NULL,
5460                                 pk5_value               => NULL,
5461                                 media_id                => l_fileid,
5462                                 user_id                 => FND_GLOBAL.USER_ID
5463         );
5464 
5465         Update IGS_SS_APPL_PERSTAT SET  attach_exists ='Y' WHERE SS_PERSTAT_ID = P_SS_PERSTAT_ID;
5466 
5467 EXCEPTION
5468         WHEN OTHERS THEN
5469                 x_return_status := 'E';
5470 
5471 END ADD_PERSTMT_ATTACHMENT;
5472 
5473 PROCEDURE DELETE_PERSTMT_ATTACHMENT_UP(p_document_id IN NUMBER,
5474                                        x_return_status OUT NOCOPY VARCHAR2
5475                                       ) AS
5476 -- This method will be used to delete the Personal Statement Attachment record
5477 -- from the tables FND_ATTCHED_DOCUMENTS, FND_DOCUMENTS and FND_LOBS.
5478 BEGIN
5479     x_return_status := 'S';
5480     FND_DOCUMENTS_PKG.DELETE_ROW (
5481                             x_document_id     => p_document_id,
5482                             x_datatype_id     => 6,
5483                             delete_ref_Flag   => 'Y'
5484     );
5485 
5486 EXCEPTION
5487         WHEN OTHERS THEN
5488            x_return_status := 'E';
5489 
5490 END DELETE_PERSTMT_ATTACHMENT_UP;
5491 
5492 
5493 PROCEDURE ADD_PERSTMT_ATTACHMENT_UP(p_person_id IN NUMBER,
5494                                     P_APPL_PERSTAT_ID IN NUMBER,
5495                                     p_file_name IN VARCHAR2,
5496                                     p_file_content_type IN VARCHAR2,
5497                                     p_file_format IN VARCHAR2,
5498                                     p_file_id OUT NOCOPY NUMBER,
5499                                     x_return_status OUT NOCOPY VARCHAR2
5500                                     )AS
5501 
5502         CURSOR cat_cur(cp_name VARCHAR2) IS
5503         SELECT category_id
5504         FROM fnd_document_categories_tl
5505         WHERE name = cp_name;
5506 
5507         l_fileid FND_LOBS.FILE_ID%TYPE;
5508         l_category_id FND_DOCUMENT_CATEGORIES_TL.category_id%TYPE;
5509 BEGIN
5510         x_return_status := 'S';
5511 
5512 
5513         -- Insert data in the FND_LOBS table without the FILE_DATA.
5514         -- FILE_DATA would be updated from the Controller of the calling page since
5515         -- there is issue of passing BLOB data type to PL/SQL from OA Framework.
5516         SELECT FND_LOBS_S.NEXTVAL INTO l_fileid FROM dual;
5517 
5518         INSERT INTO FND_LOBS(
5519                           FILE_ID,
5520                           FILE_NAME,
5521                           FILE_CONTENT_TYPE,
5522                           UPLOAD_DATE,
5523                           EXPIRATION_DATE,
5524                           PROGRAM_NAME,
5525                           PROGRAM_TAG,
5526                           LANGUAGE,
5527                           ORACLE_CHARSET,
5528                           FILE_FORMAT) VALUES
5529                           (
5530                           l_fileid,
5531                           p_file_name,
5532                           p_file_content_type,
5533                           SYSDATE,
5534                           NULL,
5535                           NULL,
5536                           NULL,
5537                           USERENV('LANG'),
5538                           NULL,
5539                           p_file_format
5540         );
5541 
5542         p_file_id := l_fileid;
5543 
5544         OPEN cat_cur('CUSTOM1475');
5545         FETCH cat_cur INTO l_category_id;
5546         CLOSE cat_cur;
5547 
5548         FND_WEBATTCH.Add_Attachment (
5549                                 seq_num                 => '1',
5550                                 category_id             => l_category_id,
5551                                 document_description    => NULL,
5552                                 datatype_id             => 6,
5553                                 text                    => NULL,
5554                                 file_name               => p_file_name,
5555                                 url                     => NULL,
5556                                 function_name           => NULL,
5557                                 entity_name             => 'IGS_AD_APPL_PERSTAT',
5558                                 pk1_value               => P_APPL_PERSTAT_ID,
5559                                 pk2_value               => NULL,
5560                                 pk3_value               => NULL,
5561                                 pk4_value               => NULL,
5562                                 pk5_value               => NULL,
5563                                 media_id                => l_fileid,
5564                                 user_id                 => FND_GLOBAL.USER_ID
5565         );
5566 
5567 EXCEPTION
5568         WHEN OTHERS THEN
5569                 x_return_status := 'E';
5570 
5571 END ADD_PERSTMT_ATTACHMENT_UP;
5572 -- PERSONAL_STMTS
5573 
5574 /* Get Concatenated Enabled SS Lookup Code Descriptions for a given lookup type with given delimiter */
5575 PROCEDURE get_ss_lookup_desc(p_application_type IN igs_ad_ss_lookups.admission_application_type%type,
5576                              p_lookup_type   IN igs_ad_ss_lookups.ss_lookup_type%TYPE,
5577                              p_delimiter     IN VARCHAR2,
5578                              x_message_name    OUT NOCOPY VARCHAR2,
5579                              x_return_status   OUT NOCOPY VARCHAR2,
5580                              x_concat_desc     OUT NOCOPY VARCHAR2) AS
5581 
5582    CURSOR c_addr_purpose IS
5583       SELECT al.meaning      lookup_desc
5584         FROM AR_LOOKUPS al
5585        WHERE al.LOOKUP_TYPE = 'PARTY_SITE_USE_CODE'
5586          AND al.ENABLED_FLAG = 'Y'
5587          AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5588                     WHERE sslkps.SS_LOOKUP_TYPE = 'SITE_USE_CODE' AND
5589                     sslkps.admission_application_type = p_application_type AND
5590                     sslkps.ss_lookup_code = al.lookup_code AND
5591                     sslkps.closed_flag <> 'Y');
5592 
5593    CURSOR c_phone_type IS
5594       SELECT lv.meaning      lookup_desc
5595         FROM FND_LOOKUP_VALUES lv
5596        WHERE lv.LOOKUP_TYPE = 'PHONE_LINE_TYPE'
5597          AND lv.LANGUAGE(+) = USERENV('LANG')
5598          AND lv.VIEW_APPLICATION_ID = 222
5599          AND lv.SECURITY_GROUP_ID = 0
5600          AND lv.ENABLED_FLAG = 'Y'
5601          AND EXISTS
5602           (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5603              WHERE sslkps.SS_LOOKUP_TYPE = 'PHONE_LINE_TYPE' AND
5604              sslkps.admission_application_type = p_application_type AND
5605              sslkps.ss_lookup_code = lv.lookup_code AND
5606 	     sslkps.closed_flag <> 'Y');
5607 
5608    CURSOR c_person_id_type IS
5609       SELECT pit.description    lookup_desc
5610         FROM IGS_PE_PERSON_ID_TYP pit
5611        WHERE pit.closed_ind <> 'Y'
5612        AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5613                WHERE sslkps.SS_LOOKUP_TYPE = 'PERSON_ID_TYPE' AND
5614                sslkps.admission_application_type = p_application_type AND
5615                sslkps.ss_lookup_code = pit.person_id_type AND
5616 	       sslkps.closed_flag <> 'Y');
5617 
5618    CURSOR c_relation_type IS
5619        SELECT lv.meaning      lookup_desc
5620         FROM FND_LOOKUP_VALUES lv,
5621              HZ_RELATIONSHIP_TYPES hz
5622        WHERE HZ.FORWARD_REL_CODE=lv.lookup_code
5623          AND hz.subject_type = 'PERSON'
5624          AND hz.object_type = 'PERSON'
5625          AND hz.status = 'A'
5626          AND lv.LOOKUP_TYPE = 'PARTY_RELATIONS_TYPE'
5627          AND lv.LANGUAGE(+) = USERENV('LANG')
5628          AND lv.VIEW_APPLICATION_ID = 222
5629          AND lv.SECURITY_GROUP_ID = 0
5630          AND lv.ENABLED_FLAG = 'Y'
5631          AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5632              WHERE sslkps.SS_LOOKUP_TYPE = 'PARTY_RELATIONS_TYPE' AND
5633              sslkps.admission_application_type = p_application_type AND
5634              sslkps.ss_lookup_code = lv.lookup_code AND
5635 	     sslkps.closed_flag <> 'Y');
5636 
5637    CURSOR c_privacy_data IS
5638       SELECT pdg.description   lookup_desc
5639         FROM IGS_PE_DATA_GROUPS_ALL pdg
5640        WHERE pdg.closed_ind <> 'Y'
5641        AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5642           WHERE sslkps.ss_lookup_type = 'PRIVACY_PREF_DATA_GROUP' AND
5643             sslkps.admission_application_type = p_application_type AND
5644             sslkps.ss_lookup_code = to_char(pdg.data_group_id) AND
5645 	    sslkps.closed_flag <> 'Y');
5646 
5647    CURSOR c_alias_type IS
5648       SELECT lv.meaning      lookup_desc
5649         FROM igs_lookup_values lv
5650        WHERE lv.LOOKUP_TYPE = 'PE_ALIAS_TYPE'
5651          AND lv.ENABLED_FLAG = 'Y'
5652          AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5653              WHERE sslkps.SS_LOOKUP_TYPE = 'PE_ALIAS_TYPE' AND
5654               sslkps.admission_application_type = p_application_type AND
5655               sslkps.ss_lookup_code = lv.lookup_code AND
5656               sslkps.closed_flag <> 'Y');
5657 
5658    CURSOR c_credential_type IS
5659       SELECT act.description        lookup_desc
5660         FROM IGS_AD_CRED_TYPES act
5661        WHERE act.closed_ind <> 'Y'
5662           AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5663           WHERE sslkps.ss_lookup_type = 'CREDENTIAL_TYPE' AND
5664              sslkps.admission_application_type =  p_application_type AND
5665              sslkps.ss_lookup_code = to_char(act.credential_type_id)  AND
5666              sslkps.closed_flag <> 'Y');
5667 
5668    CURSOR c_admission_test_type IS
5669       SELECT att.description         lookup_desc
5670         FROM IGS_AD_TEST_TYPE att
5671        WHERE att.closed_ind <> 'Y'
5672         AND EXISTS (SELECT 1 FROM IGS_AD_SS_LOOKUPS sslkps
5673           WHERE sslkps.SS_LOOKUP_TYPE = 'ADMISSION_TEST_TYPE' AND
5674              sslkps.admission_application_type = p_application_type AND
5675              sslkps.ss_lookup_code = att.admission_test_type AND
5676              sslkps.closed_flag <> 'Y');
5677 
5678    lv_desc   VARCHAR2(20000);
5679 
5680 BEGIN
5681 
5682   lv_desc := NULL;
5683   IF p_lookup_type = 'SITE_USE_CODE' THEN
5684     FOR desc_rec IN c_addr_purpose
5685     LOOP
5686       IF lv_desc IS NULL THEN
5687         lv_desc := desc_rec.lookup_desc;
5688       ELSE
5689         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5690       END IF;
5691     END LOOP;
5692 
5693   ELSIF p_lookup_type = 'PHONE_LINE_TYPE' THEN
5694     FOR desc_rec IN c_phone_type
5695     LOOP
5696       IF lv_desc IS NULL THEN
5697         lv_desc := desc_rec.lookup_desc;
5698       ELSE
5699         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5700       END IF;
5701     END LOOP;
5702 
5703   ELSIF p_lookup_type = 'PERSON_ID_TYPE' THEN
5704     FOR desc_rec IN c_person_id_type
5705     LOOP
5706       IF lv_desc IS NULL THEN
5707         lv_desc := desc_rec.lookup_desc;
5708       ELSE
5709         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5710       END IF;
5711     END LOOP;
5712 
5713   ELSIF p_lookup_type = 'PARTY_RELATIONS_TYPE' THEN
5714     FOR desc_rec IN c_relation_type
5715     LOOP
5716       IF lv_desc IS NULL THEN
5717         lv_desc := desc_rec.lookup_desc;
5718       ELSE
5719         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5720       END IF;
5721     END LOOP;
5722 
5723   ELSIF p_lookup_type = 'PRIVACY_PREF_DATA_GROUP' THEN
5724     FOR desc_rec IN c_privacy_data
5725     LOOP
5726       IF lv_desc IS NULL THEN
5727         lv_desc := desc_rec.lookup_desc;
5728       ELSE
5729         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5730       END IF;
5731     END LOOP;
5732 
5733   ELSIF p_lookup_type = 'PE_ALIAS_TYPE' THEN
5734     FOR desc_rec IN c_alias_type
5735     LOOP
5736       IF lv_desc IS NULL THEN
5737         lv_desc := desc_rec.lookup_desc;
5738       ELSE
5739         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5740       END IF;
5741     END LOOP;
5742 
5743   ELSIF p_lookup_type = 'CREDENTIAL_TYPE' THEN
5744     FOR desc_rec IN c_credential_type
5745     LOOP
5746       IF lv_desc IS NULL THEN
5747         lv_desc := desc_rec.lookup_desc;
5748       ELSE
5749         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5750       END IF;
5751     END LOOP;
5752 
5753    ELSIF p_lookup_type = 'ADMISSION_TEST_TYPE' THEN
5754     FOR desc_rec IN c_admission_test_type
5755     LOOP
5756       IF lv_desc IS NULL THEN
5757         lv_desc := desc_rec.lookup_desc;
5758       ELSE
5759         lv_desc := lv_desc || p_delimiter || desc_rec.lookup_desc;
5760       END IF;
5761     END LOOP;
5762 
5763   END IF;
5764 
5765    x_return_status := 'S';
5766    x_message_name := NULL;
5767    x_concat_desc := lv_desc;
5768 
5769  EXCEPTION
5770      WHEN OTHERS THEN
5771       x_return_status := 'E';
5772       x_message_name := 'IGS_GE_UNHANDLED_EXP';
5773       x_concat_desc := NULL;
5774        IF FND_MSG_PUB.Count_Msg < 1 THEN
5775 	  Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
5776 	  Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.get_ss_lookup_desc -'||SQLERRM);
5777 	  IGS_GE_MSG_STACK.ADD;
5778        END IF;
5779  END get_ss_lookup_desc;
5780 
5781 PROCEDURE CHECK_INSTANCE_SECURITY( p_person_id       IN NUMBER,
5782                                    p_adm_appl_number IN NUMBER,
5783                                    x_return_status   OUT NOCOPY VARCHAR2,
5784                                    x_error_msg       OUT NOCOPY VARCHAR2) IS
5785 CURSOR get_appl_inst_rowid(cp_person_id NUMBER,cp_admission_appl_number NUMBER) IS
5786 SELECT ROWID
5787 FROM IGS_AD_PS_APPL_INST_ALL
5788 WHERE person_id = cp_person_id
5789 AND ADMISSION_APPL_NUMBER = cp_admission_appl_number;
5790 
5791 l_select_access BOOLEAN;
5792 l_return_value BOOLEAN;
5793 l_msg_data VARCHAR2(2000);
5794 BEGIN
5795 l_select_access := FALSE;
5796   FOR c_admappl_pgm_rec IN get_appl_inst_rowid(p_person_id,p_adm_appl_number) LOOP
5797        l_return_value := igs_sc_gen_001.check_sel_upd_del_security
5798                              ('IGS_AD_PS_APPL_INST_SV',
5799                              c_admappl_pgm_rec.rowid,
5800                              'S',
5801                              l_msg_data
5802                              );
5803        IF l_return_value THEN
5804            l_select_access := TRUE;
5805            EXIT;
5806        END IF;
5807    END LOOP;
5808 
5809    IF l_select_access THEN
5810    x_return_status := 'S';
5811    x_error_msg := NULL;
5812    ELSE
5813    x_return_status := 'E';
5814             IF l_msg_data IS NOT NULL THEN
5815             fnd_message.set_name( 'IGS', 'IGS_SC_PRE_CHECK_EXCEP');
5816             fnd_message.set_token('ERRM',l_msg_data);
5817             fnd_message.set_token('TABLE','IGS_AD_PS_APPL_INST_SV');
5818             fnd_message.set_token('OPERATION','SELECT');
5819             x_error_msg := 'IGS_SC_PRE_CHECK_EXCEP';
5820             ELSE
5821             fnd_message.set_name( 'IGS', 'IGS_SC_NO_ACCESS_PRIV');
5822             x_error_msg := 'IGS_SC_NO_ACCESS_PRIV';
5823             END IF;
5824             IGS_GE_MSG_STACK.ADD;
5825    END IF;
5826 
5827 END CHECK_INSTANCE_SECURITY;
5828 
5829   FUNCTION create_application_detail
5830                              (p_person_id           IN igs_pe_typ_instances_all.person_id%TYPE,
5831                               p_adm_appl_number     IN igs_pe_typ_instances_all.admission_appl_number%TYPE,
5832                               p_ss_adm_appl_number IN NUMBER) RETURN BOOLEAN IS
5833  lRetStat VARCHAR2(1);
5834   BEGIN
5835   lRetStat := 'S';
5836       IF p_adm_appl_number IS NOT NULL THEN
5837         --added by nshee during build for Applicant-BOSS SS Bug 2622488
5838         insert_acad_interest(p_person_id       => p_person_id,
5839                              p_adm_appl_id     => p_ss_adm_appl_number,
5840                              p_adm_appl_number => p_adm_appl_number);
5841         insert_applicant_intent(p_person_id       => p_person_id,
5842                                 p_adm_appl_id     => p_ss_adm_appl_number,
5843                                 p_adm_appl_number => p_adm_appl_number);
5844         insert_spl_talent(p_person_id       => p_person_id,
5845                           p_adm_appl_id     => p_ss_adm_appl_number,
5846                           p_adm_appl_number => p_adm_appl_number);
5847         insert_special_interest(p_person_id       => p_person_id,
5848                                 p_adm_appl_id     => p_ss_adm_appl_number,
5849                                 p_adm_appl_number => p_adm_appl_number);
5850         --added by nshee during build for Applicant-BOSS SS Bug 2622488
5851         insert_othinst(p_person_id             => p_person_id,
5852                        p_adm_appl_id           => p_ss_adm_appl_number,
5853                        p_admission_appl_number => p_adm_appl_number);
5854         --dhan
5855         -- Bug # 2389273 [ APPLICATION  FEE SAVED IN SS IS NOT SAVED TO FORMS ]
5856         logheader('before inserting application_fee into IGS tables', 'S');
5857         insert_application_fee(p_person_id       => p_person_id,
5858                                p_adm_appl_id     => p_ss_adm_appl_number,
5859                                p_adm_appl_number => p_adm_appl_number);
5860 
5861       ------------------------------------------------------------------------------------
5862       -- Routine to transfer Personal Statements and Attachments from Staging to IGS Tables
5863       ------------------------------------------------------------------------------------
5864       transfer_attachment(p_person_id             => p_person_id,
5865                           p_ss_adm_appl_id        => p_ss_adm_appl_number,
5866                           p_admission_appl_number => p_adm_appl_number,
5867                           x_return_status         => lRetStat);
5868       END IF;
5869 
5870 
5871       IF lRetStat = 'S' THEN
5872         RETURN TRUE;
5873       ELSE
5874         ROLLBACK TO sp_save_point1;
5875         RETURN FALSE;
5876       END IF;
5877   EXCEPTION
5878     --Main Loop Exception
5879     WHEN OTHERS THEN
5880       logDetail('Exception from create_application_detail, MAIN LOOP: ' || SQLERRM, 'S');
5881       IF FND_MSG_PUB.Count_Msg < 1 THEN
5882         Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
5883         Fnd_Message.Set_Token('NAME','IGS_AD_SS_GEN_001.create_application_detail -'||SQLERRM);
5884         IGS_GE_MSG_STACK.ADD;
5885       END IF;
5886       App_Exception.Raise_Exception;
5887 
5888   END create_application_detail;
5889 
5890 FUNCTION wf_submit_application_sub(p_subscription_guid IN RAW,
5891                         p_event IN OUT NOCOPY WF_EVENT_T) return varchar2
5892 IS
5893      CURSOR c_pre_sub_uhk_prl IS
5894        SELECT  FND_PROFILE.VALUE('IGS_AD_PRESUB_APPL_UHK') value
5895        FROM dual;
5896 
5897 
5898     l_person_id	  NUMBER;
5899     l_ss_adm_appl_id NUMBER;
5900     l_return_status VARCHAR2(10);
5901     l_msg_data fnd_new_messages.message_text%TYPE;
5902     l_pre_sub_uhk_prl c_pre_sub_uhk_prl%ROWTYPE;
5903     l_msg_index                          NUMBER;
5904     l_hash_msg_name_text_type_tab        igs_ad_gen_016.g_msg_name_text_type_table;
5905     l_msg_count NUMBER;
5906     l_def_rule VARCHAR2(200);
5907 BEGIN
5908 
5909     l_person_id := p_event.GetValueForParameter('P_PERSON_ID');
5910     l_ss_adm_appl_id := p_event.GetValueForParameter('P_SS_ADM_APPL_ID');
5911     l_return_status := p_event.GetValueForParameter('P_RETURN_STATUS');
5912     l_msg_data := NULL;
5913 
5914     OPEN c_pre_sub_uhk_prl;
5915     FETCH c_pre_sub_uhk_prl INTO l_pre_sub_uhk_prl;
5916     CLOSE c_pre_sub_uhk_prl;
5917 
5918     IF l_pre_sub_uhk_prl.value ='Y' THEN
5919        igs_ad_uhk_pre_create_appl_pkg.pre_submit_application (
5920          p_person_id     =>  l_person_id,
5921          p_ss_adm_appl_id => l_ss_adm_appl_id,
5922          p_return_status  => l_return_status,
5923          p_msg_data      =>  l_msg_data
5924        );
5925 
5926        p_event.AddParameterToList('P_RETURN_STATUS',l_return_status);
5927        p_event.AddParameterToList('P_MSG_DATA',l_msg_data);
5928     END IF;
5929     l_def_rule := WF_RULE.Default_Rule(p_subscription_guid,p_event);
5930     return 'SUCCESS';
5931 
5932 EXCEPTION
5933   WHEN OTHERS THEN
5934     igs_ad_gen_016.extract_msg_from_stack (
5935              p_msg_at_index                => l_msg_index,
5936              p_return_status               => l_return_status,
5937              p_msg_count                   => l_msg_count,
5938              p_msg_data                    => l_msg_data,
5939              p_hash_msg_name_text_type_tab => l_hash_msg_name_text_type_tab);
5940 
5941     IF l_hash_msg_name_text_type_tab(l_msg_count - 1).name <> 'ORA' THEN
5942   	  l_return_status := 'E';
5943     ELSE
5944 	  l_return_status := 'U';
5945     END IF;
5946     l_msg_data := l_hash_msg_name_text_type_tab(l_msg_count-1).text;
5947     p_event.AddParameterToList('P_RETURN_STATUS',l_return_status);
5948     p_event.AddParameterToList('P_MSG_DATA',l_msg_data);
5949 
5950     WF_CORE.CONTEXT('IGS_AD_SS_GEN_001','WF_SUBMIT_APPLICATION_SUB',p_event.getEventName(),p_subscription_guid);
5951     WF_EVENT.setErrorInfo(p_event, 'ERROR');
5952     return 'ERROR';
5953 END wf_submit_application_sub;
5954 
5955 END IGS_AD_SS_GEN_001;